TCPIP協議基礎
網絡模型
-OSI參考模型
-OSI參考模型各層功能
-TCP/IP網絡模型
-TCP/IP協議棧
OSI參考模型
– 為了解決網絡設備之間的兼容性問題,國際標準化組織ISO于1984年提出了OSI RM(開放系統互連參考模型)。
OSI參考模型一共有七層:
7 | 應用層 |
---|---|
6 | 表示層 |
5 | 會話層 |
4 | 傳輸層 |
3 | 網絡層 |
2 | 數據鏈路層 |
1 | 物理層 |
對等通信
OSI參考模型采用對等通信,即:
- 同層之間使用相同的協議
- 下層為上層提供服務
封裝與解封裝
OSI參考模型各層功能
?第一層:物理層(Physical Layer)
🧠 作用:
- 負責數據的物理傳輸,即比特流(0和1)的發送與接收。
- 定義了物理媒介的電氣、機械、功能和過程特性。
📌 功能:
-
傳輸介質(如雙絞線、光纖、無線等)。
-
電壓電平、信號速率、連接器類型。
-
比特同步。
-
設備如:網卡、集線器、光模塊。
📦 第二層:數據鏈路層(Data Link Layer)
🧠 作用:
- 在同一網絡內,負責相鄰節點之間的可靠通信。
- 使用**物理地址(MAC地址)**識別設備。
- 檢測和糾正數據在傳輸過程中出現的錯誤。
📌 功能:
-
幀(Frame)的封裝與解封裝。
-
媒體訪問控制(如CSMA/CD)。
-
錯誤檢測(如CRC)、流量控制。
-
協議如:Ethernet(以太網)、PPP、HDLC。
🌐 第三層:網絡層(Network Layer)
🧠 作用:
- 負責數據包從源端到目的端的路由選擇與轉發。
- 使用**邏輯地址(IP地址)**進行尋址和尋路。
- 可以跨越多個網絡(異構網絡間通信)。
📌 功能:
- IP協議:定義地址和路由(如IPv4、IPv6)。
- 路由協議:在路由協議之間傳遞路由信息并計算路由,為可路由協議選擇轉發路徑的協議,如RIP、OSPF、BGP。
- 可路由協議:可以跨越三層設備進行路由轉發的協議,如IP、IPX。
- 不可路由協議:不可跨越三層設備,也不能進行路由轉發的協議,如:NETBEUI
- 分段與組裝。
- 擁塞控制與網絡互連。
🧱 第四層:傳輸層(Transport Layer)
🧠 作用:
- 實現端到端的數據傳輸。
- 提供可靠的傳輸服務,包括數據的分段、重組、流量控制、錯誤校驗、重傳機制等。
📌 功能:
- TCP(傳輸控制協議):可靠連接,有序傳輸(如網頁訪問)。
- UDP(用戶數據報協議):不可靠傳輸,無連接,適用于語音、視頻等實時服務。
- 端口地址識別,實現多個應用同時傳輸數據。
🧑?🤝?🧑 第五層:會話層(Session Layer)
🧠 作用:
- 管理和控制應用程序之間的會話(Session),即通信的起始、維護和終止。
- 支持全雙工或半雙工通信。
📌 功能:
- 會話建立、維護與終止。
- 對話同步(設置“檢查點”來斷點續傳)。
- 授權與令牌控制。
🧠 第六層:表示層(Presentation Layer)
🧠 作用:
- 負責數據的表示方式轉換,使發送方與接收方的數據格式一致。
- 可進行數據加密、解密、壓縮、解壓縮等操作。
📌 功能:
- 轉換字符編碼(如ASCII轉EBCDIC)。
- 數據加密(如SSL/TLS)。
- 數據壓縮(如JPEG、MP3等格式)。
🔒 第七層:應用層(Application Layer)
🧠 作用:
- 是用戶和網絡的直接交互界面。
- 提供應用程序之間通信的服務,如電子郵件、文件傳輸、遠程登錄等。
- 并不等于“應用程序”,而是網絡通信中與應用最貼近的一層。
📌 功能:
TCP/IP網絡模型分為TCP/IP標準模型和TCP/IP五層模型,也是我們現在最常用的兩個模型:
4 | 應用層 |
---|---|
3 | 傳輸層 |
2 | 網絡層 |
1 | 網絡接口層 |
? TCP/IP標準模型
5 | 應用層 |
---|---|
4 | 傳輸層 |
3 | 網絡層 |
2 | 數據鏈路層 |
1 | 物理層 |
? TCP/IP五層模型
TCP/IP協議棧
IP協議
-
IP協議特點
-
IP包頭結構
-
MTU與IP分片
IP協議特點
-
IP是無連接的,在傳輸數據之前不需要建立連接。
-
IP提供的是盡力而為的服務,超過轉發能力時直接丟棄。
-
IP數據包在網絡中的傳送是無序的,在轉發過程中,不考慮到達接收端的順序,每個數據包進行單獨路由(即單獨選擇到達目地的路徑)
-
IP分組傳送是不可靠的,發送端只管發送數據,不關心接收端是否收到數據,IP的可靠性需要靠上層協議來解決。
IP包頭結構
-
標識符:16位
- 同一IP數據包的各個分片的標識符相同
-
標志位(Flags):3位
-
第一位:沒有使用
-
第二位:DF位,DF=1不允許對該包進行分片,DF=0允許分片
-
第三位:MF位,MF=1表示后面還有分片,MF=0表示是最后一個分片,后面沒有分片了。
-
-
分段偏移量:13位
本分片數據載荷在原IP包數據在和中的相對位置,單位為7字節。
例如:一個4000字節的IP包在MTU=1500字節下的分片:
4000字節IP包的內容長3980字節(減去20字節的包頭長度),內容的第一個字節偏移量為0.
第一個分片長1500字節,MF=1,分段偏移量0,包含原包內容1480字節;
第二個分片長1500字節,MF=1,分段偏移量185,含原包內容1480字節;
第三個分片長1040字節,MF=0,分段偏移量370,含原包內容1020字節
MTU與IP分片
IP分片說白了就是當一個IP包很大的時候,就是超過了MTU,那么接收方是無法直接接收這么大的數據包的,如果直接傳輸過來,接收方會直接把這個包丟掉,不會進行接收轉發,那么該如何正確的去進行分片好讓接收方能夠正確的接收并且正確的進行重組呢,就像上面說到的標識符,從一個IP包分開的的數據包的標識符是一樣的,這是一方面;另一方面就是通過上面的分段偏移量正確的去確認這個分片重組的順序,因為IP傳輸是無序的,所以分段偏移量很重要,然后,為了能夠傳輸更大的數據,這個分段偏移量通常會除以8,上面那個分段偏移量為185,乘以8后就是傳輸過來的數據1480字節,而第三個分段偏移量370,減去185后再乘以8其實就是傳輸過來的1020字節。還有一個需要注意點就是DF,當DF為1時,是不允許對該數據包進行分片的,如果這個不能分片的包被發出去了,處理數據包的接收方會直接扔掉,只有當DF為0時才能進行分片,還有就是接收方怎么知道分片是否接收完畢了,是通過MF確定的,當MF為1時,表示后面還有分片,當MF為0時,表示后面沒有分片了,這個MF為0的分片就是最后一個分片。
-
MTU(最大傳輸單元)
-
鏈路層MTU:鏈路層能傳的最大的幀,包含鏈路層頭部。
-
網絡層MTU:網絡層能傳的最大的包,包含網絡層頭部。
-
-
Cisco MTU命令含義
- Cisco設備在數據包進入接口和從接口發出時都檢查MTU。
- MTU命令:最大二層凈載荷長度,默認值為1500字節。
- IP MTU命令:最大IP數據包長度。
- MPLS MTU命令:最大MPLS數據報文長度。
- 配置MTU命令,也配置IP MTU和MPLS MTU命令
- IP MTU命令也影響IP報文轉發;
- MPLS MTU影響MPLS報文轉發;
- MTU命令不影響IP和MPLS報文轉發,但影響其他報文轉發。
- 配置MTU命令,不配置IP MTU和其他 MTU命令
- MTU命令影響所有報文轉發。
-
路由器IP分片
- 數據包大于入接口MTU,Cisco設備將丟棄該包。
- 數據包大于出接口MTU
- 該包的DF=1時,丟棄該包;該包的DF=0時,將該包分片。
- IP分片只在目標主機上重組,不會在轉發的設備上面重組。
TCP與UDP
- TCP協議概述
- TCP包頭結構
- TCP工作機制
- UDP協議概述
- UDP包頭結構
TCP協議概述
- Transmission Control Protocol,TCP(傳輸控制協議)
- TCP是面向連接的,數據傳輸需要經過建立連接、傳輸數據、斷開連接三個階段
- 全雙工通信,數據可在同一連接上同一時間內雙向流動
- TCP提供有序的數據傳輸,接收端按字節對數據進行確認
- TCP數據傳輸是可靠的,包頭中含有校驗和可以對數據進行校驗,并且具有超時重傳機制重新傳丟失的數據。
- TCP提供高質量的傳輸服務,通過滑動窗口機制實現對流量的控制
- TCP適用于可靠性要求高的應用
- TCP是面向連接的,數據傳輸需要經過建立連接、傳輸數據、斷開連接三個階段
TCP包頭結構
-
字節號
- TCP把要再一個連接上發送的數據都按字節編號。通信雙方的編號是相互獨立的,編號不一定要從0開始,TCP選擇0-(2的32次方-1)之間隨機選擇一個數作為第一個字節的編號。
-
序號
- TCP把要在一個連接上發送的數據分成若干報文段,然后給每個報文段指派一個序號,序號就是該報文第一個字節的編號,作用和IP里面的分段偏移量大差不差
-
確認號
- 期望接收到的下一個字節的編號。
-
序號案例
- 假設一條TCP連接要傳送一個5000字節的文件。第一個字節的編號是10001.如果該數據用5個報文段來發送,且每一個報文攜帶1000字節的數據,那么每個報文段的序號分別是什么?
- 假設一條TCP連接要傳送一個5000字節的文件。第一個字節的編號是10001.如果該數據用5個報文段來發送,且每一個報文攜帶1000字節的數據,那么每個報文段的序號分別是什么?
-
編碼位(TCP Flag)
-
FIN:結束標志;為1時,請求斷開連接。
-
SYN:同步標志;為1時,請求建立連接。
-
RST:復位標志;為1時。請求重新建立TCP連接。
-
PSH:通知接收端立即將數據交給用戶進程,不要停留在緩存中,等待更多的數據。
-
ACK:確認標志;確認號有效位,表明該數據包包含確認信息。
-
URG:緊急標志;緊急指針有效位,與16位緊急指針配合使用。
-
TCP工作機制
TCP連接建立–三次握手機制
- 第一次A向B發起請求建立連接,SYN位置為1,SEQ為一個隨機數x。
- 第二次B向A回應確認連接,SYN不變還是置為1,此時ACK位置為1,表示確認連接,ack為下一個期望值,那就是x+1,SEQ還是一個隨機數y。
- 第三次A向B確認連接,此時請求已經完成,不需要有SYN位,ACK位為1,ack為y+1,為下個期望值,SEQ為x+1.
此時連接成功建立。
簡單說明:
第一次握手(SYN)
? 客戶端發送一個 SYN
報文,表示:
“我要連接你,請準備好接收數據。”
- 帶上初始序列號(如
Seq = x
)
第二次握手(SYN + ACK)
? 服務器收到后,回復 SYN + ACK
報文,表示:
“我知道了,也準備好接收你的數據。”
- 確認號
Ack = x + 1
,并帶上自己的序列號Seq = y
第三次握手(ACK)
? 客戶端收到后,發送 ACK
報文,表示:
“我確認了,連接可以建立了。”
-
確認號
Ack = y + 1
-
TCP連接建立–TCP MSS
- TCP MSS是TCP的一個重要選項,TCP數據分段的最大長度,該參數再三次握手時發給對方。
- TCP MSS是TCP的一個重要選項,TCP數據分段的最大長度,該參數再三次握手時發給對方。
這個東西說白了就是A那邊一次只能收1460字節的數據包,所以建立連接的時候會告知B,而B那邊一次只能收1452字節的數據包,反過來告知A,便于建立連接之后,傳輸數據的時候不會亂套。
-
TCP連接建立——TCP MSS
-
網絡設備干預TCP MSS協商,可解決大TCP報文不通的問題。
-
像在這里,中間設備的路由器就干預了連接,把MSS從1460改成了1200,因為路由器一次發不了1460字節這么大的包,所以會進行干預修改。
-
TCP數據傳輸
-
傳輸確認機制
-
A發送一個分片的包,B根據seq進行重組,重組完成后,會發送一個包(ack=4097)給A,告知A我已經接收完畢,并且沒有出錯。
-
TCP數據傳輸
-
超時重傳機制
-
像這種情況,A在給B發送數據的時候,丟了一個包,B就會發送確認號給A,告知A seq=1025這個數據包我沒有收到,A在收到B的確認之后,會把seq=1025這個包重新發送給B,這里要注意,A不會全部重發,而是只發丟失的那一個或那幾個包。
-
TCP數據傳輸
-
雙向傳輸機制
-
傳輸不是單向的,A發了包,那么B就要有回應。
-
TCP連接斷開——四次斷開機制
原理和建立連接機制是差不多的,簡單說明:
第一次揮手(FIN)
? 主動關閉方發送一個 FIN
報文,表示:
“我沒有數據要發送了,但我還可以接收。”
第二次揮手(ACK)
? 被動關閉方回復一個 ACK
報文,表示:
“我知道了,你可以不再發數據了。”
(此時連接是半關閉狀態)
第三次揮手(FIN)
? 被動關閉方處理完剩下的數據后,也發送 FIN
報文,表示:
“我也沒有數據要發了。”
第四次揮手(ACK)
? 主動關閉方收到這個 FIN
后,回復 ACK
報文,表示:
“我知道你也結束了。”
-
TCP連接斷開——四次斷開與三次斷開
-
大多數TCP實現允許在連接終止時有兩種選擇:三次握手和具有半關閉選項的四次握手。
-
說直白點就是當服務器那邊沒有數據要傳給主機時,那就是采用的三次揮手。
-
TCP流量控制
-
窗口機制:
作用:用來控制TCP一次能夠連續傳輸多少數據而不用等待確認
窗口大小:表示“還能發送但尚未確認的字節數”。
如:如果窗口大小為500字節,那么發送方可以連續發送500字節,不用等待對方確認后再繼續發送。
-
滑動窗口機制
-
TCP為每個方向的數據傳送都使用兩個窗口(發送窗口和接收窗口),一共4個窗口
TCP通過強制發送發送方和接收方不斷調整窗口大小,來實現流量控制。
當出現擁塞時,窗口大小減半(把資源還給計算機,快速解決數據傳輸擁塞的問題);
當傳輸穩定時,窗口慢慢變大。
UDP協議概述
- User Datagram Protocol,UDP(用戶數據報協議)
- UDP是無連接的,數據傳輸之前不需要建立連接
- UDP是不可靠的,發送端只管發送數據,不管接收方是否收到數據,UDP傳輸數據的可靠性需要應用層來解決
- UDP只有校驗和機制,只能做簡單的差錯控制
- UDP沒有流量控制機制
- UDP包頭小,開銷低,傳輸效率高
UDP包頭結構
- UDP包頭結構
可以看到包頭結構相比TCP包頭非常簡潔
-
UDP校驗和的計算
-
涉及了三個部分:偽IP頭部、UDP頭部數據
為什么叫偽IP頭部,因為只包含了一部分IP頭,所以叫偽IP頭部
-
上層協議標識
- 上層協議標識
- 常見以太網類型號
- 常見IP協議號
- 常見TCP端口號
- 常見UDP端口號