TCP的特点#
TCP的三个特点:面向连接,可靠传输,基于字节流的传输层通信协议。
TCP连接#
怎么理解什么是连接#
用于保证可靠性和流量控制维护的某些状态信息,这些信息的组合,包括 Socket、序列号和窗口大小称为连接。
所以,建立一个TCP连接需要客户端与服务器达成三个信息的共识。
- Socket:IP地址和端口号
- 序列号:解决乱序问题
- 窗口大小:流量控制
如何确定一个唯一的TCP连接#
TCP连接由四元组唯一标识:源IP地址、源端口号、目的IP地址、目的端口号。
TCP和UDP的区别#
TCP和UDP的报头对比
UDP 不提供复杂的控制机制,利用 IP 提供面向「无连接」的通信服务。
MTU - (TCP 标头 + IP 标头) = MSS
- 连接
- TCP 是面向连接的传输层协议,传输数据前先要建立连接。
- UDP 是不需要连接,即刻传输数据。
- 服务对象
- TCP 是一对一的两点服务,即一条连接只有两个端点。
- UDP 可以支持一对多、多对多的通信。
结构模型#
OSI 七层模型#
TCP/IP 五层模型#
TCP 为什么需要3次握手#
三个方面分析三次握手的原因:
- 三次握手才可以阻止重复历史连接的初始化(主要原因)
- 三次握手才可以同步双方的初始序列号
- 三次握手才可以避免资源浪费
TCP 建立连接时,通过三次握手能防止历史连接的建立,能减少双方不必要的资源开销,能帮助双方同步初始化序列号。序列号能够保证数据包不重复、不丢弃和按序传输。
不使用「两次握手」和「四次握手」的原因:
- 「两次握手」:无法防止历史连接的建立,会造成双方资源的浪费,也无法可靠的同步双方序列号;
- 「四次握手」:三次握手就已经理论上最少可靠连接建立,所以不需要使用更多的通信次数。