1. 程式人生 > >深入淺出搞懂網路的五層協議

深入淺出搞懂網路的五層協議




1 網路的五層劃分是什麼?

  網際網路的實現,分成好幾層。每一層都有自己的功能,就像建築物一樣,每一層都靠下一層支援。使用者接觸到的,只是最上面的一層,根本沒有感覺到下面的層。要理解網際網路,必須從最下層開始,自下而上理解每一層的功能。
  每一層都是為了完成一種功能。為了實現這些功能,就需要大家都遵守共同的規則,叫做”協議”(protocol)。網際網路的每一層,都定義了很多協議,這些協議的總稱,就叫做”網際網路協議”(Internet Protocol Suite)。
  如下圖所示,因特網五層協議棧共有五層:應用層、傳輸層、網路層、鏈路層和實體層(物理層)。
這裡寫圖片描述


圖片來源於:網際網路協議入門(一)

1.1 實體層(物理層)

  電腦要組網,第一件事要幹什麼?當然是先把電腦連起來,可以用光纜、電纜、雙絞線、無線電波等方式。這就叫做”實體層”,它就是把電腦連線起來的物理手段。它主要規定了網路的一些電氣特性,作用是負責傳送0和1的電訊號。
這裡寫圖片描述

1.2 連結層

1.2.1 連結層的由來

  單純的0和1沒有任何意義,必須規定解讀方式:多少個電訊號算一組?每個訊號位有何意義?這就是”連結層”的功能,它在”實體層”的上方,確定了0和1的分組方式。

1.2.2 乙太網協議

  早期的時候,每家公司都有自己的電訊號分組方式。逐漸地,一種叫做”乙太網”(Ethernet)的協議,佔據了主導地位。乙太網規定,一組電訊號構成一個數據包,叫做”幀”(Frame)。每一幀分成兩個部分:標頭(Head)和資料(Data)。
  “標頭”包含資料包的一些說明項,比如傳送者、接受者、資料型別等等;”資料”則是資料包的具體內容。
這裡寫圖片描述

1.2.3 MAC地址

  上面提到,乙太網資料包的”標頭”,包含了傳送者和接受者的資訊。那麼,傳送者和接受者是如何標識呢?
  乙太網規定,連入網路的所有裝置,都必須具有”網絡卡”介面。資料包必須是從一塊網絡卡,傳送到另一塊網絡卡。網絡卡的地址,就是資料包的傳送地址和接收地址,這叫做MAC地址。
  每塊網絡卡出廠的時候,都有一個全世界獨一無二的MAC地址,長度是48個二進位制位,通常用12個十六進位制數表示。前6個十六進位制數是廠商編號,後6個是該廠商的網絡卡流水號。有了MAC地址,就可以定位網絡卡和資料包的路徑了。
這裡寫圖片描述

1.2.4 廣播

  定義地址只是第一步,後面還有更多的步驟。首先,一塊網絡卡怎麼會知道另一塊網絡卡的MAC地址?回答是有一種ARP協議,可以解決這個問題。這個留到後面介紹,這裡只需要知道,乙太網資料包必須知道接收方的MAC地址,然後才能傳送。
  其次,就算有了MAC地址,系統怎樣才能把資料包準確送到接收方?回答是乙太網採用了一種很”原始”的方式,它不是把資料包準確送到接收方,而是向本網路內所有計算機發送廣播,讓每臺計算機自己判斷,是否為接收方。
  廣播發送和接受的步驟:1號計算機向2號計算機發送一個數據包,同一個子網路的3號、4號、5號計算機都會收到這個包。它們讀取這個包的”標頭”,找到接收方的MAC地址,然後與自身的MAC地址相比較,如果兩者相同,就接受這個包,做進一步處理,否則就丟棄這個包。這種傳送方式就叫做”廣播”(broadcasting)。
  有了資料包的定義、網絡卡的MAC地址、廣播的傳送方式,”連結層”就可以在多臺計算機之間傳送資料了。

1.3 網路層

1.3.1 網路層的由來

  乙太網協議,依靠MAC地址傳送資料。理論上,單單依靠MAC地址,上海的網絡卡就可以找到洛杉磯的網絡卡了,技術上是可以實現的。但是,這樣做有一個重大的缺點。乙太網採用廣播方式傳送資料包,所有成員人手一”包”,不僅效率低,而且侷限在傳送者所在的子網路。也就是說,如果兩臺計算機不在同一個子網路,廣播是傳不過去的。
  因此,必須找到一種方法,能夠區分哪些MAC地址屬於同一個子網路,哪些不是。如果是同一個子網路,就採用廣播方式傳送,否則就採用”路由”方式向不同的子網路分發資料包。這就導致了”網路層”的誕生。它的作用是引進一套新的地址,使得我們能夠區分不同的計算機是否屬於同一個子網路,這套地址就叫做”網路地址”,簡稱”網址”。
  網路地址幫助我們確定計算機所在的子網路,MAC地址則將資料包送到該子網路中的目標網絡卡。因此,從邏輯上可以推斷,必定是先處理網路地址,然後再處理MAC地址。

1.3.2 IP協議

  規定網路地址的協議,叫做IP協議。它所定義的地址,就被稱為IP地址。目前,廣泛採用的是IP協議第四版,簡稱IPv4。這個版本規定,網路地址由32個二進位制位組成。
這裡寫圖片描述
  IP協議的作用主要有兩個,一個是為每一臺計算機分配IP地址,另一個是確定哪些地址在同一個子網路。

1.3.3 IP資料包

  根據IP協議傳送的資料,就叫做IP資料包,其中必定包括IP地址資訊。
  但是,乙太網資料包只包含MAC地址,並沒有IP地址的欄位。那麼需要把IP資料包直接放進乙太網資料包的”資料”部分,不用修改乙太網的規格。這就是網際網路分層結構的好處:上層的變動完全不涉及下層的結構。具體來說,IP資料包也分為”標頭”和”資料”兩個部分:
這裡寫圖片描述
  “標頭”部分主要包括版本、長度、IP地址等資訊,”資料”部分則是IP資料包的具體內容。它放進乙太網資料包後,乙太網資料包就變成了下面:
這裡寫圖片描述

1.3.4 ARP協議

  因為IP資料包是放在乙太網資料包裡傳送的,所以必須同時知道兩個地址,一個是對方的MAC地址,另一個是對方的IP地址。通常情況下,對方的IP地址是已知的(後文會解釋),但是我們不知道它的MAC地址。所以,我們需要一種機制,能夠從IP地址得到MAC地址。
  這裡又可以分成兩種情況。第一種情況,如果兩臺主機不在同一個子網路,那麼事實上沒有辦法得到對方的MAC地址,只能把資料包傳送到兩個子網路連線處的”閘道器”(gateway),讓閘道器去處理。
  第二種情況,如果兩臺主機在同一個子網路,那麼我們可以用ARP協議,得到對方的MAC地址。ARP協議也是發出一個數據包(包含在乙太網資料包中),其中包含它所要查詢主機的IP地址,在對方的MAC地址這一欄,填的是FF:FF:FF:FF:FF:FF,表示這是一個”廣播”地址。它所在子網路的每一臺主機,都會收到這個資料包,從中取出IP地址,與自身的IP地址進行比較。如果兩者相同,都做出回覆,向對方報告自己的MAC地址,否則就丟棄這個包。
  總之,有了ARP協議之後,就可以得到同一個子網路內的主機MAC地址,可以把資料包傳送到任意一臺主機之上了。

1.4 傳輸層

1.4.1 傳輸層的由來

  有了MAC地址和IP地址,我們已經可以在網際網路上任意兩臺主機上建立通訊。
  接下來的問題是,同一臺主機上有許多程式都需要用到網路,比如,你一邊瀏覽網頁,一邊與朋友線上聊天。當一個數據包從網際網路上發來的時候,你怎麼知道,它是表示網頁的內容,還是表示線上聊天的內容?也就是說,我們還需要一個引數,表示這個資料包到底供哪個程式(程序)使用。這個引數就叫做”埠”(port),它其實是每一個使用網絡卡的程式的編號,”埠”是0到65535之間的一個整數,正好16個二進位制位。
  “傳輸層”的功能,就是建立”埠到埠”的通訊。相比之下,”網路層”的功能是建立”主機到主機”的通訊。只要確定主機和埠,我們就能實現程式之間的交流。因此,Unix系統就把主機+埠,叫做”套接字”(socket),有了它就可以進行網路應用程式開發了。

1.4.2 UDP協議

  現在,我們必須在資料包中加入埠資訊,這就需要新的協議。最簡單的實現叫做UDP協議,它的格式幾乎就是在資料前面,加上埠號。UDP資料包,也是由”標頭”和”資料”兩部分組成:
這裡寫圖片描述
  “標頭”部分主要定義了發出埠和接收埠,”資料”部分就是具體的內容。然後,把整個UDP資料包放入IP資料包的”資料”部分,而前面說過,IP資料包又是放在乙太網資料包之中的,所以整個乙太網資料包現在變成了下面這樣:
這裡寫圖片描述

1.4.3 TCP協議

  UDP協議的優點是比較簡單,容易實現,但是缺點是可靠性較差,一旦資料包發出,無法知道對方是否收到。
  為了解決這個問題,提高網路可靠性,TCP協議就誕生了。這個協議非常複雜,但可以近似認為,它就是有確認機制的UDP協議,每發出一個數據包都要求確認。如果有一個數據包遺失,就收不到確認,發出方就知道有必要重發這個資料包了。因此,TCP協議能夠確保資料不會遺失。它的缺點是過程複雜、實現困難、消耗較多的資源。
  TCP資料包和UDP資料包一樣,都是內嵌在IP資料包的”資料”部分。TCP資料包沒有長度限制,理論上可以無限長,但是為了保證網路的效率,通常TCP資料包的長度不會超過IP資料包的長度,以確保單個TCP資料包不必再分割。

1.5 應用層

1.5.1 應用層的由來

  應用程式收到”傳輸層”的資料,接下來就要進行解讀。由於網際網路是開放架構,資料來源五花八門,必須事先規定好格式,否則根本無法解讀。”應用層”的作用,就是規定應用程式的資料格式。

1.5.2 應用層解析

  舉例來說,TCP協議可以為各種各樣的程式傳遞資料,比如Email、WWW、FTP等等。那麼,必須有不同協議規定電子郵件、網頁、FTP資料的格式,這些應用程式協議就構成了”應用層”。這是最高的一層,直接面對使用者。它的資料就放在TCP資料包的”資料”部分。因此,現在的乙太網的資料包就變成下面這樣:
這裡寫圖片描述

1.6 總結

  至此,整個網際網路的五層結構,自下而上全部講完了。這是從系統的角度,解釋網際網路是如何構成的。

2 TCP與UDP的區別

這裡寫圖片描述

3 三次握手和四次分手

3.1 三次握手的過程

  TCP是面向連線的,無論哪一方向另一方傳送資料之前,都必須先在雙方之間建立一條連線。在TCP/IP協議中,TCP協議提供可靠的連線服務,連線是通過三次握手進行初始化的。三次握手的目的是同步連線雙方的序列號和確認號並交換 TCP視窗大小資訊。
  (1)第一次握手:Client將標誌位SYN置為1,隨機產生一個值seq=x,並將該資料包傳送給Server,Client進入SYN_SENT狀態,等待Server確認。
   (2)第二次握手:Server收到資料包後由標誌位SYN=1知道Client請求建立連線,Server將標誌位SYN和ACK都置為1,ack (number )=x+1,隨機產生一個值seq=y,並將該資料包傳送給Client以確認連線請求,Server進入SYN_RCVD狀態。
  (3)第三次握手:Client收到確認後,檢查ACK是否為Client傳送的seq+1,即x+1;如果正確則將標誌位ACK置為1,ack=y+1,並將該資料包傳送給Server。Server檢查ack是否為Server傳送的seq+1,即y+1,如果正確則連線建立成功,Client和Server進入ESTABLISHED狀態,完成三次握手。
這裡寫圖片描述

3.2 四次分手的過程

  當客戶端和伺服器通過三次握手建立了TCP連線以後,當資料傳送完畢,肯定是要斷開TCP連線的啊。那對於TCP的斷開連線,這裡就有了神祕的“四次分手”。
  (1)第一次分手:客戶端設定seq=x,向服務端傳送一個FIN報文段;此時,主機1進入FIN_WAIT_1狀態;這表示客戶端沒有資料要傳送給服務端了;
  (2)第二次分手:服務端收到了客戶端傳送的FIN=1,向客戶端回覆ACK=1,ack=收到的seq+1=x+1,然後客戶端進入FIN_WAIT_2狀態;服務端告訴客戶端,在等待自己去關閉連線;
  (3)第三次分手:服務端向客戶端傳送FIN=1,設定seq=y,請求關閉連線,同時服務端進入LAST_ACK狀態;
  (4)第四次分手:客戶端收到服務端傳送的FIN,向服務端傳送ACK=1,ack=收到的seq+1=y+1,然後主機1進入TIME_WAIT狀態;服務端收到客戶端的ACK報文段以後,就關閉連線;此時,客戶端等待2MSL後依然沒有收到回覆,則證明Server端已正常關閉,客戶端也關閉連線。
這裡寫圖片描述

4 抓包分析

4.1 三次握手(和四次分手)分析

這裡寫圖片描述

4.2 四次分手分析

這裡寫圖片描述

5 學習連結



轉載於此處

相關推薦

深入淺出網路協議

1 網路的五層劃分是什麼?   網際網路的實現,分成好幾層。每一層都有自己的功能,就像建築物一樣,每一層都靠下一層支援。使用者接觸到的,只是最上面的一層,根本沒

通俗講解計算機網路協議

=========================================================================================     在我看來,學習java最重要是要理解what(這東西是什麼),why(為什麼要用它),where(在哪用它),how(怎麼

計算機網路.協議棧模型簡介

OK,又進入了考試複習的階段 不知道我這樣用部落格來準備考試是不是有點 不太好 複習綱要 按照五層協議棧模型 物理層 鏈路層 網路層 傳輸層 應用層 物理層 bit

計算機網路協議體系

寫這篇部落格,主要是看了謝希仁的計算機網路那本書,計算機專業的朋友在大學期間都學過那本教材,近日重讀特寫這篇部落格。 五層模型主要是結合了osi的七層和tcp/ip的四層得出,主要是物理層、資料鏈路層、網路層、傳輸層、應用層五層,下層向上層提供服務,上層向下層提供介面。作為一個iOS開

深入淺出——卷積神經網路誤差分析(一)

第一部分 全連線網路的權值更新   卷積神經網路使用基於梯度的學習方法進行監督訓練,實踐中,一般使用隨機梯度下降(機器學習中幾種常見的梯度下降方式)的版本,對於每個訓練樣本均更新一次權值,誤差函式使用誤差平方和函式,誤差方式採用平方誤差代價函式。   注:本

網路程式設計基礎_協議

五層協議詳解 一、資料鏈路層/物理層 Ethernet(乙太網協議) 資料報,資料幀 head data 18位元組 6位元組(源地址)傳送者 6位元組(目標地址)接收者 6位元組(網絡卡) MAC地址 計算機通訊都靠吼

論述具有協議網路體系結構的要點,包括各的主要功能

物理層: 物理層的任務就是透明地傳送位元流。物理層還要確定連線電纜插頭的定義及連線法。 資料鏈路層:資料鏈路層的任務是在兩個相鄰結點間的線路上無差錯地傳送以幀為單位的資料。每一幀包括資料和必要的控制資訊。 網路層:網路層的任務就是要選擇合適的路由,使傳送站的運輸層所傳下來的分組能夠正確無誤地按照地址找到目的站

計算機網路原理協議體系初解

簡介 國際標準化組織(ISO)定義了網路協議的基本框架,被稱為OSI(開放系統互聯)模型。要制定通訊規則,內容會很多,比如要考慮A電腦如何找到B電腦,A電腦在傳送資訊 給B電腦時是否需要B電腦進行反饋,A電腦傳送給B電腦的資料的格式又是怎樣的?內容太多太雜,所

網路協議和TCP/IP協議

[網路七層協議]                                    [TCP/IP 協議] 7.應用層:具體文字賦予動作能力,如HTTP,TELNET                                 ===》4.應用層 6.表示層:定義資

協議及tcp三次握手四次揮手

p地址 電平 揮手 syn 服務端 局域網 dhcp 網絡層 數據 一.五層協議:物理層:傳送數據 通過高低電平傳輸數據數據鏈路層:ethernet 以太網協議 必須有一塊網卡:12位16進制數,前六位位廠商編號,後六位為流水線號 (定位到某一臺機

OSI,TCP/IP,協議的體系結構,以及各協議

802.3 面向連接 udp 用戶 數據包 格式 ios mpeg 用戶數據 以下整理的是計算機網絡的OSI,TCP/IP,五層協議的體系結構,以及各層協議,便於以後查看: OSI分層,自上而下分別是:物理層,數據鏈路層,網絡層,傳輸層,會話層,表示層,應用層 TCP/IP

OSI七協議和TCP/IP協議

present div 時間 網絡層 加密 導數 進行 spf 文件服務 OSI七層模型概略: OSI 中的層 功能 TCP/IP協議族 應用層 文件傳輸,電子郵件,文件服務,虛擬終端 HTTP,SMTP,FTP,DNS 表示層 數據壓縮,解壓,數據加

因特網協議

不同的應用 ip協議 udp協議 但是 tcp clas 進程 應用層 兩個 自下往上為:物理層、鏈路層、網絡層、傳輸層、應用層 物理層:規定物理信號和基本單元數據的對應關系,如電壓高低代表的1、0。 鏈路層:數據基本單位為幀,一幀裏包含了傳送的數據和送信地址、收信地址。鏈

協議

結合 特定 就會 端口 應該 現在 自己的 是什麽 -- TCP/IP五層模型講解(2分) 我們將應用層,表示層,會話層並作應用層,從tcp/ip五層協議的角度來闡述每層的由來與功能,搞清楚了每層的主要協議 就理解了整個互聯網通信的原理。 首先,用戶感知到的只是最上面一層應

互聯網協議協議詳解

ethernet cli ip地址 tcp 32位 三次 運算 網絡層 實現 第一層:物理層 第二層:數據鏈路層 第三層:網絡層 第四層:傳輸層 第五層:應用層 一。物理層 一般用於接網卡,網線,物理設備,實現兩臺機器的組網。 二。數據鏈路層 用的是以太網協議(Et

通俗講解計算機網絡協議

交流 子網 數據服務 logs 系統 === 特定 www 轉換 轉載:https://www.cnblogs.com/pla1949/p/9743578.html ======================================================

計算機網路協議

為了能夠在面試的時候被面試官問道關於計算機網路的知識時,不至於啞口無言,我就默默的在這裡多計算機網路的基礎知識進行了一個大致的複習。陸續還會繼續更新。。。 常識: 網際網路地址:也就是IP地址,一般為網路號+子網號+主機號 Message報文:應用層資訊分組。 Segmen

網路基礎筆記_網路傳輸協議(TCP/UDP)知識點

  網路層負責把分組傳送到目的主機,但是真正通訊的並不是主機而是主機中的程序。傳輸層提供了程序間的邏輯通訊,傳輸層向高層使用者遮蔽了下面網路層的核心細節,使應用程式看起來像是在兩個傳輸層實體之間有一條端到端的邏輯通訊通道。 一.傳輸層中的兩種協議UDP / TCP 

tcp/ip協議

TCP/IP協議不是TCP和IP這兩個協議的合稱,而是指因特網整個TCP/IP協議族。網際網路協議(Internet Protocol Suite)是一個網路通訊模型,以及一整個網路傳輸協議家族,為網際網路的基礎通訊架構。它常被通稱為TCP/IP協議族(英語:TCP/IP Protocol Suite,或TC

計算機網路結構自頂向下詳解

今天在研究生現代網路原理課程上期末答辯中以《高併發大流量網站設計應對技術》奪冠,這是來校三個月來唯一順心順意的事情了,很久沒有寫部落格了,今天寫兩篇,分別是自頂向下解釋網際網路五層結構,自底向上解釋網際網路五層結構;為什麼做這兩個題目呢?第一篇解釋你的qq訊息是如何傳送到另外一個人那裡去的,第二