TCP的通常工做过程

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为但愿下一次发送的数据中第一个字节的标号

 
//此处为四次握手断开链接过程
相关文章
相关标签/搜索