TCP三次握手和四次挥手

一、什么是TCP协议:

TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在TCP/IP模型中,TCP负责在网络中的两个主机之间建立一个可靠的通信连接。这个过程主要通过三次握手(Three-way Handshake)来实现,而结束一个连接则通过四次挥手(Four-way Handshake)来完成。

二、TCP三次握手和四次挥手介绍:

三次握手

  1. 第一次握手(SYN)

    • 意义:客户端向服务器发送一个SYN包,表示客户端希望建立连接。这个SYN包中包含客户端的初始序列号(ISN),用于后续数据传输的序列号初始化。
    • 目的:确认客户端能够发送数据,并且让服务器知道客户端的初始序列号。
  2. 第二次握手(SYN-ACK)

    • 意义:服务器收到客户端的SYN包后,如果同意建立连接,会发送一个SYN-ACK包作为响应。这个包中包含服务器的初始序列号,并对客户端的SYN请求进行确认(ACK)。
    • 目的:确认服务器能够接收和发送数据,并且让客户端知道服务器的初始序列号,同时确认客户端的SYN请求已被接收。
  3. 第三次握手(ACK)

    • 意义:客户端收到服务器的SYN-ACK包后,发送一个ACK包作为响应,确认服务器的SYN请求已被接收。
    • 目的:确认客户端能够接收服务器的数据,完成双向通信的建立。至此,TCP连接完全建立,双方可以开始数据传输。

不使用「两次握手」和「四次握手」的原因:

  • 两次握手:无法防止历史连接的建立,会造成双方资源的浪费,也无法可靠的同步双方序列号;

  • 四次握手:三次握手就已经理论上最少可靠连接建立,所以不需要使用更多的通信次数。

四、TCP的四次挥手

四次挥手

  1. 第一次挥手(FIN)

    • 意义:客户端发送一个FIN包给服务器,表示客户端已经完成数据发送,希望关闭连接。
    • 目的:通知服务器客户端已经没有数据要发送了,请求关闭连接。
  2. 第二次挥手(ACK)

    • 意义:服务器收到客户端的FIN包后,发送一个ACK包作为响应,确认客户端的FIN请求。
    • 目的:确认服务器已经收到客户端的关闭请求,并且告诉客户端服务器已经准备好关闭连接。
  3. 第三次挥手(FIN)

    • 意义:服务器在发送完所有剩余数据后,发送一个FIN包给客户端,表示服务器也准备关闭连接。
    • 目的:通知客户端服务器已经完成数据发送,请求关闭连接。
  4. 第四次挥手(ACK)

    • 意义:客户端收到服务器的FIN包后,发送一个ACK包作为响应,确认服务器的FIN请求。
    • 目的:确认客户端已经收到服务器的关闭请求,并且客户端已经准备好关闭连接。至此,TCP连接完全关闭。

通过这一系列的过程,TCP确保了连接的可靠性和数据的完整性,同时也允许双方在结束通信时能够优雅地关闭连接,释放资源。

三、TCP标志位

标志位含义
SYN建立连接时同步序列号
ACK确认收到的数据
FIN关闭连接
RST重置连接
PSH推送数据给应用层
URG有紧急数据
ECE网络拥塞通知
CWR减少发送数据量
NS防止序列号预测攻击

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值