???????今天給大家分享的是網絡層的重點協議——IP協議。
清風的CSDN博客
🛩?🛩?🛩?希望我的文章能對你有所幫助,有不足的地方還請各位看官多多指教,大家一起學習交流!
??????動動你們發財的小手,點點關注點點贊!在此謝過啦!哈哈哈!😛😛😛
目錄
一、IP 協議格式?
?二、認識 IP 地址
2.1 概念
2.2 作用
2.3 格式
2.4 組成?
?2.5 分類?
2.6?特殊的IP地址
2.7 子網掩碼
2.7.1 格式
2.7.2 作用
2.7.3 計算方式?
三、NAT 機制?
一、IP 協議格式?
- 4位版本號(version):指定IP協議的版本,對于IPv4來說,就是4。
- 4位頭部長度(header length):IP頭部的長度是多少個32bit,也就是 length * 4 的字節 數。4bit表示最大的數字是15,因此IP頭部最大長度是60字節。
- 8位服務類型(Type Of Service):3位優先權字段(已經棄用),4位TOS字段,和1位保留字段(必須置為0)。4位TOS分別表示:最小延時,最大吞吐量,最高可靠性,最小成本,這四者相互沖突,只能選擇一個。
- 16位總長度(total length):IP數據報整體占多少個字節。
- 16位標識(id):唯一的標識主機發送的報文。如果IP報文在數據鏈路層被分片了,那么每一個片里面的這個id都是相同的。
- 3位標志字段:第一位保留(保留的意思是現在不用,但是還沒想好說不定以后要用到)。第二位置為1表示禁止分片,這時候如果報文長度超過MTU,IP模塊就會丟棄報文。第三位表示"更多分片",如果分片了的話,最后一個分片置為0,其他是1。類似于一個結束標記。
- 13位分片偏移(framegament offset):是分片相對于原始IP報文開始處的偏移。其實就是在表示當前分片在原報文中處在哪個位置。實際偏移的字節數是這個值 * 8 得到的。因此,除了最后一個報文之外,其他報文的長度必須是8的整數倍(否則報文就不連續了)。
- 8位生存時間(Time To Live,TTL):數據報到達目的地的最大報文跳數。一般是64。每次經過一個路由,TTL -?1,一直減到0還沒到達,那么就丟棄了。這個字段主要是用來防止出現路由循環。
- 8位協議:表示上層協議的類型。
- 16位頭部校驗和:使用CRC進行校驗,來鑒別頭部是否損壞。
- 32位源地址和32位目標地址:表示發送端和接收端。
- 選項字段(不定長,最多40字節):不做介紹
?二、認識 IP 地址
2.1 概念
2.2 作用
2.3 格式
通常用 “ 點分十進制 ” 的方式來表示,即 a.b.c.d 的形式( a,b,c,d 都是 0~255 之間的十進制整數)。如:100.4.5.6。
? ? ? ??IP協議有兩個版本,IPv4和IPv6。IPv4數量=2^32,大約43億左右,而TCP/IP協議規定,每個主機都需要有一個IP地址。對于全世界計算機來說,這個數量是不夠的,所以后來推出了IPv6(長度128位,是IPv4的4倍)。但因為目 前IPv4還廣泛的使用,且可以使用其他技術來解決IP地址不足的問題,所以IPv6也就沒有普及。
2.4 組成?
- 網絡號:標識網段,保證相互連接的兩個網段具有不同的標識
- 主機號:標識主機,同一網段內,主機之間具有相同的網絡號,但是必須有不同的主機號
?2.5 分類?
2.6?特殊的IP地址
- 將IP地址中的主機地址全部設為0,就成為了網絡號,代表這個局域網
- 將IP地址中的主機地址全部設為1,就成為了廣播地址,用于給同一個鏈路中相互連接的所有主機發送數據包
- 127.*的IP地址用于本機環回(loop back)測試,通常是127.0.0.1
- 本機環回主要用于本機到本機的網絡通信(系統內部為了性能,不會走網絡的方式傳輸),對于開發網絡通信的程序(即網絡編程)而言,常見的開發方式都是本機到本機的網絡通信
在上述的分類中,存在IP地址浪費的問題:
- 單位一般會申請B類網絡(C類連接主機數量有限),但實際網絡架設時,連接的主機數量又常遠小于65534(B類連接主機數),造成IP地址浪費;同理,A類網絡的IP地址也會造成大量的浪費。
- 當一個單位申請了一個網絡號。他想將該網絡能表示的IP地址再分給它下屬的幾個小單位時,如果在申請新的網絡就會造成浪費。
2.7 子網掩碼
2.7.1 格式
2.7.2 作用
- ?劃分A,B,C三類 IP 地址子網:
- 網絡通信時,子網掩碼結合IP地址,可以計算獲得網絡號(劃分子網后的網絡號)及主機號(劃分子網后的主機號)。一般用于判斷目的IP與本IP是否為同一個網段。
? ? ? ?對于網絡通信來說,發送數據報時,目的主機與發送端主機是否在同一個網段,流程是不一樣的。?
2.7.3 計算方式?
- 將 IP 地址和子網掩碼進行“按位與”操作,得到的結果就是網絡號。
- 將子網掩碼二進制按位取反,再與 IP 地址位與計算,得到的就是主機號。
示例:
關于IP協議還有一個重要功能——路由選擇(數據報在IP協議下如何傳輸)
路由器轉發的過程類似于問路的過程,每個路由器內部都有一個數據結構——路由表。數據報到達路由器,就查詢路由表。若查到就直接按照這個方向轉發。否則路由器給一個默認的方向,沿著默認方向走。
三、NAT 機制?
- NAT能夠將私有IP對外通信時轉為全局IP,也就是就是一種將私有IP和全局IP相互轉化的技術方法
- 很多學校,家庭,公司內部采用每個終端設置私有IP,而在路由器或必要的服務器上設置全局IP
- 全局IP要求唯一,但是私有IP不需要;在不同的局域網中出現相同的私有IP是完全不影響的
- NAT路由器將源地址從10.0.0.10替換成全局的IP 202.244.174.37
- NAT路由器收到外部的數據時,又會把目標IP從202.244.174.37替換回10.0.0.10
- 在NAT路由器內部,有一張自動生成的,用于地址轉換的表
- 當 10.0.0.10 第一次向 163.221.120.9 發送數據時就會生成表中的映射關系
NAPT 工作過程?
這時候NAPT來解決這個問題了,使用IP+port來建立這個關聯關系:
- 無法從NAT外部向內部服務器建立連接
- 轉換表的生成和銷毀都需要額外開銷
- 通信過程中一旦NAT設備異常,所有的TCP連接都會斷開
🌈🌈🌈好啦,今天的分享就到這里。
🌈🌈🌈希望各位看官讀完文章后,能夠有所提升!
🎉🎉🎉創作不易,還希望各位大佬支持一下!
??????點贊,你的認可是我創作的動力!
???收藏,你的青睞是我努力的方向!
??????評論:你的意見是我進步的財富