日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

《Linux高性能服务器编程》学习笔记

發(fā)布時間:2024/9/15 linux 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《Linux高性能服务器编程》学习笔记 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

《Linux高性能服務器編程》學習筆記

  • Linux高性能服務器編程
    • TCP/IP協(xié)議族
      • TCP/IP協(xié)議族體系結構以及主要協(xié)議
        • 數(shù)據(jù)鏈路層
        • 網(wǎng)絡層
        • 傳輸層
        • 應用層
      • 封裝
      • 分用
      • 測試網(wǎng)絡
        • ARP協(xié)議工作原理
          • 以太網(wǎng)ARP請求/應答報文詳解
          • ARP高速緩存的查看和修改
        • DNS工作原理
          • DNS查詢和應答報文詳解
    • IP協(xié)議詳解
      • IP服務的特點
      • IPv4頭部結構
        • IPv4頭部結構
        • 使用tcpdump觀察IPv4頭部結構
      • IP分片
      • IP路由
        • IP模塊工作流程
        • 路由機制
        • 路由表更新
      • IP轉(zhuǎn)發(fā)
      • 重定向
        • ICMP重定向報文
      • IPv6頭部結構
        • IPv6固定頭部結構
        • IPv6擴展頭部

Linux高性能服務器編程

TCP/IP協(xié)議族

TCP/IP協(xié)議族體系結構以及主要協(xié)議

TCP/IP協(xié)議族是一個四層協(xié)議結構,自底向上分別是數(shù)據(jù)鏈路層網(wǎng)絡層傳輸層應用層

數(shù)據(jù)鏈路層

  • 功能:實現(xiàn)了網(wǎng)卡接口的網(wǎng)絡驅(qū)動程序,以處理數(shù)據(jù)在物理媒介(以太網(wǎng)、令牌環(huán)等)上的傳輸。

  • 常用協(xié)議:

    它們都實現(xiàn)了IP地址機器物理地址(通常是MAC地址)之間的相互轉(zhuǎn)換。

    • ARP協(xié)議(Address Resolve Protocol,地址解析協(xié)議)

      目標機器的IP地址 -> 物理地址

      網(wǎng)絡層使用IP地址尋址一臺機器,數(shù)據(jù)鏈路層使用物理地址尋址一臺機器,因此網(wǎng)絡層必須將目標機器的IP地址轉(zhuǎn)化成物理地址,才能使用數(shù)據(jù)鏈路層提供的服務。

    • RARP協(xié)議(Reverse Address Resolve Protocol,逆地址解析協(xié)議)

      用于網(wǎng)絡上的某些無盤工作站,因為缺乏存儲設備所以無盤工作站無法記住自己的IP地址,但可以使用網(wǎng)卡的物理地址來向網(wǎng)絡管理者(服務器或網(wǎng)絡管理軟件)查詢自身IP地址。

      網(wǎng)絡管理者通常存有該網(wǎng)絡上所有機器的物理地址到IP地址的映射。

網(wǎng)絡層

  • 功能:實現(xiàn)數(shù)據(jù)包的選錄和轉(zhuǎn)發(fā)

    因為通信的兩臺主機并不是直接相連的,而是通過多個中間節(jié)點(路由器)連接的,網(wǎng)絡層就是要選擇這些中間節(jié)點,來確定兩臺主機之間的通信路徑。

    網(wǎng)絡層對上層協(xié)議隱藏了網(wǎng)絡拓撲連接的細節(jié),使得在傳輸層和應用層看來,通信雙方是直接相連的。

  • 常用協(xié)議:

    • IP協(xié)議(Internet Protocol,因特網(wǎng)協(xié)議)

      根據(jù)數(shù)據(jù)包的目的IP地址來決定如何投遞它。

      使用逐跳(hop by hop)的方式確定通信路徑。

    • ICMP協(xié)議(Internet Control Message Protocol,因特網(wǎng)控制報文協(xié)議)

      IP協(xié)議的重要補充,用于檢測網(wǎng)絡連接。

      報文格式:

      • 8位類型:區(qū)分報文類型

        • 差錯報文:回應網(wǎng)絡錯誤(比如目標不可到達(類型值為3)、重定向(類型值為5))
        • 查詢報文:查詢網(wǎng)絡信息(ping程序使用ICMP報文查看目標是否可到達(類型值為8))
      • 8位代碼:進一步細分不同的條件

        比如重定向報文,使用代碼值0代表對網(wǎng)絡重定向,代碼值1表示對主機重定向。

      • 16位校驗和字段:對整個報文進行循環(huán)冗余校驗(CRC),以檢驗報文在傳輸過程是否損壞。

      ICMP協(xié)議并非嚴格意義上的網(wǎng)絡層協(xié)議!因為它使用屬于同一層的IP協(xié)議提供的服務。

傳輸層

  • 功能:為兩臺主機上的應用程序提供端到端通信。(只關心起始端和目的端,不在乎數(shù)據(jù)包的中轉(zhuǎn)過程)

  • 常用協(xié)議:

    • TCP協(xié)議(Transmission Control Protocol,傳輸控制協(xié)議)

      為應用層提供可靠的,面向連接的和基于的服務。

      使用超時重傳、數(shù)據(jù)確認等方式來確保數(shù)據(jù)包被正確地發(fā)送到目的端。

    • UDP協(xié)議(User Datagram Protocol,用戶數(shù)據(jù)報協(xié)議)

      為應用層提供不可靠、無連接和基于數(shù)據(jù)報的服務。

    • SCTP協(xié)議(Stream Control Transmission Protocol,流控制傳輸協(xié)議)

      較新,為了在因特網(wǎng)上傳輸電話信號設計的。

應用層

  • 功能:處理應用程序的邏輯,比如文件傳輸、名稱查詢和網(wǎng)絡管理等。

  • 常用協(xié)議:

    • ping

      應用程序,不是協(xié)議。前文說過它可以利用ICMP報文檢測網(wǎng)絡連接,是調(diào)試網(wǎng)絡環(huán)境的必備工具。

    • telnet協(xié)議

      一種遠程登錄協(xié)議,使我們可以在本地完成遠程任務。

    • OSPF協(xié)議(Open Shortest Path First,開放最短路徑優(yōu)先)

      動態(tài)路由更新協(xié)議,用于路由器之間的通信,以告知對方各自的路由信息。

    • DNS協(xié)議(Domain Name Service,域名服務)

      提供機器域名到IP地址的轉(zhuǎn)換

    應用層協(xié)議可能跳過傳輸層直接使用網(wǎng)絡層的服務(比如ping和OSPF),也可以既使用TCP服務又可以使用UDP服務,比如DNS協(xié)議。

封裝

應用程序數(shù)據(jù)在發(fā)送到物理網(wǎng)絡上之前,沿著協(xié)議棧從上往下依次傳遞。

封裝:每層協(xié)議都將在上層數(shù)據(jù)的基礎上加上自己的頭部信息(有時還有尾部信息),以實現(xiàn)該層的功能。

  • 經(jīng)過TCP封裝后的數(shù)據(jù)成為TCP報文段(TCP message segment),TCP頭部信息和TCP內(nèi)核緩沖區(qū)(發(fā)送緩沖區(qū)或接收緩沖區(qū))數(shù)據(jù)一起構成了TCP報文段。
  • 經(jīng)過UDP封裝后的數(shù)據(jù)稱為UDP數(shù)據(jù)報(UDP diagram)。和TCP對應用程序數(shù)據(jù)的封裝不同給的是,UDP無須為應用層數(shù)據(jù)保存副本,因為提供的服務是不可靠的。

    當UDP數(shù)據(jù)報發(fā)送成功后,UDP內(nèi)核緩沖區(qū)中的數(shù)據(jù)報就被丟棄了。

    如果需要重發(fā)數(shù)據(jù)報的話,應用程序需要重新從用戶空間將改數(shù)據(jù)報拷貝到UDP內(nèi)核發(fā)送緩沖區(qū)中。

  • 經(jīng)過IP封裝后的數(shù)據(jù)稱為IP數(shù)據(jù)報(IP diagram),也包括頭部信息和數(shù)據(jù)部分,數(shù)據(jù)部分就是一個TCP報文段、UDP數(shù)據(jù)報或者ICMP報文。

  • 經(jīng)過數(shù)據(jù)鏈路層封裝的數(shù)據(jù)稱為(frame)。傳輸媒介不同,幀的類型也不同,比如以太網(wǎng)上傳輸?shù)氖且蕴W(wǎng)幀,令牌環(huán)網(wǎng)絡上傳輸?shù)牧钆骗h(huán)幀(token ring frame)。

    以以太網(wǎng)幀為例,

  • 幀的最大傳輸單元(Max Transmit Unit, MTU)指幀最多能攜帶多少上層協(xié)議數(shù)據(jù),過長的IP數(shù)據(jù)報可能需要被分片傳輸。幀才是最終在物理網(wǎng)絡上傳送的字節(jié)序列。

    分用

    分用:當幀到達目的主機的時候,將沿著協(xié)議棧自底向上傳遞。各層協(xié)議依次處理幀中本層負責的頭部數(shù)據(jù),以獲得所需的信息,并最終將處理后的幀交給目標應用程序。

    是依靠頭部信息中的類型字段實現(xiàn)的。

    • 因為IP協(xié)議、ARP協(xié)議、RARP協(xié)議都使用幀傳輸數(shù)據(jù),所以幀的頭部需要提供某個字段(具體情況取決于幀的類型)來區(qū)分它們。

      以以太網(wǎng)幀為例,使用2字節(jié)的類型字段來標識上層協(xié)議。

      • 0x800 -> IP 數(shù)據(jù)表
      • 0x806 -> ARP請求或應答報文
      • 0x835 -> RARP請求或應答報文
    • 同樣,ICMP協(xié)議、TCP協(xié)議、UDP協(xié)議都是用IP協(xié)議,所以IP數(shù)據(jù)報的頭部都采用16位協(xié)議字段來區(qū)分它們。

    • TCP報文段和UDP數(shù)據(jù)報則通過其頭部16位的端口號(port number)字段來區(qū)分上層應用程序。

    幀通過上述分用步驟后,最終將封裝前的原始數(shù)據(jù)送至目標服務。這樣,在頂層目標服務看來,封裝和分用似乎沒有發(fā)生過。

    測試網(wǎng)絡

    分析ARP協(xié)議、IP協(xié)議、ICMP協(xié)議、TCP協(xié)議和DNS協(xié)議。

    通過抓取網(wǎng)絡上的以太網(wǎng)幀,查看其中的以太網(wǎng)幀頭部、IP數(shù)據(jù)報頭部、TCP報文段頭部信息,以獲得網(wǎng)絡通信的細節(jié)。

    ARP協(xié)議工作原理

    APR協(xié)議能實現(xiàn)任意網(wǎng)絡層地址到任意物理地址的轉(zhuǎn)換,這里僅討論IP地址到MAC地址的轉(zhuǎn)換。

    • 工作原理:

      主機向自己所在的網(wǎng)絡廣播一個ARP請求,該請求包含目標機器的網(wǎng)絡地址。此網(wǎng)絡上的其他機器都會收到這個請求,但只有被請求的目標機器會回應一個ARP應答,其中包含自己的物理地址。

    以太網(wǎng)ARP請求/應答報文詳解

    • 硬件類型:物理地址的類型,值為1表示MAC地址
    • 協(xié)議類型:要映射的協(xié)議地址類型,0x800表示IP地址
    • 硬件地址長度和協(xié)議地址長度:單位是字節(jié),MAC地址長度為6字節(jié),IP地址長度為4字節(jié)
    • 操作:指出4種操作類型
      • 1 :ARP請求
      • 2 :ARP應答
      • 3 :RARP請求
      • 4 :RARP應答
    • 最后四個字段指定通信雙方的以太網(wǎng)地址和IP地址
      • 發(fā)送端填充除目的端以太網(wǎng)地址外的其他3個字段,構建ARP請求并發(fā)送。
      • 接收端發(fā)現(xiàn)該請求的目的端IP地址是自己,就把自己的以太網(wǎng)地址填進去,然后交換兩個目的端和兩個發(fā)送端地址,構建ARP應答并返回。

    上圖中顯示ARP請求/應答報文長度是28字節(jié),加上以太網(wǎng)幀頭部和尾部的18字節(jié)一共46字節(jié),但有的實現(xiàn)要求以太網(wǎng)幀數(shù)據(jù)部分長度至少46字節(jié),此時ARP請求/應答報文將增加一些填充字節(jié)。在這種情況下,一個攜帶ARP請求/應答報文的以太網(wǎng)幀長度為64字節(jié)。

    ARP高速緩存的查看和修改

    ARP維護一個高速緩存,其中包含經(jīng)常訪問(比如網(wǎng)關地址)或最近訪問的機器的IP地址到物理地址的映射,避免重復的ARP請求,提高發(fā)送數(shù)據(jù)包的速度。

    Linux下使用arp命令來查看和修改ARP高速緩存

    • 查看:arp -a
    • 刪除:arp -d [IP address]
    • 添加:arp -s [IP address] [MAC address]

    DNS工作原理

    因為我們平時都是用域名來訪問機器而非IP地址,比如訪問網(wǎng)上的各種網(wǎng)站。

    將機器的域名轉(zhuǎn)換成IP地址:需要使用域名查詢服務

    域名查詢服務有很多方式(NIS網(wǎng)絡信息服務、DNS和本地靜態(tài)文件等)。這里主要討論DNS

    DNS查詢和應答報文詳解

    DNS是一套分布式的域名服務系統(tǒng)。

    每個DNS服務器上都存放著大量的機器名和IP地址的映射,并且是動態(tài)更新的。

    DNS查詢和應答報文的格式如下:

    • **16位標識:**標記一對DNS查詢和應答,以區(qū)分一個DNS應答是哪個DNS查詢的回應。

    • **16位標志:**協(xié)商具體的通信方式和反饋通信狀態(tài)。細節(jié)如下圖所示:

    • QR:查詢/應答標志。0表示查詢報文,1表示應答報文

    • opcode:定義查詢和應答的類型。0表示標準查詢,1表示反向查詢,2表示請求服務器狀態(tài)

    • AA:授權應答標志,僅由應答報文使用。1表示域名服務器是授權服務器。

    • TC:截斷標志

    • RD:遞歸查詢標志

    • RA:允許遞歸標志

    • zero:這三位未用,全部設置為0

    • rcode:4位返回碼,表示應答的狀態(tài),常用值有0(無錯誤)和3(域名不存在)

    • 接下來的四個字段(16位問題個數(shù)、16位應答資源記錄個數(shù)、16位授權資源記錄數(shù)目、16位額外資源記錄數(shù)目)分別指出DNS報文的最后4個字段的資源記錄數(shù)目。

      • 查詢報文:包含1個查詢問題,其他三個都是0
      • 應答報文:應答資源記錄數(shù)至少為1
    • 查詢問題

      • 格式:

    - 查詢名:以一定的格式封裝了要查詢的主機域名
    - 16位查詢類型:如何執(zhí)行查詢操作(比如獲取目標主機的IP地址、獲得目標主機的別名、反向查詢)
    - 16位查詢類通常為1,表示獲取因特網(wǎng)地址(IP地址)

    • 應答、授權、額外信息

      都使用資源記錄格式

    IP協(xié)議詳解

    IP服務的特點

    • IP協(xié)議為上層協(xié)議提供無狀態(tài)、無連接、不可靠的服務。

      • 無狀態(tài):IP通信雙方不同步傳輸數(shù)據(jù)的狀態(tài)信息,因此所有IP數(shù)據(jù)報的發(fā)送、傳輸和接收都是相互獨立、沒有上下文關系的。

        • 最大的缺點:無法處理亂序和重復的IP數(shù)據(jù)報,接收端的IP模塊無法檢測到亂序和重復,因為沒有上下文關系。

          上層收到的數(shù)據(jù)可能是亂序、重復的。

          TCP協(xié)議能夠自己處理亂序的、重復的報文段,它遞交給上層協(xié)議的內(nèi)容是有序、正確的。

        • 優(yōu)點:簡單、高效,無須為保持通信狀態(tài)而分配內(nèi)核資源和攜帶狀態(tài)信息

          (UDP協(xié)議和HTTP協(xié)議都是無狀態(tài)協(xié)議)

      • 無連接:IP通信雙方都不長久地維持對方的任何信息。所以上層協(xié)議每次發(fā)送數(shù)據(jù)的時候,都必須明確指定對方的IP地址。

      • **不可靠:**指IP協(xié)議不能保證IP數(shù)據(jù)報準確地到達接收端。所以使用IP服務的上層協(xié)議(比如TCP)需要自己實現(xiàn)數(shù)據(jù)確認、超時重傳等機制來達到可靠傳輸?shù)哪康摹?/p>

    IPv4頭部結構

    IPv4頭部結構

    • 4位版本號:指定IP協(xié)議的版本,對IPv4來說,其值為4。

    • 4位頭部長度:該IP頭部有多少個32bit字(4字節(jié)),因為4位最大能表示15,所以IP頭部最長是60字節(jié)。

    • 8位服務類型:包括一個3位的優(yōu)先權字段,4位的TOS字段和1位保留字段(置零)

      • 4位TOS字段:最小延時、最大吞吐量、最高可靠性、最小費用。最多有一個能置1。

        比如ssh和telnet需要最小延時,文件傳輸程序ftp需要最大吞吐量

    • 16位總長度:整個IP數(shù)據(jù)報的長度(字節(jié)),最大長度為(2^16 - 1)字節(jié),但由于MTU限制,長度超過MTU的數(shù)據(jù)報都會被分片傳輸。接下來的3個字段描述如何實現(xiàn)分片。

    • 16位標識:唯一標識主機發(fā)送的每一個數(shù)據(jù)報。

    • 3位標志字段:

      • 第一位保留
      • 第二位“禁止分片“,設置則不對數(shù)據(jù)報進行分片,但如果IP數(shù)據(jù)報長度超過MTU的話就丟棄數(shù)據(jù)報并返回ICMP差錯報文。
      • 第三位”更多分片“,除了數(shù)據(jù)報最后一個分片外,其他分片都置一
    • 13位分片偏移

    • 8位生存時間:數(shù)據(jù)報到達目的地之前允許經(jīng)過的路由器跳數(shù)。防止數(shù)據(jù)報陷入路由循環(huán)。

    • 8位協(xié)議:區(qū)分上層協(xié)議。

    • 16位頭部校驗和:發(fā)送端填充,接收端對其使用CRC算法來檢驗(僅)頭部是否損壞

    • 32位源端IP地址和目的端IP地址:標識數(shù)據(jù)報的發(fā)送和接收端

    • 選項字段:

      • 記錄路由(傳遞路徑)
      • 時間戳(數(shù)據(jù)報在各個路由器被轉(zhuǎn)發(fā)的時間)
      • 松散源路由選擇(發(fā)送過程必須經(jīng)過其中所有的路由器)
      • 嚴格源路由選擇(只能經(jīng)過被指定的路由器)

    使用tcpdump觀察IPv4頭部結構

    IP分片

    • 當IP數(shù)據(jù)報的長度超過幀的MTU時,將被分片傳輸。

      可能發(fā)生在發(fā)送端、中轉(zhuǎn)路由器上,但在最終的目標機器上才會被重新組裝。

    • IP頭部的數(shù)據(jù)報標識、標志、分片偏移為IP的分片和重組提供足夠的信息。

      因為IP數(shù)據(jù)報的每個分片都具有自己的IP頭部,具有相同的標識值,不同給的片偏移,除了最后一個分片外都有MF標識

    • 以太網(wǎng)幀的MTU是1500字節(jié),IP頭部占20字節(jié),所以數(shù)據(jù)部分最多是1480字節(jié)。如果要用IP數(shù)據(jù)報封裝一個1481字節(jié)的ICMP報文(包括8字節(jié)的ICMP頭部,所以其數(shù)據(jù)部分長度為1473字節(jié)),則該數(shù)據(jù)報在使用以太網(wǎng)幀傳輸時必須要被分片。


    IP分片的標識符都是61197,說明是同一個IP數(shù)據(jù)報的分片。

    第一個分片的片偏移值為0,第二個是1480。第二個分片的片偏移值是第一個分片的ICMP報文長度。

    第一個分片設置了MF標志(flags [+])以表示還有后續(xù)分片,第二個是none表示是最后一個分片,

    兩個分片的長度分別為1500和21字節(jié),和圖中描述一致。

    IP路由

    IP協(xié)議的一個核心任務是數(shù)據(jù)報的路由,即決定發(fā)送數(shù)據(jù)報到目標機器的路徑。

    IP模塊工作流程

    從右往左:

    • IP模塊接收到來自數(shù)據(jù)鏈路層的IP數(shù)據(jù)報時,先對該數(shù)據(jù)報的頭部做CRC校驗,確認無誤后分析頭部具體信息

    • 如果設置了源站選路選項(松散源路由選擇或嚴格源路由選擇),則IP模塊調(diào)用數(shù)據(jù)報轉(zhuǎn)發(fā)子模塊來處理該數(shù)據(jù)報

      • 如果數(shù)據(jù)報的頭部中目標IP地址是本機中的某個IP地址/廣播地址,則IP模塊就根據(jù)數(shù)據(jù)報的協(xié)議字段來決定派發(fā)給哪個上層應用
      • 如果IP模塊發(fā)現(xiàn)這個數(shù)據(jù)報不是發(fā)送給本機的,則也調(diào)用數(shù)據(jù)報轉(zhuǎn)發(fā)子模塊來處理
    • 數(shù)據(jù)報轉(zhuǎn)發(fā)子模塊先檢測系統(tǒng)是否允許轉(zhuǎn)發(fā)

      • 不允許:丟棄
      • 允許:對數(shù)據(jù)報進行一些操作,然后將它交給IP數(shù)據(jù)報輸出子模塊
    • 計算下一跳路由IP路由過程:IP數(shù)據(jù)報應該發(fā)送到哪個下一跳路由(或目標機器),以及經(jīng)過哪個網(wǎng)卡來發(fā)送

      核心:路由表,按照數(shù)據(jù)報的目標IP地址分類,同一類型的IP數(shù)據(jù)報將被發(fā)往相同的下一跳路由器。

    • IP輸出隊列:存放的是所有等待發(fā)送的IP數(shù)據(jù)報,其中除需要轉(zhuǎn)發(fā)的IP數(shù)據(jù)報外,還包括封裝了本機上層數(shù)據(jù)的IP數(shù)據(jù)報。

    路由機制

    要研究IP路由機制,需要先了解路由表的內(nèi)容,可以用route命令或netstat命令查看路由表。

    • IP的路由機制:
    • 查找路由表中和數(shù)據(jù)報的目標IP地址完全匹配的主機IP地址
      • 如果找到,就使用該路由項
      • 沒找到跳步驟2
    • 查找路由表中和數(shù)據(jù)報的目標IP地址具有相同網(wǎng)路IP的網(wǎng)絡IP地址(Gateway項)
      • 如果找到,就使用該路由項
      • 沒找到則轉(zhuǎn)步驟3
    • 選擇默認路由項:這通常意味著數(shù)據(jù)報的下一跳路是網(wǎng)關

    路由表更新

    route命令可以修改路由表,比如:

    • 第一行:添加主機192.168.1.109(kongming20)對應的路由項,所有從主機發(fā)送到該地址的IP數(shù)據(jù)報將通過網(wǎng)卡eth0直接發(fā)送到目標機器的接收網(wǎng)卡
    • 第二行:刪除網(wǎng)絡192.168.1.0對應的路由項
    • 第三行:刪除默認路由項,后果是無法訪問因特網(wǎng)
    • 第四行:重新設置默認路由項,這次的網(wǎng)關是機器192.168.1.109而不是能直接訪問因特網(wǎng)的路由器。

    經(jīng)過修改后路由表如下:

    IP轉(zhuǎn)發(fā)

    對于允許IP數(shù)據(jù)報轉(zhuǎn)發(fā)的系統(tǒng),數(shù)據(jù)報轉(zhuǎn)發(fā)子模塊將對期望轉(zhuǎn)發(fā)的數(shù)據(jù)報執(zhí)行如下操作:

  • 檢查數(shù)據(jù)報頭部的TTL值。如果為0則丟棄該數(shù)據(jù)報
  • 查看數(shù)據(jù)報頭部的嚴格源路由選擇選項。如果該選項被設置,則檢測數(shù)據(jù)報的目標IP地址是否是本機某個IP地址。如果不是則發(fā)送故意ICMP源站選路失敗報文給發(fā)送端
  • 如果有必要,給源端發(fā)送一個ICMP重定向報文,以告訴它一個更合理的下一跳路由器
  • TTL減一
  • 處理IP頭部選項
  • 如果有必要執(zhí)行IP分片操作
  • 重定向

    –>> ICMP重定向報文也能用于更新路由表

    ICMP重定向報文

    • ICMP重定向類型值為5
    • 代碼有四個可選,區(qū)分不同的重定向,這里我們只討論主機重定向(1)

    數(shù)據(jù)部分含義很明確,給接收方提供如下兩個信息:

  • 引起重定向的IP數(shù)據(jù)報的源端IP地址
  • 應該使用的路由器IP地址
  • 接收主機可以根據(jù)這兩個信息斷定重定向的IP數(shù)據(jù)報應該使用哪個路由器轉(zhuǎn)發(fā),并更新路由表(路由表緩沖,而不是直接更改路由表)

    一般來說,主機只能接收ICMP重定向報文,路由器只能發(fā)送ICMP重定向報文。

    IPv6頭部結構

    • 解決了IPv4地址不夠用的問題
    • 增加了多播和流的功能
    • 引入自動配置功能
    • 增加專門的網(wǎng)絡安全功能

    IPv6固定頭部結構

    • 4位版本號:指定IP協(xié)議的版本,IPv6是6
    • 8位通信類型:數(shù)據(jù)流通信類型或優(yōu)先級
    • 20位流標簽:(新)用于某些對連接的服務質(zhì)量有特殊要求的通信,比如音頻或視頻
    • 16位凈荷長度:IPv6擴展頭部和應用程序數(shù)據(jù)長度之和,不包括固定頭部長度
    • 8位下一個包頭:緊跟固定頭部后的包頭類型,如擴展頭或上層協(xié)議頭(TCP、UDP、ICMP)
    • 8位跳數(shù)限制:和TTL含義一樣

    16字節(jié)的IPv6地址用十六進制字符串表示,比如

    可以用“零壓縮法”來簡寫,也就是省略連續(xù)的、全零的組。比如:

    不過零壓縮法對一個地址只能用一次,否則我們無法計算每個::之間省略了多少個全零組。

    IPv6擴展頭部

    長度可以是0或者多個擴展頭部。

    IPv6并不是IPv4的拓展,而是完全獨立的協(xié)議,用以太網(wǎng)幀封裝的數(shù)據(jù)報具有不同的類型值。IPv6:0x86dd, IPv4: 0x800

    總結

    以上是生活随笔為你收集整理的《Linux高性能服务器编程》学习笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。