为什么需要三次握手以及四次挥手?
    TCP 长连接和短连接有那么不同的使用场景?
    简述 TCP 滑动窗口以及重传机制
    简述 TCP 的 TIME_WAIT 和 CLOSE_WAIT
    TCP 挥手时出现大量 CLOSE_WAIT 或 TIME_WAIT 怎么解决?
    什么是 TCP 粘包和拆包?
    如何解决 TCP 传输丢包问题?
    TCP 如何实现数据有序性?
    TCP 中常见的拥塞控制算法有哪些?
    TCP 的 keepalive 了解吗?说一说它和 HTTP 的 keepalive 的区别?
    TCP 与 UDP 在网络协议中的哪一层,他们之间有什么区别?
    TCP的拥塞控制具体是怎么实现的?UDP有拥塞控制吗?
    SSL握手流程为什么要使用非对称秘钥?
    简述在四层和七层网络协议中负载均衡的原理
    简述 HTTPS 的加密与认证过程
    简述 JWT 的原理和校验机制
    HTTP 与 HTTPS 有哪些区别?
    简述 HTTP 1.0,1.1,2.0 的主要区别
    HTTP 中 GET 和 POST 区别
    Cookie 和 Session 的关系和区别是什么?
    什么是跨域,什么情况下会发生跨域请求?
    DNS 查询服务器的基本流程是什么?DNS 劫持是什么?
    什么是中间人攻击?如何防止攻击?
    如何防止传输内容被篡改?
    简述 RPC 的调用过程
    什么是 ARP 协议?简述其使用场景
    简述 iPv4 和 iPv6 的区别
    简述对称与非对称加密的概念
    简述自旋锁与互斥锁的使用场景
    简述 BGP 协议和 OSPF 协议的区别
    traceroute 有什么作用?

    为什么建立连接协议是三次握手,而关闭连接却是四次握手呢?
    这是因为服务端的 LISTEN 状态下的 SOCKET 当收到 SYN 报文的建连请求后,它可以把
    ACK 和 SYN(ACK 起应答作用,而 SYN 起同步作用)放在一个报文里来发送。但关闭连
    接时,当收到对方的 FIN 报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所
    有的数据都全部发送给对方了,所以你未必会马上会关闭 SOCKET,也即你可能还需要发送
    一些数据给对方之后,再发送 FIN 报文给对方来表示你同意现在可以关闭连接了,所以它
    这里的 ACK 报文和 FIN 报文多数情况下都是分开发送的。

    为什么不能用两次握手进行连接?
    我们知道,3 次握手完成两个重要的功能,既要双方做好发送数据的准备工作(双方都知道
    彼此已准备好),也要允许双方就初始序列号进行协商,这个序列号在握手过程中被发送和
    确认。
    现在把三次握手改成仅需要两次握手,死锁是可能发生的。作为例子,考虑计算机 S 和 C
    之间的通信,假定 C 给 S 发送一个连接请求分组,S 收到了这个分组,并发送了确认应答
    分组。按照两次握手的协定,S 认为连接已经成功地建立了,可以开始发送数据分组。可是,
    C 在 S 的应答分组在传输中被丢失的情况下,将不知道 S 是否已准备好,不知道 S 建立什
    么样的序列号,C 甚至怀疑 S 是否收到自己的连接请求分组。在这种情况下,C 认为连接
    还未建立成功,将忽略 S 发来的任何数据分组,只等待连接确认应答分组。而 S 在发出的
    分组超时后,重复发送同样的分组。这样就形成了死锁。