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