资源描述:
《网络实验指导icmp协议的分析与实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验:ICMP协议的分析与实现[实验目的]分析ICMP报文,理解ICMP协议在Internet网中的具体应用及其实现原理,深入了解TCP/IP网络的容错控制;学会运用网络套接字Winsock开发网络通信程序。[实验内容]使用VisualStudioC++6.0和网络接口套接字Socket进行Windows环境下的网络编程,运用原始嵌套字RAW_SOCKET从IP层开始构造整个ICMP报文,通过ICMP协议所提供的回送请求(echorequest)和回送应答(echoreply)这两种报文实现检测目的站的可达性与状态。1.IP报头、I
2、CMP报文的基本描述IP协议并不能保证绝对的可靠,所以就设计了ICMP协议,进行差错报告.ICMP消息使用IP头作为基本控制.IP头的格式如下:012301234567890123456789012345678901+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
3、Version
4、IHL
5、TypeofService
6、TotalLength
7、+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
8、-+-+-+-+
9、Identification
10、Flags
11、FragmentOffset
12、+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
13、TimetoLive
14、Protocol
15、HeaderChecksum
16、+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
17、SourceAddress
18、+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
19、-+-+-+-+-+-+-+-+-+-+-+
20、DestinationAddress
21、+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+Version=4IHLInternet头长TypeofService=0TotalLengthIP包的总长度Identification,Flags,FragmentOffset用于IP包分段TimetoLiveIP包的存活时长ProtocolICMP=1HeaderChecksum头校验和(检查整个IP报头)Addre
22、sses发送Echo消息的源地址是发送Echoreply消息的目的地址,相反,发送Echo消息的目的地址是发送Echoreply消息的源地址.10Echo或EchoReply消息格式如下:012301234567890123456789012345678901+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
23、Type
24、Code
25、Checksum
26、+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
27、+-+-+-+-+-+
28、Identifier
29、SequenceNumber
30、+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
31、Data
32、+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+Typeecho消息的类型为8echoreply的消息类型为0.Code=0Checksum为从TYPE开始到IP包结束的校验和,也就是校验整个ICMP报文Identifier如果code=
33、0,identifier用来匹配echo和echoreply消息SequenceNumber如果code=0,identifier用来匹配echo和echoreply消息功能描述:收到echo消息必须回应echoreply消息.identifier和sequencenumber可能被发送echo的主机用来匹配返回的echoreply消息.例如:identifier可能用于类似于TCP或UDP的port用来标示一个会话,而sequencenumber会在每次发送echo请求后递增.收到echo的主机或路由器返回同一个值与之匹配2数据结
34、构(1)IP报头格式//定义IP首部typedefstruct_iphdr{unsignedcharh_lenver;//4位IP版本号+4位首部长度unsignedchartos;//8位服务类型TOSunsignedshortto