我們用手機連接上網的時候,會用到許多網絡協議。從手機連接 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 地址則是集中了之後的網絡号(即網絡号與子網掩碼)。
相當于 OSI 模型中的第 4 層傳輸層,主要功能就是讓應用程序之間互相通信,通過端口号識别應用程序,使用的協議有面向連接的 TCP 協議和面向無連接的 UDP 協議。
面向連接是在發送數據之前, 在收發主機之間連接一條邏輯通信鍊路。好比平常打電話,輸入完對方電話号碼撥出之後,隻有對方接通電話才能真正通話,通話結束後将電話機扣上就如同切斷電源。
面向無連接不要求建立和斷開連接。發送端可于任何時候自由發送數據。如同去寄信,不需要确認收件人信息是否真實存在,也不需要确認收件人是否能收到信件,隻要有個寄件地址就可以寄信了。
相當于 OSI 模型中的第 5 - 7 層的集合,不僅要實現 OSI 模型應用層的功能,還要實現會話層和表示層的功能。 HTTP 、 POP3 、 TELNET 、 SSH 、 FTP 、 SNMP都是應用層協議。
TCP/IP 應用的架構絕大多數屬于客戶端/服務端模型。 提供服務的程序叫服務端, 接受服務的程序叫客戶端。客戶端可以随時發送請求給服務端。
通常,為協議提供的信息為包頭部,所要發送的内容為數據。每個分層中,都會對所發送的數據附加一個頭部,在這個頭部中包含了該層必要的信息, 如發送的目标地址以及協議相關信息。在下一層的角度看,從上一分層收到的包全部都被認為是本層的數據。
數據發送前,按照參考模型從上到下,在數據經過每一層時,添加協議報文頭部信息,這個過程叫封裝。
數據接收後,按照參考模型從下到上,在數據經過每一層時,去掉協議頭部信息,這個過程叫解封裝。
經過傳輸層協議封裝後的數據稱為段,經過網絡層協議封裝後的數據稱為包,經過數據鍊路層協議封裝後的數據稱為幀,物理層傳輸的數據為比特。
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 - 竹下隆史
網絡基礎 - 田果
關注公衆号:網絡技術平台,回複 “ 資料 ” 獲取視頻、培訓教程、實驗手冊、電子書。
有話要說...