TCP协议的三次握手和四次挥手
三次握手
三次握手,建立连接。
- 第一握手,客户端向服务端发送建立连接的请求
- 第二次握手,服务端如果同意连接,向客户端发送应答
- 第三次握手,当客户端收到同意的应答后,还要向服务端发送一个确认报文段,表示:服务端发送来的连接同意应答已经成功收到了
反馈机制
客户端往服务端发送请求,服务端必须返回响应,告诉客户端收到了请求,并且将服务器端的数据一并返回给客户端。
ps:即一次请求,必须要有一次响应
缺点:
- 洪水攻击
- 指的是通过伪造大量的请求,往对方服务器上发送请求,导致对方服务器响应跟不上,以至于瘫痪。
- linux系统内部可以调整sysctl.conf文件里的
net.ipv4.tcp
参数抵挡较小的Dos攻击。(详情链接:https://www.cnblogs.com/cnhyk/p/11990401.html) - 半连接池
listen
:限制用户在同一时段内的访问数量。
第一次握手
- PS1:SYN=1,ACK=0表示该报文段为连接请求报文。
- PS2:x为本次TCP通信的字节流的初始序号。
- TCP规定:SYN=1的报文段不能有数据部分,但要消耗掉一个序号。
第二次握手
- PS1:SYN=1,ACK=1表示该报文段为连接同意的应答报文。
- PS2:seq=y表示服务端作为发送者时,发送字节流的初始序号。
- PS3:ack=x+1表示服务端希望下一个数据报发送序号从x+1开始的字节。
第三次握手
为什么连接建立需要三次握手,而不是两次握手?
四次挥手
四次挥手,断开连接。
- 客户端向服务器发送断开连接的请求
- 服务端返回收到请求的信息给客户端
- 服务端确认所有的数据接收完成以后,再发送给同意断开连接的请求给客户端
- 客户端返回收到断开连接的请求,给服务端