TCP序列号确认号详解:三次握手、数据传输、终止连接
来源:互联网 发布:linux vi修改ip地址 编辑:程序博客网 时间:2024/06/11 19:02
TCP(Transmission Control Protocol) 传输控制协议
TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:
位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急)
Sequence number(顺序号码) Acknowledge number(确认号码)
在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。 完成三次握手,客户端与服务器开始传送数据.
含义
序列号:指出段中数据在发送端数据流中的位置
确认号:指出本机希望下一个接收的字节的序列号
原则
序列号是上一个收包的确认号不变
确认号是上一个收包的序列号+上一个收包的数据段的大小
TCP建立连接
TCP建立连接,也就是我们常说的三次握手,它需要三步完成。在TCP的三次握手中,发送第一个SYN的一端执行的是主动打开。而接收这个SYN并发回下一个SYN的另一端执行的是被动打开。
这里以客户端向服务器发起连接来说明。
1)
注意:因为一个SYN将占用一个序号,所以要加1。
-------------------------------
传输数据的简要过程如下:
1)
2)
数据分段中的序列号可以保证所有传输的数据按照正常的次序进行重组,而且通过确认保证数据传输的完整性。
--------------------------------------
关闭连接的4个步骤如下:
1)
2)
3)
4)
注意:因为FIN和SYN一样,也要占一个序号。理论上服务器在TCP连接关闭时发送的终止数据包中,只有终止位是置1,然后客户端进行确认。但是在实际的TCP实现中,在终止数据包中,确认位和终止位是同时置为1的,确认位置为1表示对最后一次传输的数据进行确认,终止位置为1表示关闭该方向的TCP连接。
- TCP序列号确认号详解:三次握手、数据传输、终止连接
- TCP序列号和确认号详解--三次握手四次挥手
- 对tcp三次握手的详解之 理解TCP序列号(Sequence Number)和确认号(Acknowledgment Number)
- TCP/IP详解--TCP三次握手建立连接与四次握手终止连接
- 唯快不破:TCP/IP详解--TCP三次握手建立连接与四次握手终止连接
- 图解TCP三次握手和连接终止
- TCP连接三次握手详解
- TCP三次握手连接四次挥手终止连接
- TCP连接过程(三次握手) 终止协议(四次挥手)
- TCP三次握手及释放连接详解
- TCP三次握手建立连接与四次握手终止连接及sep和ack号的正确理解
- tcp连接三次握手
- TCP连接三次握手
- TCP连接三次握手
- TCP三次握手连接
- TCP三次握手连接
- TCP三次握手连接
- tcp 三次握手连接
- android-1
- myeclipse jsp中文字体显示过小问题
- UML类图与类的关系详解
- svn使用之项目提交
- c# 获取电脑硬件信息
- TCP序列号确认号详解:三次握手、数据传输、终止连接
- CopyOnWriteArrayList
- ORACLE触发器详解
- mysql_unbuffered_query与mysql_query的区别
- 简单的java 死锁小例子 两点需要注意的地方
- jquery+getJson+struts2, 跨域访问问题
- 二叉树中序遍历非递归算法详解
- 用js实现php里面的函数库 strtr()这个很好用
- Install CppUnit on Ubuntu