介紹
IP是TCP/IP協議棧中最核心的協議,TCP、UDP、ICMP和IGMP都基於IP協議傳輸數據網絡
IP協議的兩個重要特色:code
- 不可靠:不保證IP數據報成功傳輸到目的地,可靠性由上層保障
- 無鏈接:不維護數據報的狀態信息。每一個數據報都是獨立傳輸,可能A在B以前傳輸,可是A在B以後到達
IP首部
![image_1cgrtohol1ltolm21l92fn71cii9.png-84.7kB](http://static.javashuo.com/static/loading.gif)
其中普通IP首部佔據20字節,除非包含可選字段,而且IP數據報的長度必定是32位的整數倍blog
- 版本號:4位。IPv4的版本號是4
- 首部長度:4位。表明圖中首部佔據了多少個32位。4位首部長度說明首部最長爲
2^4-1=15
個32位,即60字節
- 服務類型(TOS):8位。其中3位優先權子字段(已忽略)、4位TOS子字段和1位未用位。4位TOS最多設置其中一個位,若是全0表明通常服務,這4位分別是:最小時延、最大吞吐量、最高可靠性、最小費用。根據不一樣類型,來選擇不一樣的執行邏輯
- 總長度:16位。整個IP數據報的總長度,經過首部長度和總長度,能夠知道數據內容的起始位置和長度
- 標識:16位。惟一標識主機發送的數據報,每發送一份報文都會加1
- 標誌:3位。
- 偏移:13位。
- 生存時間:8位。數據報最多通過的路由器數
- 協議:8位。代表是哪一個上層協議向IP發送數據,根據這個字段在收到數據報的時候可用正確分用
- 首部校驗和:16位。根據IP首部計算的校驗和
- 選項(若是有):不定長。若有需求,會額外增長的字段,可選
IP路由選擇
- IP收到上層的數據報,搜索路由表,根據搜索結果並完成發送
- IP收到下層網絡接口傳上來的數據報,check數據報中目的IP是否爲本機。若是是,則交給IP首部字段指定的協議模塊解析;若是不是,則若本機無路由功能就丟棄數據報,若本機有路由功能則進行路由表搜索和轉發
路由表:接口
- 目的IP地址:能夠是網絡地址,也能夠是主機地址
- 下一站路由器的IP地址:直連網絡的路由器IP,經過該路由器將數據轉發到目的地
- 標誌:一個標誌區分目的IP是網絡地址仍是主機地址;另外一個標誌區分下一站路由器是真正的路由器仍是直連的網絡接口
- 爲數據報傳輸指定一個網絡接口
IP路由是逐跳地(hop-by-hop)進行,IP並不知道到達目的地的完整路徑,只是經過路由尋找到下一站路由器,如此不斷接近終點ci
IP路由選擇過程:路由
- 搜索路由表,找到與目標IP徹底匹配的條目,將報文發送給該條目的下一站路由器或直連的網絡接口
- 搜索路由表,找到與目標網絡號匹配的條目,將報文發送給該條目的下一站路由器或直連的網絡接口
- 搜索路由表,找到「默認」條目,將報文發送給該條目的下一站路由器或直連的網絡接口
爲每一個網絡指定一個路由器,能夠減小路由表的規模路由器
- 大部分主機和路由器能夠採用「默認」路由條目將數據傳送到目的地
- 逐跳傳遞過程當中,目的IP地址不變化
- 逐跳傳遞過程當中,鏈路層數據幀首部的目的地址始終指向下一站鏈路層的目的地址(mac地址)
子網尋址
子網的目的:搜索
- 若是網絡下直接就是主機號,一般一個網絡可用主機號較多,實際用不了這麼多,浪費
- 子網對外只須要暴露網關的IP地址,可用極大減小Internet路由表規模
一般B類地址才劃分子網im
![image_1chj5h4kajndssilvm8g1ebf9.png-25.1kB](http://static.javashuo.com/static/loading.gif)
子網掩碼
用來肯定IP地址中有多少位是網絡號和子網號,有多少位是主機號數據
有盤主機一般在系統啓動的時候,會讀取磁盤中的文件來獲取IP地址和子網掩碼
![image_1chj5t9ab13nh1c37p031uuh1etum.png-24.4kB](http://static.javashuo.com/static/loading.gif)
經過子網掩碼能夠肯定目標地址與本機地址是否在:
這個功能也是路由選擇中不斷進行的步驟
特殊的IP地址
![image_1chj6ncmk124l1ll8ke21bmnhqe13.png-108kB](http://static.javashuo.com/static/loading.gif)
變長子網
![image_1chj7eehrfhj7oo1vbc1er31n211g.png-63.8kB](http://static.javashuo.com/static/loading.gif)
當一個子網(如圖中子網13)中存在多個網絡(如圖中SLIP和以太網),就須要經過增長子網的長度,來區分該子網是SLIP子網仍是以太網子網。這種改變子網長度,稱爲變長子網
![image_1chj7ht4trdfb5k1kfi1d5m18vl1t.png-40.7kB](http://static.javashuo.com/static/loading.gif)
3-10中各接口IP
![image_1chj7md1atlk10hgttlm04k8l2a.png-96.3kB](http://static.javashuo.com/static/loading.gif)