TCP为什么要三次握手?四次挥手?

TCP和UDP都是传输层协议,TCP用于建立连接的通信,如通话、视频,UDP则是无连接的,适用于邮件、网站。三次握手确保了连接的可靠性,防止旧的SYN包导致错误的多次连接。四次挥手则确保双方安全关闭连接,避免服务端因未收到ACK而无限等待。
摘要由CSDN通过智能技术生成

TCP、UDP都是在传输层,都是在程序之间传输数据。

TCP:是基于连接的,主要用于通话、视频

UDP:是基于非连接的,主要用于邮件、网站等

一、TCP三次握手

三次握手主要是建立客户端与服务端的连接,保证客户端和服务端都具有发送和接收数据的能力。

①客户端向服务端发送SYN包(确定是否能建立连接)

②若服务端同意连接,则向客户端发送SYN+ACK包

③客户端收到包后,向服务端发送ACK包(于是连接建立)

!二次连接不行吗?

①防止已失效的请求报文突然又传到服务器引起错误

eg.客户端第一次发送的SYN包阻塞网络,当第二次发送的SYN包通过二次连接与服务端建立连接,此时第一次发送的SYN包又成功发送。导致服务器认为客户端建立了两次连接,而实际客户端以为只建立了一次连接。

!三次握手是TCP为了在不可靠的信道上建立可靠的连接

①为了解决丢包和乱序问题,TCP协议建立了一个缓冲区,发送的报文:序列号+长度+数据内容。则回复确认为:ACK=序列号+长度(即下一包起始序列号)

二、四次挥手

①客户端向服务端发送FIN包,客户端进入等待1状态

②服务端收到后,发送ACK包,表示服务端已进入关闭等待状态。则客户端进入等待2状态(此时,服务端还可以发送数据,客户端还可以接收数据)

③服务端发送FIN包,进入最后确认状态

④客户端接收后,回复ACK包,并进入超时等待状态。客户端经过超时时间后关闭连接,服务端收到连接后立即关闭连接

! 客户端经过超时时间后才能关闭连接:

防止服务端没有收到ACK包一直处于等待状态。若服务端没收到,则服务端重发FIN包,客户端再发FIN包,并刷新超时连接时间

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值