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會保證這個包可以到達目的地,如果不能到達,就重新發送,直到到達
d. 網絡層的協議是IP協議,IP協議裏面有源IP地址和目標IP地址。操作系統根據目標IP地址就能知道這個它是本地人還是外地人。如果是外地人的話就要去網關,操作系統啟動時會被DHCP協議配置IP地址和默認的網關地址192.168.1.1。操作系統提供ARP協議得到本地網關的MAC地址。於是操作系統將IP包交給下層,MAC層。
e. 到了MAC層之後,網卡將包發出去,因為這個包裏面有MAC地址,因此是可以到達本地
f. 路由器相當於一個局域網,局域網內可以直接通過MAC地址進行通信,一旦跨越路由器,就需要根據路由協議(常用的有OSPF和BGP)確定到這個IP怎麽走。
g. 最後到了目標地址的路由器,路由器根據這個IP地址通過ARP就知道其MAC地址,根據MAC地址就可以找到目標服務器了。
h. 目標服務器確認MAC地址無誤後,去下MAC頭,發送給操作系統的網絡層;
i. 網絡層確認IP無誤後,取下IP頭,根據IP頭中的傳輸層協議,發送給傳輸層;
j 對於傳輸層,對於受到的每個包,都會回復一個包表明包收到了(這個回復包只是說明包收到了,並不是這個包的請求結果),這個回復沿著來的方向走回去報個平安。如果一段時間後發送端的TCP層未收到平安到達的回復,TCP層就會一直悶頭重試,直到收到平安到達的回復。如果TCP層除了問題,則應用層重新發送請求。報完平安之後,傳輸層根據端口號發送給應用層指定的應用程序。
k. 應用程序通過解析HTTP請求即可獲知裏面的請求信息。
1. 為什麽要學習網絡協議?