Raw-socket 与 标准 socket 的区别
- Raw-socket (原始套接字) 置于操作系统的网络核心
- 标准 socket 在 TCP 和 UDP 协议外围
- Raw-socket 直接使用 IP 协议, 无连接
Raw-socket 实现的功能
- 发送自定义的 IP 包
- 发送 ICMP 包
- 进行网络嗅探, 捕获网络数据包
- 分析所有经过网络的数据报
- 伪装本地的IP地址
Raw-socket 编程模型
虚线部分可选
创建 Raw-socket
- SOCKET sock=socket (AF_INET, SOCK_RAW, IPPROTO_ICMP);
- 协议类型可指定
- IPPROTO_ICMP
- IPPROTO_IGMP
- IPPROTO_TCP
- IPPROTO_UDP
- IPPROTO_IP
- IPPROTO_RAW
- 协议类型指明所要接收的协议包
- 如果是 IPPROTO_TCP 这种协议, 当操作系统内核碰到 IP 头中 protocol 域和创建 soc