1 網(wǎng)絡(luò)層
網(wǎng)絡(luò)層作用:在復(fù)雜的網(wǎng)絡(luò)環(huán)境中確定一個(gè)合適的路徑。
tcp/ip協(xié)議,tcp解決可靠性與效率,ip提供在網(wǎng)絡(luò)中傳輸?shù)哪芰Α?/p>
傳輸層決定了單次向下交付數(shù)據(jù)包的大小。
IP協(xié)議
IP(Internet Protocol)協(xié)議是一種網(wǎng)絡(luò)層協(xié)議,用于在互聯(lián)網(wǎng)上進(jìn)行數(shù)據(jù)傳輸。它定義了數(shù)據(jù)如何在網(wǎng)絡(luò)中進(jìn)行分組、尋址和路由。IP協(xié)議是互聯(lián)網(wǎng)的核心協(xié)議之一,它為互聯(lián)網(wǎng)上的每個(gè)設(shè)備分配一個(gè)唯一的IP地址,以便進(jìn)行數(shù)據(jù)交換。
主機(jī): 配有IP地址, 但是一般不進(jìn)行路由控制的設(shè)備
路由器: 即配有IP地址, 又能進(jìn)行路由控制
節(jié)點(diǎn): 主機(jī)和路由器的統(tǒng)稱
協(xié)議頭格式
封裝和解包:定長(zhǎng)報(bào)頭+自描述字段
如何交付(分用):報(bào)頭的8位協(xié)議:udp or tcp
4位版本號(hào)(version): 指定IP協(xié)議的版本, 對(duì)于IPv4來(lái)說(shuō), 就是4.
4位頭部長(zhǎng)度(header length): IP頭部的長(zhǎng)度是多少個(gè)32bit, 也就是 length * 4 的字節(jié)數(shù). 4bit表示最大的數(shù)字是15, 因此IP頭部最大長(zhǎng)度是60字節(jié).
8位服務(wù)類型(Type Of Service): 3位優(yōu)先權(quán)字段(已經(jīng)棄用), 4位TOS字段,和1位保留字段(必須置為0).
4位TOS分別表示: 最小延時(shí), 最大吞吐量, 最高可靠性, 最小成本. 這四者相互沖突, 只能選擇一個(gè). 對(duì)于
ssh/telnet這樣的應(yīng)用程序, 最小延時(shí)比較重要; 對(duì)于ftp這樣的程序, 最大吞吐量比較重要.
- 16位總長(zhǎng)度(total length): IP數(shù)據(jù)報(bào)整體占多少個(gè)字節(jié).
16位標(biāo)識(shí)(id): 唯一的標(biāo)識(shí)主機(jī)發(fā)送的報(bào)文. 如果IP報(bào)文在數(shù)據(jù)鏈路層被分片了, 那么每一個(gè)片里面的這個(gè)
id都是相同的.3位標(biāo)志字段:
第一位保留(保留的意思是現(xiàn)在不用, 但是還沒想好說(shuō)不定以后要用到)
第二位置為1表示禁止分片, 這時(shí)候如果報(bào)文長(zhǎng)度超過(guò)MTU, IP模塊就會(huì)丟棄報(bào)文.(比如配合管理工作做MTU的大小探索時(shí))
第三位表示"更多分片", 如果分片了的話,最后一個(gè)分片置為1, 其他是0. 類似于一個(gè)結(jié)束標(biāo)記.
13位分片偏移(framegament offset): 是分片相對(duì)于原始IP報(bào)文開始處的偏移. 其實(shí)就是在表示當(dāng)前分片在原報(bào)文中處在哪個(gè)位置. 實(shí)際偏移的字節(jié)數(shù)是這個(gè)值 * 8 得到的. 因此, 除了最后一個(gè)報(bào)文之外, 其他報(bào)文的長(zhǎng)度必須是8的整數(shù)倍(否則報(bào)文就不連續(xù)了).
8位生存時(shí)間(Time To Live, TTL): 數(shù)據(jù)報(bào)到達(dá)目的地的最大報(bào)文跳數(shù). 一般是64. 每次經(jīng)過(guò)一個(gè)路由, TTL -= 1, 一直減到0還沒到達(dá), 那么就丟棄了. 這個(gè)字段主要是用來(lái)防止出現(xiàn)路由循環(huán)
8位協(xié)議: 表示上層協(xié)議的類型
16位頭部校驗(yàn)和: 使用CRC進(jìn)行校驗(yàn), 來(lái)鑒別頭部是否損壞.
32位源IP地址和32位目標(biāo)IP地址: 表示發(fā)送端和接收端.
選項(xiàng)字段(不定長(zhǎng), 最多40字節(jié)): 略
鏈路層由于物理特征的原因,一般無(wú)法轉(zhuǎn)發(fā)太大的數(shù)據(jù),鏈路層有一次可以轉(zhuǎn)發(fā)到網(wǎng)絡(luò)的報(bào)文大小的限制(默認(rèn)1500字節(jié),MTU,最大傳輸單元)。
分片:將一個(gè)比較大的ip報(bào)文,拆分成為多個(gè)小的,滿足條件的報(bào)文。分片的行為是網(wǎng)絡(luò)層做的,同樣組裝的行為也必須由對(duì)方的網(wǎng)絡(luò)層做。
為什么要組裝?
對(duì)方給自己的網(wǎng)絡(luò)層是一個(gè)完整的TCP報(bào)文,接收方,在網(wǎng)絡(luò)層向上交付也必須是一個(gè)完整的報(bào)文。協(xié)議的一致性,也減少了協(xié)議編寫和維護(hù)的成本。IP分片和組裝的行為TCP是不知道也不關(guān)心的。
分片是如何做到的?
在網(wǎng)絡(luò)層中,分片是通過(guò)IP協(xié)議來(lái)實(shí)現(xiàn)的。IP協(xié)議定義了將數(shù)據(jù)包分割成較小的片段并在網(wǎng)絡(luò)上進(jìn)行傳輸?shù)臋C(jī)制。 以下是分片的工作過(guò)程:
數(shù)據(jù)包分割:發(fā)送端將較大的數(shù)據(jù)包分割成較小的片段,每個(gè)片段稱為分片。每個(gè)分片都包含IP頭部和一部分?jǐn)?shù)據(jù)。
分片標(biāo)識(shí):每個(gè)分片都被賦予一個(gè)唯一的標(biāo)識(shí)號(hào),以便接收端能夠?qū)⑺鼈冎匦陆M裝成原始的數(shù)據(jù)包。這個(gè)標(biāo)識(shí)號(hào)存儲(chǔ)在IP頭部的標(biāo)識(shí)字段中。
分片偏移:每個(gè)分片還包含一個(gè)分片偏移字段,指示該分片在原始數(shù)據(jù)包中的位置。這個(gè)偏移值用于確定分片的順序以及它們?cè)谥匦陆M裝時(shí)的位置。
分片大?。好總€(gè)分片都有一個(gè)最大長(zhǎng)度限制,這是由網(wǎng)絡(luò)的最大傳輸單元(MTU)決定的。如果數(shù)據(jù)包的大小超過(guò)了MTU的限制,就需要進(jìn)行分片。
分片傳輸:分片被單獨(dú)發(fā)送到目的地,通過(guò)網(wǎng)絡(luò)傳輸。每個(gè)分片都獨(dú)立地經(jīng)過(guò)路由器和其他網(wǎng)絡(luò)設(shè)備,可能會(huì)采取不同的路徑到達(dá)目的地。
分片重組:接收端收到分片后,根據(jù)IP頭部的標(biāo)識(shí)號(hào)和分片偏移字段,將它們重新組裝成原始的數(shù)據(jù)包。接收端使用這些信息確定分片的順序和位置,以正確地重建原始數(shù)據(jù)包。
需要注意的是,由于網(wǎng)絡(luò)的不可靠性,分片的丟失或延遲可能會(huì)導(dǎo)致數(shù)據(jù)包無(wú)法正確重組。因此,網(wǎng)絡(luò)層的分片機(jī)制需要依賴上層的傳輸層協(xié)議(如TCP)來(lái)確保數(shù)據(jù)的可靠傳輸。
分片嚴(yán)重不推薦,分片的壞處:
- 丟包是有概率的,分片會(huì)增大丟包的概率
網(wǎng)段劃分
每個(gè)國(guó)家的IP地址,在開始的時(shí)候,就已經(jīng)被劃分好了,國(guó)際上的路由器都有自己的路由表,可以進(jìn)行國(guó)家和國(guó)家的轉(zhuǎn)發(fā)。
IP地址分為兩個(gè)部分,網(wǎng)絡(luò)號(hào)和主機(jī)號(hào)
- 網(wǎng)絡(luò)號(hào):保證相互連接的兩個(gè)網(wǎng)段具有不同的標(biāo)識(shí)
- 主機(jī)號(hào):同一網(wǎng)段內(nèi),主機(jī)之間具有相同的網(wǎng)絡(luò)號(hào),但是必須有不同的主機(jī)號(hào)
- 不同的子網(wǎng)其實(shí)就是把網(wǎng)絡(luò)號(hào)相同的主機(jī)放到一起
- 如果在子網(wǎng)中新增一臺(tái)主機(jī),則這臺(tái)主機(jī)的網(wǎng)絡(luò)號(hào)和這個(gè)子網(wǎng)的網(wǎng)絡(luò)號(hào)一致,但是主機(jī)號(hào)必須不能和子網(wǎng)中其他主機(jī)重復(fù)。
劃分原因
- 便于定位
- 提高查找效率
DHCP
通過(guò)合理的設(shè)置主機(jī)號(hào)和網(wǎng)絡(luò)號(hào),就可以保證在相互連接的網(wǎng)絡(luò)中,每臺(tái)主機(jī)的IP地址都不相同。
手動(dòng)管理子網(wǎng)內(nèi)的IP,是一個(gè)相當(dāng)麻煩的事情。
有一種技術(shù)叫做DHCP,能夠自動(dòng)的給子網(wǎng)內(nèi)新增主機(jī)節(jié)點(diǎn)分配IP地址,避免了手動(dòng)管理IP的不便
一般的路由器都帶有DHCP的功能,因此路由器也可以看做一個(gè)DHCP服務(wù)器
CIDR:基于子網(wǎng)掩碼的劃分方式
過(guò)去曾經(jīng)提出一種劃分網(wǎng)絡(luò)和主機(jī)號(hào)的方案,把所有IP地址分為五類。分類劃分法:
- 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的飛速發(fā)展,這種劃分方案的局限性很快顯現(xiàn)出來(lái),大多數(shù)組織都申請(qǐng)B類網(wǎng)絡(luò)地址, 導(dǎo)致B類地址很快就分配完了, 而A類卻浪費(fèi)了大量地址。
針對(duì)這種情況提出了新的劃分方案,稱為CIDR。
引入一個(gè)額外的子網(wǎng)掩碼(subnet mask)來(lái)區(qū)分網(wǎng)絡(luò)號(hào)和主機(jī)號(hào);
子網(wǎng)掩碼也是一個(gè)32位的正整數(shù). 通常用一串 “0” 來(lái)結(jié)尾;
將IP地址和子網(wǎng)掩碼進(jìn)行 “按位與” 操作, 得到的結(jié)果就是網(wǎng)絡(luò)號(hào);
網(wǎng)絡(luò)號(hào)和主機(jī)號(hào)的劃分與這個(gè)IP地址是A類、B類還是C類無(wú)關(guān);
不同路由器配置不同位數(shù)的子網(wǎng)掩碼即可看到不同的網(wǎng)絡(luò)號(hào)。
IP地址和子網(wǎng)掩碼還有一種更簡(jiǎn)潔的表示方法,例如140.252.20.68/24,表示IP地址為140.252.20.68, 子網(wǎng)掩碼的高24位是1,也就是255.255.255.0
特殊的IP號(hào)
- 將IP地址中的主機(jī)地址全部設(shè)為0, 就成為了網(wǎng)絡(luò)號(hào), 代表這個(gè)局域網(wǎng)
- 將IP地址中的主機(jī)地址全部設(shè)為1, 就成為了廣播地址, 用于給同一個(gè)鏈路中相互連接的所有主機(jī)發(fā)送數(shù)據(jù)包;
- 127.*的IP地址用于本機(jī)環(huán)回(loop back)測(cè)試,通常是127.0.0.1
IP地址的數(shù)量限制
我們知道, IP地址(IPv4)是一個(gè)4字節(jié)32位的正整數(shù). 那么一共只有 2的32次方 個(gè)IP地址, 大概是43億左右. 而TCP/IP
協(xié)議規(guī)定, 每個(gè)主機(jī)都需要有一個(gè)IP地址.
這意味著, 一共只有43億臺(tái)主機(jī)能接入網(wǎng)絡(luò)么?
實(shí)際上, 由于一些特殊的IP地址的存在, 數(shù)量遠(yuǎn)不足43億; 另外IP地址并非是按照主機(jī)臺(tái)數(shù)來(lái)配置的, 而是每一個(gè)網(wǎng)卡
都需要配置一個(gè)或多個(gè)IP地址.
CIDR在一定程度上緩解了IP地址不夠用的問(wèn)題(提高了利用率, 減少了浪費(fèi), 但是IP地址的絕對(duì)上限并沒有增加), 仍然
不是很夠用. 這時(shí)候有三種方式來(lái)解決:
- 動(dòng)態(tài)分配IP地址: 只給接入網(wǎng)絡(luò)的設(shè)備分配IP地址. 因此同一個(gè)MAC地址的設(shè)備, 每次接入互聯(lián)網(wǎng)中, 得到的IP地址不一定是相同的;
- NAT技術(shù)(主流方案);
- IPv6: IPv6并不是IPv4的簡(jiǎn)單升級(jí)版. 這是互不相干的兩個(gè)協(xié)議, 彼此并不兼容; IPv6用16字節(jié)128位來(lái)表示一個(gè)IP地址; 但是目前IPv6還沒有普及;
私有IP地址和公網(wǎng)IP地址
RFC 1918規(guī)定了用于組建局域網(wǎng)的私有IP地址:
10.*
,前8位是網(wǎng)絡(luò)號(hào),共16,777,216個(gè)地址172.16.
到172.31.
,前12位是網(wǎng)絡(luò)號(hào),共1,048,576個(gè)地址192.168.*
,前16位是網(wǎng)絡(luò)號(hào),共65,536個(gè)地址
包含在這個(gè)范圍中的, 都成為私有IP, 其余的則稱為全局IP(或公網(wǎng)IP);
默認(rèn)網(wǎng)關(guān):特定子網(wǎng)中的第一臺(tái)主機(jī)
一個(gè)路由器有兩套地址:
- 對(duì)內(nèi):Lan口IP,局域網(wǎng)ip
- 對(duì)外:WAN口IP,自己所在上級(jí)子網(wǎng)給自己分配的ip
路由器LAN口連接的主機(jī), 都從屬于當(dāng)前這個(gè)路由器的子網(wǎng)中。
不同的路由器,子網(wǎng)IP其實(shí)都是一樣的(通常都是192.168.1.1)。子網(wǎng)內(nèi)的主機(jī)IP地址不能重復(fù),但是子網(wǎng)之間的IP地址就可以重復(fù)了。
子網(wǎng)內(nèi)的主機(jī)需要和外網(wǎng)進(jìn)行通信時(shí), 路由器將IP首部中的IP地址進(jìn)行替換(替換成WAN口IP), 這樣逐級(jí)替換,最終數(shù)據(jù)包中的IP地址成為一個(gè)公網(wǎng)IP.。這種技術(shù)稱為NAT(Network Address Translation,網(wǎng)絡(luò)地址轉(zhuǎn)換)。
如果希望我們自己實(shí)現(xiàn)的服務(wù)器程序,能夠在公網(wǎng)上被訪問(wèn)到,就需要把程序部署在一臺(tái)具有外網(wǎng)IP的服務(wù)器上。這樣的服務(wù)器可以在阿里云/騰訊云上進(jìn)行購(gòu)買。
源IP地址在不同內(nèi)網(wǎng),不同層級(jí)的網(wǎng)絡(luò)節(jié)點(diǎn)中轉(zhuǎn)發(fā),被替換的技術(shù),叫做NAT。
路由
路由是指在計(jì)算機(jī)網(wǎng)絡(luò)中,根據(jù)特定的算法和規(guī)則,將數(shù)據(jù)包從源主機(jī)傳送到目的主機(jī)的過(guò)程。路由是網(wǎng)絡(luò)通信中的核心概念,它決定了數(shù)據(jù)包在網(wǎng)絡(luò)中的傳輸路徑和下一跳的目的地。
在復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu)中,找出一條通往終點(diǎn)的路線。
路由的過(guò)程,相當(dāng)于一跳一跳“問(wèn)路”的過(guò)程。所謂的“一跳”,就是數(shù)據(jù)鏈路層中的一個(gè)區(qū)間,具體在以太網(wǎng)中指從源MAC地址之間的幀傳輸區(qū)間。
IP數(shù)據(jù)包的傳輸也和問(wèn)路一樣:
- 當(dāng)IP數(shù)據(jù)包, 到達(dá)路由器時(shí), 路由器會(huì)先查看目的IP;
- 路由器決定這個(gè)數(shù)據(jù)包是能直接發(fā)送給目標(biāo)主機(jī), 還是需要發(fā)送給下一個(gè)路由器;
- 依次反復(fù), 一直到達(dá)目標(biāo)IP地址;
- 通過(guò)每個(gè)節(jié)點(diǎn)內(nèi)維護(hù)的路由表判定當(dāng)前數(shù)據(jù)包應(yīng)該發(fā)送到哪里。
路由表
路由表是路由器或交換機(jī)中存儲(chǔ)的一張表格,用于決定數(shù)據(jù)包在網(wǎng)絡(luò)中的傳輸路徑。路由表包含了網(wǎng)絡(luò)地址和對(duì)應(yīng)的下一跳信息,用于指導(dǎo)數(shù)據(jù)包的轉(zhuǎn)發(fā)。
路由表可以由網(wǎng)絡(luò)管理員手動(dòng)維護(hù)(靜態(tài)路由),也可以通過(guò)一些算法自動(dòng)生成(動(dòng)態(tài)路由)。
- 路由表可以使用route命令查看
- 如果目的IP命中了路由表, 就直接轉(zhuǎn)發(fā)即可;
- 路由表中的最后一行,主要由下一跳地址和發(fā)送接口兩部分組成,當(dāng)目的地址與路由表中其它行都不匹配時(shí),就按缺省路由條目規(guī)定的接口發(fā)送到下一跳地址。
小結(jié):
- 目的ip
- 子網(wǎng)劃分
- 路由表查找與路由算法
- IP沒有解決設(shè)備在轉(zhuǎn)發(fā)的具體功能,IP提供的是轉(zhuǎn)發(fā)的策略,即路徑選擇。
局域網(wǎng)數(shù)據(jù)轉(zhuǎn)發(fā)問(wèn)題——>數(shù)據(jù)鏈路層解決
2 數(shù)據(jù)鏈路層 — 局域網(wǎng)的轉(zhuǎn)發(fā)問(wèn)題
用于兩個(gè)設(shè)備(同一種數(shù)據(jù)鏈路節(jié)點(diǎn))之間進(jìn)行傳遞。
每一個(gè)節(jié)點(diǎn)本質(zhì)都是子網(wǎng)轉(zhuǎn)發(fā)。
以太網(wǎng)
認(rèn)識(shí)以太網(wǎng)
以太網(wǎng)(Ethernet)是一種常用的局域網(wǎng)(LAN)技術(shù),用于在計(jì)算機(jī)和其他網(wǎng)絡(luò)設(shè)備之間傳輸數(shù)據(jù)。它是一種基于共享介質(zhì)的傳輸技術(shù),最初由Xerox、Intel和DEC(Digital Equipment Corporation)共同開發(fā)。
- "以太網(wǎng)"不是一種具體的網(wǎng)絡(luò),而是一種技術(shù)標(biāo)準(zhǔn)。既包含了數(shù)據(jù)鏈路層的內(nèi)容,也包含; 一些物理層的內(nèi)容。例如:規(guī)定了網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),訪問(wèn)控制方式,傳輸速率等等。
- 以太網(wǎng)中的網(wǎng)線必須使用雙絞線,傳輸速率有10M,100M,1000M等
- 以太網(wǎng)是當(dāng)前應(yīng)用最廣泛的局域網(wǎng)技術(shù),和以太網(wǎng)并列的還要令牌環(huán)網(wǎng),無(wú)線LAN等
貓:調(diào)制解調(diào)器,連接光纖
以太網(wǎng)幀格式
源地址和目的地址是指網(wǎng)卡的硬件地址(也叫MAC地址), 長(zhǎng)度是48位,是在網(wǎng)卡出廠時(shí)固化的;
幀協(xié)議類型字段有三種值,分別對(duì)應(yīng)IP、ARP、RARP;
幀末尾是CRC校驗(yàn)碼。
局域網(wǎng)通信原理
如果局域網(wǎng)中,同時(shí)有多臺(tái)主機(jī)都在發(fā)送數(shù)據(jù),數(shù)據(jù)之間就發(fā)生了碰撞問(wèn)題。發(fā)生碰撞,數(shù)據(jù)則不能使用,因此盡量不能發(fā)生碰撞問(wèn)題。
一旦發(fā)生數(shù)據(jù)碰撞問(wèn)題。會(huì)觸發(fā)碰撞避免算法。
碰撞避免算法:發(fā)送主機(jī)會(huì)休息隨機(jī)時(shí)間,然后再重新發(fā)送。
為了減少數(shù)據(jù)碰撞,此時(shí)使用交換機(jī)。
交換機(jī):劃分碰撞域。
局域網(wǎng)資源本質(zhì)類似于一個(gè)臨界資源。
注意:
- 局域網(wǎng)中主機(jī)越少越好
- 局域網(wǎng)數(shù)據(jù)幀發(fā)送的時(shí)候,數(shù)據(jù)幀過(guò)短會(huì)導(dǎo)致攜帶有效信息較少,數(shù)據(jù)幀太長(zhǎng)會(huì)容易產(chǎn)生數(shù)據(jù)碰撞,因此以太網(wǎng)幀中的數(shù)據(jù)長(zhǎng)度規(guī)定最小46字節(jié),最大1500字節(jié)。
MTU
MTU相當(dāng)于發(fā)快遞時(shí)對(duì)包裹尺寸的限制. 這個(gè)限制是不同的數(shù)據(jù)鏈路對(duì)應(yīng)的物理層, 產(chǎn)生的限制.
- 以太網(wǎng)幀中的數(shù)據(jù)長(zhǎng)度規(guī)定最小46字節(jié),最大1500字節(jié),ARP數(shù)據(jù)包的長(zhǎng)度不夠46字節(jié),要在后面補(bǔ)填充位;
- 最大值1500稱為以太網(wǎng)的最大傳輸單元(MTU),不同的網(wǎng)絡(luò)類型有不同的MTU;
- 如果一個(gè)數(shù)據(jù)包從以太網(wǎng)路由到撥號(hào)鏈路上,數(shù)據(jù)包長(zhǎng)度大于撥號(hào)鏈路的MTU了,則需要對(duì)數(shù)據(jù)包進(jìn)行分片(fragmentation);
- 不同的數(shù)據(jù)鏈路層標(biāo)準(zhǔn)的MTU是不同的;
MTU對(duì)IP協(xié)議的影響
由于數(shù)據(jù)鏈路層MTU的限制,對(duì)于較大的IP數(shù)據(jù)包要進(jìn)行分包
將較大的IP包分成多個(gè)小包, 并給每個(gè)小包打上標(biāo)簽;
每個(gè)小包IP協(xié)議頭的 16位標(biāo)識(shí)(id) 都是相同的;
每個(gè)小包的IP協(xié)議頭的3位標(biāo)志字段中, 第2位置為0, 表示允許分片, 第3位來(lái)表示結(jié)束標(biāo)記(當(dāng)前是否是最后一個(gè)小包, 是的話置為1, 否則置為0);
到達(dá)對(duì)端時(shí)再將這些小包, 會(huì)按順序重組, 拼裝到一起返回給傳輸層;
一旦這些小包中任意一個(gè)小包丟失, 接收端的重組就會(huì)失敗. 但是IP層不會(huì)負(fù)責(zé)重新傳輸數(shù)據(jù);
MTU對(duì)UDP協(xié)議的影響
一旦UDP攜帶的數(shù)據(jù)超過(guò)1472(1500 - 20(IP首部) - 8(UDP首部)), 那么就會(huì)在網(wǎng)絡(luò)層分成多個(gè)IP數(shù)據(jù)報(bào).
這多個(gè)IP數(shù)據(jù)報(bào)有任意一個(gè)丟失, 都會(huì)引起接收端網(wǎng)絡(luò)層重組失敗. 那么這就意味著, 如果UDP數(shù)據(jù)報(bào)在網(wǎng)絡(luò)層被分片, 整個(gè)數(shù)據(jù)被丟失的概率就大大增加了.
MTU對(duì)TCP協(xié)議的影響
TCP的一個(gè)數(shù)據(jù)報(bào)也不能無(wú)限大, 還是受制于MTU. TCP的單個(gè)數(shù)據(jù)報(bào)的最大消息長(zhǎng)度, 稱為MSS(MaxSegment Size);
TCP在建立連接的過(guò)程中, 通信雙方會(huì)進(jìn)行MSS協(xié)商.
最理想的情況下, MSS的值正好是在IP不會(huì)被分片處理的最大長(zhǎng)度(這個(gè)長(zhǎng)度仍然是受制于數(shù)據(jù)鏈路層的MTU).
雙方在發(fā)送SYN的時(shí)候會(huì)在TCP頭部寫入自己能支持的MSS值.
然后雙方得知對(duì)方的MSS值之后, 選擇較小的作為最終MSS.
MSS的值就是在TCP首部的40字節(jié)變長(zhǎng)選項(xiàng)中(kind=2);
局域網(wǎng)受到攻擊原理
向局域網(wǎng)中發(fā)送大量垃圾請(qǐng)求導(dǎo)致數(shù)據(jù)碰撞。
ARP協(xié)議
ARP(Address Resolution Protocol)是一種網(wǎng)絡(luò)協(xié)議,用于將IP地址映射到MAC地址,以實(shí)現(xiàn)在局域網(wǎng)中的主機(jī)之間進(jìn)行通信。
在局域網(wǎng)中,主機(jī)之間通常使用IP地址進(jìn)行通信,而以太網(wǎng)(Ethernet)使用MAC地址來(lái)標(biāo)識(shí)每個(gè)網(wǎng)絡(luò)接口。ARP協(xié)議充當(dāng)了IP地址和MAC地址之間的橋梁,通過(guò)查詢和維護(hù)一個(gè)ARP緩存表,將IP地址解析為對(duì)應(yīng)的MAC地址。
ARP不是一個(gè)單純的數(shù)據(jù)鏈路層的協(xié)議,而是一個(gè)介于數(shù)據(jù)鏈路層和網(wǎng)絡(luò)層之間的協(xié)議。
ARP數(shù)據(jù)報(bào)格式
- 硬件類型:鏈路層網(wǎng)絡(luò)類型,1指以太網(wǎng)
- 協(xié)議類型指:要轉(zhuǎn)換的地址類型,0x0800為IP地址
- 硬件地址長(zhǎng)度:對(duì)于以太網(wǎng)地址為6字節(jié);
- 協(xié)議地址長(zhǎng)度:對(duì)于和IP地址為4字節(jié);
- op:
- 字段為1:ARP請(qǐng)求
- 字段為2:ARP應(yīng)答。
注意:
- 任何主機(jī)可能之前向目標(biāo)主機(jī)發(fā)起過(guò)ARP請(qǐng)求,注定了,未來(lái)會(huì)收到對(duì)應(yīng)的ARP應(yīng)答
- 局域網(wǎng)中:任何一臺(tái)主機(jī)收到ARP的時(shí)候,可能是一個(gè)應(yīng)答,有可能是一個(gè)請(qǐng)求。因此收到arp,應(yīng)該首先查看op,查看是請(qǐng)求還是應(yīng)答,如果是請(qǐng)求,再查看目的IP與自己是否匹配,如果不匹配則丟掉。
ARP協(xié)議工作過(guò)程
ARP請(qǐng)求:當(dāng)主機(jī)A需要與主機(jī)B通信時(shí),它首先檢查本地的ARP緩存表,查看是否已經(jīng)知道主機(jī)B的MAC地址。如果沒有,主機(jī)A將發(fā)送一個(gè)ARP請(qǐng)求廣播到局域網(wǎng)上的所有主機(jī),詢問(wèn)“誰(shuí)擁有IP地址為B的設(shè)備的MAC地址?”該請(qǐng)求包含主機(jī)A的IP地址和MAC地址。
ARP應(yīng)答:當(dāng)主機(jī)B收到ARP請(qǐng)求后,它會(huì)檢查自己的IP地址是否與請(qǐng)求中的目標(biāo)IP地址匹配。如果匹配,主機(jī)B將發(fā)送一個(gè)ARP應(yīng)答,包含自己的IP地址和MAC地址。
ARP緩存更新:主機(jī)A收到ARP應(yīng)答后,將主機(jī)B的IP地址和MAC地址添加到本地的ARP緩存表中,以便將來(lái)的通信使用。
數(shù)據(jù)通信:在主機(jī)A知道主機(jī)B的MAC地址后,它可以使用MAC地址作為目標(biāo)地址,將數(shù)據(jù)包直接發(fā)送到主機(jī)B。
ARP協(xié)議使用廣播方式進(jìn)行通信,因此只能在同一個(gè)局域網(wǎng)中進(jìn)行操作。如果通信的目標(biāo)設(shè)備不在同一個(gè)局域網(wǎng)中,需要使用其他協(xié)議(如ARP的擴(kuò)展協(xié)議Proxy ARP)或者路由器來(lái)實(shí)現(xiàn)跨網(wǎng)絡(luò)的地址解析。
如何獲取一下所處的局域網(wǎng)中,所有主機(jī)的MAC和IP地址?
- ifconfig 查詢后,將自己的IP地址和子網(wǎng)掩碼進(jìn)行按位與,得到網(wǎng)絡(luò)號(hào)
- 例如得到網(wǎng)絡(luò)號(hào)172.28.71.0,這是使用while循環(huán)進(jìn)行ping
while [1.254] ping -c1 172.28.71.number ; number++; done
- 則可緩存各IP跟MAC之間的映射關(guān)系
- 可以通過(guò)
arp -a
查看剛才緩存的映射關(guān)系
arp偽裝
在A和B不知情的情況下成為中間人,arp欺騙
注意:
- 在網(wǎng)絡(luò)轉(zhuǎn)發(fā)過(guò)程中,目的IP不變,MAC幀報(bào)頭會(huì)改變。
- 任何一個(gè)主機(jī)都暫時(shí)無(wú)法得知下一跳的MAC地址,必須知道要不然無(wú)法封裝MAC幀。通過(guò)arp協(xié)議知道目的IP地址的MAC地址。
- arp請(qǐng)求成功之后,請(qǐng)求方會(huì)暫時(shí)將IP和MAC地址的映射關(guān)系暫時(shí)保存下來(lái)(保存一段時(shí)間)。
- arp的過(guò)程會(huì)在網(wǎng)絡(luò)中的任何路徑隨時(shí)發(fā)生
3 DNS(Domain Name System)
屬于應(yīng)用層協(xié)議,DNS是一整套從域名映射到IP的系統(tǒng),用于將域名解析與對(duì)應(yīng)IP地址的網(wǎng)絡(luò)協(xié)議。
TCP/IP中使用IP地址和端口號(hào)來(lái)確定網(wǎng)絡(luò)上的一臺(tái)主機(jī)的一個(gè)程序. 但是IP地址不方便記憶。
于是人們發(fā)明了一種叫主機(jī)名的東西, 是一個(gè)字符串, 并且使用hosts文件來(lái)描述主機(jī)名和IP地址的關(guān)系.
最初,通過(guò)互聯(lián)網(wǎng)信息中心(SRI-NIC)來(lái)管理這個(gè)hosts文件,如果一個(gè)新計(jì)算機(jī)要接入網(wǎng)絡(luò),或者某個(gè)計(jì)算機(jī)IP變更,都需要到信息中心申請(qǐng)變更hosts文件。其他計(jì)算機(jī)也需要定期下載更新新版本的hosts文件才能正確上網(wǎng)。
這種方法非常麻煩,于是產(chǎn)生了DNS系統(tǒng)。
- 一個(gè)組織的系統(tǒng)管理機(jī)構(gòu), 維護(hù)系統(tǒng)內(nèi)的每個(gè)主機(jī)的IP和主機(jī)名的對(duì)應(yīng)關(guān)系.
- 如果新計(jì)算機(jī)接入網(wǎng)絡(luò), 將這個(gè)信息注冊(cè)到數(shù)據(jù)庫(kù)中;
- 用戶輸入域名的時(shí)候, 會(huì)自動(dòng)查詢DNS服務(wù)器, 由DNS服務(wù)器檢索數(shù)據(jù)庫(kù), 得到對(duì)應(yīng)的IP地址.
至今,我們的計(jì)算機(jī)上仍然保留了hosts文件。在域名解析的過(guò)程中仍然會(huì)優(yōu)先查找hosts文件的內(nèi)容。
- 命令查看:
cat /etc/hosts
域名簡(jiǎn)介
主域名是用來(lái)識(shí)別主機(jī)名稱和主機(jī)所屬的組織機(jī)構(gòu)的一種分層結(jié)構(gòu)的名稱。
www.baidu.com
以上面的域名為例,域名使用,連接
- com:一級(jí)域名,表示這是一個(gè)企業(yè)域名。同級(jí)的還有"net"(網(wǎng)絡(luò)提供商),“org”(非盈利組織)等。
- baidu:二級(jí)域名,公司名。
- www:只是一種習(xí)慣用法。之前人們?cè)谑褂糜蛎麜r(shí),往往命名成類似于ftp.xxx.xxx/www.xxx.xxx這樣的格式,來(lái)表示主機(jī)支持的協(xié)議。
域名解析工具
可以使用dig工具分析DNS過(guò)程
yum insatll bind-utils
dig www.baidu.com
域名解析服務(wù)呈現(xiàn)出一定的區(qū)域性,區(qū)域的域名解析服務(wù)。
根域名服務(wù)器:
根域名解析服務(wù)器是互聯(lián)網(wǎng)域名系統(tǒng)(DNS)中的最高級(jí)別服務(wù)器。它負(fù)責(zé)解析全球范圍內(nèi)的頂級(jí)域名(如.com、.net、.org等)的IP地址,并將請(qǐng)求轉(zhuǎn)發(fā)給相應(yīng)的頂級(jí)域名服務(wù)器。
根域名解析服務(wù)器的主要作用是提供域名解析的起始點(diǎn)。當(dāng)用戶在瀏覽器中輸入一個(gè)域名時(shí),例如www.example.com,瀏覽器會(huì)向本地域名解析服務(wù)器發(fā)送一個(gè)域名解析請(qǐng)求。如果本地域名解析服務(wù)器無(wú)法直接解析該域名,它會(huì)向根域名解析服務(wù)器發(fā)送一個(gè)請(qǐng)求。
根域名解析服務(wù)器的IP地址是固定的,因此本地域名解析服務(wù)器可以直接發(fā)送請(qǐng)求到根域名解析服務(wù)器的IP地址。根域名解析服務(wù)器會(huì)根據(jù)請(qǐng)求中的頂級(jí)域名信息,將請(qǐng)求轉(zhuǎn)發(fā)給相應(yīng)的頂級(jí)域名服務(wù)器。頂級(jí)域名服務(wù)器負(fù)責(zé)解析該頂級(jí)域名下的二級(jí)域名(如example.com)的IP地址,并將結(jié)果返回給根域名解析服務(wù)器。
根域名解析服務(wù)器通常由互聯(lián)網(wǎng)域名系統(tǒng)的管理機(jī)構(gòu)維護(hù)和管理,例如國(guó)際互聯(lián)網(wǎng)名稱與數(shù)字地址分配機(jī)構(gòu)(ICANN)。全球共有13臺(tái)根域名解析服務(wù)器,分布在世界各地,以提供高可靠性和負(fù)載均衡的服務(wù)。
有時(shí)候QQ、微信、游戲等登陸正常,但是網(wǎng)頁(yè)打不開?
DNS解析可能出現(xiàn)問(wèn)題。DNS解析將域名轉(zhuǎn)換為IP地址,如果DNS服務(wù)器出現(xiàn)故障或配置錯(cuò)誤,就無(wú)法正確解析域名,導(dǎo)致網(wǎng)頁(yè)無(wú)法打開。
思考:在瀏覽器輸入一個(gè)url后,會(huì)發(fā)生哪些過(guò)程?
4 NAT技術(shù)
NAT(Network Address Translation,網(wǎng)絡(luò)地址轉(zhuǎn)換)技術(shù)是一種在計(jì)算機(jī)網(wǎng)絡(luò)中常用的技術(shù),用于將私有IP地址轉(zhuǎn)換為公共IP地址,以實(shí)現(xiàn)多個(gè)設(shè)備共享一個(gè)公共IP地址的功能。
NAT技術(shù)的主要作用是解決IPv4地址資源的短缺問(wèn)題。由于IPv4地址空間有限,無(wú)法為每個(gè)設(shè)備都分配一個(gè)唯一的公共IP地址。NAT技術(shù)通過(guò)在網(wǎng)絡(luò)邊界設(shè)備(如路由器或防火墻)上進(jìn)行地址轉(zhuǎn)換,將內(nèi)部私有IP地址映射到外部公共IP地址上,從而實(shí)現(xiàn)多個(gè)設(shè)備共享一個(gè)公共IP地址。
NAT技術(shù)的工作原理如下:
- 內(nèi)部設(shè)備發(fā)送數(shù)據(jù)包到外部網(wǎng)絡(luò)時(shí),源IP地址被替換為路由器的公共IP地址,同時(shí)在NAT表中記錄映射關(guān)系。
- 外部網(wǎng)絡(luò)返回?cái)?shù)據(jù)包給路由器時(shí),路由器根據(jù)NAT表中的映射關(guān)系將目標(biāo)IP地址轉(zhuǎn)換為內(nèi)部設(shè)備的私有IP地址。
- 內(nèi)部設(shè)備接收到數(shù)據(jù)包后進(jìn)行處理。
那么問(wèn)題來(lái)了, 如果局域網(wǎng)內(nèi), 有多個(gè)主機(jī)都訪問(wèn)同一個(gè)外網(wǎng)服務(wù)器, 那么對(duì)于服務(wù)器返回的數(shù)據(jù)中, 目的IP都是相同的。那么NAT路由器如何判定將這個(gè)數(shù)據(jù)包轉(zhuǎn)發(fā)給哪個(gè)局域網(wǎng)的主機(jī)?
這時(shí)候NAPT來(lái)解決這個(gè)問(wèn)題了. 使用IP+port來(lái)建立這個(gè)關(guān)聯(lián)關(guān)系。
NAPT
在進(jìn)行源地址轉(zhuǎn)換的過(guò)程中,可能不一定只替換源IP,必要的時(shí)候,源端口也要被替換。
路由器在NAT轉(zhuǎn)換的過(guò)程中,除了單純的替換,還會(huì)為我們根據(jù)報(bào)文請(qǐng)求的四元組構(gòu)建一個(gè)映射關(guān)系。
源IP表示唯一的一臺(tái)主機(jī),源端口表示該主機(jī)上的唯一的一個(gè)進(jìn)程。則源IP+源端口表示當(dāng)前內(nèi)網(wǎng)中唯一的一個(gè)進(jìn)程。
無(wú)論從內(nèi)向外,還是從外向內(nèi),都能在各自的網(wǎng)絡(luò)中表示唯一性,所以,這個(gè)映射關(guān)系是互為KEY值的。
NAT技術(shù)的缺陷
由于NAT依賴這個(gè)轉(zhuǎn)換表, 所以有諸多限制:
- 無(wú)法從NAT外部向內(nèi)部服務(wù)器建立連接;
- 裝換表的生成和銷毀都需要額外開銷;
- 通信過(guò)程中一旦N AT設(shè)備異常, 即使存在熱備, 所有的TCP連接也都會(huì)斷開;
內(nèi)網(wǎng)穿透技術(shù)
如果一個(gè)客戶端從未訪問(wèn)過(guò)外網(wǎng),在理論上外網(wǎng)是不能夠直接訪問(wèn)內(nèi)網(wǎng)的。但是有很多基于NAT原理的軟件,能夠?qū)崿F(xiàn)從外網(wǎng)訪問(wèn)內(nèi)網(wǎng)。這種技術(shù)成為內(nèi)網(wǎng)穿透。
NAT和代理服務(wù)器
路由器往往都具備NAT設(shè)備的功能, 通過(guò)NAT設(shè)備進(jìn)行中轉(zhuǎn), 完成子網(wǎng)設(shè)備和其他子網(wǎng)設(shè)備的通信過(guò)程。
代理服務(wù)器看起來(lái)和NAT設(shè)備有一點(diǎn)像. 客戶端像代理服務(wù)器發(fā)送請(qǐng)求, 代理服務(wù)器將請(qǐng)求轉(zhuǎn)發(fā)給真正要請(qǐng)求的服務(wù)
器; 服務(wù)器返回結(jié)果后, 代理服務(wù)器又把結(jié)果回傳給客戶端。
NAT和代理服務(wù)器的區(qū)別是什么?
- 從應(yīng)用上講, NAT設(shè)備是網(wǎng)絡(luò)基礎(chǔ)設(shè)備之一,解決的是IP不足的問(wèn)題。代理服務(wù)器則是更貼近具體應(yīng)用,比如通過(guò)代理服務(wù)器進(jìn)行翻墻,另外像迅游這樣的加速器,也是使用代理服務(wù)器。
- 從底層實(shí)現(xiàn)上講,NAT是工作在網(wǎng)絡(luò)層,直接對(duì)IP地址進(jìn)行替換。代理服務(wù)器往往工作在應(yīng)用層。
- 從使用范圍上講,NAT一般在局域網(wǎng)的出口部署,代理服務(wù)器可以在局域網(wǎng)做,也可以在廣域網(wǎng)做,也可以跨網(wǎng)。
- 從部署位置上看,NAT一般集成在防火墻,路由器等硬件設(shè)備上,代理服務(wù)器則是一個(gè)軟件程序,需要部署在服務(wù)器上。
代理服務(wù)器是一種應(yīng)用比較廣的技術(shù)。
- 翻墻:廣域網(wǎng)中的代理。
- 負(fù)載均衡:局域網(wǎng)中的代理。
代理服務(wù)器又分為正向代理和反向代理。
正向代理用于請(qǐng)求的轉(zhuǎn)發(fā)(例如借助代理繞過(guò)反爬蟲),反向代理往往作為一個(gè)緩存。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-609879.html
5 ICMP協(xié)議
一個(gè)網(wǎng)絡(luò)層協(xié)議,基于IP協(xié)議工作。用來(lái)確認(rèn)IP包是否成功到達(dá)目標(biāo)地址,通知在發(fā)送過(guò)程中IP包被丟棄的原因。
ICMP只能搭配IPv4使用,如果是IPv6的情況下,需要是用ICMPv6。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-609879.html
6 網(wǎng)絡(luò)總結(jié)
數(shù)據(jù)鏈路層
- 數(shù)據(jù)鏈路層的作用: 兩個(gè)設(shè)備(同一種數(shù)據(jù)鏈路節(jié)點(diǎn))之間進(jìn)行傳遞數(shù)據(jù)
- 以太網(wǎng)是一種技術(shù)標(biāo)準(zhǔn); 既包含了數(shù)據(jù)鏈路層的內(nèi)容, 也包含了一些物理層的內(nèi)容. 例如: 規(guī)定了網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu), 訪問(wèn)控制方式, 傳輸速率等;
- 以太網(wǎng)幀格式
- 理解mac地址
- 理解arp協(xié)議
- 理解MTU
網(wǎng)絡(luò)層
- 網(wǎng)絡(luò)層的作用: 在復(fù)雜的網(wǎng)絡(luò)環(huán)境中確定一個(gè)合適的路徑.
- 理解IP地址, 理解IP地址和MAC地址的區(qū)別.
- 理解IP協(xié)議格式.
- 了解網(wǎng)段劃分方法
- 理解如何解決IP數(shù)目不足的問(wèn)題, 掌握網(wǎng)段劃分的兩種方案. 理解私有IP和公網(wǎng)IP
- 理解網(wǎng)絡(luò)層的IP地址路由過(guò)程. 理解一個(gè)數(shù)據(jù)包如何跨越網(wǎng)段到達(dá)最終目的地.
- 理解IP數(shù)據(jù)包分包的原因.
- 了解ICMP協(xié)議.
- 了解NAT設(shè)備的工作原理
傳輸層
- 傳輸層的作用: 負(fù)責(zé)數(shù)據(jù)能夠從發(fā)送端傳輸接收端.
- 理解端口號(hào)的概念.
- 認(rèn)識(shí)UDP協(xié)議, 了解UDP協(xié)議的特點(diǎn).
- 認(rèn)識(shí)TCP協(xié)議, 理解TCP協(xié)議的可靠性. 理解TCP協(xié)議的狀態(tài)轉(zhuǎn)化.
- 掌握TCP的連接管理, 確認(rèn)應(yīng)答, 超時(shí)重傳, 滑動(dòng)窗口, 流量控制, 擁塞控制, 延遲應(yīng)答, 捎帶應(yīng)答特性.
- 理解TCP面向字節(jié)流, 理解粘包問(wèn)題和解決方案.
- 能夠基于UDP實(shí)現(xiàn)可靠傳輸.
- 理解MTU對(duì)UDP/TCP的影響.
應(yīng)用層
- 應(yīng)用層的作用: 滿足我們?nèi)粘P枨蟮木W(wǎng)絡(luò)程序, 都是在應(yīng)用層
- 能夠根據(jù)自己的需求, 設(shè)計(jì)應(yīng)用層協(xié)議.
- 了解HTTP協(xié)議.
- 理解DNS的原理和工作流程.
P地址, 理解IP地址和MAC地址的區(qū)別.- 理解IP協(xié)議格式.
- 了解網(wǎng)段劃分方法
- 理解如何解決IP數(shù)目不足的問(wèn)題, 掌握網(wǎng)段劃分的兩種方案. 理解私有IP和公網(wǎng)IP
- 理解網(wǎng)絡(luò)層的IP地址路由過(guò)程. 理解一個(gè)數(shù)據(jù)包如何跨越網(wǎng)段到達(dá)最終目的地.
- 理解IP數(shù)據(jù)包分包的原因.
- 了解ICMP協(xié)議.
- 了解NAT設(shè)備的工作原理
傳輸層
- 傳輸層的作用: 負(fù)責(zé)數(shù)據(jù)能夠從發(fā)送端傳輸接收端.
- 理解端口號(hào)的概念.
- 認(rèn)識(shí)UDP協(xié)議, 了解UDP協(xié)議的特點(diǎn).
- 認(rèn)識(shí)TCP協(xié)議, 理解TCP協(xié)議的可靠性. 理解TCP協(xié)議的狀態(tài)轉(zhuǎn)化.
- 掌握TCP的連接管理, 確認(rèn)應(yīng)答, 超時(shí)重傳, 滑動(dòng)窗口, 流量控制, 擁塞控制, 延遲應(yīng)答, 捎帶應(yīng)答特性.
- 理解TCP面向字節(jié)流, 理解粘包問(wèn)題和解決方案.
- 能夠基于UDP實(shí)現(xiàn)可靠傳輸.
- 理解MTU對(duì)UDP/TCP的影響.
應(yīng)用層
- 應(yīng)用層的作用: 滿足我們?nèi)粘P枨蟮木W(wǎng)絡(luò)程序, 都是在應(yīng)用層
- 能夠根據(jù)自己的需求, 設(shè)計(jì)應(yīng)用層協(xié)議.
- 了解HTTP協(xié)議.
- 理解DNS的原理和工作流程.
到了這里,關(guān)于網(wǎng)絡(luò)層&&IP協(xié)議的基本原理 數(shù)據(jù)鏈路層&&ARP協(xié)議 域名解析以及一些重要技術(shù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!