TCP
如何保证数据的可靠性
- 对数据包进行编号,保证数据的有序性。
- 提供首部和数据的校验和。
- ARQ协议
- 超时重传。
保证连接的可靠性
- 3次握手、四次挥手
- 流量控制、拥塞控制
- 慢启动、拥塞避免、快开始、快重传。
拥塞控制和流量控制
- 流量控制主要针对接收者,通过流量控制保证发送数据始终处于接收者的处理能力内。
- 拥塞控制主要针对网络环境,避免网络出现负载过大的情况。
流量控制
通过滑动窗口和连续ARQ协议实现。接收方返回ACK会有窗口大小的字段,用于控制窗口大小。
拥塞控制
发送方维持一个拥塞窗口,该窗口的大小取决于网络的拥塞程度,并且动态的在变化。发送方让自己的发送窗口等于
慢开始、拥塞避免
(快重传,不是拥塞控制内容),快恢复。
UDP
一对多是怎么回事
广播和多播的区别
- 广播直接向整个网段发送,使用广播地址:
255.255.255.255
- 多播向网络中的特定主机发送数据,D类地址用于多播
综合
TCP和UDP的区别
- TCP是面向连接、UDP是无连接的
- TCP提供可靠的服务,UDP尽最大努力交付,不保证可靠交付
- TCP面向字节流,UDP面向报文(用户数据报)
- 每一个TCP连接只能是点到点的,UDP支持一对一、一对多、多对一和多对多的交互通信
- TCP首部开销20个字节,UDP首部开销小,只有8个字节
最大TCP连接数量
client
每个TCP连接都会监听端口,所以客户端最大65535个连接。
server
根据客户IP和端口不同,理论可以创建2的48次方的连接。
但是:linux的文件描述符的数量是有限的,每个连接都会占用一个文件描述符。同时一个进程默认可打开的文件描述符数量也是有限制的。所以server端建立的TCP连接受制于这两个因素。