第六篇 TCP協議

1. 專業名詞縮寫

  • 應用層頭:ah(Application Header)
  • 表示層頭:ph(Presentation Header)
  • 會話層頭:sh(Session Header)
  • 傳輸層頭:th(Transport Header)
  • 網絡層頭:nh(Network Header)
  • 數據鏈路層頭:dh(Data Link Header)
  • 數據鏈路層報尾:dt(Data Link Termination)
  • 應用層協議數據單元:PDU(Protocol Data Unit)
  • 地址解析協議:ARP(Address Resolution Protocol)
  • 路由信息協議:RIP(Routing Information Protocol)
  • 網間控制報文協議:ICMP(Internet Control Message Protocol)
  • 超時重傳時間:RTO(Restransmission TimeOut)
  • 連接往返時間:RTT(Round Trip Time)

2. 網絡模型

國際化標準組織ISO於1981年正式推薦了一個網絡系統結構—七層參考模型,也叫作開放系統互連模型。

  • 七層網絡模型
層數 名字 主要功能 對應的典型設備 傳輸單元
7 應用層 提供應用程序間通信 計算機:應用程序,如FTP、SMTP、HTTP等 程序級數據
6 表示層 處理數據格式數據加密等 計算機:編碼方式、如圖像編解碼、URL字段傳輸編碼 程序級數據
5 會話層 建立、維護和管理會話 計算機:建立會話,如session認證、斷點續傳 程序級數據
4 傳輸層 建立主機端到端鏈接 計算機:進程和端口 數據段(segment)
3 網絡層 尋址和路由選擇 網絡:路由器、防火牆、多層交換機 數據包(packet)
2 數據鏈路層 提供介質訪問、鏈路管理等 網絡:網卡、網橋、交換機 幀(frame)
2 物理層 比特流傳輸 網絡:中繼器、集線器、網線和HUB 比特(bit)

3. 五層網絡模型

  • 應用層:確定進程之間通信的性質以滿足用戶需求(http, smtp,ftp等)
  • 運輸層:負責主機間不同進程的通信(tcp, udp)
  • 網絡層:負責分組交換網中不同主機間的通信(ip)
  • 數據鏈路層:負責將網絡層的IP數據報組成幀
  • 物理層:透明地傳輸比特流

4. 四層網絡模型

應用層:DNS,FINGER,WHOIS,FTP,HTTP,GOPHER,TELNET,IRC,SMTP,USERNET
傳輸層:TCP,UDP
網間層:TCMP, IP
網絡接口層:ARP,RARP

5. TCP頭部

  • 格式如下:
    在這裏插入圖片描述
    (1)16位端口號(port number):(所有知名服務使用的端口號都定義在/etc/services文件中)
    (2)offset:(header length)標識該TCP頭部有多少個32bit,有4位最大能標識15,所以TCP頭部最長爲60byte
    (3)tcp flags標誌位:
    URG標誌:表示緊急指針(urgent pointer)是否有效
    ACK標誌:表示確認號是否有效,一般稱攜帶ACK標誌的報文段爲“確認報文段”
    PSH標誌:提示接收端應用程序應該立即從TCP接收緩衝區中讀走數據,爲接收後續數據騰出空間;
    RST標誌:表示要求對方重新建立連接,一般稱攜帶RST標誌的TCP報文段爲“復位報文段”
    SYN標誌:表示請求建立一個連接,一般稱攜帶SYN標誌的TCP報文段爲“同步報文段”
    FIN標誌:表示通知對方本段要關閉連接了,一般稱攜帶FIN標誌的TCP報文段爲“結束報文段”
    (4)16位窗口大小(window size):是TCP流量控制的一個手段,這裏說的窗口指的是接收通告窗口(Receiver Window, RWND)。它告訴對方本端的TCP接收緩衝區還能容納多少個字節的數據,這樣對方就可以控制發送數據的速度
    (5)16位校驗和(TCP checksum):由發送端填充,接收端對TCP報文段指向CRC算法,以校驗TCP報文段在傳輸過程中是否損壞。注意這個校驗不僅包括TCP頭部,也包括數據部分;
    (6)16位緊急指針(urgent pointer):是一個正的偏移量,它和序號字段的值相加表示最後一個緊急數據的下一個字節的序號
  • 一個tcp連接由源地址,源端口,目的地址,目的端口和協議唯一確定
  • TCP的3次握手和4次揮手
    (1)3次握手
    client(SYN J)---->service, service(ACK=J+1 SYK K)---->client, client(ACK K+1)—>service
    (2)4次揮手
    client(FIN M)---->service
    service(ACK M+1)—>client
    service(FIN N)---->client
    client(ACK N+1)—>service
    誰發送了FIN就關閉了發送,誰接收到就關閉了接收
  • TCP連接狀態下的各種狀態
    (1)CLOSED:初始化狀態
    (2)LISTEN:
    (3)SYN_SENT:
    (4)SYN_RECV:
    (5)ESTABLISHED:
    (6)FIN_WAIT_1:
    (7)FIN_WAIT_2:
    (8)TIME_WAIT:
    (9)CLOSING:
    (10)CLOSE_WAIT:
    (11)LAST_ACK:
    (12)CLOSED:
  • 各種狀態的切換如下圖:
    在這裏插入圖片描述
    具體分析見:http://www.it610.com/article/3915762.htm

6. TCP超時重傳

7. TCP滑動窗口

  • 作用:
    (1)提供TCP的可靠性
    (2)提供TCP的流控特效

8. TCP擁塞

4個核心算法:快開始(Slow Start)、擁塞避免(Congestion Voidance)、快速重傳(Fast Retransmit)、快速恢復(Fast Recovery)

9. TCP網絡編程API

  • 交互流程
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章