1. 程式人生 > >1. 為什麽要學習網絡協議?

1. 為什麽要學習網絡協議?

判斷 不能 語義 通過 服務器 比較 端口號 dhcp 並不是

1. 什麽是協議?

  人與人之間通過語言進行溝通,計算機之間通過0和1進行溝通,程序員和計算機之間通過計算機語言溝通。

  計算機語言是人類和計算機溝通的一種協議,通過這個協議,計算機可以知道我們想讓他幹什麽。

  計算機語言還比較接近人類語言,計算機不能直接讀懂,還需要通過編譯計算機才能直接讀懂。

1.1 協議的三要素

  語法:這一段內容要符合一定的格式;

  語義:這一段內容要代表某種意義;

  順序:就是先幹啥,後幹啥。

  學會計算機語言就可以教給一臺計算機完成你想讓他做的事了,如果想教給一片機器做什麽,這時候就需要網絡協議了。只有通網絡協議,才能讓一大片機器相互協作,共同完成一件事。

2. 一個HTTP請求的前世今生

  當你在瀏覽器地址欄輸入 https:www.baidu.com會發生什麽呢?

  a. https:www.baidu.com 只是一個URL,瀏覽器只知道名字,不知道具體的地點。這時他使用地址簿協議(常用的地址簿協議有DNS和HTTPDNS)查找得到119.75.217.109這個IP地址。IP地址是互聯網世界的門牌號。

  b. 得到目標地址後,瀏覽器開始打包他的請求。請求一般采用HTTP協議或者HTTPS協議。DNS,HTTP,HTTPSdou所在的層為應用層,經過應用層封裝後,瀏覽器將請求包交給下一層傳輸層去完成。

  c. 傳輸層一般有面向連接的TCP協議和無連接的UDP協議。所謂面向連接就是TCP會保證這個包可以到達目的地,如果不能到達,就重新發送,直到到達

。TCP協議裏面有兩個端口,一個是當前程序使用的端口,一個是請求服務器監聽的端口,操作系統往往通過端口判斷他得到的包應該給哪個進程。傳輸層封裝完成後將包交給下一層網絡層去完成。

  d. 網絡層的協議是IP協議,IP協議裏面有源IP地址和目標IP地址。操作系統根據目標IP地址就能知道這個它是本地人還是外地人。如果是外地人的話就要去網關,操作系統啟動時會被DHCP協議配置IP地址和默認的網關地址192.168.1.1。操作系統提供ARP協議得到本地網關的MAC地址。於是操作系統將IP包交給下層,MAC層。

  e. 到了MAC層之後,網卡將包發出去,因為這個包裏面有MAC地址,因此是可以到達本地

網關的。網關收到包之後,會根據自己的知識,判斷下一步應該怎麽走。網關往往是一個路由器,到某個IP的地址怎麽走,這個叫做路由表。

  f. 路由器相當於一個局域網,局域網內可以直接通過MAC地址進行通信,一旦跨越路由器,就需要根據路由協議(常用的有OSPF和BGP)確定到這個IP怎麽走。

  g. 最後到了目標地址的路由器,路由器根據這個IP地址通過ARP就知道其MAC地址,根據MAC地址就可以找到目標服務器了。

  h. 目標服務器確認MAC地址無誤後,去下MAC頭,發送給操作系統的網絡層

  i. 網絡層確認IP無誤後,取下IP頭,根據IP頭中的傳輸層協議,發送給傳輸層

  j 對於傳輸層,對於受到的每個包,都會回復一個包表明包收到了(這個回復包只是說明包收到了,並不是這個包的請求結果),這個回復沿著來的方向走回去報個平安。如果一段時間後發送端的TCP層未收到平安到達的回復,TCP層就會一直悶頭重試,直到收到平安到達的回復。如果TCP層除了問題,則應用層重新發送請求。報完平安之後,傳輸層根據端口號發送給應用層指定的應用程序。

  k. 應用程序通過解析HTTP請求即可獲知裏面的請求信息。

技術分享圖片

  

1. 為什麽要學習網絡協議?