原創網工Fox
![]()
網絡協議
我們用手機連接上網的時候,會用到許多網絡協議。從手機連接 WiFi 開始,使用的是 802.11 (即 WLAN )協議,通過 WLAN 接入網絡;手機自動獲取網絡配置,使用的是 DHCP 協議,獲取配置后手機才能正常通信。這時手機已經連入局域網,可以訪問局域網內的設備和資源,但還不能使用互聯網應用,例如:微信、抖音等。想要訪問互聯網,還需要在手機的上聯網絡設備上實現相關協議,即在無線路由器上配置 NAT、 PPPOE 等功能,再通過運營商提供的互聯網線路把局域網接入到互聯網中,手機就可以上網玩微信、刷抖音了。
![]()
局域網 :小范圍內的私有網絡,一個家庭內的網絡、一個公司內的網絡、一個校園內的網絡都屬于局域網。
廣域網:把不同地域的局域網互相連接起來的網絡。運營商搭建廣域網實現跨區域的網絡互連。
互聯網:互聯全世界的網絡。互聯網是一個開放、互聯的網絡,不屬于任何個人和任何機構,接入互聯網后可以和互聯網的任何一臺主機進行通信。
簡單來說,就是手機、無線路由器等設備通過多種網絡協議實現通信。網絡協議就是為了通信各方能夠互相交流而定義的標準或規則,設備只要遵循相同的網絡協議就能夠實現通信。那網絡協議又是誰規定的呢? ISO 制定了一個國際標準 OSI , 其中的 OSI 參考模型常被用于網絡協議的制定。
![]()
OSI 參考模型
OSI 參考模型將網絡協議提供的服務分成 7 層,并定義每一層的服務內容,實現每一層服務的是協議,協議的具體內容是規則。上下層之間通過接口進行交互,同一層之間通過協議進行交互。 OSI 參考模型只對各層的服務做了粗略的界定,并沒有對協議進行詳細的定義,但是許多協議都對應了 7 個分層的某一層。所以要了解網絡,首先要了解 OSI 參考模型。
![]()
應用層
OSI參考模型的第 7 層(最高層)。應用程序和網絡之間的接口,直接向用戶提供服務。應用層協議有電子郵件、遠程登錄等協議。
![]()
表示層
OSI參考模型的第 6 層。負責數據格式的互相轉換,如編碼、數據格式轉換和加密解密等。保證一個系統應用層發出的信息可被另一系統的應用層讀出。
![]()
會話層
OSI參考模型的第 5 層。主要是管理和協調不同主機上各種進程之間的通信(對話),即負責建立、管理和終止應用程序之間的會話。
![]()
傳輸層
OSI參考模型的第 4 層。為上層協議提供通信主機間的可靠和透明的數據傳輸服務,包括處理差錯控制和流量控制等問題。只在通信主機上處理,不需要在路由器上處理。
![]()
網絡層
OSI參考模型的第 3 層。在網絡上將數據傳輸到目的地址,主要負責尋址和路由選擇。
![]()
數據鏈路層
OSI參考模型的第 2 層。負責物理層面上兩個互連主機間的通信傳輸,將由 0 、 1 組成的比特流劃分成數據幀傳輸給對端,即數據幀的生成與接收。通信傳輸實際上是通過物理的傳輸介質實現的。 數據鏈路層的作用就是在這些通過傳輸介質互連的設備之間進行數據處理。
網絡層與數據鏈路層都是基于目標地址將數據發送給接收端的,但是網絡層負責將整個數據發送給最終目標地址, 而數據鏈路層則只負責發送一個分段內的數據。
![]()
物理層
OSI參考模型的第 1 層(最底層)。負責邏輯信號(比特流)與物理信號(電信號、光信號)之間的互相轉換,通過傳輸介質為數據鏈路層提供物理連接。
![]()
TCP/IP 參考模型
由于 OSI 參考模型把服務劃得過于瑣碎,先定義參考模型再定義協議,有點理想化。 TCP/IP 模型則正好相反,通過已有的協議歸納總結出來的模型,成為業界的實際網絡協議標準。
TCP/IP 是有由 IETF 建議、推進其標準化的一種協議,是 IP 、 TCP 、 HTTP 等協議的集合。TCP/IP 是為使用互聯網而開發制定的協議族,所以互聯網的協議就是 TCP/IP 。
先介紹下 TCP/IP 與 OSI 分層之間的對應關系,以及 TCP/IP 每層的主要協議。
![]()
網絡接入層
TCP/IP 是以 OSI 參考模型的物理層和數據鏈路層的功能是透明的為前提制定的,并未對這兩層進行定義,所以可以把物理層和數據鏈路層合并稱為網絡接入層。網絡接入層是對網絡介質的管理,定義如何使用網絡來傳送數據。但是在通信過程中這兩層起到的作用不一樣,所以也有把物理層和數據鏈路層分別稱為硬件、網絡接口層。 TCP/IP 分為四層或者五層都可以,只要能理解其中的原理即可。
設備之間通過物理的傳輸介質互連, 而互連的設備之間使用 MAC 地址實現數據傳輸。采用 MAC 地址,目的是為了識別連接到同一個傳輸介質上的設備。
網絡層
相當于 OSI 模型中的第 3 層網絡層,使用 IP 協議。 IP 協議基于 IP 地址轉發分包數據,作用是將數據包從源地址發送到目的地址。
TCP/IP 分層中的網絡層與傳輸層的功能通常由操作系統提供。 路由器就是通過網絡層實現轉發數據包的功能。
![]()
網絡傳輸中,每個節點會根據數據的地址信息,來判斷該報文應該由哪個網卡發送出去。各個地址會參考一個發出接口列表, MAC 尋址中所參考的這張表叫做 MAC 地址轉發表,而 IP 尋址中所參考的叫做路由控制表。 MAC 地址轉發表根據自學自動生成。 路由控制表則根據路由協議自動生成。 MAC 地址轉發表中所記錄的是實際的 MAC 地址本身,而路由表中記錄的 IP 地址則是集中了之后的網絡號(即網絡號與子網掩碼)。
- IP
- IP 是跨越網絡傳送數據包,使用 IP 地址作為主機的標識,使整個互聯網都能收到數據的協議。 IP 協議獨立于底層介質,實現從源到目的的數據轉發。IP 協議不具有重發機制,屬于非可靠性傳輸協議。
- ICMP
- 用于在 IP 主機、路由器之間傳遞控制消息,用來診斷網絡的健康狀況。
- ARP
- 從數據包的 IP 地址中解析出 MAC 地址的一種協議。
傳輸層
相當于 OSI 模型中的第 4 層傳輸層,主要功能就是讓應用程序之間互相通信,通過端口號識別應用程序,使用的協議有面向連接的 TCP 協議和面向無連接的 UDP 協議。
面向連接是在發送數據之前, 在收發主機之間連接一條邏輯通信鏈路。好比平常打電話,輸入完對方電話號碼撥出之后,只有對方接通電話才能真正通話,通話結束后將電話機扣上就如同切斷電源。
面向無連接不要求建立和斷開連接。發送端可于任何時候自由發送數據。如同去寄信,不需要確認收件人信息是否真實存在,也不需要確認收件人是否能收到信件,只要有個寄件地址就可以寄信了。
![]()
- TCP
- TCP 是一種面向有連接的傳輸層協議,能夠對自己提供的連接實施控制。適用于要求可靠傳輸的應用,例如文件傳輸。
- UDP
- UDP 是一種面向無連接的傳輸層協議,不會對自己提供的連接實施控制。適用于實時應用,例如:IP電話、視頻會議、直播等。
應用層
相當于 OSI 模型中的第 5 - 7 層的集合,不僅要實現 OSI 模型應用層的功能,還要實現會話層和表示層的功能。 HTTP 、 POP3 、 TELNET 、 SSH 、 FTP 、 SNMP都是應用層協議。
TCP/IP 應用的架構絕大多數屬于客戶端/服務端模型。 提供服務的程序叫服務端, 接受服務的程序叫客戶端。客戶端可以隨時發送請求給服務端。
![]()
- HTTP
- 是 WWW 瀏覽器和服務器之間的應用層通信協議,所傳輸數據的主要格式是 HTML 。 HTTP 定義高級命令或者方法供瀏覽器用來與Web服務器通信。
- POP3
- 簡單郵件傳輸協議,郵件客戶端和郵件服務器使用。
- TELNET 和 SSH
- 遠程終端協議,用于遠程管理網絡設備。 TELNET 是明文傳輸, SSH 是加密傳輸。
- SNMP
- 簡單網絡管理協議,用于網管軟件進行網絡設備的監控和管理。
封裝與解封裝
通常,為協議提供的信息為包頭部,所要發送的內容為數據。每個分層中,都會對所發送的數據附加一個頭部,在這個頭部中包含了該層必要的信息, 如發送的目標地址以及協議相關信息。在下一層的角度看,從上一分層收到的包全部都被認為是本層的數據。
數據發送前,按照參考模型從上到下,在數據經過每一層時,添加協議報文頭部信息,這個過程叫封裝。
![]()
數據接收后,按照參考模型從下到上,在數據經過每一層時,去掉協議頭部信息,這個過程叫解封裝。
![]()
經過傳輸層協議封裝后的數據稱為段,經過網絡層協議封裝后的數據稱為包,經過數據鏈路層協議封裝后的數據稱為幀,物理層傳輸的數據為比特。
TCP/IP 通信中使用 MAC 地址、 IP 地址、端口號等信息作為地址標識。甚至在應用層中,可以將電子郵件地址作為網絡通信的地址。
實際數據傳輸舉例
實際生活中,互聯網是使用的 TCP/IP 協議進行網絡連接的。我們以訪問網站為例,看看網絡是如何進行通信的。
![]()
發送數據包
訪問 HTTP 網站頁面時,打開瀏覽器,輸入網址,敲下回車鍵就開始進行 TCP/IP 通信了。
應用程序處理
![]()
首先,應用程序中會進行 HTML 格式編碼處理,相當于 OSI 的表示層功能。編碼轉化后,不一定會馬上發送出去,相當于會話層的功能。在請求發送的那一刻,建立 TCP 連接,然后在 TCP 連接上發送數據。接下來就是將數據發送給下一層的 TCP 進行處理。
TCP 模塊處理
![]()
TCP 會將應用層發來的數據順利的發送至目的地。實現可靠傳輸的功能,需要給數據封裝 TCP 頭部信息。 TCP 頭部信息包括源端口號和目的端口號(識別主機上應用)、序號(確認哪部分是數據)以及校驗和(判斷數據是否被損壞)。隨后封裝了 TCP 頭部信息的段再發送給 IP 。
IP 模塊處理
![]()
IP 將 TCP 傳過來的數據段當做自己的數據,并封裝 IP 頭部信息。 IP 頭部信息中包含目的 IP 地址和源 IP 地址,以及上層協議類型信息。
IP 包生成后,根據主機路由表進行數據發送。
網絡接口處理
![]()
網絡接口對傳過來的 IP 包封裝上以太網頭部信息并進行發送處理。以太網頭部信息包含目的 MAC 地址、源 MAC 地址,以及上層協議類型信息。然后將以太網數據幀通過物理層傳輸給接收端。發送處理中的 FCS 由硬件計算, 添加到包的最后。設置 FCS 的目的是為了判斷數據包是否由于噪聲而被破壞。
接收數據包
包的接收流程是發送流程的反向過程。
網絡接口處理
收到以太網包后,首先查看頭部信息的目的 MAC 地址是否是發給自己的包。如果不是發送給自己的包就丟棄。如果是發送給自己的包,查看上層協議類型是 IP 包,以太網幀解封裝成 IP 包,傳給 IP 模塊進行處理。如果是無法識別的協議類型,則丟棄數據。
![]()
IP 模塊處理
收到 IP 包后,進行類似處理。根據頭部信息的目的 IP 地址判斷是否是發送給自己包,如果是發送給自己的包,則查看上一層的協議類型。上一層協議是 TCP ,就把 IP 包解封裝發送給 TCP 協議處理。
![]()
假如有路由器,且接收端不是自己的地址,那么根據路由控制表轉發數據。
![]()
TCP 模塊處理
收到 TCP 段后,首先查看校驗和,判斷數據是否被破壞。然后檢查是否按照序號接收數據。最后檢查端口號,確定具體的應用程序。
![]()
數據接收完畢后,發送一個 “ 確認回執 ” 給發送端。如果這個回執信息未能達到發送端,那么發送端會認為接收端沒有接收到數據而一直反復發送。
數據被完整接收后,會把 TCP 段解封裝發送給由端口號識別的應用程序。
應用程序處理
應用程序收到數據后,通過解析數據內容獲知發送端請求的網頁內容,然后按照 HTTP 協議進行后續數據交互。
網絡構成
![]()
搭建一套網絡涉及各種線纜和網絡設備。下面介紹一些常見的硬件設備。硬件設備所說的層數是參照的 OSI 參考模型,而不是 TCP/IP 模型。
![]()
通信介質與數據鏈路
設備之間通過線纜進行連接。有線線纜有雙絞線、光纖、串口線等。根據數據鏈路不同選擇對應的線纜。傳輸介質還可以被分為電波、微波等不同類型的電磁波。
傳輸速率:單位為 bps ,是指單位時間內傳輸的數據量有多少。又稱作帶寬,帶寬越大網絡傳輸能力就越強。
吞吐量:單位為 bps ,主機之間實際的傳輸速率。吞吐量這個詞不僅衡量帶寬, 同時也衡量主機的 CPU 處理能力、 網絡的擁堵程度、 報文中數據字段的占有份額等信息。
網卡
任一主機連接網絡時,必須要使用網卡。可以是有線網卡,用來連接有線網絡,也可以是無線網卡連接 WiFi 網絡。每塊網卡都有一個唯一的 MAC 地址,也叫做硬件地址或物理地址。
![]()
二層交換機
![]()
二層交換機位于 OSI 模型的第 2 層(數據鏈路層)。它能夠識別數據鏈路層中的數據幀,并將幀轉發給相連的另一個數據鏈路。
數據幀中有一個數據位叫做 FCS ,用以校驗數據是否正確送達目的地。二層交換機通過檢查這個值,將損壞的數據丟棄。
二層交換機根據 MAC 地址自學機制判斷是否需要轉發數據幀。
路由器 / 三層交換機
![]()
路由器是在 OSI 模型的第 3 層(網絡層)上連接兩個網絡、并對報文進行轉發的設備。二層交換機是根據 MAC 地址進行處理,而路由器 / 三層交換機則是根據 IP 地址進行處理的。 因此 TCP/IP 中網絡層的地址就成為了 IP 地址。
路由器可以連接不同的數據鏈路。比如連接兩個以太網,或者連接一個以太網與一個無線網。家庭里面常見的無線路由器也是路由器的一種。
四至七層交換機
![]()
四至七層交換機負責處理 OSI 模型中從傳輸層至應用層的數據。以 TCP 等協議的傳輸層及其上面的應用層為基礎,分析收發數據,并對其進行特定的處理。例如,視頻網站的一臺服務器不能滿足訪問需求,通過負載均衡設備將訪問分發到后臺多個服務器上,就是四至七層交換機的一種。還有帶寬控制、廣域網加速器、防火墻等應用場景。
總結
![]()
應用層設備有電腦、手機、服務器等。應用層設備不轉發數據,它們是數據的源或目的,擁有應用層以下的各層功能。發送數據時,從上而下的順序,逐層對數據進行封裝,再通過以太網將數據發送出去。接收數據時,從下而上的順序,逐層對數據進行解封裝,最終恢復成原始數據。
![]()
數據鏈路層設備有二層交換機、網橋等。二層網絡設備只轉發數據,通過識別數據的 MAC 地址進行轉發。二層交換機接收數據后,對數據最外層封裝的以太網頭部信息進行查看,看到數據的目的 MAC 地址后,把數據幀從對應端口發送出去。交換機并不會對數據幀進行解封裝,只要知道 MAC 地址信息就可以正確地將數據轉發出去。
![]()
網絡層設備有路由器、三層交換機等。三層網絡設備只轉發數據,通過識別數據的 IP 地址進行轉發。路由器接收數據后,首先查看最外層封裝的以太網頭部信息,當目的 MAC 地址是自己時,就會將以太網頭部解封裝,查看數據的 IP 地址。根據 IP 路由表做出轉發決定時,路由器會把下一跳設備的 MAC 地址作為以太網頭部的目的 MAC 地址,重新封裝以太網頭部并將數據轉發出去。
![]()
轉發數據的網絡設備和應用層的數據,就像快遞員和包裹一樣。快遞員根據目的地址運送包裹,不必了解包裹里的具體內容。
通過分層功能來區分網絡設備已經不再適用,交換機集成三層路由功能就是三層交換機,無線AP集成路由器功能就是無線路由器。但是為了方便說明,通常是介紹單個設備的功能和原理。
![]()
參考資料:
圖解TCP/IP - 竹下隆史
網絡基礎 - 田果
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.