TCP/IP网络基础
TCP/IP(Transmission Control Protocol/Internet Protocol)是互联网的核心协议套件,分为四层结构:
网络接口层
负责物理传输,如以太网、Wi-Fi等,处理硬件地址(MAC地址)和物理介质的数据帧封装。
网络层(IP层)
通过IP协议实现逻辑寻址和路由,核心协议包括:
- IPv4/IPv6:定义IP地址格式和数据包结构。
- ICMP:用于错误报告(如ping工具)。
- ARP:将IP地址解析为MAC地址。
传输层
提供端到端通信:
- TCP:面向连接,可靠传输,保证数据顺序和完整性。
- UDP:无连接,低延迟,适合实时应用(如视频流)。
应用层
包含具体应用协议:
- HTTP/HTTPS:网页传输。
- DNS:域名解析。
- FTP/SMTP:文件传输和邮件发送。
TCP为什么是三次握手,两次行不行?
TCP连接的建立采用三次握手(SYN, SYN-ACK, ACK),而非两次,原因如下:
防止历史重复连接初始化
若客户端发送的旧SYN包因网络延迟到达服务器,两次握手会导致服务器直接建立无效连接。三次握手中客户端通过ACK确认,可拒绝旧SYN请求。
同步初始序列号(ISN)
TCP可靠性依赖序列号。三次握手确保双方确认对方的ISN:
- 客户端发送SYN(携带ISN_C)。
- 服务器回复SYN-ACK(携带ISN_S并确认ISN_C)。
- 客户端ACK确认ISN_S。
资源分配效率
服务器在收到最终ACK后才分配资源(如缓冲区),避免因未完成的连接请求浪费资源。
四次挥手
TCP连接终止需四次挥手(FIN-ACK过程):
-
主动方发送FIN
表示数据发送完毕,请求关闭连接(仍可接收数据)。 -
被动方ACK确认
通知应用层连接关闭请求,可能继续发送剩余数据。 -
被动方发送FIN
数据全部发送完成后,发起自己的关闭请求。 -
主动方ACK确认
等待2MSL(报文最大生存时间)确保被动方收到ACK,防止最后一次ACK丢失导致被动方重传FIN。
了解了四次挥手过程,我们再次疑惑,为什么不是三次挥手?
被动方可能需要时间处理未发送完的数据,故将ACK和FIN分开发送。若数据已处理完,可能合并为三次(如Linux内核优化)。
1133

被折叠的 条评论
为什么被折叠?



