1. 程式人生 > >TCP/IP 總結

TCP/IP 總結

鏈接 div tcp協議 通信 發送 報文段 img 不存在 ont

  • TCP/IP協議族體系結構和主要協議

技術分享圖片

下層協議通過封裝為上層協議提供相應的接口,通過頭部信息中的類型字段實現分用。‘

  • ARP協議工作原理

  主機向自己所在的網絡廣播一個ARP請求,目標地址會回應一個ARP應答,包含自己的物理地址。對於經常訪問或最近訪問的IP會放入ARP高速緩存。

  • ICMP:

  一類是差錯報文,用來回應網絡錯誤。一類是查詢報文,用來查詢網絡信息。

  ICMP重定向報文:斷定引起重定向的IP數據報應該使用哪個路由器來轉發,並且以此來更新路由表。

  • IPV4頭部信息

技術分享圖片f

頭部長度:有幾個32bit,4位最多表示15,所以頭部最多是60.

標識:同一個數據報的所有分片的標識相同。

片偏移:分片相對於原始IP數據報的開始。

頭部校驗和:CRC檢驗IP頭部是否損壞。

  • IP模塊工作流程
  1. 對頭部做CRC校驗。
  2. 查看是否設置了源站路選項(如果是則調用數據報轉發子模塊來處理)
  3. 查看是否發送給本機(是,選擇上一層分用的協議。否,調用數據報轉發子模塊處理)

  • 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失敗原因:
    1. connect的目標端口不存在
    2. connect在超時時間內未收到服務器的確認報文
  • TIME_WAIT狀態
    1. 可靠終止TCP連接
    2. 保證讓遲來的TCP報文有足夠的時間被識別並丟棄(2*MSL)
  • 復位報文段
    1. 訪問不存在的端口

    2. 異常終止鏈接(SO_LINGER)
    3. 處理半打開連接
  • 延遲確認(服務器端)

不馬上確認上次收到的數據,在一段延遲後查看是否有數據要發送,與確認報文一起發送,減少TCP報文的數量。

  • 超時重傳

與連接超時一樣,一共執行5次,五次均失敗的情況下有ARP和IP接管(發送廣播查詢ip)。

  • 擁塞控制

SWND(一次性寫入的數據)太小,會導致網絡延遲。太大,會導致網絡擁塞,頻繁丟包。

判斷擁塞發生的方法:

  1. 傳輸超時(TCP重傳定時器溢出)

  2. 接收到重復的確認報文段

慢啟動和擁塞避免(通過RTT時間判斷):CWND從1開始以次方的方式增加,知道達到ssthresh的值,每次收到確認加一。一旦發生擁塞,ssthresh的值減半,CWND重新從1開始次方增加。

快速重傳和快速恢復(每收到一個無序報文就立即發出重新確認):快重傳因為收到了三個重新確認報文,則不必等他超時。快速恢復時ssthresh減半,CWND減半並每次收到確認後加1。

TCP/IP 總結