計算機系統014 - 協議層級

對於開發人員而言,從複雜的問題中找尋規律是基本的能力,亦如抽象。若是單一抽象仍不能較好詮釋問題,那還能夠從分層的角度來定義問題。分層能使咱們暫時從最旁枝末節的點抽身出來,擁有更高的視野,視其全貌。網絡環境複雜度不言而喻,因此分層也就成了公認選擇。瀏覽器

1. 協議層級

協議模型

上圖中兩種分層方式,左邊的五層結構能夠當作是實踐派的作法,右邊的七層結構能夠堪稱是學術派的研究。不談優劣,只談適應不適應。目前主流使用的是五層結構,由於它更加適應於具體開發過程。畢竟分層是爲了解耦,解耦必然帶來性能下降及複雜度增長,因此取個權衡值纔是最實在的。網絡

那麼對左邊封層方式,逐層簡要介紹以下:工具

1.1 Application 應用層

顧名思義,主要由應用、以及應用之間通訊協議構成。典型應用有瀏覽器、郵件、文件服務等,與之對應的則分別是HTTP、SMTP、FTP等協議。該層主要有以下兩個要素:性能

  • 訪問形式: 域名,如 www.baidu.com
  • 信息單元: message,或稱爲消息

1.1.1 Domain name system(DNS)

前文中提到過,每一個可聯網設備在網絡中真正惟一的標識符是其網卡上的MAC地址,其餘的只是爲了便於訪問而存在的高可讀性字段。相似於中國公民,其身份證號碼在國境內是惟一的,但數字可讀性差,因此還須要創建起姓名等映射關係便於訪問。一樣的,域名至關於真正要訪問MAC地址的高可讀性映射,只是綁定關係讓其變得有意義。而創建這種綁定關係的,就是域名系統DNS。測試

DNS中域名對應的直接映射並不是MAC地址,而是一串稱爲IP地址的數字。cdn

DNS

IP Address

茫茫人海,只知道身份證號碼和姓名來找一我的是十分低效甚至沒法達成的,這時候,逐層的具體地址就派上了大用場。一樣的,爲了更便捷有效地管理網絡上各式各樣數量巨大的聯網設備,IP協議按相似省市縣的分層形式制訂了子網系統。blog

以IPv4(Version 4)爲例,每一個IP地址共32位,除去不一樣類型起始碼,其他主要由網絡號和主機號構成,對應「A省B市」的結構:進程

IP Address

1.1.2 Port端口

一般應用是以進程的形式存在,單個主機上會有多個進程同時運行。IP地址雖然標示了當前主機號,但還不能標示到具體進程。所以不一樣主機上的進程如需通信,還必須經過額外字段標明進程,這個字段就是Port端口。ip

Port是一個16位數字,一般和IP地址同時使用。隨着互聯網的發展,部分Port(0~1024)已被某些知名服務佔用,如80/8080等。經過測試某些端口是否有響應,便可測試對應服務是否存在。內存

1.2 Transport 傳輸層

傳輸層負責在應用間傳遞message,即服務於應用層。與應用層兩要素相比,不一樣之處在於:

  • 訪問形式:端口,8080
  • 信息單元:segment

既然是在應用間傳遞信息,就必然要標明應用自己。而在一個host上,port是綁定到進程的,所以只須要經過port口進行標註便可。主流傳輸協議有TCP和UDP兩種,具體將在單獨章節介紹。

1.3 Network 網絡層

網絡層負責在主機間移動segment,即服務於傳輸層。與傳輸層兩要素相比,不一樣之處在於:

  • 訪問形式:IP地址,如 192.168.128.10
  • 信息單元:datagram

由於是在主機間傳遞信息,那麼天然標識符也只須要精確到IP自己便可。從硬件上講,一個主機一般一至多個網卡,各自有不一樣IP地址,但均和主機自己綁定。網絡層送出的信息中指明對端IP,傳入的信息中也可拆分出具體Port,隨後傳送到具體應用解析便可。

1.4 Link 鏈路層

前文提到,主機間的鏈路可能須要多個結點(如Switch、Router甚至ISP)的參與,要想把一條datagram成功送達對端主機,也絕非易事,所以專門分出一個鏈路層來完成鏈路的造成、維護、斷開等工做。鏈路層服務於網絡層,要素區別在於:

  • 訪問形式:IP地址,如192.168.128.10
  • 信息單元:frame

注意到這裏的信息單元並不是datagram,也就是說,鏈路層的信息與datagram除去header,其實還有可能內容自己也不相同。由於鏈路由不一樣有形無形的硬件鏈路構成,每一段鏈路的傳輸率、最大傳輸單元MTU等也各自不一樣,全部大於鏈路最大傳輸單元的datagram要想順利傳輸,就必須切分紅合適的frame,傳輸完成後,再從新組裝。

有人可能會問,一直說MAC地址是惟一標識,怎麼到了鏈路層還沒用上,別急,這就來了。

1.4.1 MAC Address

MAC地址是由網卡生產商生產時固化進網卡的,爲保證其惟一性,MAC地址中有一段是不一樣生產商申請到的代號。

MAC

上一篇中提到一個設備,叫作Switch交換機,也叫網橋,是MAC地址的集成器。要記住,IP地址是人爲地爲設備分配一個標識符,以便區隔管理,典型的如DHCP動態內存分配就印證了這個道理。所以網絡中必定存在一張IP地址和MAC地址的映射表,從而使得信息可以真正抵達對應的網卡。而一般,這個任務就交給了交換機。

1.5 Physical 物理層

物理層是最基礎的一層,它的職責只須要負責無缺地傳輸每個bit便可。有了鏈路層精肯定位到的兩個MAC主機,剩下的就交給硬件材料、協議等來完成了。如前所述,不會過多關注到底層的硬件細枝,所以若有興趣,可自行拓展閱讀

2. packet封裝

前半部分對網絡中各個職能劃分了層級,爲了更加形象地展開剩下的packet封裝內容,要先講個快遞的通用流程。

快遞相信大部分人都收過,貢獻我本身的一張,並大體分層以下:

  • 應用層

    賣家將貨物裝箱,貼上快遞單,上寫發貨人、收貨人地址等聯繫方式。

    對應的Message一樣封裝好內容後,即送出。

  • 傳輸層

    分公司收到封裝好的包裹,按照地址,查詢下一站,並送出至相應分撥中心。

    對應的Segment中包含源和目的IP:Port,及其餘如稱重等輔助校驗信息。

  • 網絡層

    分撥中心則負責決策將貨物送往另外一分撥中心,這一層偏向尋找遞送的最優途徑。

    網絡層對應的一樣是爲了給datagram找尋到送達的最優途徑,最優一般意味着最快,但不意味着所通過的路徑自己最短。

  • 鏈路層

    肯定具體對接分撥中心後,將進一步肯定使用何種交通工具送達,並重組貨物結構(如集裝箱化)以便於運輸。

    在網絡層中肯定路徑後,鏈路層將負責重組收到的全部datagram,以便適應不一樣鏈路的最大傳輸單元大小。

  • 物理層

    肯定交通工具後,交給貨運負責人員便可。

Packet

3. 小結

歸根結底,各層協議的定義只是爲了更好地完成層級化後的本職工做,生活中也同樣,能真正地幹好本身的本職工做,其實自己就是對別人最大的尊重。固然也必須清晰地意識到,每一次層級的增多,再帶來更大兼容性的同時,每每意味着更大的溝通成本,如應用層對端可能只但願傳輸一個字符,實際上卻須要傳輸一堆額外的各層頭信息。

相關文章
相關標籤/搜索