1. 程式人生 > 實用技巧 >計算機網路中各個層次間是如何配合工作的

計算機網路中各個層次間是如何配合工作的

小智: 大鵬哥,上次你給我講了網路分層,還有各個層次間的作用,可是我還是沒搞清楚他們之間是如何配合一起工作的呢?

協議報文

大鵬:別急,在搞清楚這個問題之前,我們得先了解另外一個在網路中非常重要的概念——報文文是各種網路協議一起配合完成網路通訊的最終實體,不管是哪種網路協議,不管協議多麼複雜,也不管兩臺主機要互相傳送什麼內容,最終在網路當中傳輸的都是一個一個的協議報文。就像人說話,說的內容用文字記錄,網路協議的內容是用報文來記錄的。要搞清楚網路中各個層次之間配合工作的機制,通過看每層協議的報文就很可以很直觀的理解了。

上節我們說到,資料鏈路層使用乙太網協議,使用的標識是網絡卡的mac,那乙太網的報文頭長啥樣呢?

乙太網報文頭

看起來是不是很簡單呢?源MAC地址表示發出報文的電腦的MAC,目的MAC地址表示要發往目的裝置的MAC,最後還有一個協議號。小智,考考你,你覺得這個協議號表示什麼?

小智: 呃,額,會不會就是說這個是網路層的ip協議啊?

大鵬: 不錯不錯,看來你已經想明白了,確實,這個協議號就是用來標識網路層ip協議的,通過協議號,資料鏈路層和網路層就關聯起來了。

我們再來看看網路層,下面這張圖是網路層ip協議的報文頭:

ip報文頭

這個看起來就有點複雜了,我們先不用關注每個欄位它有什麼用,我們可以看到報文頭裡面有源IP地址,目的IP地址,這個表示要通訊的源主機IP地址和目的主機IP地址,裡面也有一個協議欄位,跟乙太網協議類似,這個協議號表示的是傳輸層協議號,就是傳輸層的tcp/udp協議,通過協議號,網路層和傳輸層就關聯起來了。

再來看傳輸層,傳輸層有兩個重要的協議,一個是tcp,一個是udp。tcp報文頭是這樣的:

tcp報文頭

udp的報文頭是這樣的:

udp報文頭

看起來不比IP頭簡單,對不對?不過也不急,我們還是先看下現在重點要看的欄位,什麼欄位呢?當然是源埠和目的埠了,源埠和目的埠分別表示的是通訊源主機使用的埠號和目的主機的埠號,上節我們提到了埠號的作用,埠號它表示應用層是哪個軟體要進行通訊,通過埠號,傳輸層和應用層關聯起來了。

在實際使用中,比如QQ通訊,整個協議報文就是長這個醬紫啦:

整個報文

從這個協議報文我們可以看到,除了物理層,其它四個層次在網路報文中都有體現。

小智: 嗯嗯,原來層次之間就是通過報文頭部裡面的欄位來指示上層是什麼網路協議呀,大鵬哥,那你能再給我講講計算機是怎麼一層層封裝整個報文的嗎?

協議報文的封裝和解封裝

大鵬: 這個問題呢,我們可以從兩個方向來看,一個是計算機主動往外發資訊,一個是計算機收到發給它的資訊。我們先說計算機往外發資訊,報文是怎麼封裝的。

首先我們得知道發信息的主體是誰?上一節其實說過,計算機通訊,最終還是作業系統上面軟體的通訊,還是以上節的例子QQ來說,我們通過QQ給好友傳送一條訊息,比如“你好”兩個字,那麼通訊報文實際要包含的內容就是“你好”,對端電腦上的QQ要解析出“你好”兩個字,還得依賴於應用層協議的規則,這個規則在這裡就是QQ的應用層協議QICQ,QICQ把“你好”兩個字封裝好,應用層就處理完了。

接著就交給傳輸層處理了,應用層只需要告訴傳輸層我使用的是傳輸層的什麼協議,比如QICQ使用的是udp協議,以及要使用的埠就行了,至於裡面傳輸的內容“你好”,傳輸層是不關心的;

接著就到網路層了,網路層只需要知道傳輸層使用的是udp就行了,它更關心的是我該使用哪個源IP地址發出去,我要去往的目的IP是誰,傳輸什麼內容,網路層也是不關心的;

對資料鏈路層,它也只需要知道上面使用的是ip協議,它更關心的是我該使用哪個源MAC發出去,我要去往的目的MAC是誰。

所以,計算機發訊息的報文封裝過程,就像俄羅斯套娃,一層套一層,層層封裝,每層封裝的都是自己的報文頭,需要關心的是自己上層使用的是什麼協議,至於裡面傳輸的具體內容,它是不關心的

我們再來說說QQ好友收到訊息的過程,收訊息相對於發訊息的報文封裝,它是一個反向的過程,開始收到的是一個完整的報文,每經過一層,這一層就把自己的頭部剝掉,到QQ這裡,它把QICQ協議的頭剝掉,使用者介面最終看到的就是“你好”兩個字

協議報文封裝解封裝的過程,我畫了下面這張圖,這樣看起來就一目瞭然了。

小智: 大鵬哥,現在我算是明白每個層次是怎麼玩的了,好像也沒那麼複雜啊,就是每個層次有個報文頭,然後封裝解封裝。

大鵬:你可別高興地太早,到現在我們也只是從整體上對網路通訊的流程以及報文封裝有了個大致的瞭解,對於每一層深層次的工作機制的研究還沒開始呢。

小智:好吧,我想著也不會這麼簡單,不過有我大鵬哥這麼通俗易懂的講解,我一點都不擔心我整不明白啦,哈哈。

大鵬:你可別太指望我,說了這麼多,要想真正轉化為自己的東西,還得多多思考才是呢。

小智:嗯嗯,我知道啦!

獲取更多電子書資料電子書資料彙總,請關注我的公眾號:【程式設計師小智和大鵬】,回覆“電子書”獲取。

在這裡插入圖片描述