TCP學習(1)--報文段首部格式

1.TCP的主要特點

(1).TCP的面向連接的運輸層協議;
(2).每一條TCP連接只能有兩個端點(endpoint),是點到點之間的連接,每一個端點稱爲套接字(socket),套接字socket=(IP地址:端口號)。
(3).TCP提供可靠支付的服務;
(4).TCP提供雙工通信;
(5).面向字節流。


2.TCP報文段的首部格式

    儘管TCP是面向字節流,但是TCP傳送的數據單元卻是報文段。一個TCP報文段分爲首部和數據兩個部分,而TCP的全部功能都體現在它首部中各字段的作用。
    TCP報文段首部的前20個字節是固定的,後面有4N字節是根據需要而增加的選項。因此TCP首部的最小長度爲20字節。
    TCP報文段首部如下圖所示

   固定部分的介紹如下:
   (1).Souce Port:源端口。
   (2).Destination Port: 目的端口。
   (3).Sequence Number: 序號,表示本報文段所發送的數據的第一個字節的序號。
   (4).Acknowledge Number:確認號,期望收到對方下一個報文段的第一個數據字節的序號;若確認號等於n,則表示序號爲n-1爲止的所有數據都已經正確的收到了。
   (5).Data Offset:數據偏移,報文段的數據起始位置距離報文段的起始位置的距離,單位爲32位字。
   (6).Reserved:保留
   (7).URG:緊急位,當該位爲1時,表明緊急指針(Urgent Pointer)有效。當URG置1時,發送應用程序進程就告訴發送方的TCP有緊急數據要傳送。於是,發送方TCP就把緊急數據插入到本報文段數據的最前面,而在緊急數據後面的數據仍是普通數據。要與緊急指針(Urgent Pointer)配合使用。
   (8).ACK:僅當ACK=1時,確認號(Acknowledge Number)纔有效。TCP規定,在連接建立後所有傳送的報文段都必須把ACK置1。
   (9).PSH:即PUSH,推送,發送方把PSH位置1時,TCP立即創建一個報文段發送出去。接收方TCP收到PSH=1的報文段,就儘快地交付給接收應用進程,而不再等到整個緩存都填滿了後才向上交付。
   (10).RST:復位,當RST=1時,表明釋放連接,然後再重新建立連接。RST置1還用來拒絕一個非法報文段或拒絕打開一個連接。
   (11).SYN:即Synchronization,同步,在建立連接的時候用來同步序號的當SYN=1而ACK=0時,表明這是一個連接請求報文段。對方若同意建立連接,則在響應的報文段中使SYN=1和ACK=1。因此,SYN置爲1就表示這是一個連接請求或連接接受報文。
   (12).FIN:終止,用來釋放一個連接。當FIN=1時,表明此報文段的發送方的數據已發送完畢,並要求釋放連接。
   (13).Window:窗口,指的是發送本報文段的一方的接收窗口(而不是自己的發送窗口)。窗口值告訴對方,從本報文段首部中的確認號(Acknowledge Number)開始,報文接收方目前運行發送的數據量。
   (14).Check Sum:校驗和,用於檢查收到的數據是否有錯。
   (15).Urgent Point:緊急指針。僅在URG=1時有效,它指出了緊急數據的末尾在報文段中的位置。即使窗口爲0時,也可以發送緊急數據。
   (16).Options:選項,長度可變,最長可達40個字節。當沒有使用選項時,TCP的首部長度是20個字節。

   這些報文段各個部分在TCP建立連接、TCP數據傳輸和TCP斷開連接時,會出現不同的狀態,特別是六個標誌位:URG,ACK,PSH,RST,SYN和FIN。TCP連接的建立和斷開將在後面介紹。



參考文獻
謝希仁, 計算機網絡(第五版): 電子工業出版社, 2007.



版權所有,歡迎轉載,轉載請註明出處,謝謝微笑





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章