摘要:協議的定義屬于傳輸層協議,提供了一種端到端的連接。如果兩次校驗和一致說明數據是正確的,否則將認為數據被破壞,接收端將丟棄該數據緊急指針盡在緊急控制位為時有效。結尾是一個非常復雜的協議,這里稍微總結了一下,隨著學習時間增加,繼續補充。
TCP協議的定義
TCP屬于傳輸層協議,提供了一種端到端的連接。
是面向連接的、可靠的的進程到進程通信的協議
TCP提供全雙工服務,即數據可在同一時間雙向傳播
TCP將若干個字節構成一個分組,此分組稱為報文段(Segment)
TCP的功能將數據進行分段打包傳輸
對每個數據包編號控制順序
運輸中丟失、重發和丟棄處理
流量控制避免擁塞
TCP數據包封裝?源端口號和目標端口號,計算機通過端口號識別訪問哪個服務,比如http服務或ftp服務,發送方端口號是進行隨機端口,目標端口號決定了接收方哪個程序來接收
32位序列號 TCP用序列號對數據包進行標記,以便在到達目的地后重新重裝,假設當前的序列號為 s,發送數據長度為 l,則下次發送數據時的序列號為 s + l。在建立連接時通常由計算機生成一個
確認應答號 它等于下一次應該接收到的數據的序列號。假設發送端的序列號為 s,發送數據的長度為 l,那么接收端返回的確認應答號也是 s + l。發送端接收到這個確認應答后,可以認為這個位置以前所有的數據都已被正常接收。
首部長度:TCP 首部的長度,單位為 4 字節。如果沒有可選字段,那么這里的值就是 5。表示 TCP 首部的長度為 20 字節。
控制位 TCP的連接、傳輸和斷開都受這六個控制位的指揮
URG 緊急指針:控制位為 1 時有效。表示緊急數據的末尾在 TCP 數據部分中的位置。通常在暫時中斷通信時使用(比如輸入 Ctrl + C)。
ACK(acknowledgement 確認)為1表示確認號
PSH(push急迫位) 緩存區將滿,立刻傳輸速度
RST(reset重置位) 連接斷了重新連接
SYN(synchronous建立聯機) 同步序號位 TCP建立連接時要將這個值設為1
FIN發送端完成位,提出斷開連接的一方把FIN置為1表示要斷開連接
窗口大?。河糜诒硎緩膽鹛栭_始能夠接受多少個 8 位字節。如果窗口大小為 0,可以發送窗口探測。 窗口值 說明本地可接收數據段的數目,這個值的大小是可變的。當網絡通暢時將這個窗口值變大加快傳輸速度,當網絡不穩定時減少這個值可以保證網絡數據的可靠傳輸。它是來在TCP傳輸中進行流量控制的
校驗和: 用來做差錯控制,TCP校驗和的計算包括TCP首部、數據和其它填充字節。在發送TCP數據段時,由發送端計算校驗和,當到達目的地時又進行一次檢驗和計算。如果兩次校驗 和一致說明數據是正確的,否則 將認為數據被破壞,接收端將丟棄該數據
緊急指針:盡在 URG(urgent緊急) 控制位為 1 時有效。表示緊急數據的末尾在 TCP 數據部分中的位置。通常在暫時中斷通信時使用(比如輸入 Ctrl + C)
TCP的握手與斷開 建立連接時的三次握手第一次握手主機A通過一個標識為SYN標識位的數據段發送給主機B請求連接,通過該數據段告訴主機B希望建立連接,需要B應答,并告訴主機B傳輸的起始序列號
第二次握手是主機B用一個確認應答ACK和同步序列號SYNC標志位的數據段來響應主機A,一是發送ACK告訴主機A收到了數據段,二是通知主機A從哪個序列號做標記。
第三次握手是主機A確認收到了主機B的數據段并可以開始傳輸實際數據。
斷開連接時的四次請求
主機A發送FIN控制位發出斷開連接的請求
主機B進行響應,確認收到斷開連接請求
主機B提出反方向的關閉要求
主機A確認收到的主機B的關閉連接請求
為什么要四次分手?TCP協議是一種面向連接的、可靠的、基于字節流的運輸層通信協議。TCP是全雙工 模式,這就意味著,當主機1發出FIN報文段時,只是表示主機1已經沒有數據要發送了,主機1告訴主機2, 它的數據已經全部發送完畢了;但是,這個時候主機1還是可以接受來自主機2的數據;當主機2返回ACK報文 段時,表示它已經知道主機1沒有數據發送了,但是主機2還是可以發送數據到主機1的;當主機2也發送了FIN 報文段時,這個時候就表示主機2也沒有數據要發送了,就會告訴主機1,我也沒有數據要發送了,之后彼此 就會愉快的中斷這次TCP連接。
結尾TCP是一個非常復雜的協議,這里稍微總結了一下,隨著學習時間增加,繼續補充。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/107598.html
摘要:通常來說所有的的操作都是從開始的一個類似于一個和對比我們可以在同一個中執行讀和寫操作然而同一個僅僅支持讀或寫可以異步地讀寫而是阻塞的同步讀寫總是從中讀取數據或將數據寫入到中類型有文件操作操作操作操作使用在服務器端這些通道涵蓋了和網絡以及文件 Java NIO Channel 通常來說, 所有的 NIO 的 I/O 操作都是從 Channel 開始的. 一個 channel 類似于一個 ...
閱讀 25642·2021-09-29 09:41
閱讀 4806·2021-09-10 11:20
閱讀 1928·2021-09-09 09:32
閱讀 1893·2019-08-30 15:44
閱讀 3199·2019-08-29 17:13
閱讀 2815·2019-08-29 14:14
閱讀 2071·2019-08-29 14:11
閱讀 3231·2019-08-29 12:36