TCP和UDP的区别TCP的保障机制TCP和UDP的网络编程TCP的握手协议TCP的稳定性保证TCP的流量控制 TCP的保障机制 TCP和UDP的网络编程 TCP的握手协议 TCP的稳定性保证 TCP的流量控制

  • TCP是面向连接的,UDP是无连接
  • TCP提供可靠的服务,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大可能交付,即不保证可靠交付。
  • UDP具有较好的实时性,高速传输或者通信广播
  • TCP连接是每个点到点的,UDP支持一对一,一对多,多对一和多对多
  • TCP性能差;UDP网速体验好,性能更好

TCP的保障机制

TCP的保障机制既能保证其稳定性,但是同时也对性能造成了负面的影响。

  • TCP通过校验和,重传控制,序号标识,滑动窗口,确认应答实现可靠传输,如丢失包的时候可以重新发送。

TCP和UDP的网络编程

1
2
3
4
5
6
## TCP
1、创建socket(),参数为协议族之类的
2、绑定IP地址,端口等,bind()
3、开启监听listen()
4、接收客户端的请求accept()阻塞
5、收发数据send() and recv()

TCP的握手协议

三次握手建立连接

哪三次握手?

  • 客户端:SYN请求连接
  • 服务器:SYN+ACK确认连接
  • 客户端:ACK确认收到了服务器的ACK

防止客户端之前发送过去的请求在延迟之后到达,服务器误以为客户端继续请求新的连接;但是客户端在第三次握手的时候可以不理睬服务器的请求。

四次握手断开连接

  • 客户端:FIN请求断开连接
  • 服务器:ACK 表示收到了FIN的请求
  • 服务器:FIN 表示也发送完数据了,可以断开连接了
  • 客户端:收到服务器的FIN请求,发送ACK;之后服务器端就可以关闭了
  • 客户端在关闭之前在等待一段时间,防止最后一个包没有发送成功。

TCP的稳定性保证

  • 可靠传输:对于收到的请求,给出确认响应
  • 超时重传:计时器

TCP的流量控制

滑动窗口

所谓流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。利用滑动窗口实现流量控制。

  • 滑动窗口:不强制每个报文都需要回复,而是一段一段的ACK,提高了效率
  • 滑动窗口:可以不断反馈接受能力,避免了拥塞。

拥塞控制

拥塞控制是对滑动窗口的大小进行控制的算法

  • 慢启动:cwnd当前窗口大小,ssthresh阈值;慢开始的算法将窗口大小从1开始呈指数增长。
  • 拥塞避免:当cwnd已经超过ssthresh时,每次窗口增加1
  • 快重传:当收到三个相同的ACK说明有包丢失,立即重传;
  • 快恢复:窗口减半,让窗口拥塞避免。