源埠和目的埠字段——各佔 2 位元組。埠是運輸層與應用層的服務介面。運輸層的復用和分用功能都要通過埠才能實現。
序號字段——佔 4 位元組。tcp 連線中傳送的資料流中的每乙個位元組都編上乙個序號。序號欄位的值則指的是本報文段所傳送的資料的第乙個位元組的序號。
確認號字段——佔 4 位元組,是期望收到對方的下乙個報文段的資料的第乙個位元組的序號。
資料偏移(即首部長度)——佔 4 位,它指出 tcp 報文段的資料起始處距離 tcp 報文段的起始處有多遠。「資料偏移」的單位是 32 位字(以 4 位元組為計算單位)。
保留字段——佔 6 位,保留為今後使用,但目前應置為 0。
緊急 urg —— 當 urg = 1 時,表明緊急指標字段有效。它告訴系統此報文段中有緊急資料,應盡快傳送(相當於高優先順序的資料)。
確認 ack —— 只有當 ack = 1 時確認號字段才有效。當 ack = 0 時,確認號無效。
推送 psh (push) —— 接收 tcp 收到 psh = 1 的報文段,就盡快地交付接收應用程序,而不再等到整個快取都填滿了後再向上交付。
復位 rst (reset) —— 當 rst = 1 時,表明 tcp 連線中出現嚴重差錯(如由於主機崩潰或其他原因),必須釋放連線,然後再重新建立運輸連線。
同步 syn —— 同步 syn = 1 表示這是乙個連線請求或連線接受報文。
終止 fin (finis) —— 用來釋放乙個連線。fin = 1 表明此報文段的傳送端的資料已傳送完畢,並要求釋放運輸連線。
視窗字段 —— 佔 2 位元組,用來讓對方設定傳送視窗的依據,單位為位元組。
檢驗和 —— 佔 2 位元組。檢驗和字段檢驗的範圍包括首部和資料這兩部分。在計算檢驗和時,要在 tcp 報文段的前面加上 12 位元組的偽首部。
緊急指標字段 —— 佔 16 位,指出在本報文段中緊急資料共有多少個位元組(緊急資料放在本報文段資料的最前面)。
選項字段 —— 長度可變。tcp 最初只規定了一種選項,即最大報文段長度 mss。mss 告訴對方 tcp:「我的快取所能接收的報文段的資料字段的最大長度是 mss 個位元組。」
•視窗擴**項 ——佔 3 位元組,其中有乙個位元組表示移位值 s。新的視窗值等於tcp 首部中的視窗位數增大到(16 + s),相當於把視窗值向左移動 s 位後獲得實際的視窗大小。
•時間戳選項——佔10 位元組,其中最主要的字段時間戳值字段(4 位元組)和時間戳回送回答字段(4 位元組)。
•選擇確認選項
填充字段 —— 這是為了使整個首部長度是 4 位元組的整數倍。
(1)a 的 tcp 向 b 發出連線請求報文段,其首部中的同步位 syn = 1,並選擇序號 seq = x,表明傳送資料時的第乙個資料位元組的序號是 x。
(2)• b 的 tcp 收到連線請求報文段後,如同意,則發回確認。
• b 在確認報文段中應使 syn = 1,使 ack = 1, 其確認號ack = x + 1,自己選擇的序號 seq = y。
(3)• a 收到此報文段後向 b 給出確認,其 ack = 1,確認號 ack = y + 1。a 的 tcp 通知上層應用程序,連線已經建立。
以三次握手的方式管理tcp連線可以更好地避免誤連線,
斷開連線(四次揮手)既可以由客戶端發起,也可以由伺服器發起。圖示為客戶端主動發起斷開連線請求。
(1) 資料傳輸結束後,通訊的雙方都可釋放連線。 現在 a 的應用程序先向其 tcp 發出連線釋放報文段,並停止再傳送資料,主動關閉 tcp連線。a 把連線釋放報文段首部的 fin = 1,其序號 seq = u,等待 b 的確認。
(2)b 發出確認,確認號 ack = u + 1,而這個報文段自己的序號 seq = v。tcp伺服器程序通知高層應用程序。從 a 到 b 這個方向的連線就釋放了,tcp 連線處於半關閉狀態。b 若傳送資料,a 仍要接收。
(3) 若 b 已經沒有要向 a 傳送的資料,其應用程序就通知 tcp 釋放連線。
(4) a 收到連線釋放報文段後,必須發出確認。在確認報文段中 ack = 1,確認號 ack = w + 1,自己的序號 seq = u + 1。
為什麼必須經過時間2msl後才能真正釋放掉?
•第一,為了保證 a 傳送的最後乙個 ack 報文段能夠到達 b。
•第二,防止 「已失效的連線請求報文段」出現在本連線中。a 在傳送完最後乙個 ack 報文段後,再經過時間 2msl,就可以使本連線持續的時間內所產生的所有報文段,都從網路中消失。這樣就可以使下乙個新的連線中不會出現這種舊的連線請求報文段。
TCP報文段及三次握手四次揮手過程
源埠和目的埠字段 各佔 2 位元組。埠是運輸層與應用層的服務介面。運輸層的復用和分用功能都要通過埠才能實現。序號字段 佔 4 位元組。tcp 連線中傳送的資料流中的每乙個位元組都編上乙個序號。序號欄位的值則指的是本報文段所傳送的資料的第乙個位元組的序號。確認號字段 佔 4 位元組,是期望收到對方的下...
TCP三次握手 四次揮手
tcp 三次握手 tcp 連線是通過三次握手進行初始化的。三次握手的目的是同步連線雙方的序列號和確認號並交換 tcp 視窗大小資訊。以下步驟概述了通常情況下客戶端計算機聯絡伺服器計算機的過程 1.客戶端向伺服器傳送乙個syn置位的tcp報文,其中包含連線的初始序列號x和乙個視窗大小 表示客戶端上用來...
TCP三次握手 四次揮手
服務端的tcp程序先建立傳輸控制塊tcb,準備接受客戶端程序的連線請求,然後服務端程序處於listen狀態,等待客戶端的連線請求,如有,則作出響應。1 客戶端的tcp程序也首先建立傳輸控制模組tcb,然後向服務端發出連線請求報文段,該報文段首部中的syn 1,ack 0,同時選擇乙個初始序號seq ...