lab-4 icmp ping programming speaker : yi-fong lin date:2007.11.28
TRANSCRIPT
Lab-4 ICMP Ping Programming
Speaker : Yi-Fong Lin
Date:2007.11.28
IP & ICMP
IP – Internet ProtocolICMP - Internet Control Message ProtocolIP & ICMP insert into Ethernet packet
DA MAC SA MACTYPE
0x0800IP header ICMP header ICMP data
Ethernet 封包
IP 封包
ICMP 封包 (IP data)
IP header
VERSSERVICE TYPE
TOTAL LENGTH
IDENTIFICATION FRAGMENT OFFSET
0 8 16 24 31
SOURCE IP
DESTINATION IP
IP OPTION(IF ANY)
HLEN
FLAGS
TIME TO LIVE PROTOCOL HEADER CHECKSUM
PADDING不使用
5 個 4Bytes
IP header
VERS : IP 協定的版本號碼 ,IPv4:0x4 HLEN : IP 表頭長度 ,4 bytes 為單位 , no option : 0x05• SERVICE TYPE :
• PRECEDENCE : 優先權 • D : No Delay• H : High Throughput• R : High Reliability• TOTAL LENGTH : IP header 跟 data 的總長度 ,byte 為單位。• IDENTIFICATION : IP 封包的編號。
保留 D T R PRECEDENCE
7 6 5 4 3 0
IP header
FLAGS 、 FRAGMENTOFFSETTIME TO LIVE(TTL) :定義一封包在網路
系統中存活的時間。PROTOCOL : UDP : 0x11 TCP : 0x06 ICMP : 0x01HEADER CHECKSUMSOURCE IP 、 DESTINATION IP
ICMP types
TYPE ICMP Message Type 0 Echo Reply 3 Destination Unreachable 4 Source quench 5 Redirect 8 Echo Request (Ping) 11 Time Exceeded for a Datagram 12 Parameter Problem on a Datagram 13 Timestamp Request 14 Timestamp Reply 15 Information Request 16 Information Reply 17 Address Mask Request 18 Address Mask Reply
CheckSum
IP OPTION(IF ANY) PADDING
0x04 0x05 0x00 0x00
0x0100 0x0050
0x80 0x010x00
Destination IP
checksum
Source IP 0x8C.0x7D.0x21.0x02
0x8C.0x7D.0x21.0x01
0 314 8 16
CheckSum 計算法
每 16bit 做相加Ex: 0x4 5 0 0
0x0 0 0 00x0 1 0 00x0 0 5 00x8 0 0 10x0 0 0 00x8 C7 D0x2 1 0 10x8 C7 D0x2 1 0 2+
2 1 4 E +
2
2 1 5 0 => 取 1的補數=>1101 1110 1010 1111(DEAF)
DE AF
CheckSum
Internet
Ping
140.125.33.10
140.125.32.18
140.125.33.12
ARP Who is ARP Who is 140.125.33.12140.125.33.12
I am 140.125.33.12I am 140.125.33.12My MAC is My MAC is 03:04:05:06:07:0803:04:05:06:07:08
Ping 140.125.33.12 Ping 140.125.33.12 MAC=03:04:05:06:07:08MAC=03:04:05:06:07:08ICMP RequestICMP Request
ICMP ReplyICMP Reply
ICMP
Format
TYPE(8or0) CODE(0) CHECKSUM
IDENTIFIER SEQUENCE NUMBER
OPTION DATA…
0 8 16 24 31
checksum : ICMP header 跟 data 的 checksumIdentifier 、 sequence 是 request sender 用來檢查 reply 封包是回應哪一個 request 封包。option data 長度是可變動的, reply 回的 option 必需跟 request 一樣。command: ping { 目地 IP}
Lab Work
透過 Uart interface 可用下指令的方式 ping 至其他連接到網路的裝置,並且顯示分析 ICMP echo request/reply 封包。
可回覆 ICMP echo request 封包,即接受網路上其他裝置的 ping 要求。