Ethernet Frame Preamble Ethernet 802.3 packet Data FCS 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 Destination Address Source Address EtherType Data ::: Preamble. 8 bytes. Destination Address. 6 bytes. The address(es) are specified for a unicast, multicast (subgroup), or broadcast (an entire group). Source Address. 6 bytes. The address is for a unicast (single computer or device). EtherType. 16 bits. Which upper layer protocol will utilized the Ethernet frame. Data. variable, 46-1500 bytes. FCS, Frame Check Sequence. 4 bytes. Error checking with a Cycle Redundancy Check (CRC) value
Ethernet Frame (cont) Value EtherTypes 0x0800 IP. 0x0806 ARP, Address Resolution Protocol. 0x8035 RARP, Reverse Address Resolution Protocol. 0x809B AppleTalk. 0x80F3 AppleTalk ARP. 0x8137 NetWare IPX/SPX.
IP Header (Internet Protocol ) MAC header IP header Data :::
IP Header (cont.) Version : IP版本 (v4/v6) Header Length : IP header長度 Type of Service : 傳送品質的要求 Bits 0-2 : Precedence. 0~7.資料傳送的優先順序 Bits 3: 0=Normal Delay, 1=Low Delay Bits 4: 0=Normal Throughput, 1=High Throughput Bits 5: 0=Normal Reliability 1=High Reliability Bits 6-7 : reserved Total Length : 本segment的大小 Identifier : 提供segment被fragment後的識別號碼
IP Header (cont.) Flags : 關於fragment的控制 位元 0 : 保留 位元 1 : 0表示可以fragment,1表示不可fragment 位元 2 : 0表示是最後一個fragment,1表示後面還有資料 Fragmented Offset : 表示分割後的fragment在原來segment中的相對位置,以8個位元組為offset的單位 Time to Live : segment在網路中保留的時間 Protocol : IP上一層的網路協定 Header Checksum : IP header checksum Source Address : Source IP address Destination Address : Destination IP address Options : Segment測試或除錯之用 Padding : 使header長度以32個位元結束
TCP的基本機制 為每個segment編上序號,可以利用序號調整亂掉的segment 接收端的確認回應(ACK), 總和檢查碼(Checksum), 計時器(Timer)的配合使用,提供穩定的服務品質 利用Window Control控制資料流量 因為ACK機制,故傳輸速度受RTT影響極大,接近反比關係
TCP Header (Transmission Control Protocol) MAC header IP header TCP header Data :::
TCP Header (cont.) Sequence Number : 表示此資料段在訊息中的序號,接收端依序組合資料段 Acknowledgment Number : 接收端希望下次收到的序號,也是回應已收到封包 Header Length : TCP Header的長度 Reserved : 保留給未來使用 Flags : 由6個bits所組成,控制資料的傳輸與連結 URG : 緊急指標 ACK : 如果設定,表示此封包有一個回應 PSH : push function RST : 重設連結 SYN : 建立順序號碼 FIN : 傳送資料到此為止
TCP Header (cont.) Window Size : 使用於流量控制,表示能接收資料的數目(以8個位元組為單位) Checksum : 錯誤偵測號碼 Urgent Pointer : 緊急指標。URG flag為1時,此欄位才生效 Options : 此資料段的發送者告訴對方能接受的最大資料段長度 Padding : 使header長度以32個位元結束
Three-Way Handshack
(User Datagram Protocol) UDP Header (User Datagram Protocol) MAC header IP header UDP header Data :::
UDP Header (Cont) Source Port : 來源端通訊埠號碼 Destination Port : 發送端通訊埠號碼 UDP Length : 整個資料段的長度 Checksum : 選擇性的選項
ARP Header (Address Resolution Protocol ) MAC header ARP header Data ::: Hardware type Protocol type Hardware address length Protocol address length Opcode Source hardware address ::: Source protocol address ::: Destination hardware address ::: Destination protocol address ::: Data :::
ARP Header (Cont) Value OPCode References 1 Request. RFC 826 2 Reply. Hardware Type 1 Ethernet. 2 Experimental Ethernet. 3 Amateur Radio AX.25. 4 Proteon ProNET Token Ring. 5 Chaos. 6 IEEE 802. 7 ARCNET. 8 Hyperchannel. 9 Lanstar. 10 Autonet Short Address. 11 LocalTalk. 12 LocalNet (IBM PCNet or SYTEK LocalNET). 13 Ultra link. 14 SMDS. 15 Frame Relay. 16 ATM, Asynchronous Transmission Mode. 17 HDLC. 18 Fibre Channel. 19 Value Ptotocol Type 0x800 IP. Value OPCode References 1 Request. RFC 826 2 Reply. RFC 826, RFC 1868 3 Request Reverse. RFC 903 4 Reply Reverse. 5 DRARP Request. RFC 1931 6 DRARP Reply. 7 DRARP Error. 8 InARP Request. RFC 1293 9 InARP Reply. 10 ARP NAK. RFC 1577
RARP Header (Reverse Address Resolution Protocol) MAC header RARP packet 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Hardware type Protocol type Hardware address length Protocol address length Opcode Source hardware address ::: Source protocol address ::: Destination hardware address ::: Destination protocol address :::
ICMP 錯誤偵測與回報機制 偵測遠端主機是否存在 建立及維護路由資料 重導資料傳送路徑 資料流量控制
ICMP (Internet Control Message Protocol) MAC header IP header ICMP header Data ::: 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Type Code ICMP header checksum Data :::
ICMP (cont) TYPE 名稱 代表意思 Echo Reply 是一個回應信息。 3 Destination Unreachable Echo Reply 是一個回應信息。 3 Destination Unreachable 表示目的地不可到達。 4 Source Quench 當 router 負載過時﹐用來竭止來源繼續發送訊息。 5 Redirect 用來重新導向路由路徑。 8 Echo Request 請求回應訊息。 11 Time Exceeded for a Datagram 當資料封包在某些路由現象中逾時﹐告知來源該封包已被忽略忽略。 12 Parameter Problem on a Datagram 當一個 ICMP 封包重複著之前的錯誤時﹐會回覆來源主機關於參數錯誤的訊息。 13 Timestamp Request 要求對方送出時間訊息﹐用以計算路由時間的差異﹐以滿足同步性協定的要求。 14 Timestamp Replay 此訊息純粹是回應 Timestamp Request 用的。 15 Information Request 在 RARP 協定應用之前﹐此訊息是用來在開機時取得網路信息。 16 Information Reply 用以回應 Information Request 訊息。 17 Address Mask Request 這訊息是用來查詢子網路 mask 設定信息。 18 Address Mask Reply 回應子網路 mask 查詢訊息的。
ICMP - Ping 甲 ping 乙 Linux: 甲送出 ICMP type 8 (Echo-Request) 給乙 沿路所有設備都沒搞丟這封包 乙收到且願意回答 乙回送 ICMP type 0 (Echo-Reply) 給甲 沿路所有設備都沒過濾 ICMP type 0 封包 Linux: echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
ICMP - Traceroute ICMP型:Microsoft用ICMP實作traceroute UDP型:大部分皆為此型 起點發送 ICMP Echo-Request (type 8) TTL = 1 to N,每次+1 沿路設備回覆 ICMP Time-Exceeded (type 11) 終點回覆 ICMP Echo-Reply UDP型:大部分皆為此型 起點發送UDP,Port 指定高段數字(>32768) 終點回覆 ICMP Unreachable (type 3, code 3)