您的位置:首页 > 理论基础 > 计算机网络

TCP的一般工作过程

2008-10-25 23:58 363 查看
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为希望下一次发送的数据中第一个字节的标号



//此处为四次握手断开连接过程
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  网络 职场 TCP/IP 休闲