TCP协议为什么要设计三次握手

从三个方面回答

1.TCP协议是一种可靠的,基于字节流的,面向连接的传输层协议

  • 可靠性体现在TCP协议通信双方的数据传输是稳定的,即便是在网络不好的情况下,TCP都能够保证数据传输到目标端,而这个可靠性是基于数据包确定机制来实现的。
  • TCP通信双方的数据传输是通过字节流来实现传输的
  • 面向连接, 是说数据传输之前,必须建立一个连接,然后基于这个连接进行数据传输。

2.TCP是面向串接的协议,所以在进行数据通信之前,需要建立一个可靠的连接,TCP采用了三次握手的方式来实现连接的建立。

所谓三次握手,其实就是通信双方一共需要发送三次请求,才能确保这个连接的建立。

  • 客户端向服务端发送连接请求并携带同步序列号SYN
  • 服务端收到请求后,发送SYN和ACK,这里的SYN表示服务端的同步序列号,ACK表示对前面收到请求的一个确认,表示告诉客户端,我收到了你的请求
  • 客户端收到服务端的请求后,再次发送ACK,这个ACK是针对服务端连接的一个确认,表示告诉服务端,我收到了你的请求。

3.之所以TCP要设计三次握手,有三个方面:

  • TCP是可靠性通信协议,所以TCP协议的通信双方都必须维护一个序列号,去标记已经发送出去的数据包,哪些是已经被对方签约的。而三次握手就是通信双方相互告知序列号的起始值,为了确保这个序列包被收到,所以双方都需要有一个确认的操作
  • TCP 协议需要在一个不可靠的网络环境下实现可靠的数据传输,意味着通信双方必须通过某种 手段来实现一个可靠的数据传输通道,而三次通信是建立这样一个通道的最小值。当然还可以 四次、五次,只是没必要浪费这个资源。
  • 防止历史的重复连接初始化造成的混乱问题,比如说在网络比较差的情况下,客户端连续多次发送建立连接的请求,假设只有两次握手,那么服务端只能选择接受或者拒绝这个连接请求,但是服务端不知道这次请求是不是之前网络堵塞而过期的请求,也就是说服务端不知道当前客户端的连接是有效还是无效。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值