前面詳細學習了傳輸層,瞭解了TCP頭部的構成與各個組成部分的含義。那設計網絡層的目可以簡單的描述爲IP 尋址、選路、封裝打包、分片。
1. NAT與NAPT
(1) NAT(IP Network Address Translator)應用的前提
- 內網中主要用於客戶端訪問互聯網
- 同一時間僅少量主機訪問互聯網
- 內網中存在一個路由器負責訪問外網
究其原因是因爲對外配置有公網IP的路由器僅僅只替換轉發報文的源IP,所以只能建立一對一的公網與私有IP的映射,大大限制了併發量。那如何解決這種情況哩,唯有藉助改變源端口號來解決。
(2) NAPT 端口映射:Network Address Port Translation
如(1)中所述不止修改源IP,還會修改源Port.
2.IP 選路協議
傳輸 IP 報文的方式:
- 直接傳輸
- 本地網絡間接傳輸
內部選路協議 RIP, OSPF - 公網間接傳輸
外部選路協議 BGP
3.IP 報文頭部
如上圖所示和TCP頭部規定相同,IP頭部也是20bytes的固定字節,剩餘最多40bytes的選項。在固定20byets中有協議版本號,ip頭部長度,整個IP分組的長度,分片標識符Identification,分片標記與偏移量,報文生存時間TTL與上層協議,頭部校驗和,源/目的ip地址這幾個選項。它們具體作用也頗爲簡單,百度一下,你就擁有。下面還是基於Wireshark抓包來展示:
基於以上的頭部格式就可以解答爲什麼在ip報文有可能在傳輸過程中發生多次分片的情況下仍然可以有效組合的情況了! 蓋因ip頭部中有對應的分片標識符,對於同一個報文的不同分片會對應相同標識符與不同偏移量,基於此來實現也。
4.IP 協議的助手:ICMP 協議
ICMP 協議的本質是被IP報文封裝的介於網絡層與傳輸層之間的協議,其報文格式如下圖所示:
果然在好的一幅圖不及一幅圖來的詳細。上面清楚的展示了ICMP報文的組織形式,然而具體問題具體分析,接下來就使用windows上的tracert命令遠程一下baidu.com,並使用Wireshark抓icmp報文,捕獲到的一個icmp報文格式如下:
圖片清楚的展示了ICMP的設計思想與tracet之所以可以跟蹤路由的根本原因,此處不再過多闡述。
附:關於ipv4地址全 0 或者全 1 的特殊含義
網絡號 | 主機號 | A 類示例 | B 類示例 | C 類示例 | 含義 |
---|---|---|---|---|---|
網絡號 | 主機號 | 77.91.215.5 | 154.3.99.6 | 227.82.157.160 | 指定某個主機 |
網絡號 | 全 0 | 77.0.0.0 | 154.3.0.0 | 227.82.157.0 | 指定某個網絡 |
全 0 | 主機號 | 0.91.215.5 | 0.0.99.6 | 0.0.0.160 | 指定當前所屬網絡下的某個主機 |
全 0 | 全 0 | 0.0.0.0 | 0.0.0.0 | 0.0.0.0 | 指定自己的默認 IP 地址 |
網絡號 | 全 1 | 77.255.255.255 | 154.3.255.255 | 227.82.157.255 | 指定某個網絡下的所有主機,用於廣播 |
全 1 | 全 1 | 255.255.255.255 | 255.255.255.255 | 255.255.255.255 | 所有主機 |