6、计算机网络层
文章目錄
- 一、網絡層數據包(IP數據包,Packet)
- 1.版本
- 2.首部長度
- 3.區分服務
- 4.總長度
- 5.標識
- 6.標志
- 7.片偏移
- 8.生存時間(記為TTL,Time To Live)
- 9.協議
- 10.首部檢驗和
- 11.源IP地址和目標IP地址
- 二、ping常用命令
- 1.ping /? 查看ping的用法
- 2.ping ip地址 -l 指定數據包大小
- 2.ping ip地址 -i TTL 設置TTL的值
- 例1:
- 例2:
一、網絡層數據包(IP數據包,Packet)
網絡層數據包格式如下圖所示:
網絡層數據包(IP數據包,Packet)由首部、數據2部分組成。
數據部分:很多時候是由傳輸層傳遞下來的數據段(Segment)。
1.版本
占4個比特;
0b0100代表IPV4;0b0110代表IPV6;
2.首部長度
占4個比特,二進制乘以4才是最終長度;
0b0101:代表首部長度為20個字節(最小值)
0b1111:代表首部長度為60個字節(最大值)
3.區分服務
占8個比特,可以用于提高網絡的服務質量(QoS,Quality of Service);
4.總長度
占16個比特,總長度是指首部和數據之和的長度,單位為字節,因此數據包的最大長度為2**16-1,即65535個字節。但總長度必須不能超過數據鏈路所規定的MTU值,即1500字節,如下圖所示:
由于幀的數據部分不能超過1500字節,所以過大的IP數據包,需要分成片(fragments)傳輸給數據鏈路層,每一片都有自己的網絡層首部(IP首部)。
5.標識
占16個比特,數據包的ID,當數據包過大進行分片時,同一個數據包的所有片的標識都是一樣的。
有一個計數器專門管理數據包的ID,每發出一個數據包,ID就加1。
6.標志
占3個比特,
第一位(Reserved Bit):保留;
第二位(Don’t Fragment):1代表不允許分片,0代表允許分片;
第三位(More Fragment):1代表不是最后一片,0代表是最后一片;
7.片偏移
占13個比特,
片偏移乘以8:字節偏移,每一片的長度一定是8的整數倍。
8.生存時間(記為TTL,Time To Live)
占8個比特位,每個路由器在轉發之前會將TTL減1,一旦發現TTL減為0,路由器會返回錯誤報告。
我們可以觀察使用ping命令后的TTL,不僅能夠推測出對方的操作系統,而且可以計算出經過了多少個路由器,如下圖所示:
第一個圖的TTL等于54,大概可以猜出baidu可能使用的是Linux 2.0.x kernel或者Red Hat 9服務器,中間可能經過了64-54=10個路由器,128和255相對有點大了。如果是128,則中間可能經過74個路由器,不太可能,255就不用說了。
9.協議
占8個比特位,表明所封裝的數據使用了什么協議,以便使目的主機知道應將數據部分上交給哪個協議進行處理。如下圖一些協議對應的十進制數:
10.首部檢驗和
占16個比特,只檢驗數據包的首部是否有錯誤,不檢驗數據部分。
11.源IP地址和目標IP地址
源IP地址和目標IP地址各占用32個比特位;
二、ping常用命令
1.ping /? 查看ping的用法
類似幫助文檔
2.ping ip地址 -l 指定數據包大小
2.ping ip地址 -i TTL 設置TTL的值
例1:
如ping guge.com -i 1,ping出的結果是來自192.168.0.1即家里的路由器網關回復的消息。
ping guge.com -i 2,ping出的結果是家里路由器連接的下一個路由器的IP地址回復的消息。
例2:
我們還可以通過tracert命令可以查看走過的路由器,如下圖:
從上圖可以知道,tracert 193.169.1.10,共走過192.168.1.1和194.170.1.2兩個路由器最后到達目的主機。從圖1也可以看出的確走過了兩個路由器到達了目的主機。
總結
- 上一篇: 1、LeetCode784 字母大小写全
- 下一篇: 1、leetcode437 路和总径3