
- TCP是面向连接的,UDP是无连接
- TCP提供可靠的服务,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大可能交付,即不保证可靠交付。
- UDP具有较好的实时性,高速传输或者通信广播
- TCP连接是每个点到点的,UDP支持一对一,一对多,多对一和多对多
- TCP性能差;UDP网速体验好,性能更好
TCP的保障机制
TCP的保障机制既能保证其稳定性,但是同时也对性能造成了负面的影响。
- TCP通过校验和,重传控制,序号标识,滑动窗口,确认应答实现可靠传输,如丢失包的时候可以重新发送。
TCP和UDP的网络编程
|
|
TCP的握手协议
三次握手建立连接
哪三次握手?
- 客户端:SYN请求连接
- 服务器:SYN+ACK确认连接
- 客户端:ACK确认收到了服务器的ACK
防止客户端之前发送过去的请求在延迟之后到达,服务器误以为客户端继续请求新的连接;但是客户端在第三次握手的时候可以不理睬服务器的请求。
四次握手断开连接
- 客户端:FIN请求断开连接
- 服务器:ACK 表示收到了FIN的请求
- 服务器:FIN 表示也发送完数据了,可以断开连接了
- 客户端:收到服务器的FIN请求,发送ACK;之后服务器端就可以关闭了
- 客户端在关闭之前在等待一段时间,防止最后一个包没有发送成功。
TCP的稳定性保证
- 可靠传输:对于收到的请求,给出确认响应
- 超时重传:计时器
TCP的流量控制
滑动窗口
所谓流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。利用滑动窗口实现流量控制。
- 滑动窗口:不强制每个报文都需要回复,而是一段一段的ACK,提高了效率
- 滑动窗口:可以不断反馈接受能力,避免了拥塞。
拥塞控制
拥塞控制是对滑动窗口的大小进行控制的算法
- 慢启动:cwnd当前窗口大小,ssthresh阈值;慢开始的算法将窗口大小从1开始呈指数增长。
- 拥塞避免:当cwnd已经超过ssthresh时,每次窗口增加1
- 快重传:当收到三个相同的ACK说明有包丢失,立即重传;
- 快恢复:窗口减半,让窗口拥塞避免。




近期评论