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

溫馨提示×

溫馨提示×

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

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

TCP數據報構造以及三次握手(圖解)

發布時間:2020-07-27 21:41:24 來源:網絡 閱讀:761 作者:yuw2017 欄目:網絡安全

TCP(Transmission Control Protocol,傳輸掌握協定)是一種面向銜接的、牢靠的、基于字撙節的通訊協定,數據在傳輸前要樹立銜接,傳輸終了后還要斷開銜接。
客戶端在收發數據前要運用 connect() 函數和效勞器樹立銜接。樹立銜接的目標是包管IP地址、端口、物理鏈路等準確無誤,為數據的傳輸開拓通道。
TCP樹立銜接時要傳輸三個數據包,俗稱三次握手(Three-way Handshaking)。可以抽象的比方為下面的對話:

  • [Shake 1] 套接字A:“你好,套接字B,我這里無數據要傳送給你,樹立銜接吧。”

  • [Shake 2] 套接字B:“好的,我這邊已預備停當。”

  • [Shake 3] 套接字A:“感謝你受理我的懇求。”

TCP數據報構造

我們先來看一下TCP數據報的構造:
TCP數據報構造以及三次握手(圖解)
帶暗影的幾個字段需求重點闡明一下:
1) 序號:Seq(Sequence Number)序號占32位,用來標識從盤算機A發送到盤算機B的數據包的序號,盤算機發送數據時對此停止標志。
2) 確認號:Ack(Acknowledge Number)確認號占32位,客戶端和效勞器端都可以發送,Ack = Seq + 1。
3) 標記位:每一個標記位占用1Bit,共有6個,辨別為 URG、ACK、PSH、RST、SYN、FIN,詳細寄義如下:

  • URG:緊迫指針(urgent pointer)無效。

  • ACK:確認序號無效。

  • PSH:接納方應當盡快將這個報文交給使用層。

  • RST:重置銜接。

  • SYN:樹立一個新銜接。

  • FIN:斷開一個銜接。

對英文字母縮寫的總結:Seq 是 Sequence 的縮寫,表現序列;Ack(ACK) 是 Acknowledge 的縮寫,表現確認;SYN 是 Synchronous 的縮寫,情愿是“同步的”,這里表現樹立同步銜接;FIN 是 Finish 的縮寫,表現完成。

銜接的樹立(三次握手)

運用 connect() 樹立銜接時,客戶端和效勞器端會互相發送三個數據包,請看下圖:
TCP數據報構造以及三次握手(圖解)
客戶端挪用 socket() 函數創立套接字后,由于沒有樹立銜接,所以套接字處于CLOSED形態;效勞器端挪用 listen() 函數后,套接字進入LISTEN形態,開端監聽客戶端懇求。
這個時分,客戶端開端提議懇求:
1) 當客戶端挪用 connect() 函數后,TCP協定會組建一個數據包,并設置 SYN 標記位,表現該數據包是用來樹立同步銜接的。同時生成一個隨機數字 1000,填充“序號(Seq)”字段,表現該數據包的序號。完成這些任務,開端向效勞器端發送數據包,客戶端就進入了SYN-SEND形態。
2) 效勞器端收到數據包,檢測到曾經設置了 SYN 標記位,就曉得這是客戶端發來的樹立銜接的“懇求包”。效勞器端也會組建一個數據包,并設置 SYN 和 ACK 標記位,SYN 表現該數據包用來樹立銜接,ACK 用來確認收到了方才客戶端發送的數據包。
效勞器生成一個隨機數 2000,填充“序號(Seq)”字段。2000 和客戶端數據包沒有關系。
效勞器將客戶端數據包序號(1000)加1,失掉1001,并用這個數字填充“確認號(Ack)”字段。
效勞器將數據包收回,進入SYN-RECV形態。
3) 客戶端收到數據包,檢測到曾經設置了 SYN 和 ACK 標記位,就曉得這是效勞器發來的“確認包”。客戶端會檢測“確認號(Ack)”字段,看它的值能否為 1000+1,假如是就闡明銜接樹立勝利。
接下來,客戶端會持續組建數據包,并設置 ACK 標記位,表現客戶正直確接納了效勞器發來的“確認包”。同時,將方才效勞器發來的數據包序號(2000)加1,失掉 2001,并用這個數字來填充“確認號(Ack)”字段。
客戶端將數據包收回,進入ESTABLISED形態,表現銜接曾經勝利樹立。
4) 效勞器端收到數據包,檢測到曾經設置了 ACK 標記位,就曉得這是客戶端發來的“確認包”。效勞器會檢測“確認號(Ack)”字段,看它的值能否為 2000+1,假如是就闡明銜接樹立勝利,效勞器進入ESTABLISED形態。
至此,客戶端和效勞器都進入了ESTABLISED形態,銜接樹立勝利,接下來就可以收發數據了。

最初的闡明

三次握手的癥結是要確認對方收到了本人的數據包,這個目的就是經過“確認號(Ack)”字段完成的。盤算時機記載下本人發送的數據包序號 Seq,待收到對方的數據包后,檢測“確認號(Ack)”字段,看Ack = Seq + 1能否成立,假如成立闡明對樸直確收到了本人的數據包。


向AI問一下細節

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

AI

莲花县| 祁连县| 长乐市| 蒲江县| 隆安县| 育儿| 古蔺县| 开江县| 武定县| 汨罗市| 睢宁县| 正宁县| 永丰县| 西昌市| 曲周县| 无棣县| 镇康县| 太保市| 东海县| 曲阜市| 麟游县| 巨鹿县| 新营市| 三江| 南投市| 绿春县| 云阳县| 阿坝县| 沭阳县| 石楼县| 隆化县| 靖州| 炉霍县| 伊春市| 岐山县| 获嘉县| 休宁县| 保德县| 枝江市| 阿瓦提县| 德庆县|