1、IP提供不可靠,不需連線的點對點傳輸方式。
不可靠(unreliable):僅提供最好的傳輸服務,並不保證能成功到達目的地。
無串連(connectionless):每個資料報的處理是獨立的,可以不按發送順序接收,每個報文都可以選擇不同的路線。
2、IP資料報的首部格式(一般為20B)
(1)、版本(4bit) 目前版本號碼是4,所以稱IPV4,(IPV6的地址是2的6+1次方,128bit)
(2)、首部長度(4bit)是首部佔4B的數目,由此可見首部最多是60B長
(3)、TOS欄位(1B):有3bit的優先順序欄位(現在不用了,000);4bit的TOS欄位,最後一bit恒為0
4bit的TOS欄位為:最小時延,最大輸送量,最高可靠性,最小費用。最多隻有一bit置1
(4)、總長度欄位(2B):以位元組為單位放的是這個ip資料報的總長度
(5)、標示(2B),標誌(3bit),片位移(13bit)欄位:在最後進行說明
(6)、TTL欄位(1B):time-to-live,資料報最多可以經過的路由器的數目
(7)、協議欄位(1B):上層的協議(ICMP:1, IGMP:2, TCP:6, UDP:17)
(8)、首部校正和(2B):計算時,置校正和欄位為0,然後把IP首部每16bit反碼求和,把結果填充該欄位;檢驗時,也是按首部16位反碼求和,如果結果全為1,則OK。
注意:由於TTL欄位的值每過一個路由器就減少1,因此校正和欄位每過一個路由器可能都有所變化。
(9)、由於IP首部長度欄位是4B的數目,所以選項欄位以32bit為界(不夠就加填充位元組)
3、IP路由選擇
(1)、過程,當IP層某個網路介面收到資料報時,首先檢查該報的IP地址是否是原生IP地址之一或者是廣播位址,如果是,處理;否則,如果IP層被設定為路由器功能,轉寄;沒有則丟棄
(2)、路由表項的主要內容:目的IP地址(可能是主機,也可能是網路地址),下一跳的路由器IP地址,標記,指定一個網路介面
(3)、路由選擇順序:先搜尋路由表,找與目的ip地址完全符合的表項;找與目的ip的網路地址匹配的表項;找表項為預設(default)的路由。
注意:如果中間路由器轉寄資料報時,如果是轉寄到下一跳的路由器地址,那麼該報的ip地址還是最終的目的地ip,但是目的mac地址改成下一跳路由器的mac地址。這種路由叫做間接路由。
4、子網定址:
(1)、子網劃分對外部路由器來說是屏蔽了的,也就是說外部路由器是看不到網路內部的子網組織形式;但對於子網內部的路由器是不透明的。
(2)、子網路遮罩 :用於瞭解一個ip地址那些是主機號,那些是網路號(網路號的判斷可以由ip的頭8bit,主機號的判斷由子網路遮罩中的0部分得到,而除了網路號和主機號,剩下的就是子網的號碼)
5、特殊的IP地址
(1)、A類地址127開頭的號碼,代表環回(慣例用的是127.0.0.1)
(2)、網路上的主機:全為0
(3)、網路上的特定主機:網路號為0,主機號為指定的主機號
(4)、廣播位址:(主機號全為1的時候):見廣播和多播
6、linux中查看ip相關的命令:ipconfig,netstat
7、IP分區(標示欄位,標誌欄位,片位移欄位的使用)
(1)、由於各個網路的mtu有所不同,當每個網路的mtu比ip包的長度小的時候,該路由器就對這個ip包進行分區。到了目的地之後,才進行重新組裝
(2)、分區時,複製這個ip包的首部,進行下面的修改: 標示欄位表明這個ip包的序號,所以在分區的過程中複製一份到分區的包中;標誌欄位的其中一個位元位表示還會有更多的片,除了最後一片外,該標誌欄位的這一個位元位為1;片位移欄位表示該片的資料距離原始包開始處的位置;此外,總長度欄位要變成該片的長度。
(3)標誌位還有一個位元是“不分區位”。如果該位為1,則出現該分區的情況時,不進行分區,而是丟棄該報,產生icmp差錯報文給源主機。
(4)、缺點:在傳輸的過程中,即使是丟失了一個分區都要重傳整個ip報文。udp一般容易導致分區,而tcp一般避免分區。
(5)、注意:分區時,僅複製ip報文的首部,所以上層協議(如udp的連接埠等資訊)只能在第一個分區中。(由此可見分區僅能分一次而已)。
(6)、分區的例子:
比如有個ip資料報長度為3056,在傳輸過程中,某網路的mtu = 1500,那麼進行分區:(該首部的標示欄位為14007)
以下的分區以如下格式輸出,僅列出ip報首部中改變的部分:
(標示,不可分區標誌,更多資料標誌,第三個標誌,片位移,該片的總長度)
分區1:(14007, 0, 1, 0, 0, 1500)(注意:這是第一分區,片位移為0,上層協議的資訊在該片中)
分區2:(14007, 0, 1, 0, 1500, 1500)
分區3:(14007, 0, 0, 0, 3000, 56)(注意:由於“更多資料”標誌為0,表示這個資料報的分區已經結束了)