摘自:《深入理解計算機網路》 王達著 機械工業出版社
1.ipv4資料報頭部格式
2.ipv6資料報頭部格式
3.ipv4資料報的封裝與解封裝
4.ipv4資料報的分段與重組
5.arp協議報文格式及arp表
6.arp位址解析原理
7.icmp協議及報文格式
8.ipv6協議族的其它協議
9.tcp的主要特性
10.tcp的套接字
11.tcp埠
12.tcp連線狀態轉移
13.tcp傳輸的建立
當 tcp 連線建立以後,就可以在兩個方向傳送資料流。當 tcp 的網路應用程序再沒有資料需要傳送的時候,就可以發出關閉連線命令,釋放連線。tcp 是通過傳送 fin 欄位置1的資料段來作為關閉傳輸連線的命令,從而關閉本端資料流的,但是本端仍還可以繼續接收來自對端的資料,直到對端也使用了同樣的方法關閉那個方向的資料流為止,,這時整個雙方傳輸連線就徹底關閉了。
相對 tcp 傳輸連線建立的三次握手過程來說,tcp 傳輸連線的釋放過程要稍微複雜一些,需要經過四次握手過程。這是由 tcp 的半關閉(half-closed)特性造成的,因為這乙個 tcp 連線是全雙工(即資料在兩個方向上能同時傳遞),每個方向必須單獨進行關閉。tcp 傳輸連線關閉原則如下:當一端完成它的資料傳送任務後就可以傳送乙個 fin 欄位值置1的資料段來終止這個方向的資料傳送;當另一端收到這個 fin 資料段後,必須通知它的應用層「對端已經終止了這個方向的資料傳送」。而 fin 資料段的傳送是由應用層呼叫 close 服務原語的結果。tcp 連線釋放的四次握手過程如下圖所示,具體描述如下。
tcp傳輸連線釋放的四次握手過程
一開始,通訊雙方都處於 established (連線建立)狀態。如果客戶端認為資料全部傳送完了,想結束本次傳輸連線,則由應用層的對應應用呼叫 close 服務原語,然後向伺服器傳送乙個 fin 欄位值置1的資料段(假設此資料段的序號為m),客戶端進入 fin wait 1 狀態,等待伺服器的確認。
伺服器在收到客戶端發來的 fin 資料之後,確認客戶端沒有新的資料要傳送了,向客戶端傳送乙個 ack 欄位值置1、確認號為 m+1 的資料段(假設此資料段的序號為 w,服務端與客戶端的資料段序號可以不一樣),表示前面的資料已全部收到了,然後進入 close wait (關閉等待)狀態。與此同時,伺服器的tcp實體通知對應的應用程序,釋放從客戶端到伺服器方向的傳輸連線,進入半關閉狀態。但此時伺服器仍可以向客戶端傳送資料段,客戶端也可以接受來自伺服器的資料,而且這可能持續一段時間,直到伺服器的資料也全部傳送完畢。
當客戶端收到伺服器的 ack 資料段之後,進入 fin wait 2 狀態,進一步等待伺服器發出連線釋放的資料段。
當伺服器傳送完全部的資料後,其對應的應用程序也會通知 tcp 實體釋放此方向的tcp傳輸連線,向客戶端傳送 fin 欄位置1、ack = m+1(假設此時的資料段序號已變為 w)的確認資料段。這時伺服器進入 last ack (最後確認)狀態,等待客戶端的確認。
客戶端在收到伺服器的 fin+ack 資料段後,,向服務傳送乙個 ack 字段值為1、ack = w+1、序號為m+1 的資料段,進入 time wait 狀態。但此時 tcp 連線還沒有釋放,必須等待 2msl 時間(rfc793 建議設定 msl 為2分鐘)後,客戶端才進入到 closed 狀態,徹底釋放了 tcp 連線。
伺服器在接收到客戶端發來的 ack 資料段後,也進入 closed, 徹底釋放連線。此時,已經完成了這個 tcp 傳輸連線過程。
與可以雙方同時建立 tcp 傳輸連線一樣,tcp 傳輸連線關閉也可以由雙方同時主動進行(正常情況下都是由一方傳送第乙個 fin 資料段進行主動連線關閉,另一方被動接受連線關閉),如下圖所示。具體描述如下。
主動同時關閉tcp連線過程]
當兩端對應的網路應用層程序同時呼叫 close 原語,並傳送 fin 資料段執行關閉命令時,兩端均從 established 狀態轉變為 fin wait 1 狀態。任意一端收到對端發來的 fin 資料段後,其狀態均由 fin wait 1 轉變到 closing 狀態,並傳送最後的 ack 資料段。當收到最後的 ack 資料段後,狀態轉變為 time_wait,在等待 2msl 後進入到 closed 狀態,最終釋放這個tcp連線。
TCP的可靠傳輸
可靠傳輸 能夠有序的都到達接受方 tcp使用滑動視窗 學習三個機制 超時重傳 快速重傳 選擇確認 累計確認 先了解背景 超時重傳很簡單 超時重傳的時間設定是個難點 簡單來說時依據多個往返時間確認平均往返時間,超時重傳設定比平均往返時間要長一點,記住超時時間時動態設定不斷變化的 以後有必要的時候來了解...
TCP傳輸的特點
tcp是一種面向連線的 可靠的 基於位元組流的傳輸層通訊協議。面向連線 面向連線意味著使用tcp的應用程式在傳輸資料前必須先建立連線,就如打 一樣,要先進行撥號,等待對方響應才能開始說話。可靠性 tcp協議通過下列方式來提高可靠性 1 應用資料被分割成tcp認為最適合傳送的資料塊。這和udp完全不同...
tcp的建立與釋放
如下圖設定ip位址 切換simulattion模式,在pc0的desktop介面點開web browser在url中輸入伺服器的ip位址 因為http服務基於tcp的,所以傳送請求的時候會先建立tcp連線 從下圖客戶端傳送的tpc連線報文可以看出http服務使用tcp埠號 dest port 為80...