TCP跟UDP

UDP

特点

不可靠的传输协议,面向无连接,随时发送数据。即使是出现网络拥堵,UDP也无法进行流量控制等避免网络拥塞的行为,也就是说部分控制转移给程序自己实现

常用于

  • 包重量较少的通信(DNS、SNMP等)
  • 视频、音频等多媒体通信(即时通信)
  • 现定于LAN等特定网络中的应用通信
  • 广播通信(广播、多播)

UDP首部格式

TCP

特点

面向连接的、可靠的流协议

TCP首部格式

TCP跟UDP的区分

  • TCP用于传输层实现可靠传输,面向连接并具备顺序控制、重发控制等机制;UDP虽然也是作用域传输层,但是它不提供可靠的传输
  • UDP主要用于对高速传输和实时性有较高要求的通信或广播通信
  • TCP充分实现了数据传输时的各种控制功能,可以进行丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制

TCP怎么保证可靠性

1、序列号和校验号

2、ACK确认机制

3、超时重传

4、连接管理(TCP三次握手和四次挥手)

5、滑动窗口

6、拥塞控制

7、流控制

下面稍微做一下解释:
1、 通过序列号和确认应答提高可靠性

2、超时重发刚开始设置时为6秒左右
3、连接管理:三次握手和四次挥手,实现方式是通过TCP首部字段的控制域字段实现

4、MSS:TCP以段位单位发送数据的,在建立TCP连接的同时,也可以确定发送数据包的单位,称为“最大消息长度”,MSS(Maximum Segment Size)

5、 利用窗口控制提高速度(针对发送端而言):发送一个段以后不必一直等待确认应答,而是继续发送

6、 滑动窗口控制(针对发送端而言):收到确认应答的情况下,将窗口滑动到确认应答中的序列号的位置,这样可以顺序地将多个段同时发送提高通信性能

7、 窗口控制下的重发控制:使用高速重发控制,如果发送端连续3次收到同一个确认应答,就会对数据进行重发

流控制

出现的原因:方式接收端在高负荷(比如内存满了)的情况下,将本应该接受的数据丢弃,触发重发机制,浪费网络流量,所以TCP提供一种机制可以让发送端根据接收端的实际接收能力控制发送的数据量,这就是——流控制

具体操作:发送端向接收端发送自己可以接收数据的大小,于是发送端将发送不超过这个限度的数据,该大小限度就称为窗口大小,而且在TCP首部中,有专门一个字段来通知窗口大小。如果接收端主机缓存区满了,会暂时停止接收数据,在接收端发送窗口更新通知才能继续通信

窗口探测:如果窗口更新发生丢失,可能会导致无法继续通信。为避免此类问题,发送端会时不时的发送一个叫做窗口探测的数据段,此数据段仅含一个字节以获取最新的窗口大小的信息

拥塞机制

在网络出现拥堵时,如果突然发送一个较大量的数据,极有可能导致整个网络瘫痪,为了避免在刚开始通信是发送大量的数据引发其他问题,通信刚开始时采用一个叫做慢启动的算法对发送数据量进行控制

做法:调节发送端发送的数据量,定义了一个“拥塞窗口”的概念,在“慢启动”的时候将窗口设置为1个数据段(1MSS),之后每收到一次确认应答(ACK),拥塞窗口的值就加1.如果发生超市重发,就将拥塞窗口重新设置成1,再进行慢启动修正,有了上述这些机制,就可以有效的减少通信开始时的连续发包导致网络拥堵。但是也不能无限的增长窗口值,引入了慢启动阀值的概念