小林coding tcp 连接建立

1、三次握手:

2、第三次握手是可以携带数据的,前两次不可以

3、为什么是三次握手  三次握手才能保证双方具有接收和发送的能力  三次握手才可以初始化 Socket、序列号和窗口大小并建立 TCP 连接  

TCP 建立连接时,通过三次握手能防止历史连接的建立,能减少双方不必要的资源开销,能帮助双方同步初始化序列号。序列号能够保证数据包不重复、不丢弃和按序传输。

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

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

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

4、为什么每次建立 TCP 连接时,初始化的序列号都要求不一样呢?

为了防止历史报文被下一个相同四元组的连接接收(主要方面);

为了安全性,防止黑客伪造的相同序列号的 TCP 报文被对方接收;

5、既然 IP 层会分片,为什么 TCP 层还需要 MSS 呢?

ip分片重传没有效率,经过 TCP 层分片后,如果一个 TCP 分片丢失后,进行重发时也是以 MSS 为单位,而不用重传所有的分片,大大增加了重传的效率

6、第一次握手丢失, 重传 次数不超过tcp_syn_retries ,如果还是没有收到服务器的第二次握手,那么客户端就会断开连接

7、第二次握手丢失,客户端就会触发超时重传机制,重传 SYN 报文。服务端这边会触发超时重传机制,重传 SYN-ACK 报文。重传次数都不超过系统的设置,如果再规定时间内和规定次数还是没有收到,客户端、服务端就会断开连接

8、第三次握手丢失,ACK 报文是不会有重传的,当 ACK 丢失了,就由对方重传对应的报文。超过规定的,服务端会断开连接。

9、syn攻击   假设攻击者短时间伪造不同 IP 地址的 SYN 报文,服务端每接收到一个 SYN 报文,就进入SYN_RCVD 状态,但服务端发送出去的 ACK + SYN 报文,无法得到未知 IP 主机的 ACK 应答,久而久之就会占满服务端的半连接队列,使得服务端不能为正常用户服务

全连接队列满了

在服务端并发处理大量请求时,如果 TCP accpet 队列过小,或者应用程序调用 accept() 不及时,就会造成 accpet 队列满了 ,这时后续的连接就会被丢弃,这样就会出现服务端请求数量上不去的现象。

10、TCP 连接,一端断电和进程崩溃有什么区别?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值