实验目的与要求1. 掌握 Socket 通信协议实现的方法,能够使用至少一种语言编写通信程序; 2. 理解 TCP 与 UDP 通信实现的方法和过程,理解报文段封装的作用,掌握可靠传输实现的方法; 3. 理解 TCP 三次握手建立连接、数据传输、四次挥手拆除连接的方法和过程。 |
实验原理
源地址端口、目的端口,16 位字段,发送接收该报文段的主机中应用程序的端口号。 序号(segment 第一个字节的编号)、确认号(接收方期望从对方接受的字节)。 RST:连接复位;SYN:建立连接,让连接双方同步序列号;FIN:释放连接。 窗口大小: TCP 的窗口大小,以字节为单位。最大长度是 65535 字节(16 位)。 检验和:将传输层伪首部与首部字段及数据求和并校验,保证数据的完整性和准确性。 |
实验设备与软件环境1. 安装有 Wireshark 的客户端; 2. 安装并配置有 C|C++|JAVA|PYTHON 运行环境的服务器及客户端; 3. 相对稳定的局域网环境(有线或者无线) |
实验过程与结果
端口扫描是基于 Socket 函数的应用,一般通过 Socket connect 连接服务器端口,建立成 功,就说明对方开放了该端口,对于了解服务器开启了那些网络服务比较有用。 目前主要的扫描有 TCP connect()、TCP SYN、TCP FIN 等,这些扫描对于真实的生产环 境的网络安全造成一定的威胁,扫描的测试及验证应自己搭建虚拟服务器进行。编程和测试如图1.1所示。 图1.1
当前主要的Socket 编程主要有 SOCK_STREAM (TCP)、SOCK_DGRAM (UDP),SOCK_RAW,要求完成基于 TCP 的 Socket 通信,包括 server 和 client 部分,用 C、C++、JAVA 和 Python 实现都可以,必须有连接建立,数据传输及连接拆除过程。代码如下图所示:
为了验证及分析传输层协议及通信过程,应在服务器和客户端之间至少发送一条数据 (建议包含学号和姓名),并且由退出及关闭连接,在 SocketServer 或者 SocketClient 所在的 网卡进行报文捕捉,报文内容应包含三次握手建立连接过程、数据发送及确认,四次挥手拆 除连接过程。 过程如下图所示: 分析这三个过程,并计算 Sequence Number。分析过程及序列号计算示例如下图所示。 |
Socket 通信编程与传输协议分析
于 2024-09-23 16:28:21 首次发布