《原始套接字编程》 课程设计报告 姓名:*** 班级:9 班 学号:******** 1 《原始套接字编程》课程设计报告 班级:11 级9 班 学号:54110904 姓名:王延兴 一、 设计任务分析 (一)实验环境 操作系统:Window s 编程工具及集成开发环境:VC++ (二)实验目的和要求 实验目的:掌握原始套接字编程。 实验要求:完成下列功能: (1)利用 RAW SOCKET 捕获网络数据包的程序模型 SOCKET_STREAM 流式套接字 SOCKET_DGRAM SOCKET_RAW 原始套接字 IPPROTO_IP IP 协议 IPPROTO_ICMP INTERNET 控制消息协议,配合原始套接字可以实现 ping 的功能 IPPROTO_IGMP INTERNET 网关服务协议,在多播中用到 在 AF_INET 地址族下,有 SOCK_STREAM、SOCK_DGRAM、SOCK_RAW 三种套接字类型。SOCK_STREAM 也就是通常所说的 TCP,而 SOCK_DGRAM 则是通常所说的 UDP,而 SOCK_RAW则是用于提供一些较低级的控制的;第 3 个参数依赖于第 2 个参数,用于指定套接字所用的特定协议,设为 0 表示使用默认的协议。 RAW SOCKET 能够对较低层次的协议直接访问,网络监听技术很大程度上依赖于它。 (2)能够抓取第二节课的并发服务器程序的服务器端或客户端的应用层数据,即:时间值,打印输出 。 二、设计方 案 同 一台 主 机 不 同 进 程可以用进 程号来 唯 一标 识 ,但 是在网络环境下进 程号并不 能唯 一标 2 识该进程。TCP/IP 主要引入了网络地址、端口和连接等概念来解决网络间进程标识问题。套接字(Socket)是一个指向传输提供者的句柄,TCP/IP 协议支持 3 种类型的套接字,分别是流式套接字、数据报式套接字和原始套接字。 流式套接字(SOCKET_STREAM)提供了面向连接、双向可靠的数据流传输服务。数据报 式 套 接 字 (SOCKET_ DGRAM) 提供 了无 连 接服务 , 不 提 供 无 错保 证 。原 始 套 接 字(SOCKET_RAW)允许对较低层次的协议直接访问,比如 IP、 ICMP 协议,它常用于检验新的协议实现,或者访问现有服务中配置的新设备,因为 RAW SOCKET 可以自如地控制 Windows下的多种协议,能够对网络底层的传输机制进行控制,所以可以应用原始套接字来操纵网络层和传输层应用。比如,我们可以通过 RAW SOCKET 来接收发向本机的 ICMP、IGMP 协议包,或者接收 TCP/IP 栈不能够处理的 IP 包,也可以用来发送一些自定包头或自定协议的 IP 包。网...