首頁  >  文章  >  當一個發送到目的地的主機IP包經過多個路由器轉發,目的ip是否改變

當一個發送到目的地的主機IP包經過多個路由器轉發,目的ip是否改變

(*-*)浩
(*-*)浩原創
2019-10-25 16:06:2211667瀏覽

當一個發送到目的地的主機IP套件經過多個路由器轉送時, 目的的IP位址固定不變。

當一個發送到目的地的主機IP包經過多個路由器轉發,目的ip是否改變

ip封包經由路由轉送的時候來源ip,目的ip是否改變?

最近面試網路方面的常問到這個問題,答案是不能改變的,*除非做了nat轉換才能改變。 (推薦學習:web前端影片教學

不過mac位址是變化的,因為傳送端開始不知道目的主機的mac位址,所以每經過一個路由器mac位址是變化的。

目的mac位址是如何得到的?

TCP/IP裡面是用的ARP協定。例如新建了一個內網,如果一台機器A找機器B,封裝FRAME時(OSI的第二層用的資料格式),要封裝對方的MAC,開始時A不知道B的MAC,只知道IP,它就發一個ARP包,源IP是自己的,目的IP是B的,源MAC是自己的,目的MAC是廣播的。

然後這個請求包在內網內被廣播,當其他機器接到這個包時,用目的IP和自己的IP比較,不是的話就丟棄。 B接到時,發現IP與自己的一樣,就答應這個包的請求,把自己的MAC送給A。如果B是其他子網路的機器,那麼路由器會判斷出B是其他子網,然後路由器把自己的MAC回傳給A,A以後再給B發包時,目的MAC封裝的是路由器的。

路由轉送程序:

當主機A發送到主機B的資料流在網路層封裝成IP封包,IP封包的首部包含了來源位址和目標地址。主機A會用本機設定的24位元IP網路遮罩255.255.255.0與目標位址進行與運算,得出目標網路位址與本機的網路位址是不是在同一個網段。如果不是將IP封包轉送到網關。

在發送至網關前主機A也會透過ARP的請求獲得預設閘道的MAC位址。在主機A資料鏈路層IP資料包封裝成乙太網路資料幀,然後才發住到網關…也就是路由器上的一個連接埠。

當網關路由器接收到乙太網路資料幀時,發現資料幀中的目標MAC位址是自己的某一個連接埠的實體位址,這時路由器會把乙太網路封包的封裝去掉。路由器認為這個IP封包是要透過自己進行轉發,接著它就在匹配路由表。配對到路由項目後,它就將包發往下一條位址。

路由器轉送封包就是這樣,所以它總是不會改變IP位址的。 只會改MAC.

當有封包傳到路由器時,路由器首先將其的目的位址與路由表進行對比,如果是本地網絡,將不會進行轉送到外網絡,而是直接轉送到本地網內的目的主機;但是如果目的位址經由路由表對比,發現不是在本網中,有nat就將改變來源位址的IP(原來源位址的Ip位址改為路由器的IP位址),路由器將資料包轉發到相應的端口,進行通訊。

以上是當一個發送到目的地的主機IP包經過多個路由器轉發,目的ip是否改變的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn