分享

TCP的一般工作过程

 hh3755 2012-12-05
TCP的一般工作过程
写在前面:
一直以来,很多人对于TCP的工作过程感觉有点难理解,我刚开始接触TCP的时候,也有这种感觉。后来经过一段时间的分析后,逐渐对它有了一点的理解。现在,我就把我的理解注入到一个实例中进行分析!
1 简单介绍
 传输控制协议(Transmission Control Protocol,TCP)是一种面向连接的、可靠的、基于字节流的运输层通信协议。
 面向连接:通信前要建立连接,通信后要拆除连接;
 可靠的:它会后续的数据包状态进行跟踪;
 字节流:以字节为最小单位的流服务;
2 工作过程
TCP分三个阶段
第一阶段:连接建立(三次握手)
第二阶段:数据传输
第三阶段:连接拆除(四次握手)
具体如何理解以上的三个阶段呢?
3 理解要点
1)编号:是对TCP要传输的数据部分中的字节时行编号,但第一个编号并不是标识第一个字节,而是在0-(2的32次方)之间产生的一个随机数作为第一个编号。
例如:
data=5000,ISN=10000。则编号为10001--15000
2)Sequence Number:当前传输的数据中的第一个字节的编号
例如:
data=5000,ISN=10000。则编号为10001--15000。但要分5个报文段进行传输,每个报文段传1000字节
seq为:
段1:seq=10001(10001-11000)
段2:seq=11001(11001-12000)
段3:seq=12001(12001-13000)
段4:seq=13001(13001-14000)
段5:seq=14001(14001-15000)
3)ACKn:下一次接收到的报文的第一个字节的编号。
作用:对上已接收到的报文进行确认,并且标识希望接收到的一下报文。
例如:
A                                                                                                       B
发:seq=10001(10001-11000)
                                                  发:ACKn=11001(11000+1希望发到下一个报文的编号从11001开始) 
发:seq=11001(11001-12000)
4 实例分析(telnet)
 
1)简述telnet过程

telnet是基于TCP的23端口的,它的工作过程如下:
打开cmd
输入:telnet 172.16.1.1                        //向服务器端发起telnet控制连接,触发TCP连接的建立
三次握手建立TCP连接                            //不带任何数据
数据传输过程                                       //输入telnet的数据包
四次握手断开连接                                 //不带任何数据
抓到的包大概如下:
 
//前面的3个包为TCP的三次握手过程(SYN置位表明为三次握手)
//然后才开始数据的传输
 
//最后的四个包分为四次握手断开连接过程(FIN置位表明为四次握手)
 
2)数据包分析过程
 
//三次握手过程。
//双方都初始化一个序列号,此例中都为0,非0也可以的。
//第三包比较特殊,因为此包中只作确认中,既不带数据(前三个包都不带数据),也不带控制信息(FIN或SYN位为控制信息)。TCP中规定此类包不能占用Sep号。故它可以跟前一个包的序号或后个包的序号相同。
//第三个包也没有SYN置位,因为它只在初始化序号的包只才置位。
//而第二个包开始的包都有ACK置位,只有第一个包才不置位。
 
 
//此过程数据传输过程,只摘录前面几个包,后续包的规律也一样;
//seq为本次发送的数据中的第一个字节的标号
//ACKn为希望下一次发送的数据中第一个字节的标号

 
//此处为四次握手断开连接过程
 
 
 

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多