计算机网络基础讲义(5)__TCP
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3、TCP数据报的实例分析
分析第6帧数据各字段的值及含义。提问: 下一条 发送的TCP数据报的序号应该为多少?如何计算?
分析第7帧数据,其“确认序号”值为2872332722, 表明收到了序号为2872332722-1的字节的数据, 即sohu服务器收到了主机192.168.1.52发送的第6 帧数据。
• 连接释放
四次握手释放已建立的连接,即两端分别发送一 个控制位FIN置1的数据包,再分别发送一个确认 收到对方发送的FIN数据包。
提问:图中断开的是哪个端口到哪个端口的连接?
实验九 TCP协议
一、实验目的
1、学习掌握TCP协议的理论知识 2、学习使用ttcpw工具发送和接收TCP数据包 3、学会用抓包工具捕获网络数据报文 4、分析数据报文深入理解协议
二、实验内容
1、在两台主机上分别启动sniffer 设置好capture filter,开始抓包; 2、在其中一台主机(IP地址为x)的DOS命令行状 态下执行命令:(作为接收端) ttcpw –r –s 3、在另一台主机的DOS命令行状态下执行命令: (作为发送端) ttcpw –t –s –l1024 –n5 x 4、两台机器都停止抓包,将结果以文档形式存盘, 保存屏幕截图; 5、仔细分析TCP报文的封装和报文格式,分别写出 各字段值及含义,要求尽可能详细。
Leabharlann Baidu
认收到数据流字节中最后字节编号为n-1的数 据包。
(5)首部长度 该字段给出首部中32 bit字的数目, 即用该字段值乘以4就是TCP首部的长度。这个字 段占4 bit,因此TCP最多有6 0字节的首部。如果没 有任选字段,TCP首部正常的长度是20字节。
(6)保留域 保留域不被使用,但是它必须置0。 (7)控制位 共有六位,分别置1,表示分别有效, 置0,表示无效: U ( URG ) 紧急指针是否有效 A ( ACK ) 确认序号是否有效 P ( PSH ) 接收方是否需要尽快将该报文交给应 用层 R ( RST ) 连接复位是否有效 S ( SYN ) 同步序号是否有效 F ( FIN ) 完成任务是否有效
第10帧数据是主机192.168.1.52发送完第6帧数据后, 发送的下一条数据帧。分析其TCP首部可知“序 号”为2872332722。
4、TCP的运输连接管理
• TCP运输连接分三个阶段:连接建立、数据传送 和连接释放。 一个连接由(源IP地址,目的IP地址,源端口号,目 的端口号)四维参数唯一确定,因此一台主机可 以同时和目标主机的同一端口建立不同的连接。 TCP数据在某连接上传送。释放连接是针对某确 定的连接进行释放。 • 要通过TCP传输数据,必须在两端主机之间建立 连接(三次握手)。举例说明,TCP客户端需要 和TCP服务端建立连接,过程如下所示:
(8)窗口 这个域指示发送方想要接收的数 据字节数。TCP的流量控制由连接的每一端通过 声明的窗口大小来提供 (9)校验和 校验和是报文头和内容按1的补 码和计算得到的16位数。假如报文头和内容的字 节数为奇数,则最后应补足一个全0字节,形成校 验和,注意补足的字节不被送上网络发送。 (10)紧急指针 只有当URG标志置1时紧急指针 才有效。紧急指针是一个正的偏移量,和序号字 段中的值相加表示紧急数据最后一个字节的序号。 TCP的紧急方式是发送端向另一端发送紧急数据 的一种方式。 (11)选项 选项可能在头的后面被发送,但是 必须被完全实现并且是8位长度的倍数。
6、跟踪数据包的序号和确认序号,验证其规律。
7、建立和释放TCP连接 (同时抓包观察结果) 操作:telnet www.sohu.com 80 问题1:找到三次握手的三个数据包,找到结束连接 的四个数据包。 问题2:在连接建立期间,TCP客户机和TCP服务器 告诉对方它们进行数据传送所用的初始序号,请 问双方正式传送用户数据的第一个数据包的序号 是多少? 问题3:TCP客户机和TCP服务器交换窗口大小各是 多少? 问题4:建立一个TCP连接所花费的时间是多少?
在第一步中,客户端向服务端提出连接请求。 这时TCP SYN标志置位。客户端告诉服务端序列 号区域合法,需要检查。客户端在TCP报头的序 列号区中插入自己的ISN。服务端收到该TCP分 段后,在第二步以自己的ISN回应(SYN标志置位), 同时确认收到客户端的第一个TCP分段(ACK标志 置位)。在第三步中,客户端确认收到服务端的 ISN(ACK标志置位)。到此为止建立完整的TCP连 接,开始全双工模式的数据传输过程。
2.3.6 TCP协议
传输控制协议(TCP)提供了可靠的报文流传输 和对上层应用的连接服务, TCP使用顺序的应答, 能够按需重传报文。 TCP将用户数据打包构成报文段;它发送数据 后启动一个定时器;另一端对收到的数据进行确 认,对失序的数据重新排序,丢弃重复数据; TCP提供端到端的流量控制,并计算和验证一个 强制性的端到端检验和。
1、TCP数据报的封装
TCP数据和UDP数据报一样是封装在IP数据 报中的,IP数据报再封装到链路层数据帧中,才 可以通过物理线路在网络中进行传送。当IP首部 中的”协议”字段的值为”06”时,表明该IP数据 包所携带的是TCP数据报。下图是TCP数据报在 IP数据报中的封装格式:
2、TCP报文格式
下图是sniffer抓包的截图,可以看到实例的三次 握手的交互过程:
第6帧数据是客户端的3517端口向服务器的80端口 提出连接请求,控制位SYN置1,这是第一次握手包。 SEQ=2446546053,表明客户端往服务器端方向发 送的数据流起始序号为2446546053。
第7帧数据是服务器端回应连接请求的数据包, 控制位SYN置1,这是第二次握手包。 SEQ=1417594778,表明服务器端往客户端方向发 送的数据流起始序号1417594778。 ACK=2446546054表明收到了客户端发来的序号为 2446546054-1的数据包,即收到了客户端的第一 次握手包,同是期望收到下一字节序号的数据包。 第8帧数据是客户端发给服务器的确认数据包, ACK=1417594779表明收到了服务器发来的序号为 1417594779-1的数据包,即确认收到了服务器发 来的第二次握手包。这是第三次握手包。 提问:上图中第8帧数据的序号应该为多少?
(3)序号 发送的数据流中第一个字节数据的 序号。TCP为数据流中每个字节编连续的序号。如 果本条数据报携带的数据流长度为m字节,则下一 条TCP数据报的序号应该编为本序号加m,记为n, 那么,下一条发送的数据流中第一个数据的序号应 该为n。(特例: 握手数据包占一个字节序号) (4)确认序号 是期望收到对方下次发送的数据的 第一个字节的序号,也就是上次成功收到的数据字 节最后的序号加1。假设确认序号为n,则表明确
三、实验课堂考核 1、是否成功使用ttcpw发送TCP数据包,是否成功 接收,给出相应的屏幕截图。 2、是否成功捕获TCP数据包,给出相应的屏幕截图。 3、抽查讲解一条TCP数据包的某字段值和含义。 四、实验课后作业 回答“实验内容”中各问题,存档,文件为“实验 编号姓名学号文档编号.doc”。
下图是TCP报文格式,由TCP报文首部和数据 两部分组成。如果不算选项部分,TCP头一般是20 个字节。下面分别给出TCP头的各个字段含义:
(1)源端口 用于指示源端口的数值。 (2)目的端口 用于指示目的端口的数值。 UDP和TCP采用16 bit的端口号来识别应用程序。 那么这些端口号是如何选择的呢? 服务器一般都是通过知名端口号来识别的。例 如,FTP服务器的TCP端口号都是21,Telnet服务 器的TCP端口号都是23,DNS服务器的UDP端口 号都是53 。Http服务器的TCP端口是80。端号由 Internet号分配机构( Internet Assigned Numbers Authority, IANA)来管理。 客户端的端口号又称作临时端口号(即存在时 间很短暂),只需保证该端口号在本机上是唯一的 就可以了,只在用户运行该客户程序时才存在。大 多数TCP/IP实现给临时端口分配1024~5000之间 的端口号。