TCP协议分析
一,实验目的
1.掌握TCP协议的首部格式。
2.掌握TCP协议的序号确认机制。
3.掌握TCP协议的流量控制机制。
4.学会协议分析软件发送自定义数据包的方法。
二,实验原理
1.TCP协议是面向连接服务和提供可靠数据传输的协议,通过抓包分析TCP如何建立连接,数据传输,释放连接来分析TCP协议。
2.TCP协议是通过三次握手来建立连接,通过序列号和确认号来维护双方的通信,通过发送窗口的大小来控制流量。
3.通过多台电脑建立一台电脑的TCP连接,可以分析流量控制的实质。
三,实验步骤
1.在IP地址为 192.168.0.250的主机A的命令行窗口里输入telnet 218.65.113.46 会发现连接不上,因为23号端口没有打开。打开IP地址为218.65.113.46的主机B的浏览器和主机A的抓包软件Irris,然后在主机A命令行输入telnet 218.65.113.46 80,过滤TCP及80,23端口,捕获TCP协议数据包,并分析。
(1)
这是第一次握手: IP地址为192.168.0.250的主机A向IP地址为218.65.113.46的主机B发送连接请求,A随机初始化自己的序列号50596762,确认号为0,初始化A的接收窗口大小为16384,发送SYN=1,此时ACK=0。
(2)
这是第二次握手: B 随机初始化自己的序列号804733534,确认号为A第一次握手的序号加1(期望对方发送的下一个数据的第一个字节的编号)做确认,为50596763,初始化B的接收窗口大小,发送SYN=1,ACK。
(3)
第三次握手: 主机A对主机B做确认,SYN=0,ACK=1,序列号为上一帧的确认号,确认号为B第二次握手的序号加1。
(4)第4至9帧。
第四帧为IP地址为192.168.0.250的主机A向IP地址为218.65.113.46的主机B发送的帧
(5)第五帧为B向A发送的:
(7)第7帧还是B向A发送的:
(11)由于有条件的抓包,有些特殊情况不特别列出来分析。
TCP协议有正常断开连接和非正常断开连接。RST为1表示为异常断开连接。RST复位重置标记,表示TCP连接中出现严重错误,必须强行释放连接。
注意:在TCP中,特殊报文(SYN=1,FIN=1,RST=1)的确认号加1。
实验分析
(1)TCP 协议是面向字节的。TCP 将所要传送的报文看成是字节组成的数据流,并使每一个字节对应于一个序号。在连接建立时,双方要商定初始序号。TCP 每次发送的报文段的首部中的序号字段数值表示该报文段中的数据部分的第一个字节的序号。 TCP 的确认是对接收到的数据的最高序号表示确认,表示接收端期望下次收到的数据中的第一个数据字节的序号。TCP是期望确认和累积确认。
(2)TCP属于SR(选择性重传),即发送方某个分组出错或丢失只重传该分组。接收方增加接受窗口(接受缓存),若收到的分组在接收窗口内且乱序,缓存该分组,等到分组按序后一起提交,接受窗口的大小一般等于发送方窗口的大小。
(3)TCP建立连接的过程称为3次握手,第一次握手(syn=1,ack=0,sn1=随机数,ackno=0),第二次握手(syn=1,ack=1,sn2=随机数,ackno=sn1+1),第三次握手只是对第二次作确认。TCP 释放连接的过程置FIN标记为1。
(4)TCP的流量控制指的是接收方明确地通过接收窗口大小,限制发送方发送窗口的最大值,从而达到接收方能够拥有足够的缓存接收数据的目的。TCP流量控制:发送端如果发送的数据很小,第一次会照常发送,后面的会等待(这里windows是200ms)等发送数据较大时再放入TCP段中发送。可以在命令行输入telnet IP地址 21,IP地址主机打开ftp服务器,连接上后,输入ab,会分别打包a,b发送个对方。如果快速的输入abc,则第一次发a,第二次就会有bc一起发送出去。(这里不抓包做实验分析。)