網絡層:ip協議 與數據鏈路層

目錄

網絡層

引子與前置知識

一、協議格式

二、網段劃分(重要)

三、特殊的IP地址?

四、IP地址的數量限制?

五、私有IP地址和公網IP地址

六、理解運營商和全球網絡

七、路由?

八、協議格式補充

數據鏈路層?

?一、以太網幀格式

二、局域網的通信原理

三、認識MTU?

?四、MTU對IP協議的影響

五、MTU對于TCP協議的影響?

六、ARP協議的作用

1. 先說原理

2.談arp報頭 并模擬一次arp過程

3.arp周邊問題

其它重要協議或技術

1.DNS

?編輯

?2.ICMP協議

icmp功能

當你在瀏覽器地址欄輸入一個URL后回車,將會發生的事情?

3.NAT技術

NAT技術背景

NAT IP轉換過程?

NAPT?

NAT技術的缺陷

4.代理服務器?


網絡層

引子與前置知識

ip協議的本質工作是提供一種能力,將數據跨網絡從A主機送到B主機

但是用戶需要的是將數據可靠的跨網絡從A主機送到B主機

那么如何保證可靠呢?通過tcp協議提供的可靠性策略!如超時重傳等等..?

(圖中大圓圈是一個個子網,較大的矩形標識路由器轉發,較小的矩形標識子網內的一臺臺主機)?

在網絡中,我們要對所有的主機進行表示,通信時即用源ip和目的ip標識主機和目的主機

網絡通信和現實通信其實是一樣的,我們現實通信,都會確認城市,地點,人。層層遞進。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?相類似,我們可以借其理解目標網絡 目標主機 進程的關系

進程我們前面知道了,可以用端口號確定

那么理所當然,ip地址承擔的是確認目標網絡和目標主機的任務?

????????我們再舉一個生活中的例子,即我們的學號,它也是有自己的格式的,我們此時將其簡化為學院編號+自己的學院內編號 。

? ? ? ? 此時我是計算機學院的123009學生,我見到了一張學生證,是432008同學的。

? ? ? ? 由于每個學院的學生只清楚自己學院的編號,因此如果123009學生想要找這個432008學生,就需要一個一個人去確認,不斷排除。但是線性遍歷效率太低!

? ? ? ? 此時123009想到了自己學院有一個大群,由本學院的學生會長管理,我告知了學生會長這件事。而學生會長也同樣有一個自己的每個學院的學生會長群,此時計算機學院的學生會長將此消息遞給了電氣學院的會長,電氣學院本身也有群,此時消息就很快速地傳給了432008學生。為什么快?因為排除的效率變高了!

????????那么其實我們每個學院都是一個子網,每個人都是一臺主機,而我們的學生會會長則是每個子網的路由器,每個路由器天然“認識”網絡中的其它路由器。

? ? ? ? 而如果我們想要再擴大,每個學校有一個總的學校學生會主席,那么不同學校的學生會主席是不是也能建立一個群?網絡也是通過這樣層層擴展的。

一、協議格式

?

報頭和有效載荷如何分離? 固定長度+自描述字段(首部長度+總長度)?

如何將有效載荷交給上層? 8位協議

1.4位版本號(version): 指定IP協議的版本, 對于IPv4來說, 就是4?

2.4位頭部長度(header length): IP頭部的長度是多少個32bit,。也就是 length * 4 的字節數. 4bit表示最大的數字是15, 因此IP頭部最大長度是60字節

3.8位服務類型(Type Of Service): 3位優先權字段(已經棄用), 4位TOS字段, 和1位保留字段(必須置為0). 4位TOS分別表示: 最小延時, 最大吞吐量, 最高可靠性, 最小成本. 這四者相互沖突, 只能選擇一個. 對于ssh/telnet這樣的應用程序, 最小延時比較重要; 對于ftp這樣的程序, 最大吞吐量比較重要.ip協議不保證可靠性,但是它可以選擇一個相對更可靠的網絡通道。

4.16位總長度(total length): IP數據報整體占多少個字節

5.8位生存時間(Time To Live, TTL): 數據報到達目的地的最大報文跳數. 一般是64. 每次經過一個路由, TTL-= 1, 一直減到0還沒到達, 那么就丟棄了. 這個字段主要是用來防止出現路由循環

6.?8位協議: 表示上層協議的類型

7.16位頭部校驗和: 使用CRC進行校驗, 來鑒別頭部是否損壞.?

8.32位源IP地址和32位目標IP地址: 表示發送端和接收端.

在我們通信過程中,只有發送端和接收端是有tcp層的,?中間的路由器可以有,但是我們是不會用它的,所有的路由器只工作在網絡層。

二、網段劃分(重要)

?????????IP地址分為兩個部分, 網絡號和主機號
????????網絡號: 保證相互連接的兩個網段具有不同的標識;
????????主機號: 同一網段內, 主機之間具有相同的網絡號, 但是必須有不同的主機號;

1. 不同的子網其實就是把網絡號相同的主機放到一起.
2.如果在子網中新增一臺主機, 則這臺主機的網絡號和這個子網的網絡號一致, 但是主機號必須不能和子網中的其他主機重復

????????通過合理設置主機號和網絡號, 就可以保證在相互連接的網絡中, 每臺主機的IP地址都不相同.
那么問題來了, 手動管理子網內的IP, 是一個相當麻煩的事情.

因此

1.有一種技術叫做DHCP, 能夠自動的給子網內新增主機節點分配IP地址, 避免了手動管理IP的不便.
2.一般的路由器都帶有DHCP功能. 因此路由器也可以看做一個DHCP服務器.?

我們再補充一些與路由器有關的內容。

1.路由器本質也是特定一個子網的主機,也要配置ip地址

2.路由器一定至少要連接兩個子網,那么路由器也就相當于同時存在于兩個子網。

所以,路由器可以,也一定是會配置多個ip的。這里我們簡單認為路由器有多張網卡即可。

3.路由器一般是一個子網中的第一臺設備,通常來說它的ip地址的網絡號都為 1.

4.路由器除了可以進行ip報文轉發,構建子網(局域網),也會對子網中的ip地址進行管理

過去曾經提出一種劃分網絡號和主機號的方案, 把所有IP 地址分為五類, 如下圖所示(該圖出 自[TCPIP])。?

????????A類 0.0.0.0到127.255.255.255
????????B類 128.0.0.0到191.255.255.255
????????C類 192.0.0.0到223.255.255.255
????????D類 224.0.0.0到239.255.255.255
????????E類 240.0.0.0到247.255.255.255?

????????隨著Internet的飛速發展,這種劃分方案的局限性很快顯現出來,大多數組織都申請B類網絡地址, 導致B類地址很快就分配完了, 而A類卻浪費了大量地址;?

????????例如, 申請了一個B類地址, 理論上一個子網內能允許6萬5千多個主機. A類地址的子網內的主機數更多.
????????然而實際網絡架設中, 不會存在一個子網內有這么多的情況. 因此大量的IP地址都被浪費掉了.?

????????針對這種情況提出了新的劃分方案, 稱為CIDR(Classless Interdomain Routing):?

? ? ? ? 1.引入一個額外的子網掩碼(subnet mask)來區分網絡號和主機號;
? ? ? ? 2.子網掩碼也是一個32位的正整數. 通常用一串 "0" 來結尾;
? ? ? ? 3.將IP地址和子網掩碼進行 "按位與" 操作, 得到的結果就是網絡號;
? ? ? ? 4.網絡號和主機號的劃分與這個IP地址是A類、B類還是C類無關;?

????????所謂的子網掩碼是配置在全世界的路由器中的, 包括上面的分類劃分發,也是在路由器中配置好的。我們經常說我們轉發的時候要通過目的網絡轉發,憑的是什么呢?憑的就是我們的報文到了某一個路由器,這個路由器內部會拿著我們的報文和其內部的子網掩碼,按位與就得到了網絡號。每個路由器它連接著哪些子網它自己也清楚。他就可以通過目的網絡來進行轉發。

????????可見,IP地址與子網掩碼做與運算可以得到網絡號, 主機號從全0到全1就是子網的地址范圍;
????????IP地址和子網掩碼還有一種更簡潔的表示方法,例如140.252.20.68/24,表示IP地址為140.252.20.68, 子網掩碼的高24位是1,也就是255.255.255.0?

三、特殊的IP地址?

1. 將IP地址中的主機地址全部設為0, 就成為了網絡號, 代表這個局域網;
2.將IP地址中的主機地址全部設為1, 就成為了廣播地址, 用于給同一個鏈路中相互連接的所有主機發送數據包;
3.127.*的IP地址用于本機環回(loop back)測試,通常是127.0.0.1

四、IP地址的數量限制?

????????1.我們知道, IP地址(IPv4)是一個4字節32位的正整數. 那么一共只有 2的32次方 個IP地址, 大概是43億左右. 而TCP/IP協議規定, 每個主機都需要有一個IP地址.
????????2.這意味著, 一共只有43億臺主機能接入網絡么?
????????實際上, 由于一些特殊的IP地址的存在, 數量遠不足43億; 另外IP地址并非是按照主機臺數來配置的, 而是每一個網卡都需要配置一個或多個IP地址.
????????3.CIDR在一定程度上緩解了IP地址不夠用的問題(提高了利用率, 減少了浪費, 但是IP地址的絕對上限并沒有增加), 仍然不是很夠用. 這時候有三種方式來解決:?

? ? ? ? a. 動態分配IP地址: 只給接入網絡的設備分配IP地址. 因此同一個MAC地址的設備, 每次接入互聯網中, 得到的IP地址不一定是相同的;
? ? ? ? b.NAT技術(后面會重點介紹);
? ? ? ? c.IPv6: IPv6并不是IPv4的簡單升級版. 這是互不相干的兩個協議, 彼此并不兼容; IPv6用16字節128位來表示一個IP地址; 但是目前IPv6還沒有普及;

五、私有IP地址和公網IP地址

?????????如果一個組織內部組建局域網,IP地址只用于局域網內的通信,而不直接連到Internet上,理論上 使用任意的IP地址都可以,但是RFC 1918規定了用于組建局域網的私有IP地址

? ? ? ? 1.10.*,前8位是網絡號,共16,777,216個地址
? ? ? ? 2.172.16.到172.31.,前12位是網絡號,共1,048,576個地址
? ? ? ? 3.192.168.*,前16位是網絡號,共65,536個地址。包含在這個范圍中的, 都成為私有IP, 其余的則稱為全局IP(或公網IP);?

在我們的使用生涯中,直接使用的基本上都是 私有ip

云服務器-----公網ip

六、理解運營商和全球網絡

?????????運營商把光纖接入用戶家中,我們家中的調制解調器把光電的模擬信號轉化為數字信號交給家用路由器。而我們的路由器可以構建局域網。運營商會給我們的路由器設置賬號和密碼,使得該路由器可以接入運營商的內網,而我們路由器本身也有一個賬號和密碼,這個、樣可以防止周邊的其他人使用

?而關于全球網絡

?

實際上網絡的劃分比較復雜,我們這里以國家地區為基準,簡單介紹全球網絡。?

我們三十二位的ip地址可以進行層層劃分。

????????例如我們有接近200個國家,那么可以拿出最前面的八位 用于標識每個國家。不同國家間有國際間的路由器。此時我們國家層的子網掩碼是前八位為1.

????????而對于某個國家內部,以我們國家為例,省和自治區直轄市等合計有三十幾個,那么我們又可以拿出六位來標識不同的地區。我們國內不同地區也有不同地區的路由器。此時子網掩碼為8+6 為14位的1

????????而某個省內部的市也以同樣的方式進行劃分。同樣有市內的路由器組成網絡。

? ? ? ? 而這些全都是公網ip!?

? ? ? ? 這樣層層下來,我們就可以進行通信了。但是此時出現了一個問題,剩余的位數太少,根本無法支持一個地區大量的用戶使用。那么怎么解決呢?

? ? ? ? 而且?我們之前說了,我們日常接觸的都是私網ip,那么我們是怎么與公網聯系起來的呢?

????????

? ? ? ? 我們可以觀察到下圖中,運營商的路由器有一個子網ip,即它內部使用的ip,是一個私有ip。而它的WAN口ip則是一個公網ip。?

? ? ? ? 而我們的路由器的WAN口ip則是運營商的內網內使用的ip。

? ? ? ? 實際上家用路由器和運營商路由器的性質是類似的?

? ? ?

? 由于私有ip是不能用于公網進行通信的,所以在我們的路由器向上傳遞的時候會進行報文的替換,會將源ip替換成每一個路由器的WAN口ip。?

? ? ? ??

七、路由?

在復雜的網絡結構中, 找出一條通往終點的路線;

????????路由的過程, 就是這樣一跳一跳(Hop by Hop) "問路" 的過程.
????????所謂 "一跳" 就是數據鏈路層中的一個區間. 具體在以太網中指從源MAC地址到目的MAC地址之間的幀傳輸區間.

?IP數據包的傳輸過程也和問路一樣

1.當IP數據包, 到達路由器時, 路由器會先查看目的IP;
2.路由器決定這個數據包是能直接發送給目標主機, 還是需要發送給下一個路由器;
3.依次反復, 一直到達目標IP地址;

那么如何判定當前這個數據包該發送到哪里呢? 這個就依靠每個節點內部維護一個路由表;

?路由表可以使用route命令查看

1.如果目的IP命中了路由表, 就直接轉發即可;
2.路由表中的最后一行,主要由下一跳地址和發送接口兩部分組成,當目的地址與路由表中其它行都不匹配時,就按缺省路由條目規定的接口發送到下一跳地址。

假設某主機上的網絡接口配置和路由表如下:

1.這臺主機有兩個網絡接口,一個網絡接口連到192.168.10.0/24網絡,另一個網絡接口連到
192.168.56.0/24網絡;
2.路由表的Destination是目的網絡地址,Genmask是子網掩碼,Gateway是下一跳地址,Iface是發送接
口,Flags中的U標志表示此條目有效(可以禁用某些 條目),G標志表示此條目的下一跳地址是某個路由器的地址,沒有G標志的條目表示目的網絡地址是與本機接口直接相連的網絡,不必經路由器轉發?

轉發過程例1: 如果要發送的數據包的目的地址是192.168.56.3?

????????1.跟第一行的子網掩碼做與運算得 到192.168.56.0,與第一行的目的網絡地址不符
????????2.再跟第二行的子網掩碼做與運算得 到192.168.56.0,正是第二行的目的網絡地址,因此從eth1接口發送出去;
????????3.由于192.168.56.0/24正 是與eth1 接口直接相連的網絡,因此可以直接發到目的主機,不需要經路由器轉發;?

轉發過程例2: 如果要發送的數據包的目的地址是202.10.1.2

1.依次和路由表前幾項進行對比, 發現都不匹配;
2.按缺省路由條目, 從eth0接口發出去, 發往192.168.10.1路由器;
3.由192.168.10.1路由器根據它的路由表決定下一跳地址;

八、協議格式補充

????????實際上在主機中,報文并沒有通過網絡層直接發出去,而是繼續交給自己的下一層協議(數據鏈路層)

? ? ? ? 而數據鏈路層要求上層不能交付給它過大的報文。它有大小的限制,如圖我們看到該主機的MTU(最大傳輸單元)為1500,MTU指網絡層協議(如 IP)允許傳輸的最大數據包大小(以字節為單位)。

? ? ? ? 如果上層仍然給了比較大的報文,那么我們的ip層就會進行分片轉發。?

(為什么不是數據鏈路層分片呢?按照常識,誰分片誰就應該將其組裝起來。如果由數據鏈路層進行分片和組裝,那么每次轉發到新的路由器,這些報文都會再進行組裝和分片,這樣效率太低了)

因此ip協議為了報文的分片和組裝,其報頭內也規定了相應的字段

????????16位標識,用于唯一標識主機發送的報文. 如果IP報文在數據鏈路層被分片了, 那么每一個片里面的這個id都是相同的

????????第二個三位標志,每個小包的ip協議的3位標志字段中 ,第一位保留(保留的意思是現在不用, 但是還沒想好說不定以后要用到).,第二位置若為0表示允許分片,為1則不允許,第三位是結束標記(表示當前是否是最后一個小包,是的話為0,否則置為1)

????????13位分片偏移: 是分片相對于原始IP報文開始處的偏移

我們怎么知道一個ip報文是被分片了呢? 片偏移 != 0 || 更多分片 == 1?

?怎么確保將分片全部拼到一起?

1.當丟失第一個報文 那么會缺少片偏移為0的報文

2.丟中間報文,片偏移會出現異常,也會被識別出來

3.丟最后一個報文,那么會缺少結束標記為0的報文

????????但是我們并不建議分片,因為有任何一個分片丟失,整個ip報文都需要重傳。同樣的數據,如果進行分片傳輸,需要重傳的概率會變高

????????需要注意的是,每個分片都需要報頭,因此進行分片的時候我們需要給報文添加報頭。如圖我們原本有3000字節的數據,我們對其進行分片,第一個分片為1500字節,第二個分片也為1500字節,但是第一個分片中的報頭是原始報文,但是第二個分片中的報頭是我們添加的,并不是原始報文,因此第二個分片的片偏移為1500而第三個分片的片偏移則為1500 + 1480 = 2980。

數據鏈路層?

數據鏈路層解決的是直接相連的主機(電腦、路由器)之間,進行數據交付的問題。

?一、以太網幀格式

1. 源地址和目的地址是指網卡的硬件地址(也叫MAC地址), 長度是48位,是在網卡出廠時固化的;
2.幀協議類型字段有三種值,分別對應IP、ARP、RARP;
3.幀末尾是CRC校驗碼。

mac幀如何做到解包和封裝? 使用定長報文

?如何做到分用?(即該將我們的有效載荷交給誰) 可以填寫相應的類型字段

二、局域網的通信原理

我們之前講過這個原理。

????????實際上每個主機在局域網內轉發mac幀的時候,局域網內的每一個主機都會收到這個mac幀,只不過除了目的地址符合的主機,其它主機都將這些報文丟棄了而已 。

? ? ? ? 我們某個主機在轉發mac幀的時候,其它主機也有可能在進行轉發,那么就會發生數據碰撞。我們要保證某一時刻局域網內只有一個主機在發送數據,就要進行碰撞檢測并且進行碰撞避免算法。即讓產生數據碰撞的主機都等待一會,然后分別進行數據包的重發。因此我們也能知道,數據鏈路層也會有重發。

? ? ? ? 在局域網中,主機數目越多發生數據碰撞的可能性也就越大。

? ? ? ? 用系統的目光看,實際上局域網可以被看成一個臨界資源。

????????發送數據包的時候,網絡層會進行決策,決定?數據包如何轉發。

????????例如我們圖中A主機將數據包轉發給主機R,那么R主機在數據鏈路層進行解包后會將報文根據類型向上交付,并且又會重新在自己的網絡層進行決策,此時會形成一個新的mac幀,它的源地址和目的地址都被更改了。那么這樣我們就清楚了,mac幀其實只在局域網有效。?

三、認識MTU?

? ? ? ? 在局域網中,我們會使用交換機來隔離碰撞域,減少碰撞。

? ? ? ? 而數據鏈路層本身也會采取相應策略來減少數據碰撞的概率。相較于較長的數據包,較短的數據包更不容易發生碰撞。我們的mac幀的有效載荷被要求不要太長,這個限制即為MTU。


? ? ? ? 1.以太網幀中的數據長度規定最小46字節,最大1500字節,ARP數據包的長度不夠46字節,要在后面補填充位;
????????2.最大值1500稱為以太網的最大傳輸單元(MTU),不同的網絡類型有不同的MTU;
? ? ? ? 3.如果一個數據包從以太網路由到撥號鏈路上,如果數據包長度大于撥號鏈路的MTU了,則需要對數據包進行分片(fragmentation);
? ? ? ? 4.不同的數據鏈路層標準的MTU是不同的;

?四、MTU對IP協議的影響

?MTU對IP協議的影響

由于數據鏈路層MTU的限制, 對于較大的IP數據包要進行分包.

1.將較大的IP包分成多個小包, 并給每個小包打上標簽;
2.每個小包IP協議頭的 16位標識(id) 都是相同的;
3.每個小包的IP協議頭的3位標志字段中, 第2位置為0, 表示允許分片, 第3位來表示結束標記(當前是否是最后一個小包, 是的話置為1, 否則置為0);
4.到達對端時再將這些小包, 會按順序重組, 拼裝到一起返回給傳輸層;
5.一旦這些小包中任意一個小包丟失, 接收端的重組就會失敗. 但是IP層不會負責重新傳輸數據;

五、MTU對于TCP協議的影響?

????????但是我們上面已經說過了,我們并不建議?網絡層進行分包,那么我們就需要在傳輸層協議也指定相應的規則了

1.TCP的一個數據報也不能無限大, 還是受制于MTU. TCP的單個數據報的最大消息長度, 稱為MSS(MaxSegment Size);
2.TCP在建立連接的過程中, 通信雙方會進行MSS協商.
3.最理想的情況下, MSS的值正好是在IP不會被分片處理的最大長度(這個長度仍然是受制于數據鏈路層的MTU).
4.雙方在發送SYN的時候會在TCP頭部寫入自己能支持的MSS值.
5.然后雙方得知對方的MSS值之后, 選擇較小的作為最終MSS.
6.MSS的值就是在TCP首部的40字節變長選項中(kind=2)?

由于每層都需要將有效載荷添加報頭,因此用MTU向上推得到MSS時,MSS必定是更小的。?

六、ARP協議的作用

我們發現,所謂的將數據發送到目標網絡,本質上是通過無數個連續的子網實現的

????????可是我們在網絡層進行決策的時候,只知道目標主機的ip,那么我們在數據鏈路層封裝的時候是怎么知道 目標主機的mac地址的呢?

? ? ? ? 此時我們就需要提到我們的ARP協議了,它可以在局域網中,將目標主機的ip轉化為它的Mac地址

?

1. 先說原理

????????主機A和主機B通信前先會發送ARP請求,這個ARP請求是廣播的。它會標明目標主機B的ip地址,當目標主機B接收到這個ARP請求,它就會根據ARP請求內的目標IP地址進行辨認,如果這個目標主機ip地址是自己,那么它就會給主機A響應一個ARP應答。

2.談arp報頭 并模擬一次arp過程

arp協議與mac幀都是在數據鏈路層,但是arp協議在mac幀的上層。如右圖所示?

arp請求/應答里面的字段值較為固定。

?

每個主機都有可能接收到arp請求和arp應答

????????但是arp請求因為沒有目的mac地址,因此如果不符合,拆分報頭后在arp軟件層?進行判斷后才會丟棄。

????????arp應答因為已經攜帶了目的mac地址,因此如果不符合,經過判斷后會立即丟棄,就不需要向上交付給arp軟件層了。

? ? ? ? 在arp過程中收到的任何arp都是先看op,op決定了arp的類型,是非常重要的字段。

(下面的圖片中這五個主機在同一局域網,中間一條橫線上的arp報文表示把arp報文投入這個局域網中)

arp請求應答例子?

?

而為了提高效率,主機的ip地址和mac地址會被臨時緩存起來, 時間在幾十分鐘不等。

3.arp周邊問題

?1.arp只有在緩存失效的時候才會進行

2.我可以通過我的ip和子網掩碼,得到我的網絡號,然后拼接ip地址,ping所有的主機,就能得到所有主機的ip和mac。

3.如果主機收到多次同樣的arp應答,會以最新的為準。

4.arp欺騙。

主機M可以向主機A發送大量的arp應答,將與IPR相關聯的mac地址改為macM。

這樣主機A向路由器R發送的報文就會發送給主機M,主機M可以將收到的報文全部丟棄,這樣就進行了一次定向讓主機A斷網的操作。

(同時主機M也可以向路由器R發送大量arp請求,實現雙向欺騙)

其它重要協議或技術

1.DNS

????????因此如果我們沒有緩存,那么使用域名訪問服務器時就需要先訪問DNS服務器,拿到域名對應的ip地址?

?2.ICMP協議

?????????ICMP協議是一個 網絡層協議(但是處于ip層之上)
????????一個新搭建好的網絡, 往往需要先進行一個簡單的測試, 來驗證網絡是否暢通; 但是IP協議并不提供可靠傳輸. 如果丟包了, IP協議并不能通知傳輸層是否丟包以及丟包的原因.

?

icmp功能

? ? ? ? ICMP正是提供這種功能的協議; ICMP主要功能包括:
? ? ? ? 1.確認IP包是否成功到達目標地址.
? ? ? ? 2.通知在發送過程中IP包被丟棄的原因.
? ? ? ? 3.ICMP也是基于IP協議工作的. 但是它并不是傳輸層的功能, 因此人們仍然把它歸結為網絡層協議;
? ? ? ? 4.ICMP只能搭配IPv4使用. 如果是IPv6的情況下, 需要是用ICMPv6;?

當你在瀏覽器地址欄輸入一個URL后回車,將會發生的事情?

當你在瀏覽器地址欄輸入一個URL后回車,將會發生的事情?-CSDN博客

一個坑:

????????有些面試官可能會問: telnet是23端口, ssh是22端口, 那么ping是什么端口?
????????千萬注意!!! 這是面試官的圈套
????????ping命令基于ICMP, 是在網絡層. 而端口號, 是傳輸層的內容. 在ICMP中根本就不關注端口號這樣的信息.?

3.NAT技術

NAT技術背景


????????之前我們討論了, IPv4協議中, IP地址數量不充足的問題
????????NAT技術當前解決IP地址不夠用的主要手段, 是路由器的一個重要功能;
? ? ? ? 1.NAT能夠將私有IP對外通信時轉為全局IP. 也就是就是一種將私有IP和全局IP相互轉化的技術方法:
? ? ? ? 2.很多學校, 家庭, 公司內部采用每個終端設置私有IP, 而在路由器或必要的服務器上設置全局IP;
? ? ? ? 3.全局IP要求唯一, 但是私有IP不需要; 在不同的局域網中出現相同的私有IP是完全不影響的;

NAT IP轉換過程?

?????????NAT路由器將源地址從10.0.0.10替換成全局的IP 202.244.174.37;
????????NAT路由器收到外部的數據時, 又會把目標IP從202.244.174.37替換回10.0.0.10;
????????在NAT路由器內部, 有一張自動生成的, 用于地址轉換的表;
????????當 10.0.0.10 第一次向 163.221.120.9 發送數據時就會生成表中的映射關系;

NAPT?

?????????那么問題來了, 如果局域網內, 有多個主機都訪問同一個外網服務器, 那么對于服務器返回的數據中, 目的IP都是相同的.

????????那么NAT路由器如何判定將這個數據包轉發給哪個局域網的主機?
????????這時候NAPT來解決這個問題了. 使用IP+port來建立這個關聯關系

? ? ? ? 而且我們注意圖上內容,NAT不僅僅會替換ip地址,也會對端口號進行替換。

? ? ? ? (我們將源ip與目的ip看作是一個大的字符串,看下圖的表格,在左側,內網中這個字符串是具有唯一性的,同樣的,與其相關聯的替換后的字符串也具有唯一性,為了避免重復,甚至端口號也會被替換。)

?????????這種關聯關系也是由NAT路由器自動維護的. 例如在TCP的情況下, 建立連接時, 就會生成這個表項; 在斷開連接后, 就會刪除這個表項

NAT技術的缺陷

由于NAT依賴這個轉換表, 所以有諸多限制:
? ? ? ? 1.無法從NAT外部向內部服務器建立連接;
? ? ? ? 2.裝換表的生成和銷毀都需要額外開銷;
? ? ? ? 3.通信過程中一旦NAT設備異常, 即使存在熱備, 所有的TCP連接也都會斷開;?

4.代理服務器?

????????路由器往往都具備NAT設備的功能, 通過NAT設備進行中轉, 完成子網設備和其他子網設備的通信過程.
????????代理服務器看起來和NAT設備有一點像. 客戶端像代理服務器發送請求, 代理服務器將請求轉發給真正要請求的服務器; 服務器返回結果后, 代理服務器又把結果回傳給客戶端.

? ? ? ? 我們使用校園網都需要認證,這個認證的過程就是給我們分配ip的過程。(方框代表的是路由器,路由器并不能進行認證工作,但是我們的請求需要通過路由器到學校的服務器)?

正向代理:

反向代理:

許多公司為了使公司內的機器能夠被均勻訪問,實現負載均衡,也會使用代理服務器。

?還有如下情況也是一種代理服務器

????????正常來說我們國內不能訪問國外服務器,但是一些特殊地區可以,那么我們只需要先訪問特殊地區的服務器,然后通過 特殊地區的服務器再訪問國外的服務器。那么我們就可以間接訪問到國外的服務器了

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/89664.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/89664.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/89664.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Nginx入門進階:從零到高手的實戰指南

Nginx 入門與進階玩法指南 一、什么是 Nginx? Nginx(Engine X)是一個高性能的 HTTP 和反向代理服務器,同時也可以作為 IMAP/POP3/SMTP 郵件代理服務器。它最初由俄羅斯程序員 Igor Sysoev 開發,用于解決高并發下 Apa…

NPM組件 alan-baileys 等竊取主機敏感信息

【高危】NPM組件 alan-baileys 等竊取主機敏感信息 漏洞描述 當用戶安裝受影響版本的 alan-baileys 組件包時會竊取用戶的主機名、用戶名、工作目錄、IP地址等信息并發送到攻擊者可控的服務器地址。 MPS編號MPS-wkyd-5v7r處置建議強烈建議修復發現時間2025-07-02投毒倉庫npm…

Python爬蟲實戰:研究httplib2庫相關技術

1. 引言 1.1 研究背景與意義 隨著互聯網的快速發展,網絡上的信息量呈爆炸式增長。如何從海量的網頁中高效地獲取有價值的數據,成為了當前信息技術領域的一個重要研究課題。網絡爬蟲作為一種自動獲取互聯網信息的程序,能夠按照一定的規則,自動地抓取網頁內容并提取和整理信…

【C++】簡單學——模板初階

模板(template) 泛型編程,讓編譯器把我們不想干的事情給干了 類似于typedef,解決了typedef使用不方便地原因(雖然看似寫少了,其實只是編譯器做多了) 例如: 生成兩個棧,…

X-Search:Spring AI實現的AI智能搜索

X-Search AI智能搜索 X-Search使用Spring AI和Spring AI Alibab Graph實現的AI智能搜索系統。 gitee:https://gitee.com/java-ben/x-search github:https://github.com/renpengben/x-search 核心功能 快速開始 git clone https://github.com/renpengben/x-search.git 1.申請…

一臺香港原生ip站群服務器多少錢?

一臺香港原生ip站群服務器多少錢?在香港地區租用原生 IP 站群服務器的價格受多重因素影響,不同配置和服務的組合會導致費用差異顯著。以下是詳細分析:一、影響香港原生 IP 站群服務器價格的核心因素IP 資源成本:原生 IP 由于其注冊…

JavaScript性能優化實戰:從理論到實踐的全方位指南

Hi,我是布蘭妮甜 !JavaScript作為現代Web開發的核心語言,其性能直接影響用戶體驗、轉化率和搜索引擎排名。本文將深入探討JavaScript性能優化的各個方面,從基礎原則到高級技巧,提供一套完整的實戰指南。 文章目錄 一、…

MCU的晶振匹配測試,是否匹配跟哪些因素相關?

晶振能否與目標電路良好匹配,取決于多個相互作用的因素。這些因素可歸納為以下四大類: 【】一、晶振自身特性(核心基礎) 標稱頻率與公差:晶振的基頻精度(如 10ppm)是匹配起點。 負載電容 (CL)&…

前端單元測試覆蓋率工具有哪些,分別有什么優缺點

以下是主流的前端單元測試覆蓋率工具及其優缺點對比,幫助你在項目中根據需求選擇合適的工具:1. Istanbul(NYC) 類型:JavaScript 覆蓋率工具適用框架:通用(React/Vue/Node.js 等)原理…

C語言常用轉換函數實現原理

編程時,經常用到進制轉換、字符轉換。比如軟件界面輸入的數字字符串,如何將字符串處理成數字呢?今天就和大家分享一下。01 字符串轉十六進制 代碼實現: void StrToHex(char *pbDest, char *pbSrc, int nLen) {char h1,h2;char s…

辦公文檔批量打印器 Word、PPT、Excel、PDF、圖片和文本,它都支持批量打印。

辦公文檔批量打印器是一款可以批量打印文檔的工具,其是綠色單文件版,支持添加文件、文件夾。 我之前也介紹過批量打印的軟件,但是都是只支持Office的文檔打印,詳情可移步至——>>大小只有700K的軟件,永久免費&am…

大事件項目記錄13-文章管理接口開發-總

一、文章管理接口。 共有5個,分別為: 1.新增文章; 2.文章列表(條件分頁) ; 3.獲取文章詳情; 4.更新文章; 5.刪除文章。 二、詳解。 1.新增文章。 ArticleController.java: PostMappingpublic R…

如何防止內部威脅:服務器訪問控制與審計策略

內部威脅是指來自組織內部的用戶或設備對服務器和數據的潛在安全威脅。這些威脅可能是由于惡意行為、疏忽或配置錯誤造成的。為了防止內部威脅,必須建立強大的訪問控制和審計策略,確保服務器的安全性和數據完整性。 1. 什么是內部威脅? 1.1 …

科技賦能電網安全:解析絕緣子污穢度在線監測裝置的核心技術與應用價值

絕緣子是電力系統中保障輸電線路安全運行的關鍵設備,其表面污穢積累可能引發閃絡事故,導致線路跳閘甚至電網癱瘓。傳統的人工巡檢方式存在效率低、時效性差等問題,而絕緣子污穢度在線監測裝置通過實時數據采集與分析,為電網安全運…

實際開發如何快速定位和解決死鎖?

一、死鎖的本質與常見場景 1. 死鎖的四大必要條件 互斥:資源同一時間只能被一個線程持有。占有并等待:線程持有資源的同時請求其他資源。不可搶占:資源只能被持有者主動釋放。循環等待:多個線程形成資源的循環依賴鏈。2. 常見死鎖場景 數據庫事務死鎖:-- 事務1 BEGIN; UP…

uniapp實現圖片預覽,懶加載,下拉刷新等

實現的功能 懶加載 lazy-load --對小程序起效果圖片預覽下拉刷新觸底加載更多底下設置安全距離env(safe-area-inset-bottom)右下角固定圖標置頂及刷新功能 效果如圖&#xff1a; 預覽 代碼 <template><view class"image-classify"><uni-segmente…

FFmpeg開發筆記(七十七)Android的開源音視頻剪輯框架RxFFmpeg

《FFmpeg開發實戰&#xff1a;從零基礎到短視頻上線》一書的“第 12 章 FFmpeg的移動開發”介紹了如何使用FFmpeg在手機上剪輯視頻&#xff0c;方便開發者更好地開發類似剪映那樣的視頻剪輯軟件。那么在Android系統上還有一款國產的開源視頻剪輯框架RxFFmpeg&#xff0c;通過該…

小測一下筆記本電腦的VMXNET3和E1000e網卡性能

正文共&#xff1a;999 字 14 圖&#xff0c;預估閱讀時間&#xff1a;1 分鐘 通過上次操作&#xff0c;我們已經實現了將筆記本電腦的ESXi版本從6.0升級到了6.7&#xff08;VMware ESXi 6.7可以成功識別機械硬盤了&#xff09;&#xff0c;并且測得以電腦中的虛擬機作為server…

K8S初始化master節點不成功kubelet.service failed(cgroup driver配置問題)

一、背景 安裝k8s集群&#xff0c;初始化master節點一直不成功。 二、排查 查看日志 ps -ef | grep kube-apiserver [rootzjy01 home]# ps -ef | grep kube-apiserver root 85663 4637 0 12:41 pts/1 00:00:00 grep --colorauto kube-apiserver [rootzjy01 home…

C++ 標準模板庫算法之 transform 用法

目錄 1. 說明 2. 用法示例 1. 說明 std::transform 是一種多功能算法&#xff0c;用于將已知函數應用于一個或多個范圍內的元素&#xff0c;并將結果存儲在輸出范圍內。它主要有兩種形式&#xff1a;一元運算和二元運算。具體來說是在 <algorithm> 標頭中。函數聲明&am…