1. 程式人生 > >學習筆記0717-TCP/IP協議入門

學習筆記0717-TCP/IP協議入門

本文為個人筆記是對原文的一些個人理解和想法,可能有些偏差。
原文地址:

一、結構

TCP/IP協議中包括是很多網際網路協議的一個統稱,TCP/IP協議主要分為四層:
這裡寫圖片描述
結構從上至下由使用者逐漸靠近硬體。
網路鏈路層解決的是在目標子網路中確定目標MAC地址的問題
網路層解決的是網際網路中確定目標子網路的問題
傳輸層解決的是哪一個程式需要接收資料的問題

二、網路鏈路層—乙太網協議

1.乙太網協議
乙太網協議中規定一個數據包叫做一“幀”(Frame),每一幀分為標頭(Head)和資料(Data)
這裡寫圖片描述
標頭中包含一些資料包的說明項:傳送者、接受者、資料型別等。
2.MAC地址
在網路中每一臺裝置都有一個獨立的不重複的mac地址,在網絡卡被生產的時候就產生了
比如一臺裝置的Mac地址為00-B0-D0-86-BB-F7,前六位十六進位制數為廠商編號,後六位為流水號。
3.廣播
在同一個網路中,一臺裝置傳送一個數據包會在整個子網路中進行廣播,網路中的每一臺裝置都會接到這個資料包並進行判斷,如果資料包中的MAC地址與本裝置不符則丟棄資料包,如果相同就做資料處理,這種方式就叫廣播。

三、網路層—IP協議、ARP協議

按理來說只要我們獲得了對方裝置的MAC地址,我們就可以給對方傳送資料了,但是網際網路中的裝置很多,如果使用乙太網中的廣播的方式網路會癱瘓的。網際網路是由很多個子網路所連線組成的,每個子網路應該就是我們常用的區域網,每個子網路都會有一個閘道器來負責資料包的判斷。如果MAC地址在同一個子網路中就採用廣播的方式傳送資料包,如果在同一個子網路中就傳送給閘道器,採用路由的方式傳送。
1.IP協議
規定網路地址的協議就是IP協議,目前廣泛採用的是IP協議第四版,簡稱IPv4。網路地址由32個二進位制位組成。
這裡寫圖片描述
網際網路上的每一臺裝置都有一個IP地址,其中前面一部分代表網路,後面代表主機。比如172.16.254.2與此IP就在同一個子網路中,但是但從IP地址上我們沒法判斷兩個IP是否在同一子網路中,這時就要用到另一個引數“子網掩碼”。
子網掩碼的形式跟IP地址差不多,假如這個子網路的IP網路部分為前24位,則子網掩碼的前24位都為1,後8位都為0,所以此子網路的子網掩碼為255.255.255.0,知道了子網掩碼我們就能知道任意兩個IP是否在同一子網路了。
2.IP資料包
IP資料包也是由標頭和資料部分組成的跟乙太網資料包結構一樣,但是整個IP資料包是放在乙太網資料包中的資料部分。
這裡寫圖片描述


一個IP資料包中的資料可能會很大,所以如果IP資料包中的資料長度超過了乙太網資料包的資料長度就需要對IP資料包進行分割再發送了。
3.ARP協議
如上文所述當裝置傳送一個數據包時需要同時知道對方裝置的IP地址和MAC地址,一般情況下IP地址是已知的,但是MAC地址是未知的,所以我們需要通過IP地址獲取MAC地址。
第一種情況就是兩臺裝置不在同一個子網路中,發出方只能將含有IP地址的資料包傳送到子網路的閘道器,由閘道器進行處理。
第二種情況就是兩臺裝置在同一個子網路中,這時我們就可以通過ARP協議獲取接收方的MAC地址進行資料傳輸了。ARP協議也是傳送一個數據包,資料包的IP地址為接收方的IP地址,MAC地址為FF:FF:FF:FF:FF:FF,表示這是個廣播地址,子網路中的每一臺裝置都會接收到這個資料包,然後進行IP地址比對,如果IP地址相同則返回MAC地址給傳送方,如果IP地址不同則丟棄資料包。

四、傳輸層—TCP、UDP協議

有了MAC地址和IP地址我們就可以連線到網際網路中的任何一臺裝置了,但是裝置中還有不同的應用需要連線網路,這時我們就需要一個引數“埠”來區分資料包是傳送給哪一個程式的了。
“傳輸層”的功能,就是建立”埠到埠”的通訊。相比之下,”網路層”的功能是建立”主機到主機”的通訊。只要確定主機和埠,我們就能實現程式之間的交流。因此,Unix系統就把主機+埠,叫做”套接字”(socket)。有了它,就可以進行網路應用程式開發了。
1.UDP協議
UDP協議是無連線,不保證可靠的傳輸層協議。當資料包傳送出去後,我們無法獲知對方是否收到。
UDP資料包也是由標頭和資料兩部分組成,標頭定義發出埠和接收埠,資料部分就是具體內容,整個UDP資料包是放在IP資料包中的,所以整個乙太網資料包變成了下圖:
這裡寫圖片描述
2.TCP協議
TCP協議是面向連線、保證高可靠性(資料無丟失、資料無失序、資料無錯誤、資料無重複到達)傳輸層協議。
這個協議很複雜,每次傳送後都要求確認,所以實現過程困難,消耗的資源比較多。TCP的資料包格式跟UDP相同。
TCP協議中較為重要的就是建立連線的三次握手和斷開連線的四次揮手,之後的部落格會寫到這個知識點。

五、應用層—DNS協議、HTTP協議

1.DNS協議
當我們瀏覽一個網站的時候輸入的一般都是一個域名的形式,比如www.baidu.com,但是在網際網路中的通訊我們需要的是IP地址,這時候就需要DNS協議將域名轉換為IP地址。
2.HTTP協議
主要功能是在網頁瀏覽時生成HTTP申請報文
至此整個網際網路的結構大體內容就敘述完了,一個乙太網的完整資料包形式如下:
這裡寫圖片描述