码迷,mamicode.com
首页 > 其他好文 > 详细

TCP协议分析

时间:2016-12-14 22:29:42      阅读:365      评论:0      收藏:0      [点我收藏+]

标签:network   浏览器   应用程序   实验目的   filter   

  1. 实验目的

  理解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

  我们程序的数据首先会打到TCPSegment中,然后TCPSegment会打到IPPacket中,然后再打到以太网EthernetFrame中,传到对端后,各个层解析自己的协议,然后把数据交给更高层的协议处理。


技术分享


o  SequenceNumber是包的序号,用来解决网络包乱序(reordering)问题。

o  AcknowledgementNumber就是ACK——用于确认收到,用来解决不丢包的问题。

o  Window又叫Advertised-Window,也就是著名的滑动窗口(SlidingWindow),用于解决流控的。

o  TCPFlag ,也就是包的类型,主要是用于操控TCP的状态机的。


技术分享

技术分享




对于建立链接的3次握手,主要是要初始化SequenceNumber 的初始值。通信的双方要互相通知对方自己的初始化的Sequence Number(缩写为ISNInital Sequence Number)——所以叫SYN,全称Synchronize Sequence Numbers。也就上图中的 x y。这个号要作为以后的数据通信的序号,以保证应用层接收到的数据不会因为网络上的传输的问题而乱序(TCP会用这个序号来拼接数据)。

对于4次挥手,其实你仔细看是2次,因为TCP是全双工的,所以,发送方和接收方都需要FinAck。只不过,有一方是被动的,所以看上去就成了所谓的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,过滤TCP8023端口,捕获TCP协议数据包,并分析。

技术分享


这是第一次握手: IP地址为192.168.0.250的主机AIP地址为218.65.113.46的主机B发送连接请求,A随机初始化自己的序列号50596762,确认号为0,初始化A的接收窗口大小为16384,发送SYN=1,此时ACK=0

2.

技术分享

3.

技术分享

技术分享第三次握手:  主机A对主机B做确认,SYN=0ACK=1,序列号为上一帧的确认号,确认号为B第二次握手的序号加1

4.第四帧为IP地址为192.168.0.250的主机AIP地址为218.65.113.46的主机B发送的帧

技术分享

技术分享

技术分享

技术分享


实验分析

1TCP 协议是面向字节的。TCP 将所要传送的报文看成是字节组成的数据流,并使每一个字节对应于一个序号。在连接建立时,双方要商定初始序号。TCP 每次发送的报文段的首部中的序号字段数值表示该报文段中的数据部分的第一个字节的序号。 TCP 的确认是对接收到的数据的最高序号表示确认,表示接收端期望下次收到的数据中的第一个数据字节的序号。TCP是期望确认和累积确认。

2TCP属于SR(选择性重传),即发送方某个分组出错或丢失只重传该分组。接收方增加接受窗口(接受缓存),若收到的分组在接收窗口内且乱序,缓存该分组,等到分组按序后一起提交,接受窗口的大小一般等于发送方窗口的大小。

3TCP建立连接的过程称为3次握手,第一次握手(syn=1,ack=0,sn1=随机数,ackno=0),第二次握手(syn=1,ack=1,sn2=随机数,ackno=sn1+1),第三次握手只是对第二次作确认。TCP 释放连接的过程置FIN标记为1

4TCP的流量控制指的是接收方明确地通过接收窗口大小,限制发送方发送窗口的最大值,从而达到接收方能够拥有足够的缓存接收数据的目的。TCP流量控制:发送端如果发送的数据很小,第一次会照常发送,后面的会等待(这里windows200ms)等发送数据较大时再放入TCP段中发送。可以在命令行输入telnet IP地址 21IP地址主机打开ftp服务器,连接上后,输入ab,会分别打包ab发送个对方。如果快速的输入abc,则第一次发a,第二次就会有bc一起发送出去。(这里不抓包做实验分析。)


本文出自 “青人云囚” 博客,谢绝转载!

TCP协议分析

标签:network   浏览器   应用程序   实验目的   filter   

原文地址:http://12044860.blog.51cto.com/12034860/1882698

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!