成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

瀏覽器輸入一個網址發生了什么(四) :網絡包在局域網中傳輸——路由器和交換機如何轉發包

網絡
在我們實際生活中,家里的路由器已經集成了集線器和交換機的功能,網絡包到達家里的路由器之后就能立刻進入互聯網。

上一節我們介紹了網絡包經過協議棧的IP模塊的封裝后,經由網卡發送出本機。

瀏覽器輸入一個網址發生了什么(三) IP模塊封裝、ARP協議、IP協議、ICMP協議和網卡原理

接下來我們將介紹數據從客戶端主機傳輸出去后,在局域網內經歷了什么。

 

網絡包從客戶端主機發出后,要經過集線器、交換機和路由器最終進入到互聯網。在我們實際生活中,家里的路由器已經集成了集線器和交換機的功能,網絡包到達家里的路由器之后就能立刻進入互聯網。

這里為了理解集線器、交換機和路由器的功能,故而將每個功能獨立出介紹以方便理解。

如下圖所示:

一、電信號到達集線器

從之前的內容我們知道,計算機網卡會將MAC模塊封裝的數據幀轉為電信號(0和1組成的高低電平),該電信號會沿著計算機連接的網線到達集線器。

集線器包含多個插口(接口),每個插口可能連接著其他集線器,交換機,路由器或者多個計算機。每個接口背后都裝有網卡中PHY(MUA)功能相同的模塊用于接收和發送電信號。

集線器上的每一個接口既可發送也可接收,但每一個接口不能在發送的同時又接收,或者接收的時候同時發送,這是因為集線器是基于半雙工的工作模式。

當信號通過網線到達集線器接收接口后面的PHY(MUA)模塊之后,會進入中繼電路,中繼電路的基本功能是將輸入的信號廣播到該集線器的所有接口之上,信號就會從這些接口發向所有連到該集線器的所有設備。

PS:集線器不會對發送過來的數據進行解析和處理,也就是說,當集線器接收到電信號之后,不會將電信號還原為數字信息(也就是不會將電信號還原為數據幀和數據包),而是將電信號直接轉發。

二、電信號從集線器到達交換機

交換機和集線器一樣也有眾多接口或者說端口,并且每個接口后面也裝著PHY(MUA)模塊用于收發電信號。與集線器不同的是交換機內部存儲著一張MAC地址與網線端口的對應表(MAC地址表)而且交換機是一個包含數據鏈路層的設備,具有MAC模塊,可以校驗和解析數據幀,而集線器則沒有,集線器不會將電信號轉為數據幀(而是直接轉發電信號),更不用說解析數據幀。

當電信號被交換機的某一個端口接收到之后,由PHY(MUA)模塊將電信號還原為數據幀,再由MAC模塊校驗數據幀內的數據是否正確(FCS校驗),如果正確則把幀里面的以太網包放到緩沖區中。

PS:我們可以理解為交換機的每一個端口都相當于一塊網卡,具有MAC模塊并且擁有自己的緩沖區。實際上并非每個端口都有獨立的PHY(MUA)、MAC和內存,而是由一個控制芯片同時控制多個端口。而交換機中實際上也沒有網卡,因此交換機也沒有MAC地址。

網卡本身是具有MAC地址的,所以網卡能夠核對接收到的包的接收方MAC地址是否是自己的MAC地址,如果不是則丟棄包。但交換機由于沒有網卡也沒有MAC地址,因此交換機會接收所有發給它的包存到緩沖區并轉發,而不會丟棄(如果發送方MAC地址對應的接口和接收方MAC對應的接口相同則會丟棄該包,后面會介紹)。

包放入緩沖區后,MAC模塊會獲取到以太網包MAC頭部的發送方MAC地址和接收方MAC地址。

一方面,交換機會將發送方MAC地址和交換機對應接收端口的端口號的映射關系記錄到MAC地址表中,這樣交換機就知道這個發送方MAC地址的設備是連接在哪個端口上的,下次有其他機器要發送數據給這個MAC地址時,交換機就知道要將數據通過哪個接口發出。

另一方面,交換機會查詢接收方MAC地址是否在MAC地址表有記錄的發送端口,例如查詢到接收方MAC地址為00-02-B3-1C-9C-F9則對應下面的MAC地址表中的第三行,交換機就會把包從端口8發送出去。

PS:如果交換機接收到某個包其接收方MAC地址是主機A的MAC地址,那么交換機接收這個包的端口不一定是直接連著主機A,而可能是連接著幫A轉發包的集線器或幫A轉發包的其他交換機。

從上圖中我們也可以看出,交換機的端口也是分為接收端口和發送端口的。00-02-B3-1C-9C-F9這個MAC地址對應的端口號為8,那么交換機針對該MAC地址的發送端口號和接收端口號都是8,但是發送端口和輸出端口本身不是同一個端口,而是不同的2個端口,只是它們的端口號都是8。這里涉及到交換機的交換電路。如下圖所示:

左邊是交換機的輸入端口,下方是輸出端口,左邊8號端口是交換機對00-02-B3-1C-9C-F9機器的接收端口,下方8號端口是交換機對00-02-B3-1C-9C-F9機器的發送端口。

MAC地址表的維護

像我們剛才所說,當收到包時交換機會把發送方MAC地址與接收端口的端口號記錄到MAC地址表,并且交換機每次收到包都會執行這個操作。這樣以后當收到發往這個地址的包,交換機就能將它發到正確的端口了。

但是地址表中的記錄不能永久有效,會在一段時間不使用之后自動刪除,這是為了避免類似于設備發生移動導致地址表中記錄不再正確的情況,例如筆記本電腦從辦公室移動到了會議室,連了不同的網線。

地址表記錄的有效期為幾分鐘,但如果在有效期內,某條記錄就過時了(發生了設備移動的情況),那么交換機依舊會將包轉發給老的端口,通信就會發生錯誤。此時只需重啟一下交換機,地址表會被清空并更新正確的信息。

下面我們看一種特殊情況:如果交換機查詢MAC地址表發現記錄中接收方MAC地址對應的接口和發送方MAC地址對應的發送接口相同,那么交換機會如何處理,如下圖所示:

A發送了一個給B的數據包,我們發現A和B都連接在同一臺集線器上,集線器會把A的包廣播到該集線器所有的端口,其中就包括B。因此B接收到集線器發給他的包之后,校驗MAC地址發現是自己的MAC地址,于是B會響應回包,經過集線器,集線器再通過廣播的方式把回包傳回給A。

但是集線器也連接著左側的交換機上,因此集線器同樣會把這個包發給交換機,交換機一查MAC地址表會發現發送端口和接收端口是同一個端口號,為了避免計算機B接收重復的包,因此交換機會丟棄這個包,而不會把包又轉發回集線器而又由集線器轉發給B。

另一種特殊情況就是MAC地址表中無法找到指定的MAC地址,這是因為該MAC地址的設備沒有向交換機發送過包,或者MAC記錄因過了有效期而被刪除。

此時交換機會將包轉發給除了源端口之外的其他所有端口。可能有人會擔心這樣發過多的包會不會造成網絡擁塞,其實不用擔心,因為只要目標設備做出響應(這里主要指ARP響應),交換機就會根據回包將其MAC地址記錄到地址表,下次就無需這樣廣播轉發。

另外,如果接收方MAC地址是一個廣播地址那么交換機也會將包發送到除了源端口外的其他端口。

交換機是全雙工的工作模式,這也是交換機和集線器的區別。交換機的發送和接收端口是相互獨立的,發送端口只能發送不能接收,接收端口亦然;但是發送端口在發送的時候,接收端口也能接收,這就是全雙工模式的特點。而集線器的單個端口可以接收也可以發送,但接收和發送不能同時進行,否則就會發生信號碰撞,所以當集線器接收某個包時,它需要將這個包轉發給其他所有端口,導致其他端口這段期間不能接收包。從轉發能力而言,集線器是低于交換機的。

三、網絡包經路由器并轉發

網絡包經過集線器和交換機轉發之后達到路由器,并被轉發到下一個路由器。

當然,網絡包不一定非要先經過集線器再到交換機再到路由器,也可能集線器連接著路由器,包到達集線器后就能轉發到路由器;也可能是計算機直接連著路由器,網絡包從計算機發出后直接到達路由器;在局域網中,路由器與路由器之間也存在著眾多的集線器和交換機,從當前路由器到下一跳路由器需要經過這兩臺路由器之間的集線器和交換機;也可能路由器內部本身就集成了集線器和交換機的功能,這樣包就可以按上述所說的轉發方式直接被轉發到下一跳路由器。

當然本小節的重點不是集線器和交換機,而是路由器的轉發機制。和交換機不同,路由器是基于IP設計的(具有網絡層和鏈路層),而交換機是基于以太網設計的(只有鏈路層),因此路由器可以解析MAC包和IP包,交換機則只能解析MAC包;交換機是通過包中的接收方MAC地址判斷轉發目標,而路由器則是根據包中接收方的IP地址判斷轉發目標。

1.路由器結構簡化圖

路由器內部包含兩部分:轉發模塊和端口模塊。

轉發模塊負責根據包內目的地IP判斷包應該轉發到哪個下一跳路由器;端口模塊負責執行包的收發操作。

2.端口模塊

端口模塊包含PHY(MUA)模塊(可以接收電信號將幀轉為數字信息)、MAC模塊(將幀解析為以太網包)和內存緩沖區(暫存網絡數據),端口模塊對于路由器而言就相當于網卡對于計算機一樣。路由器的每個端口都具有獨立的MAC地址和IP地址。

不同類型的路由器安裝的端口模塊也不同,例如具有ADSL組件的路由器(一般用作為互聯網中的路由器),具有FTTH組件的路由器(互聯網中的路由器),支持專線的路由器(公司局域網中的路由器),支持無線局域網或以太網的路由器(局域網中的路由器)。

不同端口模塊的路由器支持不同的通信功能,例如具有ADSL通信功能的路由器在把包轉發之前會為包添加MAC頭部、PPPOE頭部和PPP頭部(用于在互聯網中傳輸和鑒權)并發送到互聯網中;而具有以太網或無線局域網功能的路由器在轉發時只添加MAC頭部,并且只支持包在局域網內傳輸和解析。

一般而言,計算機的網卡支持以太網和無限局域網的通信技術,而路由器的端口模塊除了支持以太網和無線局域網還支持如ADSL,FTTH以及各種寬帶專線的通信,只需要端口模塊安裝了支持這些技術的硬件即可。

一個路由器可以有多個端口和多種類型的端口(意味著這個路由器既支持包在局域網中轉發也支持在互聯網中轉發),每個端口都可能連接著一根網線(如果端口類型是無線的則不用連網線),端口類型不同,連的網線種類也不同。

3.轉發模塊

路由器的轉發模塊中有一個重要的表叫做路由表,如下所示:

路由器中的路由表內容,以及匹配規則和之前介紹的計算機內的路由表一樣。

其中,第一列“目標地址”記錄的是接收方的信息,但它不是具體某臺設備的IP,而是只有IP的網絡號部分的IP段,表示主機號部分的比特值都為0。

第二列表示目標地址的子網掩碼,用于路由器判斷所需比對的網絡號的比特數。

路由器在比對路由表和接收方IP時,只會比對 接收方IP的網絡號而忽略主機號。

4.路由聚合

路由表第一列和第二列中記錄的可能不是目標地址IP的真正子網,這是路由聚合的結果。所謂的路由聚合就是將多個子網合并為一個子網,并在路由表中生成一條記錄,這樣就能減少路由表中的記錄數。

例如有3個子網:10.10.1.0/24、10.10.2.0/24和10.10.3.0/24。路由器B需要轉發接收方IP為10.10.2.100的包,但實際上路由器B的路由表 中并沒有上面的3個子網的記錄,而是將上面3個子網合并成一個10.10.0.0/16的子網記錄起來(這里記錄的是聚合后的地址),并將下一跳指向路由器A。如下所示:

目標地址

子網掩碼

網關

接口

躍點數

10.10.0.0

255.255.0.0

路由器A的IP

路由器B某接口的IP

1

此時在路由器B中就只需匹配目標地址10.10.2.100的前16個位,即10.10。匹配正確后B會將這個包轉發給路由器A。

路由器A的路由表則記了上面3個子網的記錄,根據10.10.2.100匹配到10.10.2.0/24這個子網和下一跳的IP地址,如下所示:

目標地址

子網掩碼

網關

接口

躍點數

10.10.1.0

255.255.255.0

...

路由器A的5號端口的IP

1

10.10.2.0

255.255.255.0

...

路由器A的2號端口的IP

1

10.10.3.0

255.255.255.0

...

路由器A的8號端口的IP

1

圖片

路由聚合是將多個子網聚合為一個子網,路由表記錄聚合后的子網地址。相反的,路由器也可能將一個子網細分并注冊到路由表形成多條記錄。甚至也可以將某臺具體計算機的地址寫入路由,此時第二列的子網掩碼為255.255.255.255,表示匹配路由表時需要匹配所有32個比特的值。

至于網關、接口和躍點數在上面介紹計算機的路由表已經介紹過,這里不再贅述。第4列接口在計算機中代表某一塊網卡,在路由器中代表路由器眾多端口中的某一個端口。

PS:路由表的維護方式與交換機不同,交換機對MAC地址表的維護是通過記錄發送方的以太網包MAC地址以及交換機接收端口的端口號、記錄接收方的響應以太網包的MAC頭部和交換機接收該包的接收端口實現的。路由表的維護則通過人手動維護以及根據路由協議通過路由器之間的信息交換由路由器自行維護。

那么回到正題,當包到達路由器時路由器是怎么處理的,這會根據路由器的端口不同而異(如以太網端口,無線局域網端口,ADSL等),這里只介紹路由器以太網端口是如何接收和轉發包的。

首先信號到達網線接口部分,由PHY(MUA)模塊和MAC模塊將電信號轉為數字信息,檢驗幀尾部FCS,查看接收方的MAC地址是不是發送給自己的,放入接收緩沖區;如果不是發給自己的包則丟棄(交換機不具有MAC地址,只負責轉發,因此交換機不會因為校驗MAC地址不是自己的MAC地址而丟棄以太網包,而是根據MAC地址表轉發)。

校驗完MAC地址之后,MAC頭部的任務就完成了然后被丟棄(MAC頭部的任務就是將包送到指定MAC地址的路由器上,因此其實上一章中我們介紹通過ARP協議向局域網中廣播以獲取接收方的MAC地址實際上是獲取路由器的MAC地址而不是遠端目標主機的MAC地址)。然后路由器會根據IP包頭部的接收方IP地址匹配路由表的記錄,從而找到下一跳路由器的IP(即路由表中的網關列)和輸出端口(路由表的接口列,即通過本路由器的哪個端口發出這個包)。需要注意,如果匹配到的記錄的網關列為具體IP地址,則該地址就是下一個轉發目標,如果網關列為空,則IP頭部的接收方IP地址就是下一個轉發目標。

如果無法在路由表中匹配到對應記錄,路由器會丟棄這個包,并通過ICMP消息告知發送方。

在發出這個包前,路由器需要重新封裝MAC頭部,因為之前的MAC頭部已經被丟棄。此時MAC頭部填入的發送方MAC地址不是源發送端的MAC地址,而是本路由器的某發送端口的MAC地址(路由器有多個端口,每一個端口都有一個MAC地址)。接收方的MAC地址則根據下一個轉發目標的IP(可能是下一跳路由器的IP,也可能是目標主機的IP)通過ARP查詢的方式獲取,當然路由器中也有ARP緩存,因此會先在ARP緩存中查詢。

網絡包封裝完畢后,會在端口模塊將數字信息轉為電信號發送出去,這個過程和在計算機的發送包過程一樣。如果輸出端口是以太網類型,則網絡包會通過交換機到達下一個路由器并經過路由器的層層轉發,網絡包到達最終目的地(當然這里省略了包如何從局域網進入互聯網的過程介紹,我們會在下一章再介紹)。

需要注意的是,如果路由器通過以太網類型的端口發出包則此時以太網包的頭部只有MAC頭部,如果是通過ADSL類型的端口(將包發送到網絡服務運營商和互聯網)發出則以太網包會包含MAC、PPPoE和PPP頭部。

5.默認路由

對于局域網中的路由器而言,可能小的局域網中的路由器和計算機數量不多,因此所有轉發目標都能夠寫到路由表。但如果是互聯網中的路由器,由于互聯網中的設備數量太多,無法將所有目標IP的網絡號都記錄到路由表中。因此路由表會在最后一行配置默認路由的記錄,這一行的目標地址列和子網掩碼列為0.0.0.0,子網掩碼為0.0.0.0表示需要匹配網絡包接收方IP的比特數為0,即無需匹配。而這一條記錄的網關列即為默認網關,一般會填寫為接入互聯網的路由器地址。

換句話說,如果包內的接收方IP無法匹配到路由表中的其他所有記錄,且路由表中有0.0.0.0這條默認網關記錄,那么接收方IP就會匹配到這條記錄并轉發到默認網關。

當然,如果路由器中沒有設置默認網關,那么當匹配路由表中所有記錄失敗時,路由器會發送ICMP消息給發送方。

6.包的有效期

在路由器轉發包之前,其轉發模塊會更新IP頭部的TTL字段。該字段表示有效期,每經過一個路由器的轉發這個值就會減1,當這個值變為0時就表示超過了有效期,這個包就會被丟棄。

這個機制是為了防止包在轉發的過程中陷入死循環,如果路由表中的配置正確是不會出現這種情況的,但如果信息有問題或者設備故障等原因切換備用路由器導致暫時性的路由混亂就會出現這種情況。

TTL一般會設置為64或128。

7.通過分片功能拆分大網絡包

路由器的端口類型不只以太網一種,也可以支持其他局域網或專線通信技術。不同端口類型的線路能傳輸的最大包長度(MTU)也不同,像在以太網中,以太網包的MTU(包括以太網頭部)為1500。

當路由器的輸入端口和輸出端口是不同的端口類型(像局域網內的路由器輸入端口和輸出端口可能都是以太網類型的端口和線路,但接入互聯網的路由器的輸入端口為以太網類型端口,輸出端口是ADSL類型的端口),且輸出端口能傳輸的MTU小于輸入端口時,一旦傳入的包的大小超過了輸出端口的MTU,就會導致包無法發送。如下所示

有時候即使輸入和輸出端口的MTU一樣,但可能由于包經過重新封裝添加了額外的頭部數據導致包的長度超過輸出端口的MTU。例如ADSL和FTTH等端口類型在發出包之前需要在IP頭部前添加PPP頭部和PPPoE頭部再添加MAC頭部。

為了避免包超過輸出端口MTU而無法發送包的情況出現,路由器中的IP模塊提供了分片功能,首先它會看看這個要發送出去的包能否直接發送出去,將輸出端口的MTU與包的長度(數據幀的包長度,不包括幀的報頭和FCS)比較,如果輸出端口的MTU小于包的長度則會對這個包分片,拆分之前會看一下IP頭部的標志字段是否允許分片;如果標志字段表示不能分片,則路由器會丟棄該包并發送ICMP消息給發送方。

分片如下圖所示:

圖中(a)的藍色部分就是被拆分的內容

每個分片都會添加相同的MAC頭部和IP頭部(如果是在以太網中傳輸則為這兩個頭部,如果是通過ADSL則還需要PPP和PPPoE頭部)。

需要注意的是,這里對IP包的分片和之前在協議棧中介紹的TCP模塊對HTTP消息的分片不同。TCP模塊對HTTP消息的分片是在數據被裝進包里之前進行的,而且每個分片都包含一個TCP頭部。而路由器則是直接對IP包進行分片,每個分片都有一個IP頭部,但是所有分片只有一個TCP頭部。TCP分片也是因為要發送的數據可能大于MTU因而分片。

假如有客戶端有1M的http消息要發送,則這1M的內容會在TCP模塊中被分為幾百多個分片包(IP包),但經過路由器的時候,每個IP包還可能再被路由器的IP模塊分片為兩個小包。

8.路由器與交換機以及路由器之間的關系

簡單的來說,路由器負責通過將包不斷傳遞給下一跳路由器最終把包送達通信對象這一整個過程(由網絡層如IP模塊負責)。而包從一個路由器到達下一個路由器則是由交換機負責廣播獲取MAC地址實現(由鏈路層如以太網線路等負責)。

網絡中除了以太網之外,還有無線局域網、ADSL和FTTH等等眾多類型的網絡,如果當前路由器和下一跳路由器是通過以太網連接的,則當前路由器的IP模塊會委托以太網將包傳遞給下一個路由器;如果當前路由器和下一跳路由器是通過ADSL連接,則會委托ADSL線路傳遞。IP本身不負責包的傳輸,而是委托鏈路層的各種通信技術(以太網、ADSL、FTTH、無線局域網等)把包傳給下一個路由器。

當然,現在基本上很多的路由器都內置了交換機功能,因此路由器本身就具有廣播,以及進行ARP查詢MAC地址的功能。

四、路由器的附加功能

上面我們介紹了路由器的基本功能,即根據網絡包頭部接收方IP來查詢路由表,獲取下一跳地址,并以接力的方式將包傳送到目標地址的計算機上。

除了這個基本功能之外,路由器還有一些附加功能,這里介紹比較重要的兩個功能:地址轉換和過濾。

1.地址轉換

我們知道一臺設備只有一個唯一的IP地址,如果網絡中出現有重復IP地址的設備就會無法正常傳輸網絡包。可是隨著互聯網設備數量增長,IP地址會被很快分配完。為了解決這個問題,我們容許相互獨立的不同內網之間的機器出現IP重復而同一內網的機器的IP不重復的情況,只要不同內網之間的設備不直接進行通信就行。為此我們提出了私有地址和公有地址的概念。

公有地址中沒分配的一部分拿出來規定只能在內網使用的地址叫做私有地址,而互聯網中分配的固定地址叫做公有地址。

私有地址的范圍如下:

  • 10.0.0.0 ~ 10.255.255.255
  • 172.16.0.0 ~ 172.31.255.255
  • 192.168.0.0 ~ 192.168.255.255

不同內網的兩臺機器即使出現上面范圍內的IP地址重復也沒有關系。

下面我們以公司內網為例。一般而言,公司內網中的設備會分為兩部分,一部分是對互聯網開放的服務器,一部分是公司內部設備。對互聯網開放的設備分配公有地址,對公司內部設備分配私有地址,被分配私有地址的設備只能夠與內網的設備直接通信而不能和互聯網直接收發網絡包。

如果內網中的設備想和互聯網中的設備通信就需要一種特別的機制,這個機制就是地址轉換。

地址轉換的原理就是依靠路由器在轉發網絡包時對IP包頭部的IP地址和端口進行改寫。

當內網的設備要把網絡包發送到遠程的目標機器,在網絡包經過路由器的時候,路由器會將IP包頭部的發送方IP地址(私有地址)換為路由器接收端口的地址(該路由器的端口地址是一個公有地址),并且將包 TCP頭部的端口號也改寫為路由器分配的一個空閑端口號。

改寫前的私有地址和端口號,改寫后的公有地址和端口號會對應的記錄到路由器的一張表中。

這個被替換后的公有地址其實是地址轉換設備的IP,即路由器的IP。所以實際上真正的發送者不是內網的計算機,而是該路由器。

服務端的回包的接收方IP會寫之前發送方的公有地址,即198.18.8.31,這個公網IP是路由器的IP。當包到達公司網關路由器時,路由器會根據回包的接收方IP和端口查上面的映射表找到對應的內網設備并轉發給該設備(上圖的表格中只有一個公有IP,但真實情況其實還可能有多個公有地址,因為路由器有多個端口)。

在公有地址只有一個的情況下,可以用不同的端口號來區別內網的不同終端。這樣就不至于服務端的回包無法找到準確的內網設備。

這個公有地址和私有地址的映射表的某條記錄會在某內網計算機A與外網服務器B建立連接時(A發送連接請求的TCP包到達路由器時)生成,之后該內網計算機A與外網設備B的通信都會使用這條轉換記錄,直到A與B通信完畢,斷開連接,A關閉用于與B通信的套接字后,(此時這個私有地址的端口號就失效)這條記錄才會被刪除。

我們發現路由器做地址轉換的時候還改寫了端口號,這樣做是為了在地址轉換時讓公有地址的一個端口號對應一個私有IP地址,提高公有地址的利用率。如果不改寫端口號,就意味著每轉換一個私有地址都需要一個新的公有地址。假如這個公司的局域網只被分配了10個公有地址,但是公司有1000臺設備(1000個私有地址),就意味著只有10臺內部設備能夠同時和互聯網通信。

上面我們介紹了內網設備作為客戶端,互聯網中的遠程設備作為服務端情況下的路由器地址轉換。下面我們再說說公司內網設備作為服務端,從互聯網訪問公司內網設備時路由器的地址轉換。

其實基本原理還是通過復用一個(或多個)公有地址的多個端口號來對應多個私有地址建立映射進行轉換,唯一的不同在于內網設備作為客戶端請求的情況下,這個地址轉換表的記錄是在設備發出請求并經過路由器時才生成的(即動態生成);而內網設備作為服務端供互聯網請求的情況下,路由器中的地址轉換表記錄需要提前手動添加,而且只要內網設備不停止提供服務,里面的記錄就不會刪除。如圖:

 

這樣一來,互聯網中的某個用戶訪問198.18.8.31:8080其實訪問的就是公司內網中的 10.10.1.1這臺機器的80端口所提供的服務。

2.路由器的包過濾功能

包過濾就是對包轉發時根據MAC頭部、IP頭部和TCP頭部按時限設定好的規則決定轉發這個包還是丟棄這個包。我們常說的防火墻設備和軟件就是利用這一機制。

這一原理雖然簡單,但是想要靈活控制不容易,例如如何防止來自互聯網的包經過路由器進入內網,但是又允許內網發出的包能通過路由器轉發給互聯網。

很多朋友會想,如果希望內網能訪問互聯網而不讓互聯網訪問內網,只需允許路由器轉發由內網發向互聯網的包,而禁止轉發由互聯網發到內網的包就行。

可是網絡包是雙向傳輸的,例如TCP應答機制中,內網設備發送了帶有序號的網絡包,服務端就會回一個ACK包。此時這個ACK包就被攔截導致內網向客戶端發起的請求無法正常響應(應該說客戶端的請求包都無法正常傳輸完,客戶端主機會一直等服務端的應答包)。

這部分內容將會在探索服務器時介紹。

責任編輯:趙寧寧 來源: 程序員阿沛
相關推薦

2024-11-04 09:10:00

2024-11-04 08:10:00

2010-07-28 15:08:43

2010-07-28 15:00:29

2010-04-02 09:29:33

無線局域網交換機

2022-09-22 17:02:42

網絡硬件

2022-09-22 19:19:52

網絡硬件路由器交換機

2022-09-22 19:23:11

網絡硬件路由器交換機

2022-09-22 17:00:46

路由器

2022-09-23 10:02:35

網絡硬件路由器

2011-09-14 14:40:32

無線局域網交換機無線網絡無線局域網

2010-03-17 12:56:50

局域網交換機

2011-08-08 10:47:07

路由器交換機

2017-06-01 14:33:04

交換機路由器網絡設備

2011-03-24 14:05:14

Nagios監控

2010-03-22 18:15:26

WLAN無線局域網交換

2009-12-09 14:21:48

邊界路由器

2009-08-06 20:52:22

2010-08-18 10:33:15

無線路由器

2009-12-08 13:02:12

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产一区二区精品在线 | 中文字幕av网址 | 久久久青草婷婷精品综合日韩 | 亚洲精品国产电影 | 欧美三级电影在线播放 | www.久久艹 | 一区二区日韩 | 亚洲国产精品一区二区第一页 | 人人看人人草 | 成人影院在线 | 99精品九九 | 91看片在线观看 | 免费一级黄色录像 | 午夜婷婷激情 | 国产成人一区二区三区电影 | 黄色一级特级片 | 久久精品国产99国产精品 | 国产乱码精品一区二区三区中文 | 国产欧美一区二区三区久久人妖 | 香蕉久久a毛片 | 国产免费一区二区 | 黄色三级免费网站 | 亚洲综合热 | 欧美成年视频 | 欧美中文字幕一区二区三区亚洲 | 精品久久久久久18免费网站 | 亚洲视频免费在线 | 亚洲精久久久 | 午夜视频网站 | 日本在线你懂的 | 91精品国产综合久久久久久蜜臀 | 欧美黑人国产人伦爽爽爽 | 天天干在线播放 | 成人免费视频 | 国产激情91久久精品导航 | 精品国产免费一区二区三区演员表 | 91在线精品视频 | 亚洲精品久久嫩草网站秘色 | 蜜桃黄网| 91视频大全 | 午夜在线影院 |