TCP/IP協議基礎

TCPIP協議基礎

網絡模型

-OSI參考模型
-OSI參考模型各層功能
-TCP/IP網絡模型
-TCP/IP協議棧

OSI參考模型

– 為了解決網絡設備之間的兼容性問題,國際標準化組織ISO1984年提出了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)
🧠 作用:
  • 是用戶和網絡的直接交互界面
  • 提供應用程序之間通信的服務,如電子郵件、文件傳輸、遠程登錄等。
  • 并不等于“應用程序”,而是網絡通信中與應用最貼近的一層。
📌 功能:
  • 提供訪問網絡服務的接口。

  • 定義應用進程通信協議(如HTTP、FTP、SMTP、Telnet)。

  • 處理諸如認證、加密等應用級事務。


    TCPIP網絡模型

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把要再一個連接上發送的數據都按字節編號。通信雙方的編號是相互獨立的,編號不一定要從0開始,TCP選擇0-(2的32次方-1)之間隨機選擇一個數作為第一個字節的編號。
  • 序號

    • TCP把要在一個連接上發送的數據分成若干報文段,然后給每個報文段指派一個序號,序號就是該報文第一個字節的編號,作用和IP里面的分段偏移量大差不差
  • 確認號

    • 期望接收到的下一個字節的編號。
  • 序號案例

    • 假設一條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數據分段的最大長度,該參數再三次握手時發給對方。
      在這里插入圖片描述

這個東西說白了就是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端口號
上層協議標識

在這里插入圖片描述

常見以太網類型號

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/913653.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/913653.shtml
英文地址,請注明出處:http://en.pswp.cn/news/913653.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Nginx】Nginx代理WebSocket

1.websocketWebSocket 是一種網絡通信協議,它提供了在單個 TCP 連接上進行全雙工(雙向)通信的能力假設需求:把 ws://192.168.0.1:8088/ws-api/websocket/pushData代理到ws://192.168.0.156:8888/websocket/pushData;同…

Spring AI Alibaba Graph使用案例人類反饋

1、Spring AI Alibaba Graph 是社區核心實現之一,也是整個框架在設計理念上區別于 Spring AI 只做底層原子抽象的地方,Spring AI Alibaba 期望幫助開發者更容易的構建智能體應用。基于 Graph 開發者可以構建工作流、多智能體應用。Spring AI Alibaba Gra…

本地部署jenkins持續集成

一、準備環境(jdk版本跟Tomcat版本要匹配) java jdk 環境(版本是11.0.21) jenkins war包(版本是2.440.3) Tomcat (版本是 9.0.84) 二、安裝步驟 1、安裝jdk環境 1)先安裝java環境,安裝完成后配置環境變量,參考上…

基于Java+Maven+Testng+Selenium+Log4j+Allure+Jenkins搭建一個WebUI自動化框架(1)搭建框架基本雛形

本次框架使用Maven作為代碼構建管理&#xff0c;引用了PO模式&#xff0c;將整體的代碼分成了頁面層、用例層、業務邏輯層。框架搭建流程&#xff1a;1、在pom.xml中引入依賴&#xff1a;<!-- https://mvnrepository.com/artifact/io.appium/java-client --> <depende…

從零構建MCP服務器:FastMCP實戰指南

引言&#xff1a;MCP協議與FastMCP框架 Model Context Protocol&#xff08;MCP&#xff09;是連接AI模型與外部服務的標準化協議&#xff0c;允許LLM&#xff08;如Claude、Gemini&#xff09;調用工具、訪問數據。然而&#xff0c;直接實現MCP協議需要處理JSON-RPC、會話管理…

基于FPGA的智能小車設計(包含代碼)/ 全棧FPGA智能小車:Verilog實現藍牙/語音/多傳感器融合的移動平臺

首先先聲明一下&#xff0c;本項目已經歷多輪測試&#xff0c;可以放心根據我的設計進行二次開發和直接套用&#xff01;&#xff01;&#xff01; 代碼有詳細的注釋&#xff0c;方便同學進行學習&#xff01;&#xff01; 制作不易&#xff0c;記得三連哦&#xff0c;給我動…

Object.defineProperties 詳解

Object.defineProperties 詳解 Object.defineProperties 是 JavaScript 中用于在一個對象上定義或修改多個屬性的方法。它是 Object.defineProperty 的復數版本&#xff0c;允許你一次性定義多個屬性。 基本語法 Object.defineProperties(obj, props)obj&#xff1a;要在其上定…

MyBatis-Plus:深入探索與最佳實踐

MyBatis-Plus作為MyBatis的增強版&#xff0c;已經在Java開發中得到了廣泛應用。它不僅繼承了MyBatis的所有功能&#xff0c;還提供了許多強大的擴展功能&#xff0c;幫助開發者提升開發效率和代碼質量。本文將深入探討MyBatis-Plus的高級特性及其在實際項目中的最佳實踐。一、…

勞斯萊斯數字孿生技術:重構航空發動機運維的綠色革命

在航空工業邁向智能化的浪潮中&#xff0c;勞斯萊斯以數字孿生技術為核心&#xff0c;構建了發動機全生命周期管理的創新范式。這項技術不僅重新定義了航空發動機的維護策略&#xff0c;更通過數據驅動的決策體系&#xff0c;實現了運營效率與生態效益的雙重突破。本文將從技術…

NPM組件 querypilot 等竊取主機敏感信息

【高危】NPM組件 querypilot 等竊取主機敏感信息 漏洞描述 當用戶安裝受影響版本的 querypilot 等NPM組件包時會竊取用戶的主機名、用戶名、工作目錄、IP地址等信息并發送到攻擊者可控的服務器地址。 MPS編號MPS-2kgq-v17b處置建議強烈建議修復發現時間2025-07-05投毒倉庫np…

創業商業融資計劃書PPT模版

創業商業融資計劃書PPT模版&#xff1a;https://pan.quark.cn/s/25a043e4339e

解決GitHub倉庫推送子文件夾后打不開的問題

從你描述的情況來看&#xff0c;IELTS_AI_Assessment 很可能被識別為了 Git 子模塊&#xff08;submodule&#xff09;&#xff0c;而不是普通文件夾&#xff0c;這會導致在 GitHub 上無法直接打開查看內容。以下是具體原因和解決辦法&#xff1a;為什么文件夾無法打開&#xf…

Web后端開發-請求響應

文章目錄概述請求Postman簡單參數原始方式SpringBootRequestParam注解小結實體參數數組集合參數日期參數Json參數路徑參數總結響應響應-案例概述 請求 Postman 簡單參數 原始方式 // 1. 簡單參數 // 原始方式RequestMapping("/simpleParam")public String …

Javascript基礎內容回顧—變量提升、事件循環和閉包等內容

以下是前端面試中 JavaScript 基礎易錯問題的詳解&#xff0c;結合常見考點和易混淆概念進行解析&#xff1a; ?? 一、變量作用域與提升 var vs let/const ? 變量提升&#xff1a;var 聲明的變量會提升到作用域頂部&#xff08;值為 undefined&#xff09;&#xff0c;而 …

UNIX程序設計基本概念和術語

unix體系結構從嚴格意義上說&#xff0c;可將操作系統定義為一種軟件&#xff0c;它控制計算機硬件資源&#xff0c;提供程序運行環境。我們通常將這種軟件稱為內核&#xff08;kernel&#xff09;&#xff0c;因為它相對較小&#xff0c;而且位于環境的核心。內核的接口被稱為…

【WEB】Polar靶場 16-20題 詳細筆記

目錄 十六.簽到題 十七.簽到 十八.session文件包含 PHP 偽協議&#xff08;PHP Stream Wrappers&#xff09; base64加解密獲取源代碼 Session文件包含 namenameShell 是什么&#xff1f; 十九.Dont touch me 二十.robots robots.txt 十六.簽到題 把didino改成didiy…

數據結構*搜索樹

什么是搜索樹 搜索樹是一種樹形數據結構&#xff0c;用于高效地存儲和檢索數據。其核心特點是每個節點包含一個鍵&#xff08;Key&#xff09;&#xff0c;并遵循特定的排序規則。常見的搜索樹有二叉搜索樹、自平衡二叉樹、多叉搜索樹等。AVL樹、紅黑樹、Splay樹都屬于自平衡二…

語音交互新紀元:Hugging Face LeRobot如何讓機器人真正“懂你”

機器人之言&#xff1a;早在2024年&#xff0c;Hugging Face正式進軍真實世界機器人應用領域&#xff0c;推出了開源機器人項目LeRobot。LeRobot不僅僅是一個模型庫&#xff0c;它是一個完整的機器人學習平臺&#xff0c;融合了模仿學習、強化學習、數據可視化以及仿真環境。其…

搭建個人博客系列--MySql

前期提要&#xff1a;搭建個人博客系列--docker-CSDN博客 目前已經擁有了docker所以只需要將MySql安裝在docker上即可。 一、在docker安裝mysql docker pull mysql 二、查詢docker內的mysql鏡像 三、啟動msql docker run -d -p 33060:3306 -v /home/mysql/conf:/mysql/conf.d…