您好,登錄后才能下訂單哦!
傳輸層協議主要有兩個:TCP(傳輸控制協議)和UDP(用戶數據報協議)。
下面我們就一起對TCP和UDP進行詳細的了解。
1、TCP協議
TCP協議介紹:TCP是面向連接的、可靠的進程到進程通信的協議。TCP提供雙全工服務,即數據可在同一時間雙向傳輸,每一個TCP都有發送緩存和接收緩存,用來臨時儲存數據。
TCP報文段:
TCP將若干個字節構成一個分組,稱為報文段。TCP報文段的首部格式圖如下圖所示。
源端口號:發送方對應的端口號。
目的端口號:接收方的端口號,接收方通過這個端口號來確定把數據送給哪個應用。
序列號:TCP對從進程中接收到的字節進行編號,為的是當數據到接收端時,接收端可以按照這個于浩把數據進行重組,保證數據的正確性。
確認號:確認號是對發送端確認信息的,由他來告訴發送端這個序號之前的數據都已經收到了。
首部長度:首部數據結構的長度。
保留:目前還沒有用到該功能,留作以后作為拓展功能用。
UGR:緊急指針有效位,可不經過緩存直接傳給應用。
ACK:確認標志,確認標志欄有效。
PSH:標志位為1時要求接收方盡快將數據段送達應用層,但還是需要經過緩存。
RST:重新建立TCP連接。
SYN:建立TCP連接。
FIN:斷開TCP連接。
窗口值:本地可接收數據段的數目,這個值大小是可變的。窗口值越大傳輸速率越快,反之則越慢。
校驗和:用來做差錯控制,若接收端的校驗結果與發送端一致,則說明數據是正確的,反之則說明數據受到了破壞,接收端將會拋棄這段數據。
緊急指針:與URG配合使用。
選項:TCP首部的可選信息,例如創建該數據的時間等。
TCP連接
TCP建立連接的過程又稱為TCP三次握手。
第一次握手:建立連接時,客戶端發送syn包(syn=j)到服務器,并進入SYN_SENT狀態,等待服務器確認。
第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也發送一個SYN包(seq=k),即SYN+ACK包。
第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1)。
三次握手完成,此時客戶機與服務器進入TCP連接成功狀態。這時客戶機就可以與服務器互傳數據了。
當然這個過程我們也可以看做兩個人之間的一次對話開始的建立。
第一次握手 甲:某某在嗎?
第二次握手 乙:在啊,你有什么事嗎?
第三次握手 甲:我有什么什么是找你。
當然可能并不能完全把TCP三次握手詳細的表示出來,但過程我們可以近似這樣來看待,方便我們的理解。
TCP連接終止
參加數據連接的任何一方都可以關閉連接,TCP斷開連接也被稱為TCP四次握手。
第一次握手:主動中斷方向另一方發送FIN和ACK位置1的TCP報文段。
第二次握手:被動的一方向主動斷開的一方返回ACK位置1的TCP的報文段。
第三次握手:被動方向主動斷開的一方發送FIN和ACK位置1的TCP報文段。
第四次握手:主動斷開的一方向另一方返回ACK位置1的TCP報文段。
為什么TCP建立只需要三步反而斷開卻要四步?
因為假如A和B要斷開連接,這時A會向B發送FIN,B收到后就會回復ACK,但有可能B還有數據未傳輸完成,所以ACK和FIN并沒有一起回復給A,等到B的數據傳輸完成后,才會發送FIN給A,A收到B的FIN回復ACK這時雙方就斷開連接了,這也是為什么斷開為什么比建立要多一步。
TCP端口及其應用
UDP協議
UDP是一個無連接、不保證可靠性的的傳輸協議,他與TCP都處于傳輸層,雖然它并不能保證可靠性,但它在數據傳輸過程中延遲小、數據傳輸效率高。
UDP首部的格式圖
源端口號:用來標識發送端的進程。
目標端口號:用來標識接收端進程。
UDP長度:表示UDP的總長度。
校驗和:用來對UDP的數據的差錯進行檢驗。
UDP端口及其應用
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。