TCP報(bào)文結(jié)構(gòu)網(wǎng)絡(luò)協(xié)議
TCP報(bào)文結(jié)構(gòu)
固定首部長(zhǎng)度為20字節(jié),可變部分0~40字節(jié),各字段解釋:
source port number:源端口,16bits,范圍0~65525。
target port number:目的端口,16bits,范圍同上。
sequence number:數(shù)據(jù)序號(hào),32bits,TCP 連接中傳送的數(shù)據(jù)流中的每一個(gè)字節(jié)都編上一個(gè)序號(hào)。序號(hào)字段的值則指的是本報(bào)文段所發(fā)送的數(shù)據(jù)的***個(gè)字節(jié)的序號(hào)。
acknoledgement number:確認(rèn)號(hào),32bits,期望收到對(duì)方的下一個(gè)報(bào)文段的數(shù)據(jù)的***個(gè)字節(jié)的序號(hào)。
header length:數(shù)據(jù)偏移,4bits,單位為4字節(jié),它指出報(bào)文數(shù)據(jù)距TCP 報(bào)頭的起始處有多遠(yuǎn)(TCP報(bào)文頭長(zhǎng)度?)。
reserved:保留字段(圖中,包含CWR,ECE),6bits,保留今后使用,目前置0處理。
URG:緊急比特,1bit,當(dāng) URG=1 時(shí),表明緊急指針字段有效。它告訴系統(tǒng)此報(bào)文段中有緊急數(shù)據(jù),應(yīng)盡快傳送(相當(dāng)于高優(yōu)先級(jí)的數(shù)據(jù))。
ACK:確認(rèn)比特,1bit,只有當(dāng) ACK=1 時(shí)確認(rèn)號(hào)字段才有效。當(dāng) ACK=0 時(shí),確認(rèn)號(hào)無效。
PSH:推送比特,1bit,接收方 TCP 收到推送比特置1的報(bào)文段,就盡快地交付給接收應(yīng)用進(jìn)程,而不再等到整個(gè)緩存都填滿了后再向上交付。
RST:復(fù)位比特,1bit,當(dāng) RST=1 時(shí),表明 TCP 連接中出現(xiàn)嚴(yán)重差錯(cuò)(如由于主機(jī)崩潰或其他原因),必須釋放連接,然后再重新建立運(yùn)輸連接。
SYN:同步比特,1bit,同步比特 SYN 置為 1,就表示這是一個(gè)連接請(qǐng)求或連接接受報(bào)文。
FIN:終止比特,1bit,用來釋放一個(gè)連接。當(dāng)FIN=1 時(shí),表明此報(bào)文段的發(fā)送端的數(shù)據(jù)已發(fā)送完畢,并要求釋放運(yùn)輸連接。
window size:窗口大小,16bits,窗口字段用來控制對(duì)方發(fā)送的數(shù)據(jù)量,單位為字節(jié)。TCP 連接的一端根據(jù)設(shè)置的緩存空間大小確定自己的接收窗口大小,然后通知對(duì)方以確定對(duì)方的發(fā)送窗口的上限。
checksum:檢驗(yàn)和,16bits,檢驗(yàn)和字段檢驗(yàn)的范圍包括首部和數(shù)據(jù)這兩部分。在計(jì)算檢驗(yàn)和時(shí),要在 TCP 報(bào)文段的前面加上 12 字節(jié)的偽首部。
urgent pointer:緊急指針字段,16bits,緊急指針指出在本報(bào)文段中的緊急數(shù)據(jù)的***一個(gè)字節(jié)的序號(hào)。
options:選項(xiàng)字段,長(zhǎng)度可變。TCP 首部可以有多達(dá)40字節(jié)的可選信息,用于把附加信息傳遞給終點(diǎn),或用來對(duì)齊其它選項(xiàng)。
抓取TCP報(bào)文