Socket編程實踐(16),socket編程實踐16

來源:互聯網
上載者:User

Socket編程實踐(16),socket編程實踐16
乙太網路框架格式

 

 

    說明1:鏈路層的資料包,稱為乙太網路幀。

    說明2:鏈路層不識別IP地址[因為IP地址是邏輯地址],鏈路層識別物理網卡MAC地址[硬體地址]。

    說明3:需要根據IP地址找到對方的MAC地址(ARP位址解析通訊協定)[MAC —> IP地址方向位址解析:RARP反向位址解析通訊協定]。

    說明4:應用程式層根據對等方的IP地址進行通訊,在資料封裝過程中,鏈路層需要目的地址的MAC地址從何而來?需要將IP地址轉換成MAC地址,也就是位址解析。

 

乙太網路首部代碼:

struct ethernet_hdr{    char dest_mac[6];    char src_mac[6];    short protocol;};


ARP位址解析通訊協定

 

ARP首部代碼:

struct arp_hdr{    unsigned short hwtype;// 固定1    unsigned short protype;// 固定0x0800(代表為IP協議做請求)    unsigned char hwaddrlen;// 固定6(即MAC地址長度)    unsigned char proaddrlen;// 固定4 (即IP地址長度)    unsigned short opcode;// Request - 1, Reply - 0x0002    unsigned char sender_mac[6];// 寄件者MAC    unsigned char sender_ip[4];// 寄件者IP    unsigned char dest_mac[6];// 接收者MAC    unsigned char dest_ip[4];// 接收者IP};
 乙太網路的MTU和路徑MTU 

    乙太網路和IEEE 802.3對資料幀的長度都有限制,其最大值分別是1500和1492位元組,將這個限制稱作傳輸單元最大值(MTU,Maximum Transmission Unit)

    如果IP層有一個資料報要傳,而且資料的長度比鏈路層的MTU還大,那麼IP層就要進行分區(Fragmentation),把資料報分成若干片,這樣每一片都小於MTU。

    當網路上的兩台主機互相進行通訊時,兩台主機之間要經過多個網路,每個網路的鏈路層可能有不同的MTU,其中兩台通訊主機路徑中的最小MTU被稱作路徑MTU。

 

IP資料報

 

    版本號碼,目前取值4

    首部長度,4個位元組為單位,取值範圍5~15

    服務類型,指定傳輸的優先順序、傳輸速度、可靠性和輸送量等

    報文總長度,最大長度為65535位元組

    報文標識,唯一標識一個資料報,如果資料報分段,則每個分段的標識都一樣

    標誌,最高位未使用,定義為0,其餘兩位為DF(不分段)和MF(更多分段)

    段位移量,以8個位元組為單位,指出該分段的第一個資料字在未經處理資料報中的位移位置

    存留時間(TTL),取值0~255,每經過一個路由節點減1,為0時被丟棄(Tranceroute程式的實現原理)

    協議,指明該資料報的協議類型,如1為ICMP,4為IP,6為TCP,17為UDP等

    首部校正和,每通過一次網關都要重新計算該值,用於保證IP首部的完整性

    選項,長度可變,提供某些場合下需要的控制功能,IP首部的長度必須是4個位元組的整數倍,如果選項長度不是4的整數倍,必須填充資料

 

IP首部代碼:

struct ip_hdr{    char  ver_hl;    char  tos;    unsigned short len;    unsigned short id;    unsigned short fragment;    char ttl;    char protocol;    unsigned short hdr_chksum;    char src_ip [4];    char dest_ip [4];};
 ICMP協議

    ICMP協議用於傳遞差錯資訊、時間、回顯、網路資訊等控制資料

    當我們ping 一台主機想看它是否運行時,就產生了一條ICMP 資訊。遠程主機將用它自己的ICMP 資訊對ping 請求作出回應。

 

 

ICMP協議說明:

    本身是IP的一部分。

    用途:網關或者目標機器利用ICMP與源通訊,當出現問題時,提供反饋資訊

    在IP協議棧中必須實現

    ICMP包含在IP資料包的淨荷資料中,IP頭中協議類型為1

    ICMP資料的第一個位元組代表ICMP報文的類型,它決定了後續資料的格式

 

特點:

    其控制能力並不用於保證傳輸的可靠性

    它本身也不是可靠傳輸的

 

ICMP資料包

    ICMP包含在IP資料包的淨荷資料中,IP頭中協議類型為1

    ICMP資料的第一個位元組代表ICMP報文的類型,它決定了後續資料的格式

 

ICMP首部代碼:

struct icmp_hdr{    chartype;// ICMP報文類型    char code;// “子類型”    unsigned short  icmpchksum;// 校正和};

ICMP報文類型

 

報文類型說明

    ² 0 Echo Reply

    ² 3 Destination Unreachable

    ² 4 Source Quench 

    ² 5 Redirect 

    ² 8 Echo 

    ² 11 Time Exceeded

    ² 12 Parameter Problem

    ² 13 Timestamp 

    ² 14 Timestamp Reply 

    ² 15 Information Request 

    ² 16 Information Reply 

    ² 17 Address Mask Request 

    ² 18 Address Mask Reply 


報文分類

  ² ICMP差錯報文

    ² 目的不可達報文(類型3)

    ² 逾時報文(類型11)

    ² 參數出錯報文(類型12)

  ² ICMP控制報文

     ² 報源抑制報文(類型4)

     ² 重新導向(類型5)

  ² ICMP請求/應答報文

     ² 回送請求和響應報文(類型0和8)

     ² 時間戳記請求和響應報文(類型13和14)

     ² 位址遮罩請求和響應報文(類型17和18)

  ² 其他

 

ICMP Echo報文

 

    類型:0表示Echo Reply,8表示Echo

    代碼:0

    標識符:標識一個會話,例如,用進程ID

    序號:例如每個請求增1

    選項資料:回顯

 

ICMP 目的不可達報文

 

    類型:3

    代碼:0表示網路不可達,1表示主機不可達;2表示協議不可達;3表示連接埠不可達;等等

    出錯的IP包的IP首部+原始IP資料包中前8個位元組 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.