1. 程式人生 > >網路資料包傳輸過程總結

網路資料包傳輸過程總結

一、資料包是如何在網路中傳輸的

我們電腦上的資料,是如何“走”到遠端的另一臺電腦的呢?這是個最基礎的問題,可能很多人回答不上來,儘管我們每天都在使用網路。這裡我們以一個最簡單的“ping”命令,來解釋一個數據包“旅程”。

 假設:我的電腦A,向遠在外地的朋友電腦B傳輸資料,最簡單的就是“ping”一下,看看這個傢伙的那一端網路通不通。A與B之間只有一臺路由器。(路由器可能放在學校,社群或者電信機房,無所謂,基本原理是一樣的)

具體過程如下------
 1.“ping”命令所產生的資料包,我們歸類為ICMP協議。說白了就是向目的地傳送一個數據包,然後等待迴應,如果迴應正常則目的地的網路就是通的。當我們輸入了“ping”命令之後,我們的機器(電腦A)就生成了一個包含ICMP協議域的資料包,姑且稱之為“小德”吧~~~~



 2.“小德”已經將ICMP協議打包到資料段裡了,可是還不能傳送,因為一個數據要想向外面傳送,還得經過“有關部門”的批准------IP協議。IP要將你的“寫信人地址”和“收信人地址”寫到資料段上面,即:將資料的源IP地址和目的IP地址分別打包在“小德”的頭部和尾部,這樣一來,大家才知道你的資料是要送到哪裡。

 3.準備工作還沒有完。接下來還有部門要稽核------ARP。ARP屬於資料鏈路層協議,主要負責把IP地址對應到硬體地址。直接說吧,都怪交換機太“傻”,不能根據IP地址直接找到相應的計算機,只能根據硬體地址來找。於是,交換機就經常保留一張IP地址與硬體地址的對應表以便其查詢目的地。而ARP就是用來生成這張表的。比如:當“小德”被送到ARP手裡之後,ARP就要在表裡面查詢,看看“小德”的IP地址與交換機的哪個埠對應,然後轉發過去。如果沒找到,則發一個廣播給所有其他的交換機埠,問這是誰的IP地址,如果有人回答,就轉發給它。


 4.經過一番折騰,“小德”終於要走出這個倒黴的區域網了。可在此之前,它們還沒忘給“小德”屁股後面蓋個“戳”,說是什麼CRC校驗值,怕“小德”在旅行途中缺胳膊少腿,還得麻煩它們重新發送。。。。。我靠~~~~注:很多人弄不清FCS和CRC。所謂的CRC是一種校驗方法,用來確保資料在傳輸過程中不會丟包,損壞等等,FCS是資料包(準確的說是frame)裡的一個區域,用來存放CRC的計算結果的。到了目的地之後,目的計算機要檢查FCS裡的CRC值,如果與原來的相同,則說明資料在途中沒有損壞。

 5.在走出去之前,那些傢伙最後折磨了一次“小德”------把小德身上眾多的0和1,弄成了什麼“高電壓”“低電壓”,在雙絞線上傳送了出去。暈~~出趟門就這麼麻煩嗎?


 6.坐著雙絞線旅遊,爽!可當看到很多人坐著同軸電纜,還有坐光纖的時候,小德又感覺不是那麼爽了。就在這時,來到了旅途的中轉站------路由器。這地方可是高階場所,人家直接檢視IP地址!剩下的一概不管,交給下面的人去做。夠牛吧?路由器的內部也有一張表,叫做路由表,裡面標識著哪一個網路的IP對應著路由器的哪一個埠。這個表也不是天生就有的,而是靠路由器之間互相“學習”之後生成的,當然也可以由管理員手工設定。這個“學習”的過程是依靠路由協議來完成的,比如RIP,EIGRP,OSPF等等。

 7.當路由器查看了“小德”的IP地址以後,根據路由表知道了小德要去的網路,接著就把小德轉到了相應的埠了。至此,路由器的主要工作完成,下面又是打包,封裝成frame,轉換成電壓訊號等一系列“折騰”的活,就由資料鏈路層和物理層的模組去幹吧。

 8.小德從路由器的出口出來,便來到了目的地----電腦B----所屬的網路的預設閘道器。預設閘道器可以是路由器的一個埠,也可以是局域網裡的各種伺服器。不管怎樣,下面的過程還是一樣的:到交換機裡的ARP表查詢“小德”的IP地址,看看屬於哪個區域網段或埠,然後就轉發到B了。

 9.進了B的網絡卡之後,還要層層“剝皮”,基本上和從A出來的程式是一樣的------電腦B先校驗一下CRC值,看看資料是否完整;然後檢查一下frame的封裝,看到是IP協議之後,就把“小德”交給IP“部門”了;IP協議一看目的地址,正確,再看看應用協議,是ICMP。於是知道了該怎麼做了------產生一個迴應資料包,(可以命名為“迴應小德”),並準備以同樣的順序向遠端的A傳送。。至於剛剛收到的那個資料包就丟棄了。

 10.“迴應小德”這個資料包又開始了上述同樣的迴圈,只不過這次傳送者是B而接收者是A了。

 以上是一個最簡單的路由過程,任何複雜的網路都是在次基礎之上實現的。

網路資料包大小

    用UDP協議傳送時,用sendto函式最大能傳送資料的長度為:65535-20-8=65507位元組,其中20位元組為IP包頭長度,8位元組為UDP包頭長度。用sendto函式傳送資料時,如果指的的資料長度大於該值,則函式會返回錯誤。

    用TCP協議傳送時,由於TCP是資料流協議,因此不存在包大小的限制(暫不考慮緩衝區的大小),這是指在用send函式時,資料長度引數不受限制。而實際上,所指定的這段資料並不一定會一次性發送出去,如果這段資料比較長,可能會被分段傳送,如果比較短,可能會等待和下一次資料一起傳送。我在測試的時候,發現長度一般會被切成16384(16K)或49152(48K),不知道這兩個值有什麼意義。


二、網路中 IP資料報傳輸的過程虛擬碼【有助於理解】

IP資料報需從主機A上傳送到主機B上,主機A首先查詢路由表;
if(目的主機是與自己在同一個網段內)
{
    主機A查詢自己的ARP表;
    if(有該目的IP地址對應的MAC地址的記錄)
    {
將該MAC地址作為目的MAC地址,封裝資料幀,傳送給主機B;
    }
    else
    {
          傳送一個ARP請求廣播給網段內的所有主機,來查詢該目的IP地址的MAC地址;
收到ARP請求報文的各個主機如果發現該IP地址是自己的IP地址,則返回一個ARP應答報文告訴主機A自己的MAC地址;
如果發現不是自己的IP地址,則丟棄該報文。
主機A收到這個應答報文後,就按照返回的MAC地址,將IP資料包封裝成幀,然後傳送到主機B上;
(補充:一般為了減少網路中的報文量,通訊雙方會維護一個各自的ARP表,把一次通訊中獲得IP MAC地址對儲存在緩衝的ARP表中,但是ARP表有一個老化機制,刪除一段時間內不用的IP MAC地址對。)
    }
}
else if(發現了能與目的網路號相匹配的表目)
{
則把報文發給改表目指定的下一站的路由器或直接連線的網路介面;
報文傳送到下一站時,資料幀的目的MAC地址是下一個站路由器或者網路介面的MAC地址,而IP頭部的目的IP地址是主機B的IP地址;
這裡要指出的是:ARP請求報文以下一站路由器或網路介面的IP地址為目的IP地址,尋找真的目的MAC地址。換句話,ARP請求報文只負責IP資料報傳輸過程中每一跳中的目的MAC地址查詢。
}
else
{
尋找標為“預設”的表目,把報文傳送給該表目指定的下一站路由器;
報文傳送到下一站時,資料幀的目的MAC地址是下一個站路由器的MAC地址,而IP頭部的目的IP地址是主機B的IP地址。
}
資料幀在每兩個網路裝置間傳遞時,是轉換成bit流在傳輸媒體上傳輸。鏈路層提供瞭如停止等待協議等機制,控制了bit流在傳輸媒體上的無措傳輸。

三、ARP協議詳解

前言:ARP協議的作用:

1. 什麼是ARP?   
ARP (Address Resolution Protocol) 是個地址解析協議。最直白的說法是:在IP乙太網中,當一個上層協議要發包時,有了該節點的IP地址,ARP就能提供該節點的MAC地址。  
2為什麼要有ARP?
OSI 模式把網路工作分為七層,彼此不直接打交道,只通過介面(layre interface). IP地址在第三層, MAC地址在第二層。
協議在發生資料包時,首先要封裝第三層 (IP地址)和第二層 (MAC地址)的報頭, 但協議只知道目的節點的IP地址,不知道其實體地址,又不能跨第二、三層,所以得用ARP的服務。
詳細說明:
Ø 在網路通訊時,源主機的應用程式知道目的主機的IP地址和埠號,卻不知道目的主機的硬體地址,而資料包首先是被網絡卡接收到再去處理上層協議的,如果接收到的資料包的硬體地址與本機不符,則直接丟棄因此在通訊前必須獲得目的主機的硬體地址。ARP協議就起到這個作用
Ø 當一臺主機把乙太網資料幀傳送到位於同一區域網上的另一臺主機時,是根據 48位的乙太網地址來確定目的介面的,裝置驅動程式從不檢查 IP資料報中的目的IP地址。ARP(地址解析)模組的功能為這兩種不同的地址形式提供對映:32位的 IP地址和 48位的乙太網地址

(一)ARP報文各欄位含義:

ARP報文欄位總共有28個位元組
1.硬體型別:佔2個位元組,表明ARP實現在何種型別的網路上。
Ø 值為1:表示乙太網。
2.協議型別:佔2個位元組表示要對映的協議地址型別。
Ø IP:0800
3.硬體地址長度:佔1個位元組,表示 MAC地址長度,其值為6個位元組。
4.協議地址長度:佔1個位元組,表示IP地址長度,此處值4個位元組
5.操作型別 :佔2個位元組,表示ARP資料包型別。
Ø 值為1表示ARP請求。
Ø 值2表示ARP應答。
6.源MAC地址:佔6個位元組,表示傳送端MAC地址
7.源IP地址:佔4個位元組,表示傳送端IP地址
8.目的乙太網地址:佔6個位元組,表示目標裝置的MAC實體地址
9.目的IP地址:佔4個位元組,表示目標裝置的IP地址.
注意:在ARP操作中,有效資料的長度為28個位元組,不足乙太網的最小長度46位元組長度,需要填充位元組,填充位元組最小長度為18個位元組

(二)ARP請求分組或應答分組

乙太網首部總共有14位元組資料,arp請求報文總共有28位元組。所以一個ARP請求分組或應答分組總共有46位元組資料。
而乙太網資料包的最小資料為60位元組。所以,要對其進行填充。
這裡有一些重複資訊
1. 在乙太網的資料幀報頭中和ARP請求資料幀中都有傳送端的MAC實體地址。
2. 在傳送ARP請求時,乙太網幀頭中的目的MAC實體地址為FF-FF-FF-FF-FF-FF,而在ARP幀中的目的MAC處此時為空。
3. 對一個ARP請求來說,除ARP中目的端MAC硬體地址外的所有其他的欄位都有填充值。當系統收到一份目的端為本地的ARP請求報文後,它就把硬體地址填進去,然後用兩個目的端地址分別替換兩個傳送端地址,並把操作欄位置為2,最後傳送出去。

(三)ARP協議工作過程:

1. 原理:(ARP協議只使用於區域網中)
1> 在區域網中,網路中實際傳輸的是“幀”,幀裡面是有目標主機的MAC地址的。
2> 在乙太網中,一個主機要和另一個主機進行直接通訊,必須要知道目標主機的MAC地址。但這個目標MAC地址是如何獲得呢?它就是通過地址解析協議獲得的。所謂“地址解析”就是主機在傳送幀前將目標IP地址轉換成目標MAC地址的過程。
3> ARP協議的基本功能就是通過目標裝置的IP地址,查詢目標裝置的MAC地址,以保證通訊的順利進行。
4> 點對點的連線是不需要ARP協議的
2. 工作過程:
1> 當主機A向本區域網上的某個主機B傳送IP資料報時,就先在自己的ARP緩衝表中檢視有無主機B的IP地址。
2> 如果有,就可以查出其對應的硬體地址,再將此硬體地址寫入MAC幀,然後通過乙太網將資料包傳送到目的主機中。
3> 如果查不到主機B的IP地址的表項。可能是主機B才入網,也可能是主機A剛剛加電。其高速緩衝表還是空的。在這中情況下,主機A就自動執行ARP。
(1)ARP程序在本區域網上廣播一個ARP請求分組。ARP請求分組的主要內容是表明:我的IP地址是192.168.0.2,我的硬體地址是00-00-C0-15-AD-18.我想知道IP地址為192.168.0.4的主機的硬體地址。
(2)在本區域網上的所有主機上執行的ARP進行都收到此ARP請求分組。
(3)主機B在ARP請求分組中見到自己的IP地址,就向主機A傳送ARP響應分組,並寫入自己的硬體地址。其餘的所有主機都不理睬這個ARP請求分組。ARP響應分組的主要內容是表明:“我的IP地址是192.168.0.4,我的硬體地址是08-00-2B-00-EE-AA”,請注意:雖然ARP請求分組是廣播發送的,但ARP響應分組是普通的單播,即從一個源地址傳送到一個目的地址。
(4)主機A收到主機B的ARP響應分組後,就在其ARP高速緩衝表中寫入主機B的IP地址到硬體地址的對映。
3. 事例說明:用ping說明ARP工作的原理
假設我們的計算機IP地址是192.168.1.1,要執行這個命令:ping192.168.1.2。該命令會通過ICMP協議傳送ICMP(乙太網控制報文協議)資料包
該過程需要經過下面的步驟:  
1> 應用程式構造資料包,該示例是產生ICMP包,被提交給核心(網路驅動程式);   
2> 核心檢查是否能夠轉化該IP地址為MAC地址,也就是在本地的ARP快取中檢視IP-MAC對應表;
3> 如果存在該IP-MAC對應關係,那麼跳到步驟<7;
如果不存在該IP-MAC對應關係,那麼接續下面的步驟;
4> 核心進行ARP廣播,目的MAC地址是FF-FF-FF-FF-FF-FF,ARP命令型別為REQUEST(1),其中包含有自己的MAC地址;   
5> 當192.168.1.2主機接收到該ARP請求後,就傳送一個ARP的REPLY(2)命令,其中包含自己的MAC地址;   
6> 本地獲得192.168.1.2主機的IP-MAC地址對應關係,並儲存到ARP快取中;   
7> 核心將把IP轉化為MAC地址,然後封裝在乙太網頭結構中,再把資料傳送出去;  
4. 特殊情況:
ARP是解決同一個區域網上的主機或路由器的IP地址和硬體地址的對映問題。如果所要找的目標裝置和源主機不在同一個區域網上。
1>此時主機A就無法解析出主機B的硬體地址(實際上主機A也不需要知道遠端主機B的硬體地址);
2>此時主機A需要的是將路由器R1的IP地址解析出來,然後將該IP資料報傳送給路由器R1.
3>R1從路由表中找出下一跳路由器R2,同時使用ARP解析出R2的硬體地址。於是IP資料報按照路由器R2的硬體地址轉發到路由器R2。
4>路由器R2在轉發這個IP資料報時用類似方法解析出目的主機B的硬體地址,使IP資料報最終交付給主機B.
說明:
Ø 如果你的資料包是傳送到不同網段的目的地,那麼就一定存在一條閘道器的IP-MAC地址對應的記錄。   
Ø 知道了ARP協議的作用,就能夠很清楚地知道,資料包的向外傳輸很依靠ARP協議,當然,也就是依賴ARP快取。要知道,ARP協議的所有操作都是核心自動完成的,同其他的應用程式沒有任何關係。同時需要注意的是,ARP協議只使用於本網路。

(四)ARP緩衝表和TTL

1. ARP緩衝表
1> ARP協議的本質是完成網路地址到實體地址的對映。從概念上將就是找到一個對映方法f,使得“實體地址 = f(網路地址)“。實體地址有兩種基本型別:乙太網型別和令牌環網型別。網路地址特指IP地址,對對映方法的要求就是高效。具體到乙太網,它使用的是動態繫結轉換的方法。一般是設定ARP快取記憶體,通過學習,老化,更新,溢位演算法處理ARP對映表來解決這些問題。
Ø 學習指ARP收到任何指向本結點IP地址的ARP/IP包,從中提取出地址對,當ARP緩衝表中無對應項時,由ARP接收部分新增;
Ø 老化指為每項設定壽命域,以便代謝掉陳舊的地址對映項;
Ø 更新指ARP提取到新的地址對時,用其更新快取裡已有的對應項;
Ø 溢位演算法指當快取慢時,採取何種方法替代舊有的地址對。
2> ARP快取表由狀態,壽命,IP地址,MAC地址4個欄位組成。狀態欄位指示地址對是否有效;壽命欄位用於老化操作,初始存入最大值,以後由OS時間函式呼叫,每秒減1,直至為0清除;IP地址和MAC地址欄位儲存網路地址和實體地址的對映。圍繞ARP快取表,完成了4種操作:學習,老化,更新,表滿處理。
3> 當ARP被詢問一個已只IP地址節點的MAC地址時,先在ARPcache 檢視
l 若存在,就直接返回MAC地址,
l 若不存在,才傳送ARP request向區域網查詢。
4> 當主機A向B傳送資料報時,很可能以後不久主機B還要向A傳送資料報,因而主機B可能要向A傳送ARP請求分組。
所以,為了減少網路上的通訊量,主機A在傳送其ARP請求分組時,就將自己的IP地址到硬體地址的寫入主機B自己的ARP高速緩衝表中。這對主機B以後向A傳送資料報時就更方便了。
Tiger 說明:
任何事物都有兩面性,如果掌握的好它就是天使,如果掌握的不好它就是Satan,ARP中的緩衝表為計算機之間的通訊效率和減少網路通訊量之間作出了巨大的貢獻,但是它同時為我們上網時留下了安全隱患;例如交換機嗅探(在下面會有介紹)
2. ARP中的TTL(即上面所說的壽命域)
ARP將儲存在高速緩衝表中的每一個對映地址表項都設定了TTL(生存時間),只要TTL小於0的專案就從高速緩衝表中刪除掉。
(ARP的超時值一般為20分鐘,對不完整的表項設定為20分鐘,而對不完整的表項設定為2分鐘《不完整的表項:即在乙太網上對一個不存在的主機發出ARP請求》,當這些表項再次使用時,這些實現一般都把超時值重新設為20分鐘。)
好處:主機A和B通訊。A的ARP高速緩衝表裡儲存有B的實體地址。但B的網絡卡突然壞了,B立即就更換了一塊,因此B的硬體地址就改變了。A還要和B繼續通訊。A在其ARP緩衝表中查詢到B原先的硬體地址,並使用該硬體地址向B傳送資料幀。但B原先的硬體地址已經失效了。因此A無法找到主機B。但是過了一段時間,A的ARP高速緩衝表中已經刪除了B原先的硬體地址(因為它的生存時間到了),於是A重新光播發送ARP請求分組,又找到了B。

(五)ARP命令:

1. 使用arp-a命令就可以檢視本地的ARP快取內容,所以,執行一個本地的PING命令後,ARP快取就會存在一個目的IP的記錄了。
2. 使用arp –d來刪除ARP快取記憶體中的某一項內容
3. 使用arp –s來增加高速緩衝表中的內容,這個命令需要主機名和乙太網地址。新增加的內容是永久性的,除非在命令列的末尾加上關鍵字temp。
arp –s 157.55.85.212 00-aa-aa-562-c6-09
增加一個靜態的ARP表項。
4. arppub –s:使系統起著主機ARP代理功能。系統將回答與主機名對應的IP地址的ARP請求。

(六)ARP其他方面

1.交換網路的嗅探
1>1.ARP協議並不只在傳送了ARP請求才接收ARP應答
當計算機接收到ARP應答資料包的時候,就會對本地的ARP快取進行更新,將應答中的IP和MAC地址儲存在ARP快取中。
因此,在上面的假設網路中,B向A傳送一個自己偽造的ARP應答,而這個應答中的資料為傳送方IP地址是192.168.10.3(C的IP地址),MAC地址是DD-DD-DD-DD-DD-DD(C的MAC地址本來應該是CC-CC-CC-CC-CC-CC,這裡被偽造了)。當A接收到B偽造的ARP應答,就會更新本地的ARP快取,將本地的IP-MAC對應表更換為接收到的資料格式,由於這一切都是A的系統核心自動完成的,A可不知道被偽造了。ARP欺騙的主要用途就是進行在交換網路中的嗅探。
2.IP地址衝突
1>如果網路中存在相同IP地址的主機時候,就會報告出IP地址衝突的警告。
2>如何產生?
Ø 比如某主機B規定IP地址為192.168.0.1,如果它處於開機狀態,那麼其他機器A更該IP地址為192.168.0.1就會造成IP地址衝突。
Ø 其原理是:主機A在連線網路(或更改IP地址)的時候就會向網路傳送ARP包廣播自己的IP地址,也就是free arp(免費ARP).如果網路中存在相同IP地址的主機B,那麼B就會通過ARP來reply該地址,當A接收到這個reply後,A就會跳出IP地址衝突的警告,當然B也會有警告。因此用ARP欺騙可以來偽造這個ARPreply,從而使目標一直遭受IP地址衝突警告的困擾。
3.阻止目標的資料包通過閘道器
1>比如在一個區域網內通過網管上網,那麼連線外部的計算機上的ARP快取中就存在網管IP-MAC對應記錄
2>如果,該記錄被更改,那麼該計算機向外傳送的資料包總是傳送到了錯誤的閘道器硬體地址上,這樣,該計算機就不能上網了。
3>這裡也主要是通過ARP欺騙進行的。有兩種方法達到這樣的目的:
Ø 向目標傳送偽造的ARP應答資料包,其中傳送方的IP地址為網管的地址,而MAC地址則為一個偽造的地址。當目標接收到ARP包,那麼就更新自身的ARP快取。如果該欺騙一直持續下去,那麼目標的網管快取一直是一個被偽造的錯誤記錄。不過,如果使用arp –a,就知道問題所在了。
Ø 第二種方法是欺騙網管。向網管傳送偽造的ARP應答資料包,其中傳送方的IP地址為目標的IP地址,而MAC地址則為一個偽造的地址。這樣,網管上的目標ARP記錄就是一個錯誤的,網管傳送給目標的資料報都是使用了錯誤的MAC地址。這種情況下,目標能夠傳送資料到網管,卻不能接收到網管的任何資料。同時,目標自己檢視arp –a卻看不出任何問題來。
4.通過檢測混雜模式節點
1>在混雜模式中,網絡卡進行包過濾不同於普通模式。本來在普通模式下,只有本地地址的資料包或者廣播(多播等)才會被網絡卡提交給系統核心,否則的話,這些資料包就直接被網絡卡拋棄。現在,混合模式讓所有經過的資料包都傳遞給系統核心,然後被sniffer等程式利用。   
2>通過特殊設計的ARP請求可以用來在一定程度上檢測處於混雜模式的節點,比如對網路中的每個節點都發送MAC地址為FF-FF-FF-FF-FF-FE的ARP請求。對於網絡卡來說這不是一個廣播地址(FF-FF-FF-FF-FF-FF),所以處於普通模式的節點就會直接拋棄該資料包,但是多數作業系統核心都認為這是一個廣播地址,如果有一般的sniffer程式存在,並設定網絡卡為混雜模式,那麼系統核心就會作出應答,這樣就可以判斷這些節點是否存在嗅探器了。
3>可以檢視,很多基於ARP的攻擊都是通過ARP欺騙實現的。至於ARP欺騙的防範,還是儘可能使用靜態的ARP。對於WIN,使用arp-s來進行靜態ARP的設定。
當然,如果能夠完全使用靜態的IP+MAC對應,就更好了,因為靜態的ARP快取只是相對的。當然,可以有一些方法來實現ARP欺騙的檢測。設定一個ARP的嗅探器,其中維護著一個本地網路的IP-MAC地址的靜態對應表,檢視所有經過的ARP資料,並檢查其中的IP-MAC對應關係,如果捕獲的IP-MAC對應關係和維護的靜態對應關係對應不上,那麼就表明是一個欺騙的ARP資料包了。

四、電腦本機的子網掩碼工作過程(我猜測)

網絡卡收到第三層資料包(僅含有IP地址)後,要對其進行幀封裝,以便通過第二層鏈路層傳送出去,此時需要填充目的地址的mac地址。

    首先判斷目的IP地址是否在本子網內(通過子網掩碼判斷),如果是,則在arp快取中查詢(或查詢不到時啟動arp協議詢問),如果找到則填充目的mac地址,並通過網絡卡發到直連的交換機上(或集線器或路由器一端),以後資料包就由交換機或路由器負責傳輸下去了,如果找不到,說明本子網內根本不存在此目的ip地址,即要發往的地址不存在,則返回超時錯誤。

    然後判斷出IP地址不在本子網內,則找到本機的預設閘道器的IP地址,表明應該先把該資料包發往預設閘道器機器上,此時利用arp協議查詢預設閘道器IP地址對應的預設閘道器機器的mac地址,然後把資料包填充上預設閘道器機器的mac地址,然後髮網路由器,因為此時的資料幀的目的mac地址寫的是預設閘道器的mac地址,交換機(或路由器)接收的資料包後,會發往預設閘道器機器。以後資料包就由預設閘道器繼續往下傳輸了。