第三部分——傳輸層層協定
TCP協定:
TCP的連接配接狀态之在端系統存在,在網絡鍊路上和交換機上是不知道的,因為鍊路上和交換機上沒有到傳輸層的處理能力
TCP是點對點連接配接的,一個連接配接隻有兩個端系統
為了避免頻繁發送TCP封包,TCP設有緩存,每次取出緩存發送,取出的緩存大小受限于MSS(最大封包段長度)
TCP封包結構
源端口号 | 目标端口号 | |||||||
序号 | ||||||||
确認号 | ||||||||
首部長度(機關:4位元組) | 保留 | URG | ACK | PSH | RST | SYN | FIN | 接收視窗 |
網際網路校驗和 | 緊急資料指針 | |||||||
選項 | ||||||||
應用層資料 | ||||||||
一行為32比特,第一行和第五行是等分的(各16比特)第四行接收視窗占16比特,黃色表示TCP首部,灰色表示TCP真實資料部分
TCP封包結構解釋:
- 源端口号、目标端口号:用于多路分解
- 序号:為了TCP可靠傳輸而設計的,用于辨別一個TCP封包,表示本TCP是從哪一個位元組開始傳輸的
- 确認号:本意為确認己方已接受的位元組數(在此序号之前的位元組己方已經全部接受),在規律上,A對B發送的封包的确認号總是等于下一次B對A發送的序号。
- 首部長度:4比特,機關是4位元組,也就是最多可以表示最多((2^4)-1)*4=60個位元組的首部。
之是以要有首部長度,是因為TCP的首部長度是不固定的,有可選的選項字段可以加入,一般情況下可選選項為空,這時TCP首部長度是20個位元組同時可以看出,因為首部長度機關是4位元組,選項隻能加入4位元組的倍數,如果不夠4位元組則填充滿。
- 保留:現在沒有用到的位,有6比特
- URG辨別:1比特,緊急指針,置1表示目前TCP封包要盡快傳輸,無需按照序列發送,需要配合後面2個位元組的緊急資料指針使用
- ACK辨別:1比特,确認辨別,置1表明發送的是一條ACK确認封包,這時确認号才有意義
- PSH辨別:1比特,PUSH辨別,置1表示本次TCP封包要盡快推送到上層應用層,無需等待接收緩存
- RST辨別:1比特,用于重新開機連接配接,置1表示要斷開重建立立TCP連接配接
- SYN辨別:1比特,用于建立連接配接,置1表示目前TCP封包是建立連接配接的封包,TCP三向交握的前兩次封包中SYN都是1
- FIN辨別:1比特,用于拆除連接配接,置1表示發送方要斷開TCP連接配接,TCP四次揮手中,每一方的揮手過程(兩方都要揮手)的第一個TCP封包FIN為1
- 接收視窗:用于協調發送方和接收方的發送速率,防止接收緩存溢出,本字段可以告知接收方發送方還可以接受多少封包(位元組計算)
- 網際網路校驗和:同UDP的校驗和,計算時需要計算整個TCP封包(首部+資料)的長度,16比特,相加回卷