購物網(wǎng)站建設(shè)規(guī)劃書seo網(wǎng)站診斷分析報告
目錄
前言
1.如何理解IP協(xié)議
2.IP協(xié)議格式
3.網(wǎng)段劃分
4.特殊的IP地址
5.IP地址的數(shù)量限制
6.私有IP地址和公網(wǎng)IP地址
7.路由
總結(jié)
前言
? ? ? ? 在前面的文章中介紹了關(guān)于傳輸層常用的兩個協(xié)議,UDP協(xié)議和TCP協(xié)議,當數(shù)據(jù)經(jīng)過傳輸層之后,進入網(wǎng)絡(luò)層,在網(wǎng)絡(luò)層中使用IP協(xié)議添加報頭封裝數(shù)據(jù)交付給下一層,下面我們就一起來具體看看IP協(xié)議是實現(xiàn)和使用的。
1.如何理解IP協(xié)議
IP協(xié)議是:將數(shù)據(jù)A跨網(wǎng)絡(luò)送到B主機的能力
1.路徑選擇中,目標IP非常重要,決定了我們路徑該如何走
2.IP =目標網(wǎng)絡(luò)+目標主機.
如圖所示:
假設(shè)數(shù)據(jù)從主機B到達主機C中間需要經(jīng)過許多的路由器節(jié)點,每個路由器節(jié)點又是屬于不同的局域網(wǎng),所以IP協(xié)議的存在可以在中間路由的過程中準確選擇出下一次要達到的目標網(wǎng)絡(luò),最終數(shù)據(jù)經(jīng)過不斷的路由最終達到主機C。
2.IP協(xié)議格式
IP協(xié)議標準頭部長度20字節(jié),4位首部長度基本單位是4字節(jié)[0000,1111] ->[0,15],規(guī)定每個字節(jié)*4即總長度60字節(jié),因為標準頭部20字節(jié),所以標準4位首部長度填寫0101。
16位總長度(total length): IP數(shù)據(jù)報整體占多少個字節(jié),用來將報頭和有效載荷進行分離
8位協(xié)議:標識上層協(xié)議的類型用來將數(shù)據(jù)向上交付
16位首部校驗和:校驗數(shù)據(jù)發(fā)送是否完整
8位生存時間:數(shù)據(jù)到達目的地的最大跳數(shù),一般是64,每次經(jīng)過一個路由,TTL-=1,一直減到0還沒有到達就直接丟棄了,這個字段主要是用來防止出現(xiàn)路由循環(huán)
4位版本:指定IP協(xié)議的版本,一般是IPV4
8位服務(wù)類型表示的是數(shù)據(jù)在路由的時候以什么標準優(yōu)先選擇進行路由為什么存在16位標識,3位標志,13位片偏移?
數(shù)據(jù)在傳輸?shù)倪^程中,是要經(jīng)過數(shù)據(jù)鏈路層的,在數(shù)據(jù)鏈路層中MAC幀協(xié)議規(guī)定自己的有效載荷不能超過1500字節(jié)(MTU)
對于IP層來說,無法決定報文的大小,所以為了滿足數(shù)據(jù)鏈路層協(xié)議的規(guī)定, IP對報文按照1 500字節(jié)的大小分片,到對端IP層再進行組裝,所以上面字段存在的本質(zhì)上是為了分片和組裝
分片和組裝存在的問題:
1.如何知道一個報文被分片了呢?
2.同-個報文的分片都能夠被識別出來
3.哪個是第一個,哪個是最后一個,有沒有收全,有沒有秩
4.哪個在前,哪個在后,如何正確的組裝?
5.如何保證合起來的報文是正確的?16位標識:如果IP報文因為數(shù)據(jù)鏈路層被分片了,那么每一個片里面的這個id都是相同的
3位標志字段:第一位保留(現(xiàn)在不用,不確定以后是否會使用),第二個位置為1標識禁止分片,這時候如果IP報文長度超過MTU,IP模塊就會丟棄報文,第三個位置表示”更多分片”,如果分片了的話,最后一個分片位置置為0,它是1,類似于一個結(jié)束標志
13位分片偏移:分片相比于原始IP報文開始處的偏移,實就是在表示當前分片在原報文中處在哪個位置實際偏移的字節(jié)數(shù)是這個值*8得到的,因此,除了最后一個報文之外,其他報文的長度必須是8的整數(shù)倍(否則報文就不連續(xù)了)。第一個問題:
答案: a.如果更多分片是1,就證明該報文被分片了b.如果更多分片是0 &&片偏移>0說明是分片,否則不是!
第二個問題:
答案:根據(jù)16位標識,每個分片的id都是相同的
第三個問題:
答案: a.更多分片是1,片偏移是0 b.更多 分片是0 &&片偏移>0 c.當前的起始位置+自身的長度=下一個報文中填充的偏移大小
第四個問題:
答案:按照片偏移升序排序即可
第五個問題:
答案:因為TCP/IP有校驗和
分片好嗎?
答案:分片不好,增加了傳輸數(shù)據(jù)時,報文丟失重傳的可能性!
對tcp/udp/ip本身有什么影響?
一個報文被拆成多個,任意一個報文分片丟失, 就會造成拼接組裝失敗,進而導致對端對整個報文進行重傳!
3.網(wǎng)段劃分
1.為什么會進行網(wǎng)段劃分?
網(wǎng)段劃分是通過不同的IP來進行劃分為一個個不同的子網(wǎng),劃分出一個個的子網(wǎng)之后,數(shù)據(jù)在從A主機發(fā)送B主機的時候,能夠更加快速的找到B主機
本質(zhì)上:網(wǎng)段劃分可以提高查找效率,每次在查詢的時候都夠排除一群主機
2.如何進行網(wǎng)段劃分?
IP地址有32位,而IP地址是被運營商設(shè)計過的,每個不同的地區(qū),會根據(jù)不同的條件劃分為一個指定的IP,依次類推,從國際網(wǎng)絡(luò)劃分到個人主機
3.具體了解網(wǎng)段劃分:
IP地址分為兩個部分:網(wǎng)絡(luò)號和主機號
網(wǎng)絡(luò)號:保證相互連接的兩個網(wǎng)段有不同的標識
主機號:同一網(wǎng)段內(nèi),主機之間具有相同的網(wǎng)絡(luò)號,但是必須有不同的主機號
不同的子網(wǎng)其實就是把網(wǎng)絡(luò)號相同的主機放到一起.
如果在子網(wǎng)中新增一臺主機, 則這臺主機的網(wǎng)絡(luò)號和這個子網(wǎng)的網(wǎng)絡(luò)號一致, 但是主機號必須不能和子網(wǎng)中的其他主機重復(fù)?
通過合理設(shè)置主機號和網(wǎng)絡(luò)號, 就可以保證在相互連接的網(wǎng)絡(luò)中, 每臺主機的IP地址都不相同.
那么問題來了, 手動管理子網(wǎng)內(nèi)的IP, 是一個相當麻煩的事情.
有一種技術(shù)叫做DHCP, 能夠自動的給子網(wǎng)內(nèi)新增主機節(jié)點分配IP地址, 避免了手動管理IP的不便.
一般的路由器都帶有DHCP功能. 因此路由器也可以看做一個DHCP服務(wù)器.
過去曾經(jīng)提出一種劃分網(wǎng)絡(luò)號和主機號的方案, 把所有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ù)組織都申請B類網(wǎng)絡(luò)地址, 導致B類地址很快就分配完了, 而A類卻浪費了大量地址;
例如, 申請了一個B類地址, 理論上一個子網(wǎng)內(nèi)能允許6萬5千多個主機. A類地址的子網(wǎng)內(nèi)的主機數(shù)更多.
然而實際網(wǎng)絡(luò)架設(shè)中, 不會存在一個子網(wǎng)內(nèi)有這么多的情況. 因此大量的IP地址都被浪費掉了.
針對這種情況提出了新的劃分方案, 稱為CIDR(Classless Interdomain Routing):
引入一個額外的子網(wǎng)掩碼(subnet mask)來區(qū)分網(wǎng)絡(luò)號和主機號;
子網(wǎng)掩碼也是一個32位的正整數(shù). 通常用一串 "0" 來結(jié)尾;
將IP地址和子網(wǎng)掩碼進行 "按位與" 操作, 得到的結(jié)果就是網(wǎng)絡(luò)號;
網(wǎng)絡(luò)號和主機號的劃分與這個IP地址是A類、B類還是C類無關(guān);?
可見,IP地址與子網(wǎng)掩碼做與運算可以得到網(wǎng)絡(luò)號, 主機號從全0到全1就是子網(wǎng)的地址范圍;
IP地址和子網(wǎng)掩碼還有一種更簡潔的表示方法,例如140.252.20.68/24,表示IP地址為140.252.20.68,子網(wǎng)掩碼的高24位是1,也就是255.255.255.0
4.特殊的IP地址
將IP地址中的主機地址全部設(shè)為0, 就成為了網(wǎng)絡(luò)號, 代表這個局域網(wǎng);
將IP地址中的主機地址全部設(shè)為1, 就成為了廣播地址, 用于給同一個鏈路中相互連接的所有主機發(fā)送數(shù)據(jù)包;
127.*的IP地址用于本機環(huán)回(loop back)測試,通常是127.0.0.1
5.IP地址的數(shù)量限制
我們知道, IP地址(IPv4)是一個4字節(jié)32位的正整數(shù). 那么一共只有 2的32次方 個IP地址, 大概是43億左右. 而TCP/IP協(xié)議規(guī)定, 每個主機都需要有一個IP地址.
這意味著, 一共只有43億臺主機能接入網(wǎng)絡(luò)么?
實際上, 由于一些特殊的IP地址的存在, 數(shù)量遠不足43億; 另外IP地址并非是按照主機臺數(shù)來配置的, 而是每一個網(wǎng)卡都需要配置一個或多個IP地址.
CIDR在一定程度上緩解了IP地址不夠用的問題(提高了利用率, 減少了浪費, 但是IP地址的絕對上限并沒有增加), 仍然不是很夠用. 這時候有三種方式來解決:
動態(tài)分配IP地址: 只給接入網(wǎng)絡(luò)的設(shè)備分配IP地址. 因此同一個MAC地址的設(shè)備, 每次接入互聯(lián)網(wǎng)中, 得到的IP地址不一定是相同的;
NAT技術(shù):在后面的文章中介紹
IPv6: IPv6并不是IPv4的簡單升級版. 這是互不相干的兩個協(xié)議, 彼此并不兼容; IPv6用16字節(jié)128位來表示一個IP地址; 但是目前IPv6還沒有普及;
6.私有IP地址和公網(wǎng)IP地址
如果一個組織內(nèi)部組建局域網(wǎng),IP地址只用于局域網(wǎng)內(nèi)的通信,而不直接連到Internet上,理論上使用任意的IP地址都可以,但是RFC 1918規(guī)定了用于組建局域網(wǎng)的私有IP地址
10.*,前8位是網(wǎng)絡(luò)號,共16,777,216個地址
172.16.到172.31.,前12位是網(wǎng)絡(luò)號,共1,048,576個地址
192.168.*,前16位是網(wǎng)絡(luò)號,共65,536個地址
包含在這個范圍中的, 都稱為私有IP, 其余的則稱為全局IP(或公網(wǎng)IP);
局域網(wǎng)和公網(wǎng)轉(zhuǎn)發(fā)的流程:
一個路由器可以配置兩個IP地址: ?一個是WAN口IP, 一個是LAN口IP
WAN口IP:對外
LAN口IP:對內(nèi)
當局域網(wǎng)向公網(wǎng)轉(zhuǎn)發(fā)數(shù)據(jù)的時候,局域網(wǎng)IP會被替換成WAN口IP,向上交付
當公網(wǎng)向局域網(wǎng)轉(zhuǎn)發(fā)數(shù)據(jù)的時候,公網(wǎng)IP會被替換成L AN口IP,向下交付
不同的路由器,子網(wǎng)IP其實都是一樣的, 子網(wǎng)內(nèi)的主機IP地址不能重復(fù),但是子網(wǎng)之間的IP地址可以重復(fù)了
7.路由
在復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu)中,找出一條通往終點的路線
路由的過程,就是一跳一跳“問路”的過程
如圖所示:
IP數(shù)據(jù)包的傳輸過程也和問路一樣.
當IP數(shù)據(jù)包, 到達路由器時, 路由器會先查看目的IP;
路由器決定這個數(shù)據(jù)包是能直接發(fā)送給目標主機, 還是需要發(fā)送給下一個路由器;
依次反復(fù), 一直到達目標IP地址;那么如何判定當前這個數(shù)據(jù)包該發(fā)送到哪里呢? 這個就依靠每個節(jié)點內(nèi)部維護一個路由表;
路由表可以使用route命令查看
如果目的IP命中了路由表, 就直接轉(zhuǎn)發(fā)即可;
路由表中的最后一行,主要由下一跳地址和發(fā)送接口兩部分組成,當目的地址與路由表中其它行都不匹配時,就按缺省路由條目規(guī)定的接口發(fā)送到下一跳地址。
路由表:如圖所示
Flags中的U標志表示此條有效(可以禁用某些條目),G標志表示此條目的下一跳地址 是某個路由器的地址,沒有G標志的條目表示目的網(wǎng)絡(luò)地址是與本機接口直接相連的網(wǎng)絡(luò),不必經(jīng)路由器轉(zhuǎn)發(fā);
轉(zhuǎn)發(fā)過程:
1.遍歷路由表
2.目的IP &路由表中配置的子網(wǎng)掩碼,確定該報文要去的目標網(wǎng)絡(luò)
3.對比結(jié)果和destination
4.通過Iface接口發(fā)出報文
轉(zhuǎn)發(fā)過程例1: 如果要發(fā)送的數(shù)據(jù)包的目的地址是192.168.56.3
跟第一行的子網(wǎng)掩碼做與運算得 到192.168.56.0,與第一行的目的網(wǎng)絡(luò)地址不符
再跟第二行的子網(wǎng)掩碼做與運算得 到192.168.56.0,正是第二行的目的網(wǎng)絡(luò)地址,因此從eth1接口發(fā)送出去;
由于192.168.56.0/24正是與eth1接口直接相連的網(wǎng)絡(luò),因此可以直接發(fā)到目的主機,不需要經(jīng)路由器轉(zhuǎn)發(fā);
轉(zhuǎn)發(fā)過程例2: 如果要發(fā)送的數(shù)據(jù)包的目的地址是202.10.1.2
依次和路由表前幾項進行對比, 發(fā)現(xiàn)都不匹配;
按缺省路由條目, 從eth0接口發(fā)出去, 發(fā)往192.168.10.1路由器;
由192.168.10.1路由器根據(jù)它的路由表決定下一跳地址;
總結(jié)
? ? ? ? 以上就是關(guān)于IP協(xié)議的所有內(nèi)容,包含IP協(xié)議在實現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)傳輸過程的作用和IP協(xié)議報頭格式字段以及IP地址的問題,感謝大家的閱讀,希望對大家所有幫助,我們下次再見!