1. TCP 報文格式詳解 緩存
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
(1). 源端口和目的端口字段——各佔 2 字節,標識了發送方和接收方的應用進程,如2210,80端口
(2). 序號字段——佔 4 字節,TCP 鏈接中傳送的數據流中的每個字節都編上一個序號,序號字段的值則指的是本報文段所發送的數據的第一個字節的序號
(3). 確認號字段——佔 4 字節,是指望收到對方的下一個報文段的數據的第一個字節的序號
(4). 數據偏移(4位首部長度)——佔4bit,它指出 TCP 報文段的數據起始處距離 TCP 報文段的起始處有多遠
(5). 保留字段——佔6bit,保留爲從此使用,但目前應置爲 0
(6). 緊急比特 URG —— 當URG 爲1 時,代表緊急指針字段有效。它告訴系統此報文段中有緊急數據,應儘快傳送(至關於高優先級的數據)
(7). 確認比特 ACK —— 只有當 ACK爲 1 時確認號字段纔有效,當 ACK爲 0 時,確認號無效
(8). 推送比特 PSH (PuSH) —— 接收TCP收到推送比特置 1 的報文段,就儘快地交付給接收應用進程,而再也不等到整個緩存都填滿了後再向上交付
(9). 復位比特 RST (ReSeT) —— 當 RST爲 1 時,代表 TCP 鏈接中出現嚴重差錯(如因爲主機崩潰或其餘緣由),必須釋放鏈接,通知一下對方
(10). 同步比特 SYN —— 同步比特 SYN 置爲 1,就表示這是一個鏈接請求或鏈接接受報文
(11). 終止比特 FIN (Final) —— 用來釋放一個鏈接,當FIN 1 時,代表此報文段的發送端的數據已發送完畢,並要求釋放運輸鏈接
(12). 窗口字段 —— 佔 2 字節,窗口字段用來控制對方發送的數據量,單位爲字節。TCP 鏈接的一端根據設置的緩存空間大小肯定本身的接收窗口大小,而後通知對方以肯定對方的發送窗口的上限
(13). 檢驗和 —— 佔 2 字節,檢驗和字段檢驗的範圍包括首部和數據和僞段頭(不是TCP裏的信息,可是計算校驗和的時候也計算了的內容:IP地址,TCP數據段長度,協議類型)
(14). 緊急指針字段 —— 佔 16 bit,緊急指針指出在本報文段中的緊急數據的位置
(15). 選項字段 —— 長度可變,TCP 規定了二種選項,最大報文段長度 MSS (Maximum Segment Size)。MSS 告訴對方 TCP:「個人緩存所能接收的報文段的數據字段的最大長度是 MSS 個字節。」 和窗口擴大因子,用於擴大接收方窗口
|
2. 三次握手和四次揮手詳解 服務器
TCP標誌位,有6種標示:SYN(synchronous創建聯機) ,ACK(acknowledgement 確認) ,PSH(push傳送), FIN(finish結束) ,RST(reset重置), URG(urgent緊急) spa
Sequence number(順序號碼) ,Acknowledge number(確認號碼),在上面咱們已經詳細說明! 指針
三次握手: 進程
1
2
3
|
第一次握手:創建鏈接時,主機A發送SYN包(syn=m)到服務器,並進入SYN_SEND狀態,等待主機B確認
第二次握手:主機B收到SYN包,必須確認主機A的SYN(ACK=m+1),同時本身也發送一個SYN包(SYN=n),即SYN+ACK包,此時主機B進入SYN_RECV狀態
第三次握手:主機A收到主機B的SYN+ACK包,向主機B發送確認包ACK(ACK=n+1),此包發送完畢,主機A和主機B進入ESTABLISHED狀態,完成三次握手
|
四次揮手: ci
1
2
3
4
|
當主機A完成數據傳輸後,將控制位FIN置1,提出中止TCP鏈接的請求
主機B收到FIN後對其做出響應,確認這一方向上的TCP鏈接將關閉,將ACK置1
由主機B端再提出反方向的關閉請求,將FIN置1
主機A對主機B的請求進行確認,將ACK置1,雙方向的關閉結束
|