日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

這個專欄的計算機網絡協議,我是在極客時間上學習 已經有三萬多人購買的劉超老師的趣談網絡協議專欄,講的特別好,像看小說一樣學習到了平時很枯燥的知識點,計算機網絡的書籍太枯燥,感興趣的同學可以去付費購買,絕對物超所值,本文就是對自己學習專欄的總結,評論區可以留下你的問題,咱們一起討論!

概述

本文也是根據專欄里的板塊,對通信網絡協議做一個綜述,共分為四節去進行介紹;

為什么學習網絡協議?

網絡協議分層的真正含義;

ifconfig命令行的背后;

DHCP和PXE:ip的由來;

一、為什么學習網絡協議

全網最詳解計算機網絡協議——通信協議綜述

 

協議的三要素是:語法、語義、順序

連通互聯網世界,只教給一臺電腦做什么是不夠的,需要教會一大片機器做什么,這就是網絡協議。只有通過網絡協議,才能夠使得一大片機器互相協作、共同完成一件事。

1.1 常見的網絡協議

采用一個下單購物的場景,看看整個過程運用了哪些網絡協議。

首先,在瀏覽器中輸入一個網址www.taobao.com URL,瀏覽器只知道名字是www.taobao.com,但是不知道具體的地點,所以不知道該如何訪問;

于是,打開地址簿去查找,可以使用一般的地址簿DNS去查找,也可以采用更為精確的地址簿查找協議HTTPDNS;

無論哪一種查找,最后都會得到一個地址:106.114.134.24(任意賦值),這個是IP地址,相當于你在互聯網世界中的“門牌號”。知道了目標地址,瀏覽器開始打包他們的請求。對于普通的瀏覽請求,往往會采用HTTP協議;但是對于購物的請求,往往需要進行加密傳輸,因而使用HTTPS協議。無論是什么協議,里面都會聲明“你要買什么和買多少”。HTTP頭中包含了請求的信息:

全網最詳解計算機網絡協議——通信協議綜述

 

DNS、HTTP、HTTPS所在的層為應用層;

經過封裝以后,瀏覽器會將應用層的包交給下一層去完成,然后通過socket編程來實現。下一層是傳輸層,傳輸層有兩種協議:

無連接的協議UDP;

面向連接的協議TCP;

對于支付來說,往往采用TCP協議,所謂的面向連接就是,TCP會保證這個包能夠到達目的地。如果不能到達,就會重新發送,直至到達;TCP協議中有兩個端口,一個是瀏覽器監聽的端口,一個是電商服務器監聽的端口。操作系統往往通過端口來判斷,它得到的包應該給哪個進程;

全網最詳解計算機網絡協議——通信協議綜述

 

傳輸層封裝完之后,瀏覽器會將包交給操作系統的網絡層。網絡層的協議是IP協議,在IP協議里面會有源IP地址,即瀏覽器的所在的機器的IP地址和目標IP地址,也就是電商所在的IP地址;

全網最詳解計算機網絡協議——通信協議綜述

 

目標IP就是電商地址的門牌號,操作系統知道了目的地的門牌號,就要想著該如何找到目的地;

首先先判斷,目的地是在本地還是在外地;電商系統一般都在那遙遠的地方,就比如你到國外要去海關一樣,去外地就要經過網關。操作系統啟動以后,就會被DHCP協議配置IP地址,以及默認的網關IP地址192.168.1.1;

如果是本地通信就是靠吼——ARP協議,操作系統大吼一聲,誰是192.168.1.1啊?網關會回答它,我就是。這個本地地址就是mac地址,吼靠的就是ARP協議;

全網最詳解計算機網絡協議——通信協議綜述

 

于是操作系統將IP包交給了下一層,也就是MAC層。網卡再將包發出去,包里面包含MAC地址,因此可以到達網關。網關收到包以后,會根據自己的知識,判斷下一步該怎么走。網關往往是一個路由器,到了某個IP地址應該怎么走,這個叫作路由表。

路由器就像唐僧西天取經路過的一個個國家之間的城關,每個城關都連接著兩個國家,每一個國家都相當于一個局域網,每個國家的內部都可以使用MAC地址進行通信;

一旦跨越城關,就需要拿出IP頭來,里面記錄著IP源地址(東土大唐),欲前往西天拜佛取經(目的IP地址),路過寶地,借宿一晚,請問接下來該如何走?

全網最詳解計算機網絡協議——通信協議綜述

 

城關與城關之間的溝通協議叫做路由協議,常用的由OSPF和BGP;

城關與城關之間是一個國家,網絡包知道了要去哪個城關的時候,還是要使用國家內部的MAC地址,通過下一個城關的MAC地址,找到下一個城關,然后在問下一步該怎么走,一直走到最后一個城關。最后一個城關知道這個網絡包要去的地方。于是,對著這個國家吼一聲,誰是目標IP啊?目標服務器就會回復一個MAC地址。網絡包過關后,通過這個MAC地址就能找到目標服務器;

目標服務器發現MAC地址對上了以后,取下MAC頭來,發送給操作系統的網絡層,發現IP地址對上了,在取下IP頭。IP頭里會寫上一層封裝的TCP協議,然后交給傳輸層,即TCP層。

在這一層中,對于收到的每個包,都會有一個回復說明收到了。這個回復的包絕非這次單次請求的結果,例如購物是否成功,扣了多少錢等,而僅僅是TCP層的一個說明,即收到之后的回復。當然這個回復,會沿著剛才來的方向走回去,報個平安,防止在傳輸過程中造成的丟包等。

如果過一段時間還沒有收到的話,發的端TCP層會重新發送這個包,還是上面的請求,直到收到平安到達的回復。這個重試絕非你的瀏覽器重新將下單這個動作重新請求一次。對于瀏覽器來講,就發送了一次下單請求,TCP層不斷自己悶頭重試。除非TCP這一層出了問題,例如連接斷了,才輪到瀏覽器的應用層重新發送下單請求。

當網絡包平安到達TCP層之后,TCP頭中有目標端口號,通過這個端口號,可以找到電商網站的進程正在監聽這個端口號,假設一個Tomcat,將這個包發給電商網站。

電商網站的進程得到的是HTTP請求,知道要買什么東西,買多少。往往一個電商網站最初接待請求的這個Tomcat只是個接待員,負責統籌處理這個請求,而不是所有的事情都自己做。例如,這個接待員要告訴專門管理訂單的進程,登記要買某個商品,買多少,要告訴管理庫存的進程,庫存要減少多少,要告訴支付的進程,應該付多少錢,等等。

如何告訴相關的進程呢?往往通過RPC調用,即遠程過程調用的方式來實現。遠程過程調用就是當告訴管理訂單進程的時候,接待員不用關心中間的網絡互連問題,會由RPC框架統一處理。RPC框架有很多種,有基于HTTP協議放在HTTP的報文里面的,有直接封裝在TCP報文里面的。

當接待員發現相應的部門都處理完畢,就回復一個HTTPS的包,告知下單成功。這個HTTPS的包,會像來的時候一樣,經過千難萬險到達你的個人電腦,最終進入瀏覽器,顯示支付成功;

看到這里相信你對于自己之前學過的計算機網絡知識有一個連串的感覺了吧,很多公司的面試題都會問在瀏覽器中輸入一個URL的整個過程? 把這一連串說完,相信你的面試官也會覺得你學的很扎實;

全網最詳解計算機網絡協議——通信協議綜述

 

二、網絡分層的真正含義

計算機網絡知識點需要背誦,但是更是要理解透徹;

2.1 為什么網絡要分層?

因為不同層次之間有不同的溝通方式,叫做協議。就像一家公司也是分“層次”,分為總經理、經理、組長、員工,每個人之間都有不同的溝通方式;

因為復雜的程序都要分層,想象網絡包就是一段Buffer,或者一塊內存,是有格式的。同時,想象自己是一個處理網絡包的程序,而且這個程序可以跑在電腦上,可以跑在服務器上,可以跑在交換機上,也可以跑在路由器上。你想象自己有很多的網口,從某個口拿進一個網絡包來,用自己的程序處理一下,再從另一個網口發送出去;

當然網絡包的格式很復雜,這個程序也很復雜,復雜的程序都要分層,這是程序設計的要求。

2.2 瀏覽點擊請求過程

瀏覽點擊請求過程如下所示:

全網最詳解計算機網絡協議——通信協議綜述

 


全網最詳解計算機網絡協議——通信協議綜述

 

假設你發現這個包的MAC地址和你的相符,那說明就是發給你的,于是需要調用process_layer3(buffer):這個時候,Buffer里面往往就沒有二層的頭了,因為已經在上一個函數的處理過程中拿掉了,或者將開始的偏移量移動了一下。在這個函數里面,摘掉三層的頭,看看到底是發送給自己的,還是希望自己轉發出去的;

如果IP地址不是自己的,那就應該轉發出去;如果IP地址是自己的,那就是發給自己的。根據IP頭里面的標識,拿掉三層的頭,進行下一層的處理,到底是調用process_tcp(buffer)呢,還是調用process_udp(buffer)呢?

假設地址是TCP,就會調用process_tcp(Buffer)。這時候,Buffer里面沒有三層的頭,就需要查看四層的頭,看這是一個發起,還是一個應答,又或者是一個正常的數據包,然后分別由不同的邏輯進行處理。如果是發起或者應答,接下來可能要發送一個回復包;如果是一個正常的數據包,就需要交給上層了。交給誰呢?是不是有**process_http(buffer)**函數呢?

如果你是一個網絡包處理程序,你不需要有process_http(buffer),而是應該交給應用去處理。交給哪個應用呢?在四層的頭里面有端口號,不同的應用監聽不同的端口號。如果發現瀏覽器應用在監聽這個端口,那你發給瀏覽器就行了。至于瀏覽器怎么處理,和你沒有關系;

瀏覽器是解析html,顯示出頁面來。當你再次點擊鼠標,點擊動作被瀏覽器捕獲,于是瀏覽器知道又會發起另一個HTTP請求了,于是使用端口號,將請求發送給你。

你應該調用send_tcp(buffer)。不用說,Buffer里面就是HTTP請求的內容。這個函數里面加一個TCP的頭,記錄下源端口號。瀏覽器會給你目的端口號,一般為80端口;

然后調用send_layer3(buffer)。Buffer里面已經有了HTTP的頭和內容,以及TCP的頭。在這個函數里面加一個IP的頭,記錄下源IP的地址和目標IP的地址;隨后調用send_layer2(buffer),**Buffer里面已經有了HTTP的頭和內容、TCP的頭,以及IP的頭。這個函數里面要加一下MAC的頭,記錄下源MAC地址,得到的就是本機器的MAC地址和目標的MAC地址。**不過,這個還要看當前知道不知道,知道就直接加上;不知道的話,就要通過一定的協議處理過程,找到MAC地址。反正要填一個,不能空著;

2.3 揭秘層與層之間的關系

現實生活中,往往是員工說一句,組長補充兩句,然后經理補充兩句,最后總經理再補充兩句。但是在網絡世界,應該是總經理說話,經理補充兩句,組長補充兩句,員工再補充兩句。

TCP在三次握手時,TCP每一個消息都會帶著IP層和MAC層。因為,TCP每次發送一個消息,IP層和MAC層的所有機制都要重新運行一次,所以TCP在三次握手時,IP和MAC也運行了好久。

只要是在網絡上跑的包,都是完整的。可以有下層沒上層,絕對不可能有上層沒下層;如果一個HTTP協議的包跑在網絡上,它一定是完整的。無論這個包經過哪些設備,它都是完整的。所謂的二層設備、三層設備只是跑在設備上的程序不同;

二層設備:只把MAC頭摘下來,看看到底是丟棄、轉發,還是自己留著;

三層設備:把MAC頭摘下來之后,再把IP頭摘下來,看看到底是丟棄、轉發,還是自己留著;

三、ifconfig 命令行的由來

ifconfig是linux系統中查詢ip地址的一個命令,windows是ipconfig;

3.1 ip地址

IP地址是一個網卡在網絡世界的通訊地址,相當于我們現實世界的門牌號。

例如:10.100.122.2就是一個IP地址,地址被分為四個部分,每個部分8個bit,所以IP地址總共是32位;

IP地址被分成了5類,A-E類

全網最詳解計算機網絡協議——通信協議綜述

 

在網絡地址中,A、B、C類主要分為兩個部分,前一部分是網絡號,后一部分是主機號。大家都是六單元1001號,你是小區A的,我是小區B的;

全網最詳解計算機網絡協議——通信協議綜述

 

3.2 無類型域間選路(CIDR)

無類型域間選路,簡稱CIDR,將IP地址一分為二,前面是網絡號,后面是主機號。10.100.122.2/24,這個IP地址中有一個斜杠,斜杠后面有個數字24,這種地址表示形式,就是CIDR,后面24的意思是,32位中,前24位是網絡號,后8位是主機號。

伴隨著CIDR存在的,一個是廣播地址,10.100.122.125,如果發送這個地址,所有10.100.122網絡內的機器都可以收到,另一個是子網掩碼,255.255.255.0;

將子網掩碼和IP地址按位計算AND,就可以得到網絡號,那么上面的ip地址與子網掩碼按位取AND,網絡號就是10.100.122.0;(1和任意數值取AND,值不變;0和任意數值取AND,即為0);

3.3 公有IP地址和私有IP地址

全網最詳解計算機網絡協議——通信協議綜述

 

平時我們在辦公室、學校、家里的IP地址,一般都是私有IP地址,因為這些地址,允許組織內部的IP地址自己管理、自己分配,因此可以重復。就比如你們學校可能由六單元一號,我們學校可能也有六單元1號。

但是,一旦離開學校就需要使用公有IP地址,就像上海市南京西路88號,這個是國家同統一分配的。公有IP地址,由相關的組織去分配,如果使用,需要購買。

192.168.0.x,是最常見的私有IP地址,家里有wifi,對應就有一個ip地址,但是一般家庭中的上網設備不會超過256個,所以/24基本就夠用了。

舉例:CIDR中容易犯錯的點

16.158.165.91/22,這個CIDR,求網絡中的第一個地址、子網掩碼和廣播地址

16.158的部分不會動,它占了前16位。中間的165,變為二進制為?10100101?。除了前面的16位,還剩6位。所以,這8位中前6位是網絡號,16.158.<101001>,而**<01>.91是機器號**;所以第一個地址是16.158.<101001><00>.1,即16.158.164.1,子網掩碼是255.255.<111111><00>.0,即255.255.252.0,廣播地址是16.158.<101001><11>.255,即16.158.167.255.

這五類地址中,還有一類D類是組播地址,使用這一類地址,屬于某個組的機器都能夠收到,這就有點類似于公司中大家加入了一個郵件組,發送郵件,加入這個組的大家都能收到;

IP地址的后面有個scope,對于eth0這張網卡來講,是global,說明這張網卡是可以對外的,可以接收來自各個地方的包。對于lo來講,是host,說明這張網卡僅僅可以供本機相互通信;

lo又被稱為loopback,又稱環回接口,往往會被分配到127.0.0.1這個地址,這個地址可以用于本機通信,經過內核處理以后直接返回,不會在任何網絡中出現;

3.4 MAC地址

在IP地址的上一行是link/ether fa:16:3e:c7:79:75 brd ff:ff:ff:ff:ff:ff,這個被稱為MAC地址,是一個網卡的物理地址,用十六進制,6個byte表示。既然已經知道了MAC地址,是不是意味著直接可以通過MAC地址進行通信啊?

個網絡包要從一個地方傳到另一個地方,除了要有確定的地址,還需要有定位功能。 而有門牌號碼屬性的IP地址,才是有遠程定位功能的。

比如:你要去某某大學某某學院找小明,你在路上問,有些人不知道某某學院,但是可以給你說某某學校在哪里,但是你直接根據 小明的身份證號 問別人知不知道他在哪個學院,那么肯定沒人知道;

MAC地址更像是身份證,是一個唯一的標識。它的唯一性設計是為了組網的時候,不同的網卡放在一個網絡里面的時候,可以不用擔心沖突。從硬件角度,保證不同的網卡有不同的標識。

MAC地址是有一定的定位功能的,你可以根據ip地址找到某某學校某某學院某號樓某個實驗室,當你到了以后,大吼一聲,小明 是哪位,那么他聽到了 就會回應你;

MAC地址的通信范圍比較小,局限在一個子網里面。例如,從192.168.0.2/24訪問192.168.0.3/24是可以用MAC地址的。一旦跨子網,即從192.168.0.2/24到192.168.1.2/24,MAC地址就不行了,需要IP地址起作用了

總結:

ip是地址,有定位功能;MAC是身份證,無定位功能;

CIDR可以用來判斷是不是本地人;

IP分為公有地址IP和私有地址IP

四、DHCP和PXE:ip的由來

只要是在網絡上跑的包可以有下層沒上層,但是不可以有上層沒下層;當一個數據包有自己的ip地址,有目的地的ip地址,但是包發不出去的原因是因為,MAC層還沒有填寫。

Linux的默認邏輯是,如果是一個跨網段的調用,它便不會將包直接發送到網絡上,而是企圖將包發送到網關。網關要和當前的網絡至少一個網卡是同一個網段;

4.1 動態主機配置協議(DHCP)

動態主機配置協議(Dynamic Host Configuration Protocol),簡稱DHCP;

有了這個協議,網絡管理員就輕松多了。他只需要配置一段共享的IP地址。每一臺新接入的機器都通過DHCP協議,來這個共享的IP地址里申請,然后自動配置好就可以了。等人走了,或者用完了,還回去,這樣其他的機器也能用。

如果是數據中心里面的服務器,IP一旦配置好,基本不會變,這就相當于買房自己裝修。DHCP的方式就相當于租房。你不用裝修,都是幫你配置好的。你暫時用一下,用完退租就可以了。

4.2 解析DHCP的工作方式

當一臺機器加入一個新的網絡的時候,只知道自己的mac地址,先吼一句,有人嗎?這一步就是DHCP Discover

新來的機器使用IP地址0.0.0.0發送了一個廣播包,目的IP地址為255.255.255.255。廣播包封裝了UDP,UDP封裝了BOOTP。其實DHCP是BOOTP的增強版,但是如果你去抓包的話,很可能看到的名稱還是BOOTP協議;

在這個廣播包里,新人喊一句:我是新來的(Boot request),我的MAC地址是多少,但是我還沒有ip地址,誰能給我一個?

全網最詳解計算機網絡協議——通信協議綜述

 

網絡管理員在網絡配置了DHCP server,就相當于IP管理員,MAC地址是其唯一的身份。只有MAC地址唯一,IP管理員才能知道這是一個新人,需要租給它一個新的IP地址,這個過程就是DHCP Offer.

DHCP Offer格式如下:

里面會有給新人分配的地址;

全網最詳解計算機網絡協議——通信協議綜述

 

DHCP Server仍然使用廣播地址作為目的地址。如果同時收到多個IP地址,那么會選擇最先到達的DHCP Offer,并且會向網絡發送一個DHCP Request廣播數據包,其中包含客戶端的MAC地址、接受的租約中的IP地址,提供租約的DHCP服務器地址等,并且告訴所有的DHCP Offer,它將接受哪一臺服務器所提供的IP地址,感謝其他DHCP服務器,并且請求撤銷他們提供的ip地址,以便提供給下一個租用者。

全網最詳解計算機網絡協議——通信協議綜述

 

由于還沒有收到DHCP server的最后確認,客戶端依然使用自己的源ip地址0.0.0.0、255.255.255.255為目標地址進行廣播。在BOOTP里面,接受某個DHCP Server的分配 ip;

當DHCP Server接收到客戶機的DHCP request之后,會廣播返回給客戶機的一個DHCP ACK消息包,表明已經接受客戶機的選擇,并且將這一IP地址合法租用信息和其他的配置信息都放到該廣播包中,發送給客戶機,歡迎它加入網絡大家庭;

全網最詳解計算機網絡協議——通信協議綜述

 

租約達成以后,還是要廣播一下,讓大家都知道呢

ip地址的收回和續租

如果需要續租的話,需要提前租期的50%,客戶機會在租期過去50%的時候,直接向為其提供ip地址的DHCP Server發送DHCP Request消息包,客戶機收到該服務器的DHCP ACK消息包之后,會根據包中提供的新的租期,以及其他的已經更新的TCP/IP參數,更新自己的配置,這樣,ip的租用更新就已經完成了。

網絡管理員不僅能自動分配IP地址,還能幫你自動安裝操作系統;

4.3 預啟動執行環境(PXE)

普通的筆記本一般不會有這種雪球,已經預裝好了操作系統。但是數據中心的管理員,可能一下子拿到了幾百臺空的機器,一臺一臺裝就累死了。

管理員們不僅希望可以分配好ip地址,還可以自動安裝系統,裝好系統之后會自動分配IP地址,直接啟動最好了。

安裝操作系統的過程,只能插在BIOS啟動之后了。因為沒安裝系統之前,連啟動扇區都沒有。因而這個過程叫做預啟動執行環境(Pre-boot Execution Environment),簡稱PXE。

默認的DHCP Server是需要配置的,無非是我們配置IP的時候所需要的IP地址段、子網掩碼、網關地址、租期等。如果想使用PXE,則需要配置next-server,指向PXE服務器的地址,另外要配置初始啟動文件filename。

這樣PXE客戶端啟動之后,發送DHCP請求之后,除了能得到一個IP地址,還可以知道PXE服務器在哪里,也可以知道如何從PXE服務器上下載某個文件,去初始化操作系統。

解析PXE的工作過程

首先是啟動PXE客戶端,第一步是通過DHCP協議告訴DHCP Server,我啥都沒有,DHCP Server便租給它一個ip地址,同時給他PXE服務器的地址、啟動文件pexlinux.0;

其次,PXE客戶端知道要去PXE服務器下載這個文件后,就可以初始化機器。于是便開始下載,下載的時候使用的是TFTP協議。所以PXE服務器上,往往還需要有一個TFTP服務器。PXE客戶端向TFTP服務器請求下載這個文件,TFTP服務器說好啊,于是就將這個文件傳給它;

然后,PXE客戶端收到這個文件后,就開始執行這個文件。這個文件會指示PXE客戶端,向TFTP服務器請求計算機的配置信息pxelinux.cfg。TFTP服務器會給PXE客戶端一個配置文件,里面會說內核在哪里、initramfs在哪里。PXE客戶端會請求這些文件;

最后,啟動Linux內核,一旦啟動了操作系統,啥都好辦。

全網最詳解計算機網絡協議——通信協議綜述

 

總結

本文是對通信協議綜述的總結,共分為四節去介紹:

1.為什么學習網絡協議?

通過一個簡簡單單的下單過程,中間牽扯到這么多的協議,展開介紹;

2.網絡協議分層的真正含義

始終想象自己是一個處理網絡包的程序:如何拿到網絡包,如何根據規則進行處理,如何發出去;

始終牢記一個原則:只要是在網絡上跑的包,都是完整的。可以有下層沒上層,絕對不可能有上層沒下層;

3.ifconfig命令行的背后;

IP是地址,有定位功能;MAC是身份證,無定位功能;

CIDR可以用來判斷是不是本地人;

IP分公有的IP和私有的IP。后面的章節中我會談到“出國門”,就與這個有關。

4.DHCP和PXE:ip的由來;

DHCP協議主要是用來給客戶租用IP地址,和房產中介很像,要商談、簽約、續租,廣播還不能“搶單”;

DHCP協議能給客戶推薦“裝修隊”PXE,能夠安裝操作系統,這個在云計算領域大有用處;

分享到:
標簽:協議 網絡
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定