标签:network 浏览器 应用程序 实验目的 filter
实验目的
理解TCP报文首部格式和字段的作用,TCP连接的建立和释放过程,TCP数据传输过程中编号与确认的过程。
2. 实验环境
联网环境,可以是局域网,也可以是连入Internet
3. 实验步骤
(1)启动Etherel协议分析软件,并开始抓包。
(2)启动某个基于TCP的应用程序,例如连接某个FTP站点,或通过浏览器访问某个网页。
(3)等出现浏览的网页后停止数据包的捕获。
(4)出现协议分析界面,将filter 一栏填入tcp,则只显示TCP协议信息,通过此信息,可以看到TCP连接的三次握手过程和协商的初始的序列号,数据传输过程以及拆除连接的相应信息。
4. 实验原理
TCP在网络OSI的七层模型中的第四层——Transport层,IP在第三层——Network层,ARP在第二层——Data Link层。在第二层上的数据,我们叫Frame,在第三层上的数据叫Packet,第四层的数据叫Segment。
我们程序的数据首先会打到TCP的Segment中,然后TCP的Segment会打到IP的Packet中,然后再打到以太网Ethernet的Frame中,传到对端后,各个层解析自己的协议,然后把数据交给更高层的协议处理。
o SequenceNumber是包的序号,用来解决网络包乱序(reordering)问题。
o AcknowledgementNumber就是ACK——用于确认收到,用来解决不丢包的问题。
o Window又叫Advertised-Window,也就是著名的滑动窗口(SlidingWindow),用于解决流控的。
o TCPFlag ,也就是包的类型,主要是用于操控TCP的状态机的。
对于建立链接的3次握手,主要是要初始化SequenceNumber 的初始值。通信的双方要互相通知对方自己的初始化的Sequence Number(缩写为ISN:Inital Sequence Number)——所以叫SYN,全称Synchronize Sequence Numbers。也就上图中的 x 和 y。这个号要作为以后的数据通信的序号,以保证应用层接收到的数据不会因为网络上的传输的问题而乱序(TCP会用这个序号来拼接数据)。
对于4次挥手,其实你仔细看是2次,因为TCP是全双工的,所以,发送方和接收方都需要Fin和Ack。只不过,有一方是被动的,所以看上去就成了所谓的4次挥手。如果两边同时断连接,那就会就进入到CLOSING状态,然后到达TIME_WAIT状态。下图是双方同时断连接的示意图(你同样可以对照着TCP状态机看)
4.实验过程:
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协议数据包,并分析。
这是第一次握手: IP地址为192.168.0.250的主机A向IP地址为218.65.113.46的主机B发送连接请求,A随机初始化自己的序列号50596762,确认号为0,初始化A的接收窗口大小为16384,发送SYN=1,此时ACK=0。
2.
3.
第三次握手: 主机A对主机B做确认,SYN=0,ACK=1,序列号为上一帧的确认号,确认号为B第二次握手的序号加1。
4.第四帧为IP地址为192.168.0.250的主机A向IP地址为218.65.113.46的主机B发送的帧
实验分析
(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一起发送出去。(这里不抓包做实验分析。)
本文出自 “青人云囚” 博客,谢绝转载!
标签:network 浏览器 应用程序 实验目的 filter
原文地址:http://12044860.blog.51cto.com/12034860/1882698