移植lwip网络协议栈:
硬件:cortex 内核的处理器--RAM==20K + ENC28J60网卡
下位机设备 ----网线直连 ---PC
实验: dos---ping指令--Wireshark抓包-简单分析ICMP报文
相关文章参见:利用Wireshark截取ICMP数据包,并对数据包进行解析
DOS---ping指令:
ping指令:ping 192.168.5.8 -t -l 800 ----800字节的数据
wireshark 抓到的包 层次结构:
看下wireshark 抓到的包:
抓包截图:
界面结构:
- 最上面为数据包列表,用来显示截获的每个数据包的总结性信息;
- 中间为协议树,用来显示选定的数据包所属的协议信息;
- 最下边是以十六进制形式表示的数据包内容,用来显示数据包在物理层上传输时的最终形式。
看到协议树的结构层次:
- frame
- eth
- ip
- icmp
下边看下这4层:
译:
1、frame
frame----7716号帧:传输了842字节(6736位),在接口0(对于wireshark来说的网卡ID)捕获了842字节。
- frame.interface_id---接口ID:0
- frame.encap_type---封装类型:以太网(1)
- frame.time-------------到达时间:***
- frame.offset_shift---该包的时移:0.000000000秒
- frame.time_epoch---Epoch时间:***---frame.time_delta、frame.time_delta_displayed、frame.time_relative
- frame.number:----帧数 7716
- frame.len-------------帧长842字节
- frame.cap_len------捕捉到的长度---frame.marked、frame.ignored、
frame.protocols----捕获到的当前帧协议:erh:ip:icmp:data
frame.coloring_rule.name(着色规则名称)、frame.coloring_rule.string(字符串)
2、eth
eth----以太网II,源MAC:*******,目标MAC:******
- 目的地址:
.... ...0. .... .... .... .... = LG位: 全球唯一的地址(恢复出厂设置)
.... ....0 .... .... .... .... =IG位: 个人地址(单播)
- 源地址
3、ip
IP网络协议 第4版,源IP:****** ,目的IP:*****
- ip.version
- ip.hdr_len-----header(标题) 长度
- ip.dsfield----DiffServ--区分服务-------
- ip.len----接下来的长度
- ip.id
- ip.flags
- ip.frag_offset
- ip.ttl---生存时间
- ip.proto
- ip.checksum---校验和
- ip.src
- ip.dst
- text---源GeoIP(IP地理位置)
- text----****
4、ICMP:
icmp----互联网控制消息协议
- icmp.type
- icmp.code
- icmp.checksum
- icmp.ident
- icmp.ident
- icmp.seq-----序列号(BE--大段格式)--0xcd6e
- icmp.seq_le---LE小端格式的序列号:0x6ecd
- data
data.len---:数据长度:800字节
以上.......................................wireshark 抓包看到的Ping指令执行过程
问:ping指令发送800字节,为何抓取到842字节呢?
多出的42字节是???
下图为:以太网网卡所收到的数据包的格式
就网络接口层而言,包头占用6+6+2=14字节,之后的数据为上层协议(就ping指令而言,为网络层的ICMP协议)封装后的数据;校验由网卡自行比对。
下图为ICMP标准格式:
知 IP头部+ICMP报文===即wireshark抓到的包--协议树后两层===28++==20+1+1+2+2+2+数据 字节,
ICMP封装了28字节的包头。---网络层(4层TCP/IP模型)
eth占用6+6+2=14字节===>网络接口层(4层TCP/IP模型)
即14+28=42字节
4层TCP/IP模型中,ICMP隶属网络层的协议,ping指令是网络层的指令。