TCP協議
1.頭部。出現在每個TCP報文段,用于指定通信的源端埠號,目的端埠號,管理TCP連接,控制兩個方向的資料流。
2.TCP狀態轉移程序。TCP連接的任意一端都是一個狀態機。TCP的建立斷開狀態改變。
3.TCP資料流。互動資料流和成塊資料流
4.TCP資料流的控制。保證可靠和質量->超時重傳和擁塞控制
TCP服務的特點 (面向連接、位元組流、可靠傳輸)
1.傳輸層主要的兩個協議 、 UDP協議 和 TCP協議
2.TCP協議通信,雙方必須建立連接,才開始資料讀寫。雙方要為該鏈接分配必要的內核資源,用來管理連接的狀態和連接上資料的傳輸。TCP連接是全雙工的(雙方資料讀寫可以通過一個連接),完成后,斷開連接,釋放系統資源。
3.TCP是一對一連接的,廣播多播不能使用TCP服務。 UDP適合哦
4.TCP模塊發送的TCP報文段個數和應用程式執行寫操作沒有數量關系》》》》可能發送的資料分片處理啊~~~
5.應用程式讀的次數和TCP報文段個數也沒關系。讀的大小,取決于讀緩沖區的大小,TCP按照報文段的序號排好依次放入TCP接受緩沖區中噠。
6.根據第四條和第五條,得出位元組流概念》》》》應用程式對資料的發送和接受是沒有邊界限制的~。UDP發送一次就要讀一次,否則要丟包的,沒有足夠大小的讀緩沖區,那UDP資料會被截斷//
7.TCP采用發送應答機制,即發送端發送的每個TCP報文段必須得到接收方的應答,才認為TCP報文段傳輸成功。
8.TCP采用超時重傳機制,發送一個TCP報文段后啟動定時器,在定時器時間內未收到應答,則再次發送。
9.TCP報文段最終是以IP資料報發送的,而IP資料報到接收端很大可能是無序的重復的,TCP協議將對TCP報文重排,整理,再交給應用層。
1.16位埠號(port number) 源埠號和目的埠號
2.32位序號(sequence number) 第一個、序號值被初始化為某個隨機值ISN(initial sequence number) TCP報文是位元組流第1025~2048位元組,序號值是ISN+1025
3.32位確認號(acknowledgement number) 用作另一方TCP報文段相應。其值是收到TCP報文段序號值加1
4.4位頭部長度(header length)標識TCP頭部有多少個32bit字,最大為15,所以TCP頭部最長60位元組。
5.6位標志位
URG標志,表示緊急指標(urgent poinnter)是否有效
ACK標志,表示確認號是否有效
PSH標志,提示接收端應用程式應該立即從TCP接識訓沖區中讀走資料,騰沖空間
RST標志,表示要求對方重新建立連接。 帶此標志的報文段稱為復位報文段
SYN標志,表示請求建立一個連接。帶此標志的報文段稱為同步報文段
FIN標志,表示通知對方本端要關閉連接了。帶此標志的報文段稱為結束報文段
6.16位視窗大小(window size) 流量控制 告訴對方還能容納多少個位元組資料
7.16位校驗和(TCP checksum)CRC校驗頭部和資料部分
8.16位緊急指標(urgent pointer) 正偏移量。他和序號欄位的值相加表示最后一個緊急資料的下一位元組的序號.發送緊急資料的方法。
TCP頭部選項
TCP頭部最后一個選項欄位是可邊長的可選資訊。 最多包含40位元組,因為TCP頭部最大60位元組,前面已經占20位元組
kind說明選項的型別。
kind=0 選項表結束選項
kind=1 空操作(nop)選項,一般用于將TCP選項的總長度填充為4位元組整數倍
kind=2 最大報文短長度選項 MSS(最大報文長度)對以太網而言是1460位元組(1500-20TCP頭部-20IP頭部)
kind=3 視窗擴大因子選項,如果視窗擴大因子(移位數)為M,接受視窗大小為N,那么N向左移3位(轉為2進制),相當于N×2的M次方
kind=4 選擇性確認(selective acknowledgment,SACK) 改善發送情況,原本出現差錯要發很多個TCP報文,接受到的也要發,使用這個,可以去除重復
kind=5 SCAK實際作業的選項,告訴對方那些沒收到,讓對方重新發
kind=8 時間戳選項。計算雙方之間的回路時間(Round Trip Time,RTT),/proc/sys/net/ipv4/tcp_timestamps —看了下里頭就保存了個1. (這個是啟用或關閉時間戳)
前20個位元組是IP報的頭部,第21個位元組開始是TCP頭部資訊《第2行第3個》
0xb075是源埠號 —– 0x0017是目的埠
0xd058 670c 是序號 —– 0x0000 0000是確認號
0xa 是TCP頭部長度為10個32位(40位元組) —–0x002 設定SYN標志(同步報文段)
0xaaaa 接受視窗大小(位元組) —– 0xfe30 頭部校驗和(校驗頭部還有據部分!!!)
0x0000 沒設定緊急指標 —- 0x0204 kind 和length(各1位元組 8位)
0xffd7 最大報文長度 —- 0x0402 允許SACK(改善~~~)
0x080a 時間戳kind和length —-0x0001 6f0c時間戳
0x0000 0000 回顯應答時間戳 —– 0x01空操作
0x0303視窗擴大因子kind和length 0x07 視窗擴大因子為7(左移7位~)
FLAG[S] 表示是SYN標志(同步報文段)
seq是序號值3495454476 因為它是第一個報文段所以也是此次傳輸的ISN值(隨機值)。其他都要加上位元組流的值。
win 接受通過視窗大小 mss(max segment size最大報文長度)為65495
sackok同意改善~~SACK~ TS val 發送端的時間戳 93964
ecr時間戳回顯應答(因為這是第一次TCP通信的第一個TCP報文段,所以對方時間戳應答為0) nop空操作
wscal 視窗擴大因子7
length為0意思就是資料部分為0 因為應用層資料沒發生交換
uj5u.com熱心網友回復:
記下來備用 哈哈uj5u.com熱心網友回復:
記下來備用 ,寫的很詳細uj5u.com熱心網友回復:
這個得馬克一下,留轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/40574.html
標籤:網絡協議與配置
