2021-05-12 14:32:11
TCP與UDP協定
傳輸層協定主要有兩個: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埠及其應用
相關文章