网络工程《计算机网络》学生实验报告

2022年10月11日09:15:04 发表评论 0 views

实验课程名称:计算机网络

实验项目名称:Socket通信编程与传输协议分析

实验类型:验证性

指导教师:xx

 

实验日期:  2021年 1116

学生姓名   学   号  
班  级   专业名称  
实验组

其他成员

 
实验地点 F307
实验成绩

(教师签名)

 

 

 

 

实验目的与要求

实验目的:

1、掌握 Socket 通信协议实现的方法,能够使用至少一种语言编写通信程序;

2、理解 TCP 与 UDP 通信实现的方法和过程,理解报文段封装的作用,掌握可靠传输

实现的方法;

3、理解 TCP 三次握手建立连接、数据传输、四次挥手拆除连接的方法和过程。

实验要求:

1、使用Java/C/C++/C#/Python 等语言编写Socket 通信程序。

2、基于TCP 的 SOCKET 通信测试及验证。

3、TCP 通信过程分析

内容 得分 验证及要求
1 端口扫描编程及验证,分析 5 利用 Socket connect 扫描自己服务器至少 1 个端口

分析TCP三次握手和四次挥手中服务器和客户端状态

2 Socket 编程 5 编写 Socket 的服务器及客户端程序
3 Socket 测试 5 在局域网内,或者同学建立的小组内进行通信测试
4 传 输 层 验证分析 1 SYN - SYN,ACK - ACK 10 分析三次握手建立连接过程,Sequence Number 计算
2 PSH - SYN 10 分析发送数据及确认过程,Sequence Number 计算
3 Fin,ACK - ACK Fin,ACK - ACK 10 分析四次挥手拆除连接过程,Sequence Number 计算
4 RST 10 至少导致一个 RST 并说明原因
5 Segments 5 发送一个至少需要分 2 个Segment 的报文,

Sequence Number 计算

5 WEB SOCKET 编程测试 5 需将WEB 发布至互联网以便老师聊天检查
操作异常问题与解决方案 5 操作异常问题与分析解决方案
实验总结 30 实验的总结(300 字以上 )
实验原理与内容

实验原理:

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的抓包情况

操作异常问题与解决方案
实验总结

发表留言

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: