TCP协议介绍
TCP是一种面向连接的、可靠的基于字节流的传输层通信协议。TCP将用户数据打包成报文段,它发送后启动一个定时器,另一端收到数据进行确认、对失序的数据重新排序、丢弃重复数据。
TCP的特点有:
1.TCP是面向连接的运输层协议;
2.每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的;
3.TCP提供可靠交付的服务(传输的数据无差错、不丢失、不重复、并且按序到达)
4.TCP提供全双工通信。数据在两个方向上独立的进行传输。因此,连接的每一端必须保持每个方向上的传输数据序号。
5.面向字节流。面向字节流的含义:虽然应用程序和TCP交互是一次一个数据块,但TCP把应用程序交下来的数据转换成仅仅是一连串无结构的字节流。
名称 | 意义 |
---|---|
SYN | 连接请求标志 |
ACK | 确认标志 |
FIN | 终止标志 |
TCP三次握手
第一次握手:
客户端向服务器发送连接请求包,标志位SYN置为1,序号X=0;
第二次握手:
服务器收到客户端发来的报文,由SYN=1知道客户端要求建立联机。向客户端发送一个SYN和ACK都置为1的TCP报文,设置初始序号Y=0,将确认序号设置为客户端的序列号加1,即X+1=0+1=1;
第三次握手:
客户端收到服务器发来的包后检查确认序号是否正确,即第一次发送的序号加1.以及标志位ACK是否为1.若正确,客户端再次发送确认包,ACK标志位为1,SYN标志位为0.确认序号为Y+1,发送序号为X+1=1.服务器收到确认序号值与ACK=1则连接建立成功,可以传送数据了。
图一.TCP三次握手图解
TCP四次挥手
由于TCP协议是全双工通信的,因此每个方向都需要单独关闭来连接,需要发送四个数据包,因此称为四次握手。
第一次挥手:
客户端给服务器发送TCP包,用来关闭客户端到服务器的数据传送。将标志位FIN和ACK都置为1,序号为X=1,确认序号Z=1。
第二次挥手:
服务器收到FIN后,发回一个ACK(标志位ACK=1),确认序号为收到序号加1,即X=2。序号为收到的确认序号Z。
第三次握手:
服务器关闭与客户端的连接,发送一个FIN。标志位FIN和ACK都置为1,序号Y=1,确认序号为X=2;
第四次握手:
客户端收到服务器发送的FIN之后,发回ACK确认(标志位ACK=1),确认序号为收到序号加1,即Y=2。序号为收到的确认序号X=2。
图一.TCP四次挥手图解
以上就是我对TCP三次握手和四次挥手的总结归纳,如有错误请各位朋友帮忙指正,也欢迎各位朋友在讨论区留言评论!