TCP/IP 總結
- TCP/IP協議族體系結構和主要協議
下層協議通過封裝為上層協議提供相應的接口,通過頭部信息中的類型字段實現分用。‘
- ARP協議工作原理
主機向自己所在的網絡廣播一個ARP請求,目標地址會回應一個ARP應答,包含自己的物理地址。對於經常訪問或最近訪問的IP會放入ARP高速緩存。
- ICMP:
一類是差錯報文,用來回應網絡錯誤。一類是查詢報文,用來查詢網絡信息。
ICMP重定向報文:斷定引起重定向的IP數據報應該使用哪個路由器來轉發,並且以此來更新路由表。
- IPV4頭部信息
f
頭部長度:有幾個32bit,4位最多表示15,所以頭部最多是60.
標識:同一個數據報的所有分片的標識相同。
片偏移:分片相對於原始IP數據報的開始。
頭部校驗和:CRC檢驗IP頭部是否損壞。
- IP模塊工作流程
- 對頭部做CRC校驗。
- 查看是否設置了源站路選項(如果是則調用數據報轉發子模塊來處理)
- 查看是否發送給本機(是,選擇上一層分用的協議。否,調用數據報轉發子模塊處理)
- TCP協議
- 特點:面向連接,字節流,可靠傳輸。(tcp連接是全雙工的)
- TCP頭部信息
32位序號:初始化為ISN,後續的序號為ISN+攜帶數據第一個字節的偏移
32位確認號:基於TCP的可靠鏈接,每次收到數據都需要確認。
4位頭部長度:最大15個4字節,也就是60
6位標識:
URG:緊急指針是否有效。
ACK:攜帶ACK的保文為確認報文
PSH:接收端應立即從緩沖區讀走數據
RST:復位報文
SYN:同步報文(請求連接)
FIN:結束報文段
窗口大小:緩沖區還能容納多少字節的數據。
選項:
kind=2 最大報文段長度選項一般是1460(1500 - 40)
kind=3 窗口擴大因子(只能出現在同步報文中)
kind=4 選擇性確認
kind=5 是kind=4的補充,標記了不連續的數據塊
kind=8 精確計算通信雙方的回路時間。
- TCP三次握手
- 連接超時
具有相同的序號值,發送的時間間隔:1s 2s 4s 8s 16s五次重傳,全部失敗後放棄連接並通知。
- TCP四次揮手
- TCP狀態轉移圖
- connect失敗原因:
- connect的目標端口不存在
- connect在超時時間內未收到服務器的確認報文
- TIME_WAIT狀態
- 可靠終止TCP連接
- 保證讓遲來的TCP報文有足夠的時間被識別並丟棄(2*MSL)
- 復位報文段
-
訪問不存在的端口
- 異常終止鏈接(SO_LINGER)
- 處理半打開連接
- 延遲確認(服務器端)
不馬上確認上次收到的數據,在一段延遲後查看是否有數據要發送,與確認報文一起發送,減少TCP報文的數量。
- 超時重傳
與連接超時一樣,一共執行5次,五次均失敗的情況下有ARP和IP接管(發送廣播查詢ip)。
- 擁塞控制
SWND(一次性寫入的數據)太小,會導致網絡延遲。太大,會導致網絡擁塞,頻繁丟包。
判斷擁塞發生的方法:
-
傳輸超時(TCP重傳定時器溢出)
- 接收到重復的確認報文段
慢啟動和擁塞避免(通過RTT時間判斷):CWND從1開始以次方的方式增加,知道達到ssthresh的值,每次收到確認加一。一旦發生擁塞,ssthresh的值減半,CWND重新從1開始次方增加。
快速重傳和快速恢復(每收到一個無序報文就立即發出重新確認):快重傳因為收到了三個重新確認報文,則不必等他超時。快速恢復時ssthresh減半,CWND減半並每次收到確認後加1。
TCP/IP 總結