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
- 交互流程