阮一峯互聯網協議入門
互聯網的核心是一系列協議,它們對電腦如何鏈接和組網,作出了詳細規定。html
OSI七層模型(由上至下):應用層、表示層、會話層、傳輸層、網絡層、數據鏈路層、物理層
OSI五層模型(由上至下):應用層、傳輸層、網絡層、連接層、實體層
互聯網的實現,每一層都有本身的功能,每一層都靠下一層的支持。越下面的層越靠近硬件,越上面的層越靠近用戶。
每一層功能的實現都依賴於相應的協議。網絡
光纜、電纜、雙絞線、無線電波等構成了「實體層」,它是將電腦鏈接起來的物理手段,規定了網絡的電氣特性,做用是傳送0和1的電信號。ui
在實體層之上,用於肯定0和1電信號的分組方式。(0和1電信號的本質是高低電平)spa
「連接層」的協議是「以太網協議」。
以太網協議規定,一組電信號構成一個數據包,叫作「幀」。
「Head」包含一些說明項:發送者、接收者、數據類型等。len=18字節
「Data」包含數據包的具體內容。46<len<1500字節
因此,每幀的長度 64<len<1518,若數據超過該長度,需分割成多個幀。htm
以太網規定,連入網絡的全部設備,都必須具備"網卡"接口。數據包必須是從一塊網卡,傳送到另外一塊網卡。網卡的地址,就是數據包的發送地址和接收地址,即MAC地址。
每一個網卡都有獨一無二的MAC地址。blog
發送者網卡經過ARP協議(網絡層的一種協議)得到接受者MAC地址,而後採用「廣播」的形式,向本網絡內全部計算機發送數據包,讓每臺計算機本身判斷,是否爲接收方。接口
連接層經過廣播的方式,根據MAC地址,能夠實現子網內的數據傳輸,可是ARP下一沒法得到不一樣子網之間的MAC地址。
「網絡層」的做用是引進一套新的地址,用於區分不一樣計算機是否屬於同一個子網。該地址稱爲「網絡地址」,即「網址」。
網絡層的出現,計算機有了兩個地址,一個是網絡地址,一個是MAC地址,兩者無任何關係。網址用於肯定計算機所屬的子網,MAC地址用於肯定目標網卡。圖片
規定網絡地址的協議,叫作IP協議。它所定義的地址,就被稱爲IP地址。
互聯網中每臺計算機都會分配到一個IP地址,IP地址分爲兩部分,前半部分表明子網,後半部分表明組網中的主機。
一般觀察IP地址便可肯定兩臺電腦是否屬於同一子網,更準確的方式是經過「子網掩碼」,方法是將兩個IP地址與子網掩碼分別進行與運算,若是結果相同,就代表它們在同一個子網絡中,不然就不是。
根據IP協議發送的數據,就叫作IP數據包。
"Head"部分包含IP地址,「Data」部門包含數據內容。
因此,以太網數據包變成了這樣:get
傳輸數據包必須同時知道IP地址和MAC地址,IP地址一般是已知的,怎麼知道MAC地址呢?
分爲兩種狀況:
第一種,發送者與接收者屬同一子網。ARP協議發出一個數據包,其中包含它所要查詢主機的IP地址,在對方的MAC地址這一欄,填的是FF:FF:FF:FF:FF:FF,表示這是一個"廣播"地址。它所在子網絡的每一臺主機,都會收到這個數據包,從中取出IP地址,與自身的IP地址進行比較。若是二者相同,都作出回覆,向對方報告本身的MAC地址,不然就丟棄這個包。
第二種,發送者與接收者屬不一樣子網。只能把數據包傳送到兩個子網絡鏈接處的"網關"(gateway),讓網關去處理。域名
"傳輸層"的功能,就是創建"端口到端口"的通訊。相比之下,"網絡層"的功能是創建"主機到主機"的通訊。只要肯定主機和端口,咱們就能實現程序之間的交流。
UDP協議是創建端口到端口通訊最簡單的協議。
「Head」部門包含發送端口和接收端口。
「Data」部分包含具體的內容。
因此以太網數據包就是這樣:
UDP協議簡單、易實現,但可靠性差,沒法肯定對方是否收到數據。
TCP協議能夠認爲是有確認機制的UDP協議,每發出一個數據包都要求確認。若是有一個數據包遺失,就收不到確認,發送方就知道有必要重發這個數據包。
TCP數據包和UDP數據包同樣,都是內嵌在IP數據包的"數據"部分。
"應用層"的做用,就是規定應用程序的數據格式。
常見的應用層協議有:http(超文本傳輸協議)、https、DNS(域名系統協議)、FTP(文件傳輸協議)、Telnet(遠程終端協議)、SMTP(簡單郵件傳送協議)、POP3(郵件讀取協議)
所以,最終以太網數據包以下: