計算機網絡——五層參考模型

一個理念

  • 計算機網絡符合工程學設計,層與層之間是垂直調用。

五層參考模型

  • 應用層:HTTP、FTP等
  • 傳輸控制層:TCP、UDP
  • 網絡層:IP
  • 數據鏈路層:ARP
  • 物理層

思考一個問題

  • 我用微信給朋友發了一條消息,請問消息是怎麼發送過去的,都走了哪些路?

通過五層參考模型來解釋

應用層

  • 微信等運行在操作系統之上的應用,處於應用層,應用層之間要進行數據傳輸,會喚醒傳輸控制層:“哥們,我要發條消息,幫我建立一個連接。”數據用http協議打包好,交給傳輸控制層。
  • 打包要發送的數據本身。

傳輸控制層

  • 傳輸控制層無條件答應“好嘞,沒問題。”,然後找向服務器,說“我要傳輸數據,要建立網絡連接”(即發送了一個syn過去),服務器收到了,回了一句“收到你的請求了,可以連接”(即發送syn+ack給客戶端),客戶端收到服務器的響應,還得再做出迴應“好嘞。”(即發送ack給服務端)
    • 這就是TCP的三次握手。爲什麼要三次呢?因爲要確保每一方都有發送和響應,來保證連接的可靠。
  • 連接可靠了,接下來服務端和客戶端都會進行資源開闢,開始數據傳輸。
  • 應用層玩微信那哥們聊完了,要關閉對話框了,意味着本次數據傳輸結束了。此時,客戶端給服務器說“我完事了,可以關閉連接了”(即發送FIN),服務器聽到後,先回個“收到”(即發送FIN+ACK),再回頭看看自己這還有沒有沒傳完的數據,確認也發完了,回客戶端“我也沒啥要傳了,掛了吧”(即發送FIN),客戶端回“好嘞,拜拜。”(即發送ACK)。
    • 這就是四次分手。
  • 傳輸控制層負責傳輸通道的開啓和關閉,這也就是爲什麼要叫“控制”。
  • 抓包看一下:
    在這裏插入圖片描述

網絡層

  • 傳輸控制層確認了能傳,把數據扔給了網絡層,網絡層一看,我就明確一個事:這數據是誰發的,要發給誰?
  • 網絡層通過IP協議,會給每個聯網的設備分配IP(一個完整的地址包含:IP,子網掩碼,網關,DNS),IP與子網掩碼的計算,能夠得出每臺主機的網絡號和主機號。
  • 這下就簡單了,網絡層就是在數據包上貼上了寄件人和收件人的地址,然後交給數據鏈路層去傳輸。
  • 網絡層負責尋址。明確發送人和接收人。

數據鏈路層

  • 數據有了,地址有了,我知道這個東西要發給誰了,那麼問題來了,我該咋發過去呢?
  • 這就引出來了數據鏈路層,數據鏈路層通過ARP協議,獲取每個設備獨一無二的MAC地址(硬件地址)。
  • 數據鏈路層加工數據包,貼上所在網絡的路由器MAC地址,數據包根據MAC地址走到路由器,路由器先把包上的MAC地址撕毀,然後路把收件人的IP與自己的路由表一覈對,發現不在自己的局域網,再在數據包上貼上與自己相連的下一個更廣的路由器的MAC,把包發過去。。。。一直跳一直跳,直到跳到接收人所在局域網的路由器,路由器會撕毀包上自己的MAC,貼上接收主機的MAC,數據包就這樣發送過去了,接收人就收到了。
  • 數據鏈路層負責一跳一跳的中轉。數據包裏存放着下一個節點的指針(MAC),像鏈表一樣,所以稱作數據鏈路層。
  • 抓個包看一下:
    在這裏插入圖片描述

物理層

  • 數據包咋能一跳一跳地去到下個地方呢?通過物理層,通過實體的傳輸介質來傳輸。
  • 物理層負責數據的比特傳輸。

靈魂圖解

在這裏插入圖片描述
在這裏插入圖片描述

一條消息的網絡漂流到此結束。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章