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

1. 為什麼要學習網路協議?

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請求即可獲知裡面的請求資訊。