Source port: http (80) 源端口名称(端口号) Destination port: 52449 (52449) 目的端口名
Sequence number: 1 (relative sequence number) 序列号(相对序列号) Header length: 20 bytes 头部长度
Flags: 0x14(RST,ACK) TCP标记字段(本字段是RST,ACK,置位表示复位TCP连接,置位表
示确认号字段有效)
Window size: 0 流量控制的窗口大小
Checksum: 0xd47e[validation disabled] TCP数据段的校验和
以下为数据链路层IEEE802.3报文格式
注意:IEEE802.3是有线以太网的协议,所以要想得到IEEE802.3的报文就必须要叉网线。 DSTADDR 6字节 SRCADDR 6字节 LEN DSAP SSAP 2字1字1字节 节 节 最大长度1518字节 CONTROL 1/2字节 INFO 信息
6
Destination: Spanning-tree-(for-bridges)_00 (01:80:c2:00:00:00) 目的:厂名_序号(网卡地址) Source: Hangzhou_07:f2:e0(00:0f:e2: 07:f2:e0) 源:厂名_序号(网卡地址) Length:132 长度
1.4 总结
Wireshark是一款基于winpcap的抓包软件,它的界面是友好的,功能是强大的,上手是容易的,掌握是困难的。通过短暂的学习研究,我发现Wireshark之于我么学生的主要功能便是帮助我们更好地学习和理解协议。正如你知道西瓜是甜的,但只有当你吃过了西瓜,你才能体会到西瓜特有的味道。而Wirkshark就给我们提供了吃西瓜所需的西瓜刀。
Wireshark是一款网络嗅探器,它以明文的方式显示捕获的包信息,这对于分析协议格式和内容是非常有帮助的。而且Wireshark的显示比较人性化。过滤器方式可以是捕获前过滤也可以是捕获后过滤,可以根据自己的需要自行选择。
本次实验,让我深刻地去了解了网络各协议栈的协议,以及对应的包头格式及内容,尤其是对IP包头和ICMP包头的了解又更上一层楼了,这对于理解网络通信的原理特别有帮助,理解了各协议栈的任务以及基本原理。
7
实验二 网络层实验—Ping程序的设计与实现
一、实验内容和要求
本实验为ICMP实验。实验内容:Ping命令实现的扩充,在给定的Ping程序的基础上做如下功能扩充:
? -h 显示帮助信息
? -b 允许ping一个广播地址,只用于IPv4 ? -t 设置ttl值,只用于IPv4
? -q 安静模式。不显示每个收到的包的分析结果,只在结束时,显示汇总结果 Ping命令的基本描述
Ping的操作是向某些IP地址发送一个ICMP Echo消息,接着该节点返回一个ICMP Echo reply消息。ICMP消息使用IP头作为基本控制。IP头的格式如下
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Version| IHL |Type of Service| Total Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Identification |Flags| Fragment Offset | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Time to Live | Protocol | Header Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Destination Address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Version=4
IHL Internet头长 Type of Service = 0
Total Length IP包的总长度
Identification, Flags, Fragment Offset 用于IP包分段 Time to Live IP包的存活时长 Protocol ICMP = 1
Addresses 发送Echo消息的源地址是发送Echo reply消息的目的地址,相反,发送Echo 消息的目的地址是发送Echo reply消息的源地址。
Ping实际上是使用ICMP中的ECHO报文来实现的。Echo 或 Echo Reply 消息格式如下: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Code | Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Identifier | Sequence Number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Data ... +-+-+-+-+-
8
Type
echo消息的类型为8
echo reply 的消息类型为0。 Code=0
Checksum 为从TYPE开始到IP包结束的校验和 Identifier
如果 code = 0, identifier用来匹配echo和echo reply消息 Sequence Number
如果 code = 0, identifier用来匹配echo和echo reply消息 功能描述:
收到echo 消息必须回应 echo reply 消息。
identifier 和 sequence number 可能被发送echo的主机用来匹配返回的 echo reply消息。例如: identifier 可能用于类似于TCP或UDP的 port 用来标示一个会话, 而sequence number 会在每次发送echo请求后递增。 收到echo的主机或路由器返回同一个值与之匹配
1、 数据结构的描述
1) IP包格式 struct ip {
BYTE Ver_ihl; //版本号与包头长度 BYTE TOS; //服务类型 WORD Leng; //IP包长度
WORD Id; //IP包标示,用于辅助IP包的拆装,本实验不用,置零 WORD Flg_offset; //偏移量,也是用于IP包的拆装,本实验不用,置零 BYTE TTL; //IP包的存活时间
BYTE Protocol; //上一层协议,本实验置ICMP
WORD Checksum; //包头校验和,最初置零,等所有包头都填写正确后,计算并替换。 BYTE Saddr[4]; //源端IP地址 BYTE Daddr[4]; //目的端IP地址 BYTE Data[1]; //IP包数据
};
2)ICMP包格式 struct icmp {
BYTE Type; //ICMP类型,本实验用 8: ECHO 0:ECHO REPLY BYTE Code; //本实验置零
WORD Checksum; //ICMP包校验和,从TYPE开始,直到最后一位用户数据,如果为
字节数为奇数则补充一位
WORD ID; //用于匹配ECHO和ECHO REPLY包 WORD Seq; //用于标记ECHO报文顺序 BYTE Data[1]; //用户数据
};
二、实验环境
Windows平台 +Linux平台
9
三、 程序的需求分析与逻辑框图 需求分析
允许ping广播地址 打印要获取包的数量 显示使用帮组信息 设置时间间隔
设置安静模式,不显示每个收到的包的分析结果,只在结束时,显示汇总结果 设置数据的长度
设置ttl(生存时间)值
除了打印ECHO-RESPONSE数据包之外,还打印其它所有返回的ICMP数据包 逻辑框图
main为SIGALARM 建立信号处理程序sig_alarmreadloopsendrecvfrom无限接收循环proc每秒发送一个Echo消息ping程序函数概貌
1)main函数
10
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库计算机网络课程设计(2)在线全文阅读。
相关推荐: