TCP/IP 基础
1. TCP 三次握手 (建立连接)
- SYN: 客户端发送 connect 请求 (SYN=1, seq=x)。
- SYN+ACK: 服务端收到请求,回复确认 (SYN=1, ACK=1, seq=y, ack=x+1)。
- ACK: 客户端确认收到 (ACK=1, seq=x+1, ack=y+1)。
为什么需要三次? 为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。并且确认双方的收发能力都正常。
2. TCP 四次挥手 (断开连接)
- FIN: 客户端发送关闭请求。
- ACK: 服务端收到,回复确认 (此时服务端可能还有数据要发送,进入 CLOSE_WAIT)。
- FIN: 服务端数据发送完毕,发送关闭请求。
- ACK: 客户端回复确认 (进入 TIME_WAIT,等待 2MSL 后彻底关闭)。
3. TCP vs UDP
- TCP: 面向连接、可靠 (重传、排序、流控)、慢。适用: 文件传输、邮件、网页。
- UDP: 无连接、不可靠 (丢包不重传)、快。适用: 视频直播、语音、DNS。