【网络编程2】网络编程基础-发送ICMP包(Ping程序)

本文介绍了网络编程中的IP协议,包括网络地址、主机协议和IP格式。接着深入探讨了ICMP协议,用于在网络中传递控制信息,如ping操作。文章还涉及了ICMP报文的格式、类型以及编程操作,包括结构体定义和发送、接收ICMP数据包的函数。最后提到了在VS2015中设置UAC权限以运行原始套接字程序。
摘要由CSDN通过智能技术生成

IP协议

网络地址和主机协议

位于网络层的协议,主要目的是使得网络能够互相通信,该协议使用逻辑地址跨网络通信,目前有两个版本IPV4,IPV6。

在IPV4协议中IP地址是一个32位的数备,采用点分四组的表示法便于使用。每个IP地址包含两个部分,网络地址和主机地址。

网络地址和主机地址的划分由子网掩码来决定。网络地址用来标示所连接到的局域网,主机地址则标示设备本身,子网掩码与IP地址等长,被设为1的部分标示IP地址的对应部分为网络地址,设为0则标示IP对应位为主机地址。

IP格式

image

0-3 版本:IP所使用的版本

4-7 首部长度:IP头的长度(4字节的整数倍)

8-15 服务类型:路由器使用该字段做流量优先排序

16-18 | 19-31 总长度:IP长度+数据包长度

32 标示符:一个唯一标示,用来区分数据包或数据分片的顺序

32 标记:标示数据包是否分片数据

32 分片偏移:分片数据时该字段有效,用于将数据包按顺序组合

64 存活时间:定义数据包的生存周期,路由器中转一次该值减一

64 协议:用来识别数据包上层协议类型

64 首部校验和:错误检测机制,确认内容是否损坏或被篡改

96 源IP地址:发送方主机的IP地址

128 目的IP地址:接收方主机的IP地址

160 选项:可选

160 or 192+ 数据:使用IP传递的实际数据

ICMP协议

IP协议并不是一个可靠的协议,它不保证数据被送达,那么保证数据送达的工作应该由其他的模块来完成。其中一个重要的模块就是ICMP(网络控制报文)协议。

ICMP(internet control message protocol)是internet控制报文协议。是TCP/IP协议族里的一个子协议,用于在IP主机、路由器之间传递控制信息。

控制信息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。

ICMP协议大致分为两类,一种是查询报文,一种是差错报文。查询报文由发送者发出,差错报文是由出错的主机返回发给源数据包的发送者。

PING可以说是ICMP的最著名的应用,系统自带工具当某一个网站上不去的时候。通常会ping一下这个网站,ping会回显一些有用的信息。

ICMP协议的格式

ICMP头相对较小并根据用途而改变,ICMP报文的前4个字节是统一的格式,共有三个字段:即类型,代码和检验和。

ICMP报文类型
各种类型的ICMP报文如所示,不现类型由报文中的类型字段和代码字段来共同决定。

image

常见的类型和代码有

  • ICMP回显(echo)请求和辉县应答报文格式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值