目标:
1:掌握 TCP 的三次握手是用于连接
2:面试题:为什么要 TCP 的三次握手,两次不可以吗?四次,五次呢?
一:什么是 TCP 的三次握手
答:TCP 的三次握手是指,客户端与服务端建立的 TCP 连接时,客户端与服务端总共发送的三个数据包,在 socket 编程中,这一过程是由客户端发起的 connect 方法所触发的!
注意事项:
1:TCP 的客户端与服务端建立连接时,必须要经过 TCP 的三次握手才可以成功建立通信
2:如果tcp 的第三次握手丢失(即客户端没有应答服务端的包),那么服务端会一直向客户端发送第二个包(第二次握手),并且客户端也会向服务端重新发送 SYN 请求(第一次握手),这就叫 SYN 洪水攻击!这样会使服务器的资源大量浪费!
图示(示意图:打电话)
协议底层图
———————————————————————————————————————————————————————
二:面试题:为什么服务端客户端建立 TCP 连接三次握手,两次不可以吗?四次,五次呢?
答:不可以,丢失第三次握手(第三个包)的话,服务端就不会接收到客户端的应答,服务端就会一直向客户端发送第二次握手(第二个包),又因为建立 TCP 连接不成功,客户端可能会向服务端重新发送第一次握手(第一个包,连接 SYN 请求),这样会大量浪费服务器的资源,占用服务器的内存,造成服务器的性能下降,这就叫 SYN 洪水攻击,而四次握手、五次握手也会造成资源的浪费,明明三次就可以完成的!