实验课程名称:计算机网络
实验项目名称:Socket通信编程与传输协议分析
实验类型:验证性
指导教师:xx
实验日期: 2021年 11月16日
学生姓名 | 学 号 | ||
班 级 | 专业名称 | ||
实验组
其他成员 |
|||
实验地点 | F307 | ||
实验成绩
(教师签名) |
实验目的与要求
实验目的: 1、掌握 Socket 通信协议实现的方法,能够使用至少一种语言编写通信程序; 2、理解 TCP 与 UDP 通信实现的方法和过程,理解报文段封装的作用,掌握可靠传输 实现的方法; 3、理解 TCP 三次握手建立连接、数据传输、四次挥手拆除连接的方法和过程。 实验要求: 1、使用Java/C/C++/C#/Python 等语言编写Socket 通信程序。 2、基于TCP 的 SOCKET 通信测试及验证。 3、TCP 通信过程分析
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
实验原理与内容
实验原理: 1、Socket Socket 本质是编程接口(API),对 TCP/IP 的封装,TCP/IP 为网络服务和应用提供 Socket 编程接口,当前主要的 Socket 编程主要有SOCK_STREAM (TCP)、SOCK_DGRAM (UDP) 工作在传输层,SOCK_RAW 工作在网络层。 2、 TCP 报文封装及通信过程 TCP 在IP 层提供的不可靠服务基础上实现可靠数据传输服务,流水线机制传输,使用累积确认确认传输,并使用单一重传定时器和收到重复ACK 确认传输失败,进行重传。 TCP 段结构包含。 源地址端口、目的端口,16 位字段,发送接收该报文段的主机中应用程序的端口号。 序号(segment 第一个字节的编号)、确认号(接收方期望从对方接受的字节编号), Flag(URG: 紧急数据标志位;ACK:确认标志位;PSH:请求推送位,发送了数据;RST:连接复位;SYN:建立连接, 让连接双方同步序列号;FIN:释放连接)。 窗口大小: TCP 的窗口大小,以字节为单位。最大长度是 65535 字节(16 位)。 检验和:将传输层传输层伪首部与首部字段求和并校验,保证数据的完整性和准确性。 实验内容: 1、使用Java/C/C++/C#/Python 等语言编写Socket 通信程序。 2、基于TCP 的 SOCKET 通信测试及验证。 3、TCP 通信过程分析 |
||||||||||||||||||||||||||||||||||||||||||||||||||||
实验设备与软件环境
1、安装有 Wireshark 的客户端; 2、安装并配置有 C运行环境的服务器及客户端; 3、相对稳定的无线局域网环境 |
||||||||||||||||||||||||||||||||||||||||||||||||||||
实验过程与结果(可贴图)
1、端口扫描编程及本地服务器测试: 端口扫描结果 抓包,包含有三次握手和四次挥手 分析三次握手和四次挥手客户端和服务器端的过程(各阶段的状态) 例如:
2、Socket通信编程代码: 只需要核心代码,bind,listen和accept以及connection等 3、进行socket通信测试,收到来自服务器端发来的消息(学号姓名): 4、传输层协议及通信过程分析: 分析过程及序列号和确认号计算: 两个同学一组,互相发送学号姓名缩写,然后先计算sequence number 和ack number,然后再抓包验证每个过程并标记出来。 5、Segment分段测试验证: ①准备一个大于 1460 倍数的字符串: ②进行 TCP 传输,在服务器端捕捉报文,分析分段情况: ②进行 UDP传输,在服务器端捕捉报文,分析分段情况: udp抓包 1 没有三次握手 2 发送超过接收窗口的报文,验证分段segment只有1个 但是发送的报文在网络层通过数据报分片,验证了UDP和网络层只提供尽力而为的服务,客户端未必能接收(无法分解到进程) 6、RST测试验证: 重连发生RST的抓包情况 |
||||||||||||||||||||||||||||||||||||||||||||||||||||
操作异常问题与解决方案 | ||||||||||||||||||||||||||||||||||||||||||||||||||||
实验总结 |