TCP协议的一些问题

TCP三次握手和四次握手


TCP协议通过哪些方式保证数据传输的可靠性?

校验和、序列号、超时重传、确认应答、拥塞控制

怎么解决流量控制、拥塞控制?

流量控制:通过活动窗口实现,会话双方各自维护了一个发送窗口和接收窗口,接收窗口的大小取决于应用、系统、硬件的限制,发送窗口取决于对方接收窗口的大小;通过滑动窗口解决双方处理速度问题,解决问题如:发送速度太快,则接收方会出现overflow

拥塞控制:发送端维持一个拥塞窗口,大小取决于网络的拥塞程度,并且动态变化,发送端让自己的发送窗口小于等于拥塞窗口;通过慢启动,刚开始拥塞窗口很小,根据网络拥塞情况,增性加大拥塞窗口,如果网络拥塞严重,则乘性减小拥塞窗口,从而实现拥塞控制

为什么连接的时候是三次握手?

如果两次握手,只能确认发送方的发送能力和接收方的接收能力和发送能力,而接收方不能确认发送方的接收能力,不符合TCP协议的可靠传输的规范,故经过三次握手之后才能确认双方的接受和发送能力正常
什么是半连接队列?

客户端发送链接请求后,未完成三次握手之前,server端会将这些链接信息放入半链接队列,直到完成三次握手,则放入全链接队列,SYN Flood攻击会导致半链接队列打满,影响服务,全链接队列满,可通过服务的端的参数tcp_abort_on_overflow来决定是放弃ACK还是放弃此次链接
ISN(Initial Sequence Number)是固定的吗?

初始序列起始值不能是固定值,如果是固定值,被黑客截取后,容易对服务器发起syn攻击,导致数据传输紊乱,破坏链接
三次握手过程中可以携带数据吗?

第一次和第二次握手不允许带数据,如果允许带数据的话,黑客很容易发起对服务器的dos攻击,消耗服务端资源;第三次握手可以携带数据,因为对于客户端来说,链接已经建立
如果第三次握手丢失了,客户端服务端会如何处理?

服务端会发起SYN—ACK重传,直到达到最大重传次数,则从半链接队列删除,每次重传间隔时间指数增长
SYN攻击是什么? 

服务器在二次握手时分配资源,此时如果客户端发起大量的SYN包就很容易将服务端的半链接队列占满,导致网络阻塞,服务器瘫痪,属于一种典型的DOS攻击,可通过指定命令查看半链接队列,如果ip大多数是随机的就可以确认为DOS攻击,常见防御技术:缩短超时时间、过滤网关、SYN cookie技术
挥手为什么需要四次?

因为当服务端收到客户端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当服务端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉客户端,"你发的FIN报文我收到了"。只有等到我服务端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四次挥手。
四次挥手释放连接时,等待2MSL的意义?

1、保证客户端发送的最后一个ACK报文段能够到达服务端 2、防止“已失效的连接请求报文段”出现在本连接中

Tcp拆包:Tcp是一种面向字节流的传输协议,数据的传输首先到达服务器缓冲区,当服务器缓冲区的剩余空间小于传输的数据报文是,会进行tcp拆包,将数据报文拆分进行传输
Tcp粘包:当数据传输在很短时间内连续传输多个数据包时,导致多个数据报文同时存在缓冲区,应用层误以为是一个数据包

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值