中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

TCP三次握手和四次斷開

發布時間:2020-07-13 10:26:12 來源:網絡 閱讀:861 作者:酥心糖 欄目:網絡安全

TCP,一個大家都熟悉的協議,對于技術人員來說,透徹的理解他,就到代表咱們的半只腳已經踏進了IT的大門。


TCP的特點

TCP提供一種面向連接的、可靠的字節流服務。面向連接意味著是一對一的連接(通常是一個客戶端連接一個服務端),在交換數據之前,需要先建立連接。在TCP的連接中,僅有一對一的雙方建立連接,多播和廣播不屬于TCP的連接。


TCP保證其可靠性的機制

  • 應用數據被分割成TCP認為最適合發送的數據塊。由TCP傳遞給IP的信息單位稱為報文段或段(segment

  • 超時重傳策略。當TCP發出一個段后,它啟動一個定時器,等待目的端確認收到這個報文段。如果不能及時收到一個確認,將重發這個報文段。

  • 當TCP收到發自TCP連接另一端的數據,它將發送一個確認。這個確認不是立即發送,通常將推遲幾分之一秒.

  • TCP將保持它首部和數據的檢驗和。這是一個端到端的檢驗和,目的是檢測數據在傳輸過程中的任何變化。

  • 如果收到段的檢驗和有差錯, TCP將丟棄這個報文段和不確認收到此報文段(希望發端超時并重發)。

  • 既然TCP報文段作為IP數據報來傳輸,而 IP數據報的到達可能會失序,因此 TCP報文段的到達也可能會失序。如果必要,TCP將對收到的數據進行重新排序,將收到的數據以正確的順序交給應用層。

  • 既然IP數據報會發生重復,TCP的接收端必須丟棄重復的數據。

  • TCP還能提供流量控制。 TCP連接的每一方都有固定大小的緩沖空間。TCP的接收端只允許另一端發送接收端緩沖區所能接納的數據。這將防止較快主機致使較慢主機的緩沖區溢出。


    (可參見《TCP/IP詳解卷一》)




TCP一些屬性說明

  • 端口號:

    每個TCP段都包含源端和目的端的端口號,用于尋找發端和收端應用進程。這兩個值加

    上IP首部中的源端IP地址和目的端IP地址唯一確定一個TCP連接。


  • 網絡套接字(socket):

    一個IP地址和一個端口號也稱為一個socket。它也作為表示伯克利版的編程接口,socket包含客戶IP地址、客戶端口號、服務器IP地址和服務器端口號的四元組,可唯一確定互聯網絡中每個TCP連接的雙方。


  • 全雙工:

    TCP為應用層提供全雙工服務。這意味數據能在兩個方向上獨立地進行傳輸。因此,連

    接的每一端必須保持每個方向上的傳輸數據序號。


當我們在Linux系統中使用tcpdump時可以看到一些數據的傳輸信息,這包含了TCP數據包的一些報頭信息:

# tcpdump -i eth0 '(( host 192.168.1.210) and ( port 80))'
13:30:19.078214 IP 192.168.1.106.53190 >192.168.1.210.http: Flags [S], seq 1725365454, win 8192, options [mss1460,nop,wscale 8,nop,nop,sackOK], length 0
13:30:19.078342 IP 192.168.1.210.http >192.168.1.106.53190: Flags [S.], seq 4163517334, ack 1725365455, win 14600,options [mss 1460,nop,nop,sackOK,nop,wscale 6], length 0
13:30:19.078649 IP 192.168.1.106.53190 >192.168.1.210.http: Flags [.], ack 1, win 68, length 0


上面為一次三次握手建立連接的過程。

其中,格式為: 原地址 > 目的地址 : 標示,[S]標示SYN, 其中win表示窗口大小,也就是數據量的大小,可以用于流量控制,默認為4096,最大為65535,它是由一個16bit的字段表示的。

SYN: 同步序號連接標示,用來發起一個連接。

ACK: 應答標示,用來確認同步序號有效。

FIN:結束連接標示。


TCP三次握手過程

TCP的三次握手過程其實可以用一個簡單的圖表示:


TCP三次握手和四次斷開


連接過程:

  1. 請求端(通常為客戶端)發送一個SYN段的請求,指明了客戶端打算連接的服務的端口以及初始序號ISN,假設這個把報文段為SYN0.

  2. 服務器發回包含服務端的初始序號的SYN報文段(SYN1)作為應答,同時在請求端發送的SYN上加1,以ACK的方式返回進行確認。之所以會加1是因為一個SYN將占用一個序號。

  3. 客戶端必須將確認序號設置為服務端的ISN加1返回一個ACK,以對服務器端SYN報文進行確認.

這樣就建立了連接。

這一個簡單的過程可以理解為,你去商店買東西.

你向服務員發起一個請求,說:我要xxx,請你把它給我(SYN0);

服務員說:好的我已經收到你的請求(SYN1)您要的是xxx對吧(ACK=SYN0+1);

你說:是的(Ack).

然后你們就開始進行交易。


TCP 四次斷開過程

建立一個連接需要三次握手,而終止一個連接要經過4次握手。這由TCP的半關閉(HALF-CLOSE)造成的。既然一個TCP連接是全雙工(即數據在兩個方向上能同時傳遞),因此每個方

向必須單獨地進行關閉。這原則就是當一方完成它的數據發送任務后就能發送一個FIN來終止

這個方向連接。當一端收到一個FIN,它必須通知應用層另一端幾經終止了那個方向的數據傳

送。發送FIN通常是應用層進行關閉的結果。

四次斷開的圖示如下:


TCP三次握手和四次斷開

斷開的過程:

  1. 當有一方要終止連接時,會向對方發送一個FIN的信號n.

  2. 接受方收到信息后,會回復一個ACK(n+1)表示已經收到請求,但此時并不會立即中斷連接,而是去嘗試關閉自身的連接。

  3. 當響應客戶端關閉本地的TCP連接之后,會向請求端重新發送一個新的FIN m,表示此事響應端可以關閉。

  4. 請求端接受到FIN m的信號后,回復一個ACK,同時自己也進入TIME_WAIT狀態,而響應端進入close狀態。



這里應用TCP/IP協議卷的一張圖,說明了主機在TCP交互過程中狀態的變化:

TCP三次握手和四次斷開

其實這些內容只是TCP協議的冰山一角,在這個交互過程中還有很多算法和協議規則,具體的細節大家可以參考TCP/IP協議卷。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

岑巩县| 手游| 高碑店市| 兴安盟| 原阳县| 南华县| 准格尔旗| 承德县| 临江市| 定远县| 垫江县| 宿迁市| 外汇| 招远市| 天柱县| 海城市| 蓬溪县| 资讯| 汕头市| 保山市| 额济纳旗| 兰西县| 玉山县| 灵川县| 潼关县| 错那县| 乐业县| 威远县| 万年县| 肃宁县| 会宁县| 西贡区| 汉中市| 驻马店市| 南靖县| 徐汇区| 喀什市| 福泉市| 桦南县| 卢龙县| 沅江市|