1、什么是TCP网络分层?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、TCP的三次握手中为什么是三次?不是两次四次?在这里插入图片描述

3、TCP的四次挥手为什么是四次?为什么不是三次?

互相发送四个报文,那么第二、三次可以合成一次报文发送吗?
不可以
第二次是服务端收到客户端请求马上做出应答:ACK=x+3,在这之后服务端可能要处理之前客户端发送的数据请求,需要相当长一段时间的延迟、时差(超过一分钟或者更久)发送时间是要以处理完成后的时间点相应给客户端。
客户端等待超过了30s或者其他超时时间,作为TCP协议(TCP是面向可靠的,它通过重发的机制来确保报文的可达性),他会进行一次次的重发。如果合成三次挥手,ACK的确认和FIN的确认存在时差的,会导致客户端发过去的FIN请求不断的重发,会造成资源的浪费
所以需要四次就能达到两端的确认的效果。
在这里插入图片描述

4、为什么SYN/FIN不包含数据却要消耗一个序列号?

凡是需要对端确认的,一定消耗TCP报文的序列号。
不然的话可能会因为网络的原因,SYN进行了重发了多次,服务端就会对你的重复数据进行处理

SYN和FIN需要对端的确认,所以需要消耗一个序列号。
用来去防止重复或者是使调用有一个顺序性

在这里插入图片描述
三次握手里面,客户端发送的SYN需要序列号
在这里插入图片描述在这里插入图片描述
四次挥手里面,这个FIN都需要去消耗一个序列号。

5、什么是半连接队列?什么是SYN Flood攻击?在这里插入图片描述

SYNFlood也叫“洪泛攻击”
洪泛攻击,在短时间内向目标系统发送大量的虚假请求的攻击方式。导致目标系统疲于应付无用信息,而无法为合法用户提供正常服务。


至今为止我仍觉得分享欲是最高级别的浪漫!