日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

网络基础3-1(细谈IP协议头, 网络层,子网划分,路由选择,数据链路层,以太网帧格式,MAC地址,再谈ARP协议)

發(fā)布時(shí)間:2023/11/30 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 网络基础3-1(细谈IP协议头, 网络层,子网划分,路由选择,数据链路层,以太网帧格式,MAC地址,再谈ARP协议) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

IP協(xié)議

IP協(xié)議頭格式

  • 4位版本號(hào)(version): 指定IP協(xié)議的版本, 對(duì)于IPv4來說, 就是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é). 64K
  • 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)在不用, 但是還沒想好說不定以后要用到). 第二位置為1表示禁 止分片, 這時(shí)候如果報(bào)文長(zhǎng)度超過MTU, IP模塊就會(huì)丟棄報(bào)文. 第三位表示"更多分片", 如果分片了的話, 后一個(gè)分片置為1, 其他是0. 類似于一個(gè)結(jié)束標(biāo)記
  • 13位分片偏移(framegament o?set): 是分片相對(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)過一個(gè)路由, TTL -= 1, 一直減到0還沒到達(dá), 那么就丟棄了. 這個(gè)字段主要是用來防止出現(xiàn)路由循環(huán)
  • 8位協(xié)議: 表示上層協(xié)議的類型
  • 16位頭部校驗(yàn)和: 使用CRC進(jìn)行校驗(yàn), 來鑒別頭部是否損壞.
  • 32位源地址和32位目標(biāo)地址: 表示發(fā)送端和接收端.
  • 選項(xiàng)字段(不定長(zhǎng), 多40字節(jié)): 略
  • 網(wǎng)絡(luò)層

    功能:地址管理與路由選擇

    路由選擇

    在復(fù)雜的網(wǎng)絡(luò)傳輸中對(duì)數(shù)據(jù)的傳輸選擇一條合適路徑

    IP地址不能隨意分配,因?yàn)殡S意分配就有很大概率造成IP地址沖突(數(shù)據(jù)無法發(fā)送)
    解決方法:將IP地址的分配規(guī)范起來
    每個(gè)路由器都能夠組建一個(gè)局域網(wǎng),這個(gè)局域網(wǎng)就應(yīng)該具有自己的網(wǎng)絡(luò)標(biāo)識(shí)(網(wǎng)絡(luò)號(hào)),這個(gè)路由器向自己組建的局域網(wǎng)中的主機(jī)分配的IP地址都應(yīng)該包含這個(gè)網(wǎng)絡(luò)標(biāo)識(shí)
    同時(shí)為了在局域網(wǎng)中,能夠唯一標(biāo)識(shí)一個(gè)主機(jī),IP地址中還應(yīng)該包含主機(jī)標(biāo)識(shí)(主機(jī)號(hào))
    IP地址的組成:網(wǎng)絡(luò)號(hào)+主機(jī)號(hào)
    IP地址的分配規(guī)范起來后,只需要對(duì)網(wǎng)絡(luò)號(hào)的取值進(jìn)行規(guī)范就可以了,相鄰的網(wǎng)絡(luò)不能具備相同的網(wǎng)絡(luò)號(hào)
    一個(gè)路由器上相連的所有網(wǎng)絡(luò)網(wǎng)絡(luò)號(hào)不能相同,因?yàn)檫@些網(wǎng)絡(luò)都屬于相鄰網(wǎng)絡(luò),數(shù)據(jù)到了路由器上之后,一旦網(wǎng)絡(luò)號(hào)沖突就會(huì)導(dǎo)致路由器不知道數(shù)據(jù)該給誰(shuí)

    網(wǎng)段的劃分

    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);
  • 早期將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)出來,大多數(shù)組織都申請(qǐng)B類網(wǎng)絡(luò)地址, 導(dǎo)致B類地址很快就 分配完了, 而A類卻浪費(fèi)了大量地址;

  • 例如, 申請(qǐng)了一個(gè)B類地址, 理論上一個(gè)子網(wǎng)內(nèi)能允許6萬5千多個(gè)主機(jī). A類地址的子網(wǎng)內(nèi)的主機(jī)數(shù)更多.
  • 然而實(shí)際網(wǎng)絡(luò)架設(shè)中, 不會(huì)存在一個(gè)子網(wǎng)內(nèi)有這么多的情況. 因此大量的IP地址都被浪費(fèi)掉了.
  • 現(xiàn)在的網(wǎng)段劃分

    CIDR(Classless Interdomain Routing):
  • 引入一個(gè)額外的子網(wǎng)掩碼(subnet mask)來區(qū)分網(wǎng)絡(luò)號(hào)和主機(jī)號(hào);
  • 子網(wǎng)掩碼也是一個(gè)32位的正整數(shù). 通常用一串 “0” 來結(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類無關(guān);
  • 示例

    有一個(gè)網(wǎng)絡(luò)ip:192.168.122.132,netmask:255.255.255.0;現(xiàn)在要將這個(gè)網(wǎng)絡(luò)平均劃分為四個(gè)子網(wǎng),請(qǐng)問每個(gè)子網(wǎng)ip地址范圍以及子網(wǎng)掩碼
    解:

    通過ip地址和子網(wǎng)掩碼得到的原網(wǎng)絡(luò)的主機(jī)號(hào)個(gè)數(shù):256通過ip地址和子網(wǎng)掩碼得到原網(wǎng)絡(luò)的網(wǎng)絡(luò)號(hào)192.168.122.0平均劃分四個(gè)子網(wǎng),則每個(gè)子網(wǎng)主機(jī)號(hào)個(gè)數(shù)64個(gè);0~63 就是00111111按位取反子網(wǎng)掩碼 = 255.255.255.192192.168.122.0 ~ 192.168.122.63 255.255.255.192192.168.122.64 ~ 192.168.122.127 192.168.122.128 ~ 192.168.122.191192.168.122.192 ~ 192.168.122.255

    注意事項(xiàng)

  • 相鄰的網(wǎng)絡(luò)不能具有相同的網(wǎng)絡(luò)號(hào)
  • RFC1918規(guī)定,能夠用于組建私網(wǎng)的網(wǎng)段,只有以下幾種網(wǎng)段:
  • 10.*.*.* 172.16.*.* ~ 172.31.*.* 192.168.*.*

    特殊的ip地址

  • 主機(jī)號(hào)全為1的IP地址:192.168.122.132 255.255.255.0 局域網(wǎng)的udp廣播地址 例如:192.168.122.255
  • 主機(jī)號(hào)全為0的IP地址:網(wǎng)絡(luò)號(hào)—標(biāo)識(shí)一個(gè)網(wǎng)絡(luò) 例如:192.168.122.0
  • 每一個(gè)局域網(wǎng)中,這兩個(gè)主機(jī)號(hào)是不能分配給主機(jī)的,意味著主機(jī)號(hào)雖然有256個(gè),但是能夠分配給主機(jī)的只有254個(gè)
  • 127.0.0.1 本地回環(huán)網(wǎng)卡地址----虛擬網(wǎng)卡地址—用于本機(jī)內(nèi)的網(wǎng)絡(luò)回環(huán)測(cè)試
  • 注意事項(xiàng)

  • 一個(gè)路由器可以配置兩個(gè)IP地址, 一個(gè)是WAN口IP, 一個(gè)是LAN口IP(子網(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ù)了
  • 每一個(gè)家用路由器, 其實(shí)又作為運(yùn)營(yíng)商路由器的子網(wǎng)中的一個(gè)節(jié)點(diǎn). 這樣的運(yùn)營(yíng)商路由器可能會(huì)有很多級(jí), 外層的運(yùn)營(yíng)商路由器, WAN口IP就是一個(gè)公網(wǎng)IP
  • 子網(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)上被訪問到, 就需要把程序部署在一臺(tái)具有外網(wǎng)IP的服 務(wù)器上. 這樣的服務(wù)器可以在阿里云/騰訊云上進(jìn)行購(gòu)買.
  • 路由選擇

  • 當(dāng)IP數(shù)據(jù)包, 到達(dá)路由器時(shí), 路由器會(huì)先查看目的IP;
  • 路由器決定這個(gè)數(shù)據(jù)包是能直接發(fā)送給目標(biāo)主機(jī), 還是需要發(fā)送給下一個(gè)路由器;
  • 依次反復(fù), 一直到達(dá)目標(biāo)IP地址


    那么如何判定當(dāng)前這個(gè)數(shù)據(jù)包該發(fā)送到哪里呢? 這個(gè)就依靠每個(gè)節(jié)點(diǎn)內(nèi)部維護(hù)一個(gè)路由表;
  • 路由表

  • 路由表可以使用route命令查看
  • 如果目的IP命中了路由表, 就直接轉(zhuǎn)發(fā)即可;
  • 路由表中的后一行,主要由下一跳地址和發(fā)送接口兩部分組成,當(dāng)目的地址與路由表中其它行都不匹配 時(shí),就按缺省路由條目規(guī)定的接口發(fā)送到下一跳地址
  • 鏈路層

    功能:負(fù)責(zé)相鄰設(shè)備結(jié)點(diǎn)之間的數(shù)據(jù)幀傳輸;eth–以太網(wǎng)協(xié)議;交換機(jī)

    以太網(wǎng)

  • “以太網(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ǎng)中的網(wǎng)線必須使用雙絞線; 傳輸速率有10M, 100M, 1000M等;
  • 以太網(wǎng)是當(dāng)前應(yīng)用廣泛的局域網(wǎng)技術(shù); 和以太網(wǎng)并列的還有令牌環(huán)網(wǎng), 無線LAN等;
  • 以太網(wǎng)幀格式

  • 源地址和目的地址是指網(wǎng)卡的硬件地址(也叫MAC地址), 長(zhǎng)度是48位,是在網(wǎng)卡出廠時(shí)固化的
  • 2字節(jié)上層協(xié)議類型
  • 幀協(xié)議類型字段有三種值,分別對(duì)應(yīng)IP、ARP、RARP
  • 幀末尾是CRC校驗(yàn)碼。
  • MAC地址:

    物理網(wǎng)卡設(shè)備的硬件地址 uint8_t mac[6],負(fù)責(zé)定位相鄰的設(shè)備

  • MAC地址用來識(shí)別數(shù)據(jù)鏈路層中相連的節(jié)點(diǎn);
  • 長(zhǎng)度為48位, 及6個(gè)字節(jié). 一般用16進(jìn)制數(shù)字加上冒號(hào)的形式來表示(例如: 08:00:27:03:fb:19)
  • 在網(wǎng)卡出廠時(shí)就確定了, 不能修改. mac地址通常是唯一的(虛擬機(jī)中的mac地址不是真實(shí)的mac地址, 可 能會(huì)沖突; 也有些網(wǎng)卡支持用戶配置mac地址).
  • 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位來表示結(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ù)超過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ù)被丟失的概率就大大增加了
  • udp傳輸過程中,任意一個(gè)分片出問題,整個(gè)數(shù)據(jù)包都會(huì)被丟棄,分片越多,危險(xiǎn)越高
  • 因此udp數(shù)據(jù)包在應(yīng)用層都需要由用戶根據(jù)mss分割成合適的大小
  • 一個(gè)報(bào)文最大大小64K包含ip頭部 udp頭部數(shù)據(jù)大小不能超過64K - 20 - 8

    udp數(shù)據(jù)大小 mtu < size < 64K - 20 - 8 就會(huì)在網(wǎng)絡(luò)層進(jìn)行數(shù)據(jù)分片,到了對(duì)端就會(huì)進(jìn)行分片重組

    MTU對(duì)TCP協(xié)議的影響

  • TCP的一個(gè)數(shù)據(jù)報(bào)也不能無限大, 還是受制于MTU. TCP的單個(gè)數(shù)據(jù)報(bào)的大消息長(zhǎng)度, 稱為MSS(Max Segment Size);
  • TCP在建立連接的過程中, 通信雙方會(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);
  • MSS–最大報(bào)文段大小—實(shí)際的最大數(shù)據(jù)大小:MTU-IP頭部-TCP頭部1500 - 20 - 20 = 1460
  • ARP協(xié)議

    ARP協(xié)議的作用

    ARP協(xié)議建立了主機(jī) IP地址 和 MAC地址 的映射關(guān)系.

  • 在網(wǎng)絡(luò)通訊時(shí),源主機(jī)的應(yīng)用程序知道目的主機(jī)的IP地址和端口號(hào),卻不知道目的主機(jī)的硬件地址
  • 數(shù)據(jù)包首先是被網(wǎng)卡接收到再去處理上層協(xié)議的,如果接收到的數(shù)據(jù)包的硬件地址與本機(jī)不符,則直接丟 棄;
  • 因此在通訊前必須獲得目的主機(jī)的硬件地址;
  • ARP協(xié)議格式

  • 注意到源MAC地址、目的MAC地址在以太網(wǎng)首部和ARP請(qǐng)求中各出現(xiàn)一次,對(duì)于鏈路層為以太網(wǎng)的情況 是多余的,但如果鏈路層是其它類型的網(wǎng)絡(luò)則有可能是必要的
  • 硬件類型指鏈路層網(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)求,op字段為2表示ARP應(yīng)答
  • ARP協(xié)議的工作流程

  • 源主機(jī)發(fā)出ARP請(qǐng)求,詢問“IP地址是192.168.0.1的主機(jī)的硬件地址是多少”, 并將這個(gè)請(qǐng)求廣播到本地網(wǎng)段(以太網(wǎng)幀首部的硬件地址填FF:FF:FF:FF:FF:FF表示廣播);
  • 目的主機(jī)接收到廣播的ARP請(qǐng)求,發(fā)現(xiàn)其中的IP地址與本機(jī)相符,則發(fā)送一個(gè)ARP應(yīng)答數(shù)據(jù)包給源主機(jī),將自己的硬件地址填寫在應(yīng)答包中
  • 每臺(tái)主機(jī)都維護(hù)一個(gè)ARP緩存表,可以用arp -a命令查看。緩存表中的表項(xiàng)有過期時(shí)間(一般為20分鐘),如 果20分鐘內(nèi)沒有再次使用某個(gè)表項(xiàng),則該表項(xiàng)失效,下次還要發(fā)ARP請(qǐng)求來獲得目的主機(jī)的硬件地址
  • 為什么要有緩存表? 為什么表項(xiàng)要有過期時(shí)間而不是一直有效?

    在以太局域網(wǎng)內(nèi)數(shù)據(jù)包傳輸依靠的是MAC地址,IP地址與MAC對(duì)應(yīng)的關(guān)系依靠ARP表,每臺(tái)安裝有TCP/IP協(xié)議的主機(jī)(包括網(wǎng)關(guān))都有一個(gè)ARP緩存表。該表中保存這網(wǎng)絡(luò)中各個(gè)電腦的IP地址和MAC地址的對(duì)照關(guān)系。
    ip地址動(dòng)態(tài)分配,上一次保存的關(guān)系就失效了,所以保存時(shí)間不會(huì)很長(zhǎng)

    局域網(wǎng)的ARP攻擊

    你給我一個(gè)請(qǐng)求,我不是你的請(qǐng)求對(duì)象,但是我還是給了你的響應(yīng)信息,然后你就把數(shù)據(jù)發(fā)給我了。

    總結(jié)

    以上是生活随笔為你收集整理的网络基础3-1(细谈IP协议头, 网络层,子网划分,路由选择,数据链路层,以太网帧格式,MAC地址,再谈ARP协议)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。