成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

徹底搞懂計算機網絡通信設備與協議

原創
網絡 通信技術
本文將會梳理清楚數據包在網絡中由一臺主機發往另一臺主機的詳細過程,內容包括調制解調器、中繼器、網卡、交換機、路由器等網絡設備,以及 IP 協議相關技術 DNS、ARP、DHCP、NAT、ICMP等。

【51CTO.com原創稿件】目錄 

一、前言 

二、設備 

  2.1 調制解調器 

  2.2 中繼器 

  2.3 網卡 

  2.4 交換機 

    2.4.1 交換機的工作原理 

  2.5 路由器 

    2.5.1 路由控制表 

三、協議 

  3.1 DNS 

    3.1.1 DNS查詢過程 

    3.1.2 查看修改DNS 

  3.2 ARP 

    3.2.1 ARP工作原理 

    3.2.2 查看本機ARP 

  3.3 DHCP 

    3.3.1 DHCP 的工作機制 

  3.4 NAT 

    3.4.1 NAT的工作機制 

  3.5 ICMP 

    3.5.1 ping

四、尾聲

一、前言

面試時回答計算機網絡這塊的問題,很對應試者回答的內容多為講解計算機網絡的 TCP 三次握手、四次揮手,或者是 OSI 七層模型的細節闡釋。

當被問到數據包如何在網絡上進行傳輸的,比如 IP 路由、ARP 尋址、交換機與路由器的區別、私有 IP 與全局 IP 的轉換等細節,只能沉默以對。

本文將會梳理清楚數據包在網絡中由一臺主機發往另一臺主機的詳細過程,內容包括調制解調器、中繼器、網卡、交換機、路由器等網絡設備,以及 IP 協議相關技術 DNS、ARP、DHCP、NAT、ICMP等。

二、設備

搭建一套網絡環境要涉及各種各樣的電纜和網絡設備,既然要搞清楚數據的傳輸,那就先搞清楚數據傳輸的媒介。

如圖所示,主機A向主機B發送數據包,需要經過交換機、路由器等設備。但在物理層(OSI 模型的第 1 層),還需要調制解調器和中繼器。

2.1 調制解調器

現代家庭網絡搭建寬帶時,可以看到路由器后接的調制解調器(英語:Modem),我們一般親切稱之為“貓”。

調制解調器是將計算機產生的數字信號轉換為模擬信號進行傳輸,并解調收到的模擬信號以得到數字信號的電子設備。

以前用電話線上網用的是電話調制解調器,現在都是光纖上網,用的是光纖調制解調器,即用于數字信號與光纖信號的轉換。

2.2 中繼器

同調制解調器一樣工作在物理層的還有中繼器,它的作用是將電纜傳過來的電信號或光信號經由中繼器的波形調整和放大再傳給另一個電纜,簡而言之,中繼器是對減弱的信號進行放大和發送的設備。

2.3 網卡

一臺計算機要想上網必備的就是網卡,而現在大多數計算機也早已內置了網卡。

網卡,又稱為網絡適配器、LAN 卡,是一塊被設計用來允許計算機在計算機網絡上進行通訊的計算機硬件。由于其擁有 MAC 地址,因此屬于 OSI 模型的第 2 層(數據鏈路層)。

我們所講的計算機的 MAC 地址或主機的 MAC 地址,實際上是網卡的 MAC 地址。

如下圖所示,Mac 電腦可以在「系統偏好設置 - 網絡 - Wi-Fi - 高級 - 硬件」查看當前計算機的 MAC 地址。

2.4 交換機

換機是一種網絡設備,通過報文交換方式接收和轉發數據到目標設備。

簡而言之,交換機就是接收數據包、查看數據包的目的地址以選擇路由、將數據包轉發給下一跳路由。

需要明確,交換機不修改數據包,只負責轉發數據包。

交換機又被稱為網橋或者 2 層交換機,所謂 2 層,就是工作于數據鏈路層。這代表著,交換機在轉發數據包時,不知道也無需要知道來源主機和目的主機的 IP 地址,只需知其 MAC 地址。

2.4.1 交換機的工作原理

交換機內部的 CPU 會在每個端口成功連接時,通過將 MAC 地址和端口對應,形成一張 MAC 表。

當一臺交換機安裝配置好之后,其工作過程如下:

  • 交換機端口 1 收到 MAC 地址為 X 的計算機發給 MAC 地址為 Y 的計算機的數據包,交換機從而記下了 MAC 地址 X 在端口 1 。(學習)
  • 如果目的地 MAC 地址 Y 不能在 MAC 表中找到時,交換機會把數據包轉發給除端口 1 外的所有數據包。(洪泛)
  • MAC 地址 Y 的計算機收到該數據包,向 MAC 地址 X 發出確認包。交換機收到該包后,從而記錄下 MAC 地址 Y 所在的網段。
  • 交換機向 MAC 地址 X 轉發確認包。(轉發)
  • 交換機收到一個數據包,查表后發現該數據包的來源地址與目的地址屬于同一個端口,交換機將不處理該數據包。(過濾)
  • 交換機內部的 MAC 地址-端口 查詢表的每條記錄采用時間戳記錄最后一次訪問的時間。早于某個閾值(用戶可配置)的記錄被清除。(老化)

5. 路由器

路由器可以連接不同的數據鏈路。例如連接兩個以太網。現在,人們在家或辦公室里連接互聯網時所使用的寬帶路由器也是路由器的一種。

路由器是在 OSI 模型的第 3 層即網絡層面上連接兩個網絡、并對分組報文進行轉發的設備。

交換機是根據物理地址(MAC地址)進行處理,參考的是 MAC 表,而路由器則是根據 IP 地址進行處理,所參考的表叫做路由控制表。

2.5.1 路由控制表

發送數據包時所使用的地址是網絡層的 IP 地址。然而僅僅有 IP 地址還不足以實現將數據包發送到對端目標地址,在數據發送過程中還需要類似“指明下一個路由器或主機”的這方面信息,以便真正發往目標地址。保存這種信息的就是路由控制表。

實現 IP 通信的主機和路由器都必須持有一張這樣的表。它們也正是在這個表格的基礎上才得以進行數據包發送的。

該路由控制表的形成方式有兩種:一種是管理員手動設置,另一種是路由器與其它路由器相互交換信息時自動刷新。前者也叫靜態路由控制,而后者叫做動態路由控制。

為了讓動態路由及時刷新路由表,在網絡上互連的路由器之間必須設置好路由協議,保證正常讀取路由控制信息。

路由控制表中記錄著網絡地址與下一步應該發送至路由器的地址。在發送 IP 包時,首先要確定 IP 包首部中的目標地址,再從路由控制表中找到該地址具有相同網絡地址的記錄,根據該記錄將 IP 包轉發給相應的下一個路由器。

如果路由控制表中存在多條相同網絡地址的記錄,就選擇一個最為吻合的網絡地址。所謂最為吻合是指相同位數最多的意思。

例如 172.20.100.52 的網絡地址與 172.20/16 和 172.20.100/24 兩項都匹配。此時,應該選擇匹配度最長的 172.20.100/24 。

默認路由是指路由表中任何一個地址都能與之匹配的記錄。默認路由一般標記為 0.0.0.0/0 或 default。這里的 0.0.0.0/0 并不是指 IP 地址是 0.0.0.0,為了避免人們誤以為 0.0.0.0 是IP地址,故后綴是 /0 。

三、協議

在訪問 Web 站點和發送、接收電子郵件時,我們通常會直接輸入 Web 網站的地址或電子郵件地址等那些由應用層提供的地址,而不會使用由十進制數字組成的某個 IP 地址。

但是網絡層需要的是 IP 地址,這就需要一種功能--將應用中使用的地址映射為 IP 地址。

此外,在數據鏈路層也不需要 IP 地址,需要的是 MAC 地址傳輸數據包。由此可知,在實際通信中,還需要眾多支持 IP 的相關技術才能夠實現通信。

IP 的輔助技術包括 DNS、ARP、ICMP、ICMPv6、DHCP、NAT等。還包括如 IP 隧道、 IP多播、IP任播、質量控制以及網絡擁塞的顯式通知和 Mobile IP 技術。

3.1 DNS

域名系統(英語:Domain Name System,縮寫:DNS)是互聯網的一項服務。它作為將域名和 IP 地址相互映射的一個分布式數據庫,能夠使人更方便地訪問互聯網。DNS 使用 TCP 和 UDP 端口 53 。當前,對于每一級域名長度的限制是 63 個字符,域名總長度則不能超過 253 個字符。

3.1.1 DNS查詢過程

以查詢 zh.wikipedia.org 為例: 客戶端發送查詢報文 "query zh.wikipedia.org" 至DNS服務器,DNS服務器首先檢查自身緩存,如果存在記錄則直接返回結果。 如果記錄老化或不存在,則:

  • DNS服務器向根域名服務器發送查詢報文"query zh.wikipedia.org",根域名服務器返回頂級域 .org 的權威域名服務器地址。
  • DNS服務器向 .org 域的權威域名服務器發送查詢報文"query zh.wikipedia.org",得到二級域 .wikipedia.org 的權威域名服務器地址。
  • DNS服務器向 .wikipedia.org 域的權威域名服務器發送查詢報文"query zh.wikipedia.org",得到主機 zh 的A記錄,存入自身緩存并返回給客戶端。

3.1.2 查看修改DNS

如下圖所示,Mac 電腦可以在「系統偏好設置 - 網絡 - Wi-Fi - 高級 - DNS」查看當前網絡所使用的 DNS。

為什么我們從來不需要設置 DNS 服務器呢?這是因為現代路由器大多具備 DHCP 服務器的功能,DHCP 服務器自動為我們提供默認的 DNS 服務器地址。

路由器會將連接到自身所有設備的 DNS 服務器地址設置為自己的 IP 地址。連接該路由器的手機、電腦等網絡設備的 DNS 請求,統一發送至路由器 IP 地址,此時路由器扮演各設備的 DNS 服務器。然后,路由器轉發 DNS 請求,到實際的 DNS 服務器。實際的 DNS 服務器解析域名 IP,返回給路由器。最后,路由器再把 IP 返回給終端設備。

發送 DNS 請求到 DNS 服務器獲取網站真實的 IP 地址,這個過程需要一定的時間,影響這個時間的因素之一就是 DNS 服務器的地理位置。DNS 服務器離你越近,傳輸數據自然更快。因此默認情況下,路由器將從網絡提供商提供獲取最近的 DNS 服務器地址,實現最快的網絡響應。

3.2 ARP

只要確定了 IP 地址,就可以向這個目標地址發送 IP 數據報。然而,在底層數據鏈路層,進行實際通信卻有必要了解每個 IP 地址所對應的 MAC 地址。

于是需要一種方法,根據目的主機的 IP 地址,獲得其 MAC 地址。這就是 ARP 協議要做的事情。所謂地址解析(address resolution)就是主機在發送幀前將目標 IP 地址轉換成目標 MAC 地址的過程。

另外,當發送主機和目的主機不在同一個局域網中時,即便知道對方的 MAC 地址,兩者也不能直接通信,必須經過路由轉發才可以。所以此時,發送主機通過 ARP 協議獲得的將不是目的主機的真實 MAC 地址,而是一臺可以通往局域網外的路由器的 MAC 地址。于是此后發送主機發往目的主機的所有幀,都將發往該路由器,通過它向外發送。這種情況稱為委托 ARP 或 ARP代理(ARP Proxy)。

3.2.1 ARP工作原理

ARP 是如何知道 MAC 地址的呢?簡單來說,ARP 是借助 ARP 請求與 ARP 響應兩種類型的包確定 MAC 地址的。

在每臺安裝有 TCP/IP 協議的電腦或路由器里都有一個 ARP 緩存表,表里的 IP 地址與 MAC 地址是一對應的,如下表所示。

以主機A(192.168.38.10)向主機B(192.168.38.11)發送數據為例。

  • 當發送數據時,主機A會在自己的 ARP 緩存表中尋找是否有目標 IP 地址。如果找到就知道目標 MAC 地址為(00-BB-00-62-C2-02),直接把目標 MAC 地址寫入幀里面發送就可。
  • 如果在 ARP 緩存表中沒有找到相對應的 IP 地址,主機A就會在網絡上發送一個廣播(ARP request),目標 MAC 地址是“FF.FF.FF.FF.FF.FF”,這表示向同一網段內的所有主機發出這樣的詢問:“192.168.38.11的 MAC 地址是什么?”
  • 網絡上其他主機并不響應 ARP 詢問,只有主機B接收到這個幀時,才向主機A做出這樣的回應(ARP response):“192.168.38.11的 MAC 地址是00-BB-00-62-C2-02”,此回應以單播方式。這樣,主機A就知道主機B的 MAC 地址,它就可以向主機B發送信息。同時它還更新自己的 ARP 高速緩存(ARP cache),下次再向主機B發送信息時,直接從 ARP 緩存表里查找就可。

需要注意,示例的主機 A 和主機 B 屬于同一網段。如果主機 A 和主機 B 不屬于同一網段,那么主機 A 發送的廣播(ARP request)主機 B 就不可能收到。

所以,在發送廣播(ARP request)前,主機 A 會判斷主機 B 是否屬于同一網段,如果不屬于,就會在自己的 ARP 緩存表中尋找網關(也就是路由器)的 MAC 地址。如果沒有找到,主機 A 就會在網絡上發送一個廣播(ARP request)詢問網關(路由器)的 MAC 地址。

ARP 緩存表采用老化機制,在一段時間內如果表中的某一行沒有使用,就會被刪除,這樣可減少緩存表的長度,加快查詢速度。

3.2.2 查看本機ARP

如何查看本機 ARP 緩存表呢?

  • Windows:開始 → 運行 → cmd → arp -a(參數a表示顯示所有內容)
  • Linux:終端 → arp -nv
  • MacOS:終端 → arp -nla

3.3 DHCP

如果逐一為每一臺主機設置 IP 地址會是非常繁瑣的事情。于是,為了實現自動設置 IP 地址、統一管理 IP 地址分配,就產生了 DHCP 協議。

如下圖所示,Mac 電腦可以在「系統偏好設置 - 網絡 - Wi-Fi - 高級 - TCP/IP」查看當前本地 IP 配置。

DHCP 服務器會統一管理每個子網的 IP 地址分配范圍、子網掩碼、默認路由以及 DNS 服務器。

有了 DHCP ,計算機只要連接到網絡,就可以進行 TCP/IP 通信。也就是說,DHCP 讓即插即用變得可能。而 DHCP 不僅在 IPv4 中,在 IPv6 中也可以使用。

3.3.1 DHCP 的工作機制

在使用 DHCP 之前,首先要架設一臺 DHCP 服務器(很多時候用該網段的路由器充當 DHCP 服務器。)。然后將 DHCP 所要分配的 IP 地址設置到服務器上。此外,還需要將相應的子網掩碼、路由控制信息以及 DNS 服務器的地址等設置到服務器上。

DHCP 服務器搭建好之后,DHCP 的運行分為四個基本過程,分別為請求 IP 租約、提供 IP 租約、選擇 IP 租約和確認 IP 租約。所謂租約,也就是計算機 IP 地址的有效期。

由此,DHCP 的網絡設置結束,可以進行 TCP/IP 通信。不需要 IP 地址時,可以發送 DHCP 解除包。

另外,DHCP客戶端在 IP 租約到期前可以發送 DHCP 請求包通知想要延長這個時限。

3.4 NAT

告訴大家一個有趣的實驗,拿起你的手機和電腦,連接同一 Wi-Fi ,然后訪問百度,輸入“IP”,你會驚奇的看到手機和電腦顯示的 IP 地址是相同的,而且并非是本機 IP 地址。

那么問題來了,在數據包的發送過程中,是根據網絡層的來源 IP 地址和目的 IP 地址進行定位。同一局域網的來源 IP 地址根據上面實驗的結果顯然都是相同的公網 IP ,那么百度響應過來的數據包是如何精確發送到我們的本地計算機呢?答案是使用 NAT 技術。

NAT(Network Address Translator)是用于在本地網絡中使用私有地址,在連接互聯網時轉而使用全局 IP 地址。除轉換 IP 地址外,還出現了可以轉換 TCP、UDP 端口號的 NART(Network Address Ports Translator)技術,由此可以實現用一個 IP 地址與多個主機的通信。現在我們所說的 NAT 多半都是 NAPT,或者稱之為 IP 偽裝。

NAT(NAPT)實際上是為了正在面臨地址枯竭的 IPv4 而開發的技術,不過,IPv6 為了提高網絡安全也正在使用 NAT,在 IPv4 和 IPv6 之間的相互通信當中常常使用 NAT-PT。

3.4.1 NAT的工作機制

如下圖所示,以 10.0.0.10 的主機與 163.221.120.9 的主機進行通信為例。利用 NAT ,途中的 NAT 路由器將發送源地址從 10.0.0.10 轉換為全局的 IP 地址(202.244.174.37)再發送數據。反之,當包從地址163.221.120.9 發過來時,目標地址(202.244.174.37)先被轉換成私有 IP 地址 10.0.0.10 以后再被轉發。

NAT 對數據包的 IP 首部進行改動,由于在 TCP 或 UDP 中,IP 地址還用于校驗和的計算,因此 IP 發生變化時,也需要相應地將 TCP、UDP 的首部進行轉換。

在 NAT(NAPT)路由器的內部,有一張自動生成的用來轉換地址的表。當 10.0.0.10 向 163.221.120.9 發送第一個包時生成這張表,并按照表中的映射關系進行處理。

當私有網絡內的多臺機器同時都要與外部進行通信時,僅僅轉換 IP 地址,人們不免擔心全局 IP 地址是否不夠用。這時采用如下圖所示的包含端口號一起轉換的方式(NAPT)可以解決這個問題。

如圖所示,主機 163.221.120.9 的端口號是 80,局域網有兩個客戶端 10.0.0.10 和 10.0.0.11 同時進行通信,并且這兩個客戶端的本地端口都是 1025。此時,僅僅轉換 IP 地址為某個全局地址 202.244.174.37,會令轉換后的所有數字完全一致。為此,只要將 10.0.0.11 的端口號轉換為 1026 就可以解決問題。

將上圖橢圓形內容進行合并,生成一個 NAPT 路由器的轉換表,就可以正確地轉換地址跟端口的組合,令客戶端 A、B 能同時與服務器之間進行通信。

這種轉換表在 NAT 路由器上自動生成。例如,在 TCP 的情況下,建立 TCP 連接首次握手時的 SYN 包一經發出,就會生成這個表。而后又隨著收到關閉連接時發出 FIN 包的確認應答從表中被刪除。

在使用 TCP 或 UDP 的通信當中,只有目標地址、源地址、目標端口、源端口以及協議類型(TCP 還是 UDP)五項內容都一致時才被認為是同一個通信連接。也就是復用轉換表的同一行記錄。

3.5 ICMP

架構 IP 網絡時需要特別注意兩點:確認網絡是否正常工作,以及遇到異常時進行問題診斷。

例如,一個剛剛搭建好的網絡,需要驗證該網絡的設置是否正確。ICMP 正是提供這類功能的一種協議。

ICMP 的主要功能包括,確認 IP 包是否成功送達目標地址,通知在發送過程當中 IP 包被廢棄的具體原因,改善網絡設置等。有了這些功能以后,就可以獲得網絡是否正常、設置是否有誤以及設備有何異常等信息,從而便于進行網絡上的問題診斷。

在 IP 通信中如果某個 IP 包因為某種原因未能達到目標地址,那么這個具體的原因將由 ICMP 負責通知。例如,主機 A 向主機 B 發送了數據包,由于某種原因,途中的路由器未能發現主機 B 的存在,這時,路由器就會向主機 A 發送一個 ICMP 包,說明發往主機 B 的包未能成功。

ICMP 的消息大致可以分為兩類:一類是通知出錯原因的錯誤消息,另一類是用于診斷的查詢消息。

3.5.1 ping

ping(呯)是使用 ICMP 協議的一種計算機網絡工具,用來測試數據包能否透過 IP 協議到達特定主機。

ping 的運作原理是向目標主機傳出一個 ICMP 的請求回顯數據包,并等待接收回顯回應數據包。程序會按時間和成功響應的次數估算丟失數據包率(丟包率)和數據包往返時間(網絡時延,Round-trip delay time)。

ping 有時候也被我們說成了動詞,如 “ping一下計算機XXX,看它是否開著。”

下面以 ping 百度的網址作為示例:

可以看到,百度的 IP 地址是 61.135.169.125,以 64 bytes 測試,反應時間 5.589 毫秒,TTL(Time To Live)值為 56。

這里不得不解釋 TTL 是什么?

IP 包中有一個字段叫做 TTL (Time To Live,生存周期),它的值隨著沒經過一次路由器就會減 1,直到減到 0 時該 IP 包會被丟棄。此時,IP 路由器將會發送一個 ICMP 超時的消息給發送端主機,并通知該包已被丟棄。

示例中 TTL 的值為 56 ,假設發送端設置的 TTL 為 64,那么中間經歷的路由數為 64 - 56 = 8。

四、尾聲

根據 OSI 七層模型,HTTP 數據報為應用層,在傳輸層附加 TCP 首部,指明源端口號和目標端口號,在網絡層附加 IP 首部,指明發送端和接收端的 IP 地址,指明上層協議號(TCP/UDP),在數據鏈路層附加以太網首部,指明接收端 MAC 地址和發送端 MAC 地址。

這是你以往的認知,通過本文的學習,相信你可以對 本機 IP 地址、子網掩碼的配置,本機 MAC 地址,目的機器 IP 地址,其它機器 MAC 地址的獲取等做到知其然又知其所以然。

作者介紹

薛勤,公眾號“代碼藝術”的作者,就職于阿里巴巴,熱衷于探索計算機世界的底層原理,個人在 Github@Ystcode 上擁有多個開源項目。

【51CTO原創稿件,合作站點轉載請注明原文作者和出處為51CTO.com】

 

責任編輯:趙寧寧 來源: 51CTO
相關推薦

2020-04-20 10:43:45

技術資訊

2010-06-12 16:51:54

計算機網絡通信協議

2010-09-08 20:45:31

計算機網絡協議

2010-09-08 20:42:09

計算機網絡協議

2010-06-12 16:56:37

2013-03-08 12:51:03

計算機網絡基礎協議DHCP

2013-05-14 13:02:17

計算機網絡基礎協議

2010-09-02 16:02:45

計算機網絡協議

2018-11-30 08:19:48

2010-09-08 21:01:44

計算機網絡協議

2010-06-14 18:54:57

計算機網絡協議

2010-09-08 20:53:14

WinPCap計算機網絡協議

2010-06-14 18:58:52

VoIP計算機網絡協議

2010-06-13 15:08:07

計算機網絡協議

2025-02-25 08:16:43

2010-09-02 16:56:10

計算機網絡協議

2010-06-14 18:51:05

計算機網絡協議

2010-06-13 13:35:54

計算機網絡協議

2013-10-28 10:06:26

HTTP協議網絡協議

2010-06-09 11:00:56

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品视频一区二区三 | 国产污视频在线 | 激情的网站 | 亚洲视频一区在线观看 | 国内精品免费久久久久软件老师 | 97av视频在线观看 | 亚洲精品久久久久久一区二区 | 久久综合九色综合欧美狠狠 | 国产精品精品视频一区二区三区 | 成人av片在线观看 | 免费黄色成人 | av在线播放网址 | 91精品久久久久久久 | 成人精品一区二区 | 中文字幕在线视频网站 | h片在线免费观看 | 黄色成人在线 | 中文字幕丁香5月 | 日韩av在线中文字幕 | 玖玖视频免费 | 成人深夜福利 | 在线播放亚洲 | 日韩中文字幕免费在线观看 | 国产综合精品一区二区三区 | 亚洲综合在线一区二区 | 亚洲精品国产成人 | 日本三级电影在线观看视频 | 日韩无 | 亚洲a视频| 一区二区三区国产 | 九九色综合| 一区二区三区国产精品 | 天天操天天射综合网 | 精品免费视频 | 久久专区| 免费午夜视频 | www.国产| 二区久久 | 亚洲一区二区三区在线视频 | 国产一级一级毛片 | 美女露尿口视频 |