TCP协议的主要特点
- 面向连接的传输层协议:面向连接是指经过三次握手建立连接,四次挥手断开连接;
- 全双工、点对点的协议:双方都设有发送缓冲区和接收缓冲区;
- 可靠的传输协议:有流量控制机制、拥塞控制机制、超时重发、ack确认应答、序列号
- 面向字节流的:
- TCP首部开销大,20字节的固定首部和40字节的扩展首部【数据偏移是指报文段开始位置到报文段数据部分开始位置的距离,最小是0101,最大是1111】
TCP协议如何保证可靠的传输
- 连接管理:通过三握四挥建立可靠连接;
- 数据分段:面向字节流传输,对于应用层交付的数据块,放在一起组成流,并把流切分成段编号并发送;
- 校验和:首部和数据的校验和,保证传输过程中数据的准确性
- 序列号:TCP给每个报文段进行编号,接受方通过序列号来重组报文成有序
- 确认应答:收方收到报文就会确认(累积确认:对所有按序接收的数据的确认)。
- 超时重发:ARQ协议配合滑动窗口
- 流量控制:滑动窗口rwnd、根据接受方的窗口值来调整发送方的窗口值、有持续计时器的零窗口探测报文来恢复传输。
拥塞控制机制: 拥塞值cwnd、 慢开始、拥塞避免、 快重传(一旦接受方有包丢失,就重复发送丢失包的上一个包的确认ACK,发送方收到3个重复ACK,则会及时重传丢失的报文段,接收方收到后,发送最后收到的最大序号报文段的确认)、 快恢复(用于三个重复ACK及时重传的情况,cwnd和慢开始门限值变成当前cwnd的一半,执行拥塞避免算法)。 不过对于超时重传的情况(慢开始门限值变成发生超时的cwnd的一半,cwnd归为1,重新慢开始)
TCP的三次握手和四次挥手
TCP的三次握手与四次挥手理解及面试题(很全面) - 李卓航 - 博客园
UDP的协议的主要特点
无连接的、尽最大可能交付
- 基于报文流的
- 没有拥塞控制,即使网络堵塞,也不会停止发送
- 支持一对一,一对多,多对多连接
- UDP首部开销小,8字节【源端口Port(2字节),目的端口Port(2字节),长度(2字节),checksum(2字节)】
TCP和UDP适用于什么场景?
UDP适用于广播。
UDP适用于包总量较少的通信(DNS、SNMP),为什么?1.响应时间快
码农富哥:面试官:说说UDP和TCP的区别及应用场景UDP和TCP能共用一个端口号吗?
可以共用一个端口号,因为操作系统是根据接收数据的五元组{传输协议,源IP,目的IP,源端口,目的端口},通过传输协议来区分这个数据包的接受者是谁
