源端口、目標(biāo)端口:計算機(jī)上的進(jìn)程要和其他進(jìn)程通信是要通過計算機(jī)端口的,而一個計算機(jī)端口某個時刻只能被一個進(jìn)程占用,所以通過指定源端口和目標(biāo)端口,就可以知道是哪兩個進(jìn)程需要通信。源端口、目標(biāo)端口是用16位表示的,可推算計算機(jī)的端口個數(shù)為2^16個。 序列號:表示本報文段所發(fā)送數(shù)據(jù)的第一個字節(jié)的編號。在TCP連接中所傳送的字節(jié)流的每一個字節(jié)都會按順序編號。由于序列號由32位表示,所以每2^32個字節(jié),就會出現(xiàn)序列號回繞,再次從 0 開始。那如何區(qū)分兩個相同序列號的不同TCP報文段就是一個問題了,后面會有答案,暫時可以不管。 確認(rèn)號:表示接收方期望收到發(fā)送方下一個報文段的第一個字節(jié)數(shù)據(jù)的編號。也就是告訴發(fā)送發(fā):我希望你(指發(fā)送方)下次發(fā)送的數(shù)據(jù)的第一個字節(jié)數(shù)據(jù)的編號是這個確認(rèn)號。也就是告訴發(fā)送方:我希望你(指發(fā)送方)下次發(fā)送給我的TCP報文段的序列號字段的值是這個確認(rèn)號。 TCP首部長度:由于TCP首部包含一個長度可變的選項部分,所以需要這么一個值來指定這個TCP報文段到底有多長?;蛘呖梢赃@么理解:就是表示TCP報文段中數(shù)據(jù)部分在整個TCP報文段中的位置。該字段的單位是32位字,即:4個字節(jié)。 URG:表示本報文段中發(fā)送的數(shù)據(jù)是否包含緊急數(shù)據(jù)。URG=1,表示有緊急數(shù)據(jù)。后面的緊急指針字段只有當(dāng)URG=1時才有效。 ACK:表示是否前面的確認(rèn)號字段是否有效。ACK=1,表示有效。只有當(dāng)ACK=1時,前面的確認(rèn)號字段才有效。TCP規(guī)定,連接建立后,ACK必須為1。 PSH:告訴對方收到該報文段后是否應(yīng)該立即把數(shù)據(jù)推送給上層。如果為1,則表示對方應(yīng)當(dāng)立即把數(shù)據(jù)提交給上層,而不是緩存起來。 RST:只有當(dāng)RST=1時才有用。如果你收到一個RST=1的報文,說明你與主機(jī)的連接出現(xiàn)了嚴(yán)重錯誤(如主機(jī)崩潰),必須釋放連接,然后再重新建立連接?;蛘哒f明你上次發(fā)送給主機(jī)的數(shù)據(jù)有問題,主機(jī)拒絕響應(yīng)。 SYN:在建立連接時使用,用來同步序號。當(dāng)SYN=1,ACK=0時,表示這是一個請求建立連接的報文段;當(dāng)SYN=1,ACK=1時,表示對方同意建立連接。SYN=1,說明這是一個請求建立連接或同意建立連接的報文。只有在前兩次握手中SYN才置為1。 FIN:標(biāo)記數(shù)據(jù)是否發(fā)送完畢。如果FIN=1,就相當(dāng)于告訴對方:“我的數(shù)據(jù)已經(jīng)發(fā)送完畢,你可以釋放連接了” 窗口大小:表示現(xiàn)在運行對方發(fā)送的數(shù)據(jù)量。也就是告訴對方,從本報文段的確認(rèn)號開始允許對方發(fā)送的數(shù)據(jù)量。 校驗和:提供額外的可靠性。具體如何校驗,參考其他資料。 緊急指針:標(biāo)記緊急數(shù)據(jù)在數(shù)據(jù)字段中的位置。 選項部分:其最大長度可根據(jù)TCP首部長度進(jìn)行推算。TCP首部長度用4位表示,那么選項部分最長為:(2^4-1)*4-20=40字節(jié)。 選項部分的應(yīng)用:
|
|