传输层协议分析实验报告_第1页
传输层协议分析实验报告_第2页
传输层协议分析实验报告_第3页
传输层协议分析实验报告_第4页
传输层协议分析实验报告_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、传输层协议分析实验报告 精品文档,仅供参考传输层协议分析实验报告 2.传输层协议分析 2.A 数据包 捕获分析部分 2.1 实验目的 理解 TCP 报文首部格式和字段的作用,TCP 连接的建立和释放过程,TCP 数据传输中编号与确认的作用。 2.2 实验内容 应用 TCP 应用程序传输文件,截取 TCP 报文,分析 TCP 报文首部信息,TCP 连接的建立过程,TCP 数据的编号和确认机制。 2.3 实验原理 TCP 协议是传输控制协议的简称,工作在网络层协议之上,是面向连接的,可靠的,端到端的传输层协议。 1) TCP 的报文格式 TCP 报文段分为头部和数据两部分,如图 1: 图 1 TC

2、P 报文段的总体结构 TCP 首部 TCP 数据部分 TCP 报文段首部又分为固定部分和选项部分,固定部分为 20B,如图 2 所示,这些字段的组合实现了 TCP 的所有功能。 图 2 TCP 报文段的首部 0 15 31 源端口 目的端口 序号 确认号 头部 长度(4bit) 保留 U R G A C K P S H R S T S Y N F I N 窗口 校验和 紧急指针 选项(长度可变) 填充 TCP 采用传输输连接的方式传送 TCP 报文,传输连接包括连接建立、数据传输和连 接释放三个阶段。 2) TCP 连接的建立 TCP 连接建立采用“3 次握手”方式。 首先,主机 A 的 TC

3、P 向主机 B 的 TCP 发出连接请求报文段,其首部中的同步位 SYN 应置 1,同时选择一个序号 X,表明在后面传送数据时的第一个数据字节的序号是 X+1,如图 3所示: 图 3 TCP 连接建立的 3 次握手过程 然后,主机 B 的 TCP 收到连接请求报文段后,若同意,则发回确认。在确认报文段中应将 SYN 和 ACK 都置 1,确认号应为 X+1,同时也为自己选择一个序号 Y。 最后,主机 A 的 TCP 收到 B 的确认后,要向 B 发回确认,其 ACK 置 1,确认号为 Y+1,而自己的序号为 X+1。TCP 的标准规定,SYN 置 1 的报文段都要消耗掉一个序号。同时,运行客户

4、进程的主机 A 的 TCP 通知上层应用进程,连接已经建立。当主机 A 向 B 发送第一个数据报文段时,其序号仍为 X+1,因为前一个确认报文段并不消耗序号。 当运行服务器进程的主机 B 的 TCP 收到主机 A 的确认后,也通知其上层应用进程,连接已经建立。 另外,在 TCP 连接建立的过程中,还利用 TCP 报文段首部的选项字段进行双方最大报文段长度 MSS 协商,确定报文段的数据字段的最大长度。双方都将自己能够支持的 MSS 写入选项字段,比较之后,取较小的值赋给 MSS,并应用于数据传送阶段。 3) TCP 数据的传送 为了保证TCP传输的可靠性,TCP采用面向字节的方式,将报文段的数

5、据部分进行编号,每个字节对应一个序号。并在连接建立时,双方商定初始序号。在报文段首部中,序号字段和数据部分长度可以确定发送方传送数据的每一个字节的序号,确认号字段则表示接收方希望下次收到的数据的第一个字节的序号,即表示这个序号之前的数据字节均已收到。这样既做到了可靠传输,又做到了全双工通信。 当然,数据传送阶段有许多复杂的问题和情况,如流量控制、拥塞控制、重传机制等,本次实验不探究。 被动打开 主动打开 确认 确认 连接请求 4)TCP 连接的释放 在数据传输结束后,通信的双方都可以发出释放连接的请求。TCP 连接的释放采用“4次握手”。如图 应 用 进 程 释放连接通知主机应用进程A不再发送

6、报文确认 应用进程释放连接确认B不再发送报文FIN,SEQ-XACK,SEQ=Y,ACK=X+1FIN,ACK,SEQ=Y,ACK=X+1ACK,SEQ=X+1,ACK=Y+1AB 图 4 TCP 连接释放的 4 次握手过程 首先,设图 4 中主机 A 的应用进程先向其 TCP 发出释放连接的请求,并且不再发送数据。TCP 通知对方要释放从 A 到 B 这个方向的连接,将发往主机 B 的 TCP 报文段首部的中止位置 1,其序号 X 等于前面已传送过的数据的最后一个字节的序号加 1。 主机 B 的 TCP 收到释放连接通知后即发出确认,其序号为 Y,确认号为 X+1,同时通知高层应用进程,如图

7、中的箭头。这样从 A 到 B 的连接就被释放了,连接处于半关闭状态,相当于主机 A 对主机 B 说“我已经没有数据发送了。但是如果你还有数据要发送,我仍然接收。” 此后,主机 B 不再接收 A 发来的数据。但若主机 B 还有一些数据要发给 A,则可以继续发送(这种情况很少)。主机 A 只要正确收到数据,仍然向 B 发送确认。 若主机 B 不再向主机 A 发送数据,其应用进程就通知 TCP 释放连接,如图中的箭头。主机 B 发出的连接释放报文段必须将中止位 FIN 和确认位 ACK 置 1,并使其序号仍为 Y(因为签名发送的确认报文段不消耗序号),但是还必须重复上次已经发送过的 ACKX+1。主

8、机A 必须对此发出确认,将 ACK 置 1,ACK=Y+1,而自己的序号仍然是 X+1,因为根据 TCP 标准,前面发送过的 FIN 报文段要消耗掉一个序号。这样就把 B 到 A 的反方向的连接释放掉。主机A 的 TCP 再向其应用进程报告,整个连接已经全部释放。 2.4 实验步骤 骤 步骤 1 在 Wireshark 中设置过滤条件,协议为 TCP HTTP,地址为本机any,并开始截获报文; 步骤 2 打开 .,完成后,保存截获的报文并命名为“TCP 学号”, ,分析捕获的报文。 这里,TCP 的连接和建立采用的是: 三次握手 方式,本机是

9、,远端主机是 83 。 步骤 3 分析 TCP 连接建立过程的前 3 个报文,填写下表 1: 表 表 1 TCP 建立过程的三个报文信息 字段名称 第一条报文 第二条报文 第三条报文 报文序号 1704 1716 1718 Sequence Nunber 830 849 835 ACK Number 289 291 237 ACK 1 291 1 SYN 1 1 1 步骤 4 分析截获报文中数据发送部分的第一条 TCP 报文及其确认报文,将报文中的字段值填写在表格 2 中。 表 表 2 TCP 报文首部信息 字段名 长度 字段值 字段意义 发送报文 确认报文 源端口 16

10、 发送 目标端口 16 确认 端口号是唯一标识 序号 32 确认好 32 确认 头部长度 4 保留 6 保留字段 窗口 16 校验和 16 紧急指针 16 选项(长度可变) 步骤 5 TCP 连接建立时,其报文首部与其它 TCP 报文不同,有一个 option 字段,它的作用是什么?结合 IEEE802.3 协议规定的以太网最大帧长分析此数据是怎么得出来的? 步骤 6 分析 TCP 数据传送阶段的前 8 个报文,将报文信息填入表 3: 表 表 3 TCP 数据传送部分的前 8 个报文 报文序号 报文种类 序号字段 确认号字段 数据长度 被确认报文序号 窗口 3744 确认 289 1 324

11、289 123 3754 发送 1 0 66 16580 3764 确认 1 1 344 291 123 3784 发送 1 0 66 16579 3794 确认 237 1 290 237 123 3804 发送 1 0 66 16593 3814 确认 289 0 290 290 16768 3824 确认 290 1 290 290 16768 2.5 实验总结 在实验中,通过分析截获的 TCP 报文首部信息,可以看到首部中的序号、确认号等字段是 TCP 可靠连接的基础。 分析 TCP 头部信息,分析“3 次握手”过程。通过对数据传送阶段报文的初步分析,了解数据的编码和确认机制。 总之,

12、TCP 协议中的各项设置都是为了在数据传输时提供可靠的面向连接的服务。 2.B 编程造 构造 UDP 数据包 部分 使用 C 语言构造 UDP 数据包程序。 1) UDP 首部和伪首部结构体定义 /* UDP 首部*/ struct udphdr unsigned short u_src; unsigned short u_dst; unsigned short u_len; unsigned short u_cksum; char u_dataU_MAXLEN; /UDP 中校验使用的伪首部 struct pseudo_header int srcIp; short udp_len; cha

13、r rsv; char protocol; unsigned short src_port; ; unsigned short dsc_port; unsigned short len; unsigned short check_sum; char data2; ; 2)构建 UDP 报文数据 int build_udp_Package(struct socket_pair * sp,const unsigned char *buf,int len,unsigned char *udpPacket,int *udpPacketLen) *udpplen=sizeof(struct udp_hdr)+len; struct udp_hdr*uh=(struct udp_hdr*)udppkt; unsigned char*dbuf=(udppkt+sizeof(struct udp_hdr); m

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论