1. 計算機網路體系結構
2. udp 和 tcp 的特點
確認號 :期望收到的下乙個報文段的序號。例如 b 正確收到 a 傳送來的乙個報文段,序號為 501,攜帶的資料長度為 200 位元組,因此 b 期望下乙個報文段
的序號為 701,b 傳送給 a 的確認報文段中確認號就為 701。
資料偏移 :指的是資料部分距離報文段起始處的偏移量,實際上指的是首部的長度。
確認 ack :當 ack=1 時確認號字段有效,否則無效。tcp 規定,在連線建立後所有傳送的報文段都必須把 ack 置 1。
同步 syn :在連線建立時用來同步序號。當 syn=1,ack=0 時表示這是乙個連線請求報文段。若對方同意建立連線,則響應報文中 syn=1,ack=1。
終止 fin :用來釋放乙個連線,當 fin=1 時,表示此報文段的傳送方的資料已傳送完畢,並要求釋放連線。
視窗 :視窗值作為接收方讓傳送方設定其傳送視窗的依據。之所以要有這個限制,是因為接收方的資料快取空間是有限的。
① 三次握手過程:
假設 a 為客戶端,b 為伺服器端。
② 三次握手的原因
第三次握手是為了防止失效的連線請求到達伺服器,讓伺服器錯誤開啟連線。客戶端傳送的連線請求如果在網路中滯留,那麼就會隔很長一段時間才能收到伺服器端發回的連線確認。客戶端等待乙個超時重傳時間之後,就會重新請求連線。但是這個滯留的連線請求最後還是會到達伺服器,如果不進行三次握手,那麼伺服器就會開啟兩個連線。如果有第三次握手,客戶端會忽略伺服器之後傳送的對滯留連線請求的連線確認,不進行第三次握手,因此就不會再次開啟連線。
③ 四次揮手
以下描述不討論序號和確認號,因為序號和確認號的規則比較簡單。並且不討論ack,因為 ack 在連線建立之後都為 1。
④ 四次揮手原因
客戶端傳送了 fin 連線釋放報文之後,伺服器收到了這個報文,就進入了closewait 狀態。這個狀態是為了讓伺服器端傳送還未傳送完畢的資料,傳送完畢之後,伺服器會傳送 fin 連線釋放報文。
time_wait
客戶端接收到伺服器端的 fin 報文後進入此狀態,此時並不是直接進入closed狀態,還需要等待乙個時間計時器設定的時間 2msl。這麼做有兩個由:
❶ 確保最後乙個確認報文能夠到達。如果 b 沒收到 a 傳送來的確認報文,那麼就會重新傳送連線釋放請求報文,a 等待一段時間就是為了處理這種情況的發生。
❷ 等待一段時間是為了讓本連線持續時間內所產生的所有報文都從網路中消失,使得下乙個新的連線不會出現舊的連線請求報文。
⑤ tcp 可靠傳輸
tcp 使用超時重傳來實現可靠傳輸:如果乙個已經傳送的報文段在超時時間內沒有收到確認,那麼就重傳這個報文段。
⑥ tcp 滑動視窗
視窗是快取的一部分,用來暫時存放位元組流。傳送方和接收方各有乙個視窗,接收方通過 tcp 報文段中的視窗字段告訴傳送方自己的視窗大小,傳送方根據這個值和其它資訊設定自己的視窗大小。
傳送視窗內的位元組都允許被傳送,接收視窗內的位元組都允許被接收。如果傳送視窗左部的位元組已經傳送並且收到了確認,那麼就將傳送視窗向右滑動一定距離,直到左部第乙個位元組不是已傳送並且已確認的狀態;接收視窗的滑動類似,接收視窗左部位元組已經傳送確認並交付主機,就向右滑動接收視窗。
接收視窗只會對視窗內最後乙個按序到達的位元組進行確認,例如接收視窗已經收到的位元組為 ,其中 按序到達,而 就不是,因此只對位元組 31進行確認。傳送方得到乙個位元組的確認之後,就知道這個位元組之前的所有位元組都已經被接收。
⑦ tcp 流量控制
流量控制是為了控制傳送方傳送速率,保證接收方來得及接收。接收方傳送的確認報文中的視窗字段可以用來控制傳送方視窗大小,從而影響傳送方的傳送速率。將視窗字段設定為 0,則傳送方不能傳送資料。
⑧ tcp 擁塞控制
如果網路出現擁塞,分組將會丟失,此時傳送方會繼續重傳,從而導致網路擁塞程度更高。因此當出現擁塞時,應當控制傳送方的速率。這一點和流量控制很像,但是出發點不同。流量控制是為了讓接收方能來得及接收,而擁塞控制是為了降低整個網路的擁塞程度。
tcp 主要通過四種演算法來進行擁塞控制:慢開始、擁塞避免、快重傳、快恢復。
傳送方需要維護乙個叫做擁塞視窗(cwnd
) 的狀態變數,注意擁塞視窗與傳送方視窗的區別:擁塞視窗只是乙個狀態變數,實際決定傳送方能傳送多少資料的是傳送方視窗。
為了便於討論,做如下假設:
❶ 慢開始與擁塞避免
傳送的最初執行慢開始,令 cwnd=1,傳送方只能傳送 1 個報文段;當收到確認後,將 cwnd 加倍,因此之後傳送方能夠傳送的報文段數量為:2、4、8 …,注意到慢開始每個輪次都將 cwnd 加倍,這樣會讓 cwnd 增長速度非常快,從而使得傳送方傳送的速度增長速度過快,網路擁塞的可能也就更高。設定乙個慢開始門限 ssthresh,當 cwnd >= ssthresh 時,進入擁塞避免,每個輪次只將 cwnd 加 1。如果出現了超時,則令 ssthresh = cwnd/2,然後重新執行慢開始。
❷ 快重傳與快恢復
在接收方,要求每次接收到報文段都應該對最後乙個已收到的有序報文段進行確認。例如已經接收到 m 和 m ,此時收到 m ,應當傳送對 m 的確認。在傳送方,如果收到三個重複確認,那麼可以知道下乙個報文段丟失,此時執行快重傳,立即重傳下乙個報文段。例如收到三個 m ,則 m 丟失,立即重傳 m 。在這種情況下,只是丟失個別報文段,而不是網路擁塞。因此執行快恢復,令ssthresh = cwnd/2 ,cwnd = ssthresh,注意到此時直接進入擁塞避免。
注:慢開始和快恢復的快慢指的是 cwnd 的設定值,而不是 cwnd 的增長速率。慢開始cwnd 設定為 1,而快恢復 cwnd 設定為 ssthresh。
計算機網路 網路結構模型
計算機網路與計算機的其他輸入輸出裝置一樣,只能交換資料。在與其他計算機交換之前必須要制訂一套彼此都能理解的協議 網路協議。源計算機傳送乙個資料報給目標計算機的過程類似與寄信的過程,傳送過程中不斷地套上一層一層的網路協議。以瀏覽器為例 客戶端瀏覽器將請求封裝為http協議,通過socket傳送到核心 ...
計算機網路 計算機網路體系結構
網路層 協議物理層 eia 232c eia tia rs 449 ccitt的x.21 資料鏈路層 sdlc hdlc ppp stp 幀中繼 網路層ip ipx icmp igmp arp rarp ospf 傳輸層tcp udp 表示層 應用層ftp smtp http 網際網路服務提供商is...
計算機網路 計算機網路的體系結構
三 五層協議 了解計算機網路的體系結構是掌握計算機網路的超級基礎。小聲逼逼 不過在此之前,你有時問到我我也會懵一下。這就是假程式設計師的表現。希望通過這篇總結,能夠牢記計算機網路的體系結構,深刻認識,為之後深入理解每一層的結構和功能做好準備。關於計算機網路體系結構的發展歷史,並不會在任何考試中考察。...