<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                [TOC] ## 概述 IP協議是TCP/IP協議族的動力,它為上層協議提供無狀態、無連接、不可靠的服務。 ## IP服務的特點 ### 無狀態 * 無狀態指的是IP通信雙方不同步傳輸數據的狀態信息,因此所有IP數據報的發送、傳輸和接收都是相互獨立、沒有上下文關系的。無法處理亂序和重復IP數據報。 * 接收端的IP模塊只要收到了完整的IP數據報(如果是IP分片的話,IP模將先執行重組),就將其數據部分(TCP報文段、UDP報文段或ICMP報文)上交給上層協議。 * 上層協議,面向連接的協議,比如TCP協議,則能夠自己處理亂序的、重復的報文段,它遞交給上層協議的內容絕對是有序的、正確的。 * IP數據包頭部提供了一個標識字段用以唯一標識一個IP數據,但它是用來處理IP分片和重組的,而不是用來指示接收順序的。 * 無狀態的服務的優勢是:簡單、高效。 ### 無連接 * 無連接是指IP通信雙方都不長久的維持對方任何信息。上層每次發數據時,都必須明確指定對方的IP地址。 ### 不可靠 * 不可靠是指IP協議不能保證IP數據準確的到達接收端,它只是盡最大的努力。 * 比如某個中轉路由器發現IP數據報在網絡上存活的時間太長了,那么他將丟棄,并返回一個ICMP錯誤消息(超時錯誤)給發送端, * 又比如,接收端收到的IP數據報不正確(校驗機制),它也將丟棄之,并返回一個ICMP錯誤消息(IP頭部參數錯誤)給發送端。 ## IPV4頭部結構 頭部長度通常是20字節,除非含有可選的變長部分。 ![wxF6KK.png](https://s1.ax1x.com/2020/09/23/wxF6KK.png) 4位版本號:指定IP協議的版本,對IPV4來說,其值是4。 4位頭部長度:標識該IP頭部有多少32bit(4字節)。因為4位最大能表示15,所以IP頭部最大是60字節。 8位服務類型:包括3位的優先權字段(現在已經被忽略),4位TOS字段和1位保留字段(必須置0)。4位TOS字段分別表示:最小延時,最大吞吐量。最高可靠性和最小費用。其中最多有一個能置為1,應用程序根據實際需要來設置它。 16位識別:唯一地標識主機發送的每一個數據報,其初識值系統隨機生成;沒發送一個數據報,其值就加1。 3位標志:第一位保留,第二位表示禁止分片。如果設置了改值,IP模塊就不能對數據分片。第三位表示更多分片,除了數據報的最后一個分片外,其他分片都要置為1。 13位分片偏移:是分片相對原始IP數據報開始出(僅指數據分)的偏移,每個IP分片數據部分的長度必須是8的整數倍。保證后面的IP分片有一個合適的偏移值。 8位生存時間(Time TO Live ,TTL):是數據報到達目的地之前允許經過的路由器跳數。TTL常被發送端設置為64。 8位協議:用來區分上層協議,/etc/protocols文件定義了所有上層協議對應的protocol字段的數值。ICMP=1,TCP=6,UDP=17。 16位頭部校驗和:由發送端填充,接收端用CRC算法來檢驗IP數據報頭部在傳輸過程中是否損壞。 32位源端IP地址和32位目的端IP地址:用來標識發送端和接收端。 選項,最多40字節:可變長的可選信息。因為IP頭部最長是60字節。可用的IP選項包括: ``` 記錄路由 時間戳 松散源路由選擇 嚴格源路由選擇 ``` ![](https://s1.ax1x.com/2020/09/23/wxA8mT.png) ## IP分片 當IP數據報的長度超過幀的MTU時。它將被分片傳輸。分片可能發生在發送端,也可能發生在中轉路由器中。 IP數據報中的如下三個字段給IP的分片和重組提供了足夠的信息:數據報標識、標志和片偏移。 一個IP數據報的每個分片都具有自己的IP頭部,他們具有相同的IP標識,但有不同的片偏移。并且除了最后一個分片外,其他分片都將設置MF標志,此外,每個分片的IP頭部的總長度字段將被設置為該分片的長度。 第一個分片的偏移量是0,第二個是1480,則說明第二個分片的偏移量是第一個分片的ICMP報文的長度。 以太網幀的MTU是1500字節(通過ifconfig或netstat查看) 因此它攜帶的IP數據包最多是1480字節(IP頭部占20字節) **考慮用IP數據報封裝一個長度為1481字節的ICMP(包括8字節的ICMP頭部,所以其數據部分長度為1473)。則該數據報在使用以太網幀傳輸的時候必須分片。** ``` sudo tcpdump -ntv -i en0 icmp ping baidu.com -s 1473 ``` 長度為1501字節的IP數據報被拆分成了兩個IP分片,第一個分片的長度為1500字節,第二個為21字節,每個分片都含有自己的IP頭部20字節。且第一個IP分片的IP頭部設置了MF標志,而第二個IP分片的IP頭部則沒有設置該標志。 ## IP路由 ## IP轉發 不是發送給本機的IP數據報將由數據報轉發子模塊來處理。路由器都能執行數據報的轉發操作,而主機一般只發送和接收數據,這是因為主機上/proc/sys/net/ipv4/ip_forward內核參數默認被設置為0,我們可以通過修改它來使主機有數據轉發功能。 數據報子模塊將對期望轉發的數據報執行如下操作: 1. 檢查數據報頭部的TTL值,如果TTL值已經是0,則丟棄該數據。 2. 查看數據報頭部的嚴格源路由選擇選項,如果該選項被設置,則檢測數據報的目標IP地址是否為本機的某個IP地址,如果不是,則發送一個ICMP源站選路失敗報文給發送端。 3. 如果有必要,則給源端發送一個ICMP重定向報文。告訴它一個更合理的下一跳路由器。 4. 將TTL減一。 5. 處理IP頭部選項 6. 如果有必要,則執行IP分片操作 ## 重定向 ICMP重定向報文也能用于更新路由表。 ICMP報文頭部的三個固定字段:8位類型、8位代碼和16位校驗和。 ICMP重定向報文的類型值是5,代碼字段有4個可選值,用來區分不同的重定向類型。 主機重定向,其代碼值為1。 ICMP重定向報文的數據部分含義明確,他給接收方提供了如下兩個信息。 * 引起重定向的IP數據報的源端IP地址 * 應該使用的路由器IP地址 ## IPV6頭部結構 IPV6頭部由40字節的固定頭部和可變長的擴展頭部組成。 4位版本號: 值為6 8位通信類型:指數據流通信類型或優先級,和IPV4中的TOS類似 20位流標簽:是IPV6新增的字段,用于某些對連接的服務質量有特殊要求的通信,比如音頻和視頻等實時數據傳輸 16位凈荷長度:指IPV6擴展頭部和應用程序數據長度之和,不包括固定頭部長度 8位下一個包頭:指出緊跟IPV6固定頭部后的包頭類型,如擴展頭或某個上層協議(比如TCP,UDP或ICMP),它類似于IPV4頭部中的協議字段,且相同的取值有相同的含義。 8位跳數限制:和IPV4中TTL含義相同 128位源端IP地址/128位目的端IP地址: 使得IP地址的總量達到了2的128次方。 32位表示IPV4地址一般用點分十進制來表示,而IPV6地址則用十六進制字符串表示。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看