TCP -- 面向连接

面向连接

面向连接,在服务器与客户端通信之前需要三次握手建立连接,通信之后需要四次挥手断开连接

为什么建立连接:

  1. 要使每一方能够确知对方存在
  2. 要允许双方协商一些参数
  3. 能够对运输实体资源进行分配
三次握手过程

在这里插入图片描述

关于三次握手:
A端发送请求后,B端确认后,还要A端也回复B确认,因为网络的拓扑结构,有时候发送的包会在网络中滞留,延迟到达,A要是一段时间收不到回复,会再次发送一个,B收到第二个包回复确认,如果此时A不回复确认,当第一个包到达B,B会认为有两个请求连接,但实际只有一个连接请求,但是在B端会为两个请求分配资源,会浪费资源;或者一个端不断发送SYN请求报文段,但是是恶意行为,做第二次确认回复,如果没有第三次确认,服务器每收到一个请求就分配资源,服务器资源就会被耗费最后奔溃;至于更多次握手是否有必要,其实没有必要,第三次握手确认后,客户端也要分配资源与服务器建立资源,若是客户端有那么多资源和服务器匹敌,其实也没必要攻击服务器。(言语并不专业,不喜勿喷)


四次挥手过程

在这里插入图片描述
四次挥手是因为socket通信是全双工通信,当主动断开方请求断开后,被动断开方并不能立即断开,因为可能自己还有一些数据需要处理,得处理完成才能断开

TIME_WAIT的存在必要: 假设主动断开方发送确认后直接进入关闭状态,如果发送的确认报丢失,被动方迟迟没有收到确认回复,再次发送断开请求FIN,但是此时主动方已经关闭,所以就会不理睬被动方发送的报文,不久后,被动方就会异常关闭;另一种情况,主动方发送确认后立即处于关闭,关闭后,主动方又启动了一个一个连接,接口刚好和刚才关闭的连接一样,此时,被动方有一些发送的数据因为一些原因迟到,这个新启动的连接会收到奇怪的数据不知道怎么处理。所以这个状态的存在就是:1.使迟到的数据能够被处理 2.保证最后一个ACK能够传送到被动方同时断开

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值