01 Tcp-初识Tcp-建立过程分析

2019-05-20  本文已影响0人  花神子

三次握手-四次挥手


三次握手

tcp.png

1.为什么是三次握手?不能是两次?

解释一下为啥只有三次握手才能确认双方的接受与发送能力是否正常,而两次却不可以

说明

三次握手的过程中,客户端和服务端的状态也在发生变化:

1、确认双方的接受能力、发送能力是否正常。
2、指定自己的初始化序列号,为后面的可靠传送做准备。
3、如果是 https 协议的话,三次握手这个过程,还会进行数字证书的验证以及加密密钥的生成到。

2. TCP初始化序列号ISN

ISN(Initial Sequence Number) 是固定的吗?

ISN = M + F(localhost, localport, remotehost,remoteport).

M:是一个计时器,这个计时器每隔4微秒加1。

F:是一个Hash算法,根据源IP、目的IP、源端口、目的端口生成一个随机数值。要保证hash算法不能被外部轻易推算得出,用MD5算法是一个比较好的选择。

3. 什么是半连接队列? 全连接队里?

4. SYN-ACK 重传次数 重传

5. 三次握手过程中可以修改数据吗?

说明

1. 假如第一次握手可以携带数据的话,如果有人要恶意攻击服务器,那他每次都在第一次握手中的 `SYN` 报文中放入大量的数据,
因为攻击者根本就不理服务器的接收、发送能力是否正常,然后疯狂着重复发 `SYN` 报文的话,这会让服务器花费很多时间、
内存空间来接收这些报文。也就是说,第一次握手可以放数据的话,其中一个简单的原因就是会让服务器更加容易受到攻击了。
2. 第三次的话,此时客户端已经处于 `established` 状态,也就是说,对于客户端来说,已经建立起连接了,
并且也已经知道服务器的接收、发送能力是正常的了,所以能携带数据页没啥毛病。

四次挥手

tcp2.png
说明

注意

注:`MSL`(最大分段生存期)指明TCP报文在Internet上最长生存时间,
每个具体的TCP实现都必须选择一个确定的`MSL`值.RFC 1122建议是2分钟,
但BSD传统实现采用了30秒.TIME_WAIT 状态最大保持时间是2 * MSL,也就是1-4分钟
上一篇 下一篇

猜你喜欢

热点阅读