1. 程式人生 > >IP協議詳解

IP協議詳解

目錄

Internet地址結構

表示IP地址

目前的IP版本有4和6。

目前最流行的就是IPv4,有十進位制和二進位制兩種表示方法。分別是:

點分四組十進位制。每一組範圍是[0~255],如:255.255.255.255

二進位制。如:11111111 11111111 11111111 11111111

IPv6地址長度是128位,

由8塊(或8個欄位)組成,每一塊都包含四個16進位制數,每塊由冒號分隔。

有以下特點:

1、一個塊中前導的0不必書寫。

2、全0的塊可以省略,並用符號::代替。

3、IPv6可以相容IPv4地址,即可以用IPv6格式表示IPv4地址。

表示方式為:IPv6塊值為ffff,其後面緊跟“點分四組”的格式。如:

::ffff:10.0.0.1 可以代表IPv4:10.0.0.1

4、IPv6的低32位通常採用點分四組(就是上面那樣)的表示法。

基本的IP地址結構

分類定址

IPV4被分為五大類:ABCDE

A類為:點分四組中的第一組地址範圍為0~127的IP地址。已二進位制來看就是“首位為0”

B類:128~191.二進位制首位為10

C類:192~223.二進位制首位為110

D類:224~239.二進位制首位為1110

E類:240~255.二進位制首位為1111

子網定址

如上可以看出,IP地址值存在兩個子結構:網路號和主機ID,但這樣就出現了一個問題。就是分配ip地址很麻煩。(即網路資訊中心要負責每一臺主機的ip地址分配,這樣就太繁雜了。)。

於是就將ip地址從兩級分成了三級:網路號、子網ID、主機ID

劃分子網ID的方法是從“原有的主機號中借用若干位”作為子網號。(當然,主機號就減少了)

網路資訊中心集中分配每一個網路號。

然後各個站點的管理人員再分配他們網路號下的子網ID和對應的主機ID。然後管理員在安排每一個子網下面的主機數。

子網掩碼

在ip地址傳播的時候,可以根據二進位制首位的格式判斷其屬於第幾類網,也就愛能判斷其網路號有多少位。

但ip地址本身並沒有包含任何關於子網劃分的資訊,所以光憑ip地址無法知道“其是如何劃分子網的”。

於是就出現了子網掩碼,和ip地址配套著出現,用來說明“該ip地址的子網ID是那幾位數”。

圖示如下:

 

以二進位制來看子網掩碼,只有“連續的1”或“連續的0”。IP子網掩碼的長度和他所對應的IP地址長度一樣(即32位和128位)。

其中的“1”對應的是ip中的“網路號”和“子網號”,“0”對應的是ip中的“主機號”。

將ip地址與子網掩碼進行“按位與”運算,就能得出用於路由的“子網識別符號”,如:

ip地址:  128.32.1.14 對應二進位制:10000000 00100000 00000001 00001110

掩碼地址: 255.255.255.0 對應二進位制:11111111 11111111 11111111 00000000

子網識別符號 128.32.1.0 對應二進位制:10000000 00100000 00000001 00000000

通過上面的運算我們可以看出:128.32.1.14這個地址屬於子網“128.32.1.0”。

以上面的各個ip地址為例,整個流程可以如下所示:

1、某個站點申請到了一個B類網的網路號:128.32.x.x

2、然後該站點的管理員決定使用“255.255.255.0”作為該站點的子網掩碼。這樣就該站點有多少個子網劃分好了

(一旦決定使用該子網掩碼,通過計算就能知道,將該站點劃分了256個子網,每個子網裡有254臺主機(因為每個子網的第一個和最後一個地址無效))

3、然後為每一個子網中的主機都安排好ip地址。

4、假設現在有一個訪問,請求訪問ip地址128.32.1.14

5、先根據該ip地址的二進位制前幾位,發現該地址是一個B類網,所以網路號有16位,也就是說128.32是它的網路號。於是根據網路號128.32找到該站點。

6、該站點邊界路由器將該ip與子網掩碼進行“按位與”運算,發現子網識別符號為128.32.1.0(即128.32.1,後面的.0不存在,因為每個子網的第一個和最後一個地址無效)

7、找到子網128.32.1後,再根據.14找到主機。

廣播地址

每個子網的第一個和最後一個地址無效。這個無效更多的是指“這兩個地址不是指向的某個真實的主機”。

上面的子網掩碼計算完後,得到的是“子網掩碼.0”,此處的“.0”(子網的第一個地址),意味著該ip地址不指向某一個主機,而是表示“子網識別符號”。而“.255”(子網的最後一個地址),則也“不是指向”255主機,而是表示了“該子網下的所有主機”。從而引出了廣播地址。

IP網路上傳送資訊都是要有準確的ip地址的,假設要給“統一網路下的”10臺主機發資訊,那麼就得寫10個精準的ip地址。

而利用廣播地址,我們就能通過一條ip地址,將資訊傳送給某個子網下的所有主機。

即:只寫出網路號和子網號,而將主機ID部分用.255代替。

想要計算一個站點的廣播地址也要用到子網掩碼,計算方法如下:

1、首先將站點的子網掩碼“取反”(1變0,0變1)。

2、然後與站點ip地址進行“按位或”運算(1或0的1,0或0的0,1或1得1)。

3、這樣就既能保留網路號和子網號的地址,然後又能將主機號部分替換為255。

字首(CIDR)

因為現有IPV4地址已經耗盡,所以制定了一個字首方案。

即:將ip地址的某些位固定住,剩餘的為可設定為0和1的任意組合。(比如值固定住第一位,那麼後面又能有好多種組合出來的ip)。

CIDR是沒有分類只說的(也就是說帶有字首的ip地址,不屬於ABCDE裡面的任何一類)。

之前ABC的網路號被限制為8位、16位、24位

而CIDR的網路號由字首來控制,如222.80.18.18/25,其中“/25”表示其前面地址中的前25位代表網路號,其餘位數代表主機ID。

寫法是在現有的點分四組後面加上"/字首"

如:128.0.0.0/24

特殊用途地址

某些地址被用於特殊用途所以不會被分配。

比較為人們所熟知的是127.0.0.1,指向本機。實際上整個127段都是主機回送地址。

也就是說127.0.0.0/8是特殊地址(字首8將127框住,後面可隨意組合)。127.0.0.1~127.255.255.255之間的地址都會回送本機。

組播地址:

組播IP地址使用的是D類網。使用組播IP地址作為目的地址,已加入“組”的所有主機都將接收發送到該組的任何資料報。

傳送方甚至不知道有多少主機接收到資料報。

IP協議

 

IPv4首部

版本:

包含IP資料報的版本號:ipv4為4,ipv6為6

首部長度:

其中儲存的是整個首部中的“32位字”的數量。

這個欄位正常的值為:5(假設“可選欄位長度為0”)

該欄位最大值為:15(可選欄位長度全滿加上原有欄位)

區分服務:

 

優先順序(3位)和資料鏈路層的QoS機制有關,定義了8個服務級別。當Qos選擇了某種服務模型後,優先順序越高,欄位越優先傳輸。

D、T、R分別表示延時、吞吐量、可靠性。當這些值都為1時,分別表示低延時、高吞吐量、高可靠性。

ECN:

用於為資料報標記“擁塞識別符號”。

當一個帶有ECN標記的分組傳送後,如果接收端“持續擁塞”且“具有感知ECN的能力”(如TCP),那麼接收端會通知傳送端降低傳送速度。

總長度:

該欄位指的是IPv4資料報的總長度(以位元組為單位)。

通過該欄位和“首部長度”欄位,我們可以推測出ip資料報中“資料部分”從哪開始以及長度。

標識、標誌、分偏移:

該欄位幫助標識由IPv4主機發送的資料報。

這個欄位對實現分片很重要,大多數資料鏈路層不支援過長的ip資料報,所以要把ip資料報分片,每一片都是一個獨立的ipv4資料報。

傳送主機每次傳送資料報都將一個“內部計數器”加1,然後將數值複製“標識”欄位中。

生存時間:

該欄位用於設定一個“資料報可經過的路由器數量”的上限。

傳送方在初始傳送時設定某個值(建議為64,、128或255),每臺路由器再轉發時都將其減一,當欄位達到0時,該資料報被丟棄,並使用一個ICMP訊息通知傳送方。

協議:

包含一個數字,該數字對應一個“有效載荷部分的資料型別”。比如17代表UDP,6代表TCP。

首部校驗和:

該欄位“僅計算”IPv4首部。也就是說只“校驗”首部。並不檢查資料報的“資料部分”。

首先將“首部校驗和”設定為0,。

然後對首部(整個首部是一個16位字的“序列”)計算16位二進位制反碼和。該值被儲存在首部校驗和欄位中。

當接收方接收到資料報後,也對其首部進行校驗計算,如果結果與“首部校驗和”的值不同,就丟棄收到的資料報。

可選欄位:

IP支援很多可選選項。

如果選項存在的話,它在IPv4分組中緊跟在基本IPv4頭部之後。

IP轉發

主機和路由器都能轉發ip,不同之處在於:主機不轉發那些不是由它生成的資料報,但路由器會轉發。

IP地址可以接收一個數據報。

當IP模組接收到一個數據報時,首先檢查此資料報的目的地址是否為自己的IP地址,

如果不是,且IP層配置為一臺路由器,則根據“轉發表”轉發該資料報。

否則丟棄此資料報,然後返回給源節點一個資訊,表明錯誤。

轉發表

IP轉發表通常需要包含以下資訊。

目的地:32位欄位(用於IPv4),

當目的地為“預設路由”(當路由表中與包的目的地址之間沒有匹配的表項時路由器能夠做出的選擇。如果沒有預設路由,那麼目的地址在路由表中沒有匹配表項的包將被丟棄)時,目的地可設定為0。

對於僅描述一個目的地的主機路由,目的地可設為完整的ip地址。

掩碼:

之前講過了,掩碼是和目的地ip組合使用的,將ip地址與子網掩碼進行“按位與”運算,就能得出用於路由的“子網識別符號”。

下一跳:

下一個IP實體(路由器或主機)的IP地址。

介面:

包含一個網路層使用的識別符號,用來確定將資料報傳送到下一跳的網路介面。

IP轉發行動

當一臺主機或路由器需要向下一跳轉發資料報時,它首先檢查資料報中的IP地址。在演算法表中使用該IP地址來執行最長字首匹配演算法。

最長字首匹配演算法:

舉個例子,現在路由器中有兩個路由表(轉發表)其目的地為:192.168.2.0/24和192.168.0.0/16

假設現在路由器接收到了一條資料報,其目標地址為192.168.2.3

那麼實際上這兩個路由表都匹配,但路由器會選擇192.168.2.0/24作為該資料報的下一跳,

因為192.168.2.0/24這個ip地址“字首更長”,匹配成功的部分更多。

IP分片

鏈路層通常對可傳輸的每一個幀的最大長度都有上限。為了使超過此上限的ip資料報能夠正常傳輸,IP引入了“分片”和“重組”。

當IP層接收到要傳送的IP資料報時,通過查詢“轉發表”,會判斷該資料報應該從那個本地“介面”傳送以及MTU(最大傳輸單元,指一種通訊協議的某一層上面所能通過的最大資料包大小(以位元組為單位))是多少。

不同的網路型別,其MTU都不相同,如乙太網中MTU為1518位元組,FDDI為4500位元組。

如果IP資料報超過MTU值,則進行分片。IPv4的分片可以在原始傳送方主機和端到端路徑上的任何中間路由器上進行,即:一個分片在到達接收主機的路徑中,還可能被繼續分片。(而IPv6只允許源主機進行分片)

當一個IP資料報被分片後,直到它到達最終目的地才會被重組。(因為同一個資料報的不同分片,可能經由不同的路徑到達相同的最終目的地,所以中途有可能無法重組)之前提到過,ip分組後,每一個分片都是一個完整的ip資料報。其中首部裡的“總長度”欄位,是該分片的總長度。

分片技術與ip首部中以下三個欄位有關:

 

識別符號:

主機將資料報分片後,在傳送前,會給每一個分片資料報一個ID值,放在16位的識別符號欄位中。這個ID值可以用來識別哪些分片是屬於同一個資料報的,方便重組。

標誌:

標誌欄位在IP報頭中佔3位,

第1位作為保留,置0;

第2位,分段,有兩個不同的取值:該位置0,表示可以分段;該位置1,表示不能分段;

第3位,更多分段,同樣有兩個取值:該位置0,表示這是資料流中的最後一個分段,該位置1,表示資料流未完,後續還有分段,當一個數據報沒有分段時,則該位置0,表示這是唯一的一個分段。

當目的主機接收到一個IP資料報時,會首先檢視該資料報的識別符號,並且檢查標誌位的第3位是置0或置1,以確定是否還有更多的分段,如果還有後續報文,接收主機則將接收到的報文放在快取直到接收完所有具有相同識別符號的資料報,然後再進行重組。

偏移量:

就像之前說過的,各個IP分片資料報在傳送到目的主機時可能是無序的,所以就需要“偏移量”欄位來指明“該分片在原資料報中的位置順序”。

傳送主機對第一個資料報的偏移量置為0,而後續的分片資料報的偏移量則以網路的MTU大小賦值。

如:

假設:網路介面MTU大小為1400位元組,要傳輸的資料報為3800位元組。

那麼,將要傳輸的資料報分為3片即可(3800=1400+1400+1000)

偏移量的計算方法為:已經“裝載”好的分片位元組數/8(偏移量就是某片在原分組的相對位置,所以8個位元組作為偏移單位。)

分片1偏移量為:0(0=0/8,因為該偏移量之前沒有裝載過任何分片,自然也就是0除以8了)

分片2偏移量為:175(175=1400/8,由於分片1已經裝載好了1400位元組,所以此分片的位置就在1400位元組之後,也就用1400除以8了)

分片3偏移量為:350(350=2800/8,目前已經裝好了兩個分片也就是2800位元組已經裝載完了,那麼分片3自然就跟在2800位元組之後了,也就是用2800除以8)

相關推薦

第二章、IP協議

32位 匹配 重新 連續 檢測 tcp crc校驗 變化 同步傳輸 一、IP服務的的特點 IP協議是TCP/IP協議族的動力,他為上層協議提供的無狀態無連接,不可靠的服務。   無狀態是指IP通信雙方不同步傳輸數據的狀態信息,因此所有的ip數據報的發送,傳出和接受都是相互獨

TCP/IP協議

分片 現在 子網 相同 lis 端口 拒絕 mes 客戶端程序 TCP/IP協議 Transmission Control Protocol /Internet Protocol 傳輸控制協議/英特爾互聯協議 TCP/IP是一個Protocol Stack,包括TCP

《TCP/IP協議 卷1》--- Ping程式

Ping程式由Mike Muuss編寫,目的是為了測試另一臺主機是否可達。該程式傳送一份ICMP回顯請求報文給主機,並等待返回ICMP回顯應答。不用經過傳輸層(TCP/UDP)。 一般來說,如果不能Ping到某臺主機,那麼就不能Telnet或者FTP到那臺主機

《TCP/IP協議 卷1》--- IP:網際協議

IP:不可靠–不保證IP資料報能成功到達目的地;無連線—不維護任何關於後續資料報的狀態資訊,可能無序。 IP首部 最高位在左端,為0bit,最低位為右端,為31bit。傳輸次序為大端。 目前的協議版本號是4,因此IP有時也稱作IPv4。 首部長度指的

《TCP/IP協議 卷1》--- 鏈路層

鏈路層主要有三個目的: (1)為IP模組傳送和接收IP資料報; (2)為ARP模組傳送ARP請求和接收ARP應答; (3)為RARP傳送RARP請求和接收RARP應答。 乙太網鏈路層協議包含:序

http,tcp,ip,協議

一,HTTP請求行中的方法用於HTTP的動作方式,常用的方法有GET、HEAD和POST。 不同的請求物件對應GET的結果是不同的,對應關係如下: 物件                           GET的結果檔案                          

《TCP/IP協議 卷1》--- ARP:地址解析協議

當一臺主機把乙太網資料幀傳送到位於同一區域網上的另一臺主機時,是根據 48 bit的乙太網地址來確定目的介面的。裝置驅動程式從不檢查 IP資料報中的目的IP地址。 ARP為IP地址到對應的硬體地址之間提供動態對映。之所以用動態這個詞是因為這個過程是自動完成的,

TCP/IP協議內容總結(怒噴一口老血)

TCP/IP協議 TCP/IP不是一個協議,而是一個協議族的統稱。裡面包括IP協議、IMCP協議、TCP協議。 TCP/IP分層: 這裡有幾個需要注意的知識點: 網際網路地址:也就是IP地址,

IP協議

目錄 Internet地址結構 表示IP地址 目前的IP版本有4和6。 目前最流行的就是IPv4,有十進位制和二進位制兩種表示方法。分別是: 點分四組十進位制。每一組範圍是[0~255],如:255.255.255.255 二進位制。如:11111111 11

TCP/IP協議 --- 轉載的

原文地址:https://www.jianshu.com/p/ef892323e68f為什麼會有TCP/IP協議在世界上各地,各種各樣的電腦執行著各自不同的作業系統為大家服務,這些電腦在表達同一種資訊的時候所使用的方法是千差萬別。就好像聖經中上帝打亂了各地人的口音,讓他們無法合作一樣。計算機使用者意識到,計算

IP協議---Linux學習筆記

網路層概述: IP服務的特點: IP協議為上層協議提供無狀態、無連線、不可靠的服務。 無狀態:IP通訊雙方不同步傳輸狀態的資訊,因此所有IP資料報傳送、傳輸、接收都是相互獨立的,沒有上下文關係。這樣同時也暴露了IP協議的缺點:無法處理亂序和重複的IP資料報

網絡通信協議三之TCP/IP模型

udp protocol bubuko 傳遞 alt 公司 技術 png 代名詞 TCP/IP模型 註:PDU:Protocol Date Unit:表示對等層之間傳遞的數據單位 TCP:Transmission Control Protocol:傳輸控制協議 UD

《TCP/IP協議族》:IP地址

一、IP地址和MAC地址 1、MAC地址 MAC(Media Access Control,介質訪問控制)地址,或稱為實體地址,也叫硬體地址,用來定義網路裝置的位置,MAC地址是網絡卡出廠時設定的,是固定的(但可以通過在裝置管理器中或登錄檔等方式修改,同一網段內的MAC地址必須唯一)。MAC

網絡協議

網絡協議 test 未能 第一個 為什麽 體系 index 緩存 hyper 目錄:::::: 一、網絡協議 二、TCP(Transmission Control Protocol,傳輸控制協議) TCP頭格式 TCP協議中的三次握手和四次揮手

HTTP協議(真的很經典)

cnp 運用 web應用 media 服務器端 所有 長度 request bad 轉載:http://e7kan.com/?p=264& 引言 HTTP是一個屬於應用層的面向對象的協議,由於其簡捷、快速的方式,適用於分布式超媒體信息系統。它於1990年提出,經過幾

http協議

表單 pos 換行 none 必須掌握 通信 pow print expires HTTP是一個屬於應用層的面向對象的協議,由於其簡捷、快速的方式,適用於分布式超媒體信息系統。它於1990年提出,經過幾年的使用與發展,得到不斷地完善和擴展。目前在WWW中使用的是HTTP/1

HTTP 協議

範圍 文件傳輸 ext text 繼續 warn 分組 asi nsf 前言:   之前買過一本《圖解 HTTP》這本書,作者好像是個小日本,也繼承了小日本在動漫方面的天賦,30% 的內容都是 Q 版畫圖。   之後沒有引起我的重視,書一借出去,然後,之後 .. 之後,

Http 協議筆記

code sps 網頁 提示 agent tor 指定 6.0 lec HTTP是一個屬於應用層的面向對象的協議,由於其簡捷、快速的方式,適用於分布式超媒體信息系統。它於1990年提出,經過幾年的使用與發展,得到不斷地完善和擴展。目前在WWW中使用的是HTTP/1.0的第六

HTTPS協議(二):TLS/SSL工作原理

-c 基本 公鑰加密 工作方式 通信 使用 sha2 公開 原理 HTTPS協議的主要功能基本都依賴於TLS/SSL協議,本節分析TLS/SSL協議工作原理。 TLS/SSL的功能實現主要依賴於三類基本算法:散列函數 Hash、對稱加密和非對稱加密,其利用非對稱加密實

HTTPS協議(四):TLS/SSL握手過程

其它 對數 hello 減少 受保護 改版 text gin 組裝 1、握手與密鑰協商過程 基於RSA握手和密鑰交換的客戶端驗證服務器為示例詳解TLS/SSL握手過程 再看一張手繪時序圖 (1).client_hello 客戶端發起請求,以明文傳輸請求信息,包