
image.png
- 源端口地址和目標(biāo)端口地址:標(biāo)識發(fā)送方和接收方應(yīng)用程序端口號
- 序號:定義了指派給本報文第一個數(shù)據(jù)字節(jié)的編號。
- 確認(rèn)號(ack):定義了報文段的接收方期望從對方接收的字節(jié)編號。
- HLEN:Head Length 首部長度。指出首部一共有多少個4字節(jié)。首部長度可以在20~60個字節(jié)之間,因此這個字段的值可以在5(5 x 4 = 20) ~ 15(15 x 4 = 60)之間
- 保留:這是一個6位字段,保留為今后使用
- 控制:這個字段定義了6種不同的控制位或標(biāo)志,可以同時設(shè)置1位或多位標(biāo)志。這些標(biāo)志用在TCP的流量控制、連接建立和終止、連接異常終止以及數(shù)據(jù)傳送方式等方面。
- URG:緊急指針有效
- ACK:確認(rèn)是有效的
- PSH:請求推送
- RST:連接復(fù)位
- SYN:同步序號
- FIN:終止連接
- 窗口尺寸:發(fā)送方TCP窗口的大小,以字節(jié)為單位。這個字段是16位的,也就是說窗口的最大長度為65535個字節(jié),這個值由接收方來決定,這種情況下發(fā)送方必須服從接收方的指示。
- 檢驗和:涉及三個部分:一個偽首部(后面會解釋)、TCP首部以及從應(yīng)用層來的數(shù)據(jù)。UDP是否使用檢驗和是可選的,而TCP使用檢驗和是強(qiáng)制性的。
- 緊急指針:只有當(dāng)緊急標(biāo)志置位時(URG = 1),這個16位的字段才有效,此時報文中包含緊急數(shù)據(jù)
- 選項:長度可變,最長40個字節(jié)。
深入解析:
1 序號和確認(rèn)號
字節(jié)號:TCP把在一個連接中要發(fā)送的所有數(shù)據(jù)字節(jié)(八位組)都編上號,這就是字節(jié)號。
編號不一定從0開始,TCP選擇0~(2^32 -1)之間的一個隨機(jī)數(shù)作為第一個字節(jié)的編號。例如,若這個數(shù)是1057,而要發(fā)送的數(shù)據(jù)總共有6000個字節(jié),那么這些字節(jié)的編號就是從1057~7056。
序號:每個報文段的序號,就是這個報文段中第一個數(shù)據(jù)字節(jié)的編號。
確認(rèn)號:接收方期望接收的下一個字節(jié)的編號。如果報文段的接收方成功接收了對方發(fā)來的編號為n的字節(jié),那么它就返回n+1作為確認(rèn)號。
2 控制位
控制位包括的URG、ACK、PSH、RST、SYN和FIN,一共6中。
控制位的取值只能為0或1,1表示生效
在后續(xù)筆記中,有涉及到ACK和ack,其中ACK取值只為0或1(1表示確認(rèn)有效),ack表示確認(rèn)號(接收方期望接收的下一個字節(jié)的編號)。
以上內(nèi)容摘自:
《TCP/IP協(xié)議族》第四版