電腦網路包解析

來源:互聯網
上載者:User

標籤:

轉 http://www.cnblogs.com/jianxinzhou/p/4594027.html1 Introduction

所謂的InternetWorking就是將很多網路連接起來,那麼在這種串連的網路下我們該如何傳送封包呢?

2 IP and Routers1 IP Datagram Header Format

IP Address:目前IP地址均是32個bit,稱為IPV4。未來會使用IPV6,128個bit。

Identification:Router本身將封包收下來,經過查表後,會將封包從某一個網路或者說port轉寄出去,但是Router周圍的網路是不同的(例如從Ethernet丟到WIFI,或者從WIFI丟到Ethernet),注意每一個網路都有一個很重要的特性稱為MTU(Maximal Transmission Unit),MTU規定了在這個網路上傳輸的封包的大小上限。如果Router收進來的封包太大,並且要進到MTU比較小的網路中時,那麼,不可避免的要將封包進行切割,一個封包可能會被切割成好多個封包。封包經過切割之後,最終仍然要將其組合起來,那麼這些經過切割的小片段最終進行組合的時候,怎麼知道哪些小片段是經同一個封包切割出來的呢?這就是Identification的作用,Id相同則代表這些小片段原來隸屬於同一個datagram。

Fragment Offset:datagram經IP(Internet Protocal)傳送,只是best effort,因此datagram可能會不見,可能會out of order。因此,將datagram切割成小片段丟到網路中後,最終目的主機收到時,順序就不見得一致。我們只知道收到的這幾個片段是屬於同一個IP Address的,而它們的位置(哪個在第一個?哪個在第二個?) 需要Fragment offset來確定,offset即為位移的意思,記錄了每一個小片段相對於Data中開始位置的位移量。

Protocal:在網路的7層架構中,IP在第三層,而Protocal欄位標記了上一層的Protocal是什麼,是TCP?是UDP?

Time to Live:封包在Internet上可以存活的時間,設定該時間,避免在已經迷航的封包在Internet上繞了很久還是繞不出去。Router本身在協助我們轉送封包時,會根據網路的狀態,隨時調整路線,可能存在一個封包經由一個路由器轉送出去後,之後又繞回來的情況,封包可能會發生迷路,被不斷的轉來轉去,但是始終繞不出去。遇到這種情況該怎麼辦?我們不可能讓此類封包永久的留存,以防這樣的封包越來越多,最終將我們的Internet塞爆掉。假設將Time to Live的值設為128,那麼每經過Router的一次轉送,這個值就會減1,128就代表經過128個Router之後這個值就會減為0,減為0之後,Router就會將該封包丟掉。

Flags

DF:可以設定datagram在傳送過程中不允許被切割。如果datagram要從一個Port送出去,可是這個datagram太大,而且又被告知不允許被切割,那怎麼辦?只有兩條路,一是走另外一條路,二,如果找不到一條可以使datagram經過的網路,那麼只能將該datagram丟掉。

MF:目的主機收到小片段後,如果標記為More Fragment,表示後面還有小片段。

Total length:封包的大小。

Header Checksum:header的範圍如,紅線圈起來的部分。

將header的內容做一次檢查,避免出錯,因為要做Routing。Router收到封包之後,會根據Destination IP Address做檢查,避免出錯,走錯路。因此,header有錯誤,封包仍然需要丟掉。

version:標記IP的版本。現在全世界最流行的IP版本是第4版。

Type of Service:指出這個封包本身到底應該得到什麼樣的服務。來看:

Type of Service 本身是一個8個bit的欄位。

Precedence:重要性的意思。是一般data的封包?還是網路的控制封包?將封包本身的重要性做了一個設定。

Delay:服務的品質。這個封包傳送是正常的延遲還是低延遲。IP封包進到Router之後,由於Router同時要處理的封包的量非常的大(可能是一秒鐘幾百萬甚至幾千萬),即使經過查表後,確定從某個Port送出去,這個Port處理的封包量仍然很大,也需要Queue起來,一旦Queue起來,就會造成Delay,那麼如果是Low Delay的封包,那麼在Queue中可能會排在靠前的位置(可以說是有高優先權的意思)。

Throughput:High Throughput 往往與 Low Delay相對應。

Reliability:Router可以先丟掉Normal Reliability的封包。

2 IP Addresses

IP地址總共32位,因此有2^32個IP地址,大約40億個。因為IP地址在分配的時候,網路有大有小,因此分成了3類:

Class A type:只有7個bit來代表Network,因此全球總共只有2^7 = 128種A類網路,那麼一個A類網路有多大呢?2^24個(大型網路)。

Class B type:用14個bit來代表Network,全球共有2^14種B類網路,每個B類網路可以有2^16個Host(中型網路)。

Class C type:用21個bit來代表Network,全球共有2^21種C類網路,每個C類網路有2^8個Host(小型網路)。

3 How datagrams are delivered in an Internet ?

Router在處理封包時,到底封包走哪一條路徑,是會根據網路狀態即時變化的。Router與Router之間會定時或者不定時的交換網路的狀況,因此Router的Forwarding Table會隨時更新。同樣的Source送到同樣的Destination,由於Forwarding Table會變化,因此封包走的路徑會不一樣。

封包在傳送的過程中可能會被切割,封包組合的工作將由Destination來做。

如果封包在傳輸過程中lost了(可能由於網路擁塞),那麼Router會發一個message,告訴Source封包被丟棄的原因,但是Source不會重傳。

Router本身在處理封包時,內部有兩個重要的Table,一是Routing Table(也叫做Forwarding Table,上方中間靠左的Table),二是IP-MAC Table,是IP地址與MAC地址的對照表(上方中間靠右的Table)。

在中,中間的Router串連了3個網路,左邊是LAN 1,右邊是LAN 2,下方是LAN n。LAN 1有2個Station,一個是A,一個是HOST X,LAN 2也有2個Station,一個是B,一個是HOST Y。左下方的Router串連了LAN 1和LAN m。其中中間的Router接LAN 1的IP地址為140.114.77.65,接LAN 2的IP地址為140.114.78.66。

如果B要將一個封包丟給Y(注意,B和Y同時串連在LAN 2),封包該如何準備呢?首先,IP的datagram中,Source IP地址即為B的IP地址,Destination IP地址為Y的IP地址,因為B和Y在同一個網路上,因此傳送該封包不用經過Router,直接傳送給Y的MAC。如:

如果B要將一個封包丟給A,封包該如何準備?由於B跟A在不同網路中,因此傳送封包必須經過Router。Source IP地址為B的IP地址,Destination IP地址為A的IP地址。這個封包是哪一個網卡送的呢?顯然是MAC(B)。由於B和A不再同一網路,傳送封包必須經過Router,因此Destina MAC地址填Router的網卡位置MAC(R)。如:

當B將這個封包丟到網路中後,Router就會收這個封包,因為填寫了Router的MAC地址。Router將這個封包收合來後,接下來要做的事情是查表。由於目的IP是A的IP地址——140.114.77.60,在Routing Table中發現77這個網段是與Router直接相連的,因此可以直接送給A,但是要送給A,必須有A的MAC地址,這可以通過尋找IP-MAC Table。Router將封包送給A,如:

兩個例子總結如下:

如果兩個Host在同一個網路,那麼不用經過Router,就可以將封包直接送給目的地,否則要先丟給Router,再由Router轉送,由最後一個Router丟給Destination。

4 example

再來看以下一個例子:

有4個網路:10.0.0.0、20.0.0.0、30.0.0.0以及40.0.0.0,由F、G、H三個Router串連。Routing Table針對G。

如果G要送封包到20.0.0.0,經查詢為直接相連,說明20.0.0.0與Router G直接相連,那麼Router G可以將封包直接送達(送到20.0.0.0這個網段上的Host)。同理,30.0.0.0也與Router G直接相連。

如果我們收到一個封包,其目的地是10.0.0.0這個網段,經查表為20.0.0.5,非直接相連,即需要丟給下一個Router,Router相應Port的IP地址為20.0.0.5。注意,並非一個Router一個IP地址,是Router的每一個Port對應一個IP地址。IP Address不是綁定電腦,是綁定Port。每一個Port都會有一個IP Address。例子中,Router F串連兩個網路,左邊Port的IP Address為10.0.0.5,右邊Port的IP Address為20.0.0.5。

如果我們收到一個封包,其目的地是40.0.0.0這個網段,經查表為30.0.0.7,非直接相連,即需要丟給下一個Router,Router相應Port的IP地址為30.0.0.7。

那麼怎麼產生這樣的Routing Table呢?Router之間平常會通過Routing Protocol進行資訊交換。經過這樣的交換,Router G就知道左邊有一個F,右邊有一個H…當有了Routing Table之後,封包進來就查表,如果直接相連,就直接送給Destination,如果不是直接相連,就送給Router。但是無論是送給目的Host,還是送給Router,都需要知道對方的MAC Address,因此Router本身還需要查一個表,就是IP Address與MAC Address的對照表。

5 小結

forwarding table maps network number into next hop:Forwarding Table即Routing Table,會告訴我們下一個網段或者說Router在哪裡。

each host has a default router:每台Host必須設定一個default router,因此我們在操作筆電時,必須進入電腦,設定default router。通訊的對象如果與我們在不同的網段,那麼我們必須將封包丟給default router,從而丟給下一個Router。

 

電腦網路包解析

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.