跳到主要内容

常见网络协议

TCP

首先 TCP是一个面向连接的协议,它的数据传输建立在连接上。这也意味着,TCP协议基于双向的连接实现可靠的数据传输。 TCP的特殊点:

  • 面向连接:TCP协议是面向连接的协议,它建立连接后才能进行数据传输。
  • 一对一通信:TCP协议是一对一通信的协议,即通信双方必须事先建立连接。
  • 数据报文服务:UDP提供的
  • 可靠传输:TCP协议提供可靠的数据传输,它采用超时重传、校验和、滑动窗口等机制保证数据传输的可靠性。
  • 面向字节流:TCP协议是面向字节流的协议,它不保证数据包的顺序,只保证数据包的完整性。
  • 首部开销较大(20字节) 上面提到TCP协议建立在可靠的连接上,这就涉及到了TCP的连接过程,简单概述为三次握手,四次挥手。

TCP三次握手

  1. 第一次握手:建立连接时,客户端发送一个SYN包到服务器,并进入SYN_SEND状态。
  2. 第二次握手:服务器收到SYN包,必须确认客户的SYN(acknowledgement number)包,同时自己也发送一个SYN包,即SYN+ACK包,此时服务器进入SYN_RECV状态。
  3. 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK,此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

TCP四次挥手

  1. 第一次挥手:主机1(客户端)发送一个FIN包,用来关闭主机1到主机2的数据传送。即通知主机2,主机1准备关闭连接。
  2. 第二次挥手:主机2收到FIN包,发送一个ACK包,确认序号为收到的序号加1。并进入CLOSE_WAIT状态。即主机2告诉主机1,它知道要准备关闭连接了。
  3. 第三次挥手:主机2发送一个FIN包,用来关闭主机2到主机1的数据传送。即主机2处理完数据后,关闭了连接并告诉了主机1。
  4. 第四次挥手:主机1收到FIN包,发送一个ACK包,确认序号为收到的序号加1。即主机1收到了主机2的关闭信息,主机1也关闭了连接。

UDP

UDP与TCP不同,它一种无连接的协议,即发送数据之前不需要建立连接。它只提供数据报文的不可靠传输,不保证数据包的顺序,也不保证数据包的完整性。 UDP的特点:

  • 无连接:UDP不需要在数据传输前建立连接,发送数据前不需要握手。这也是为何UDP的传输效率高但是并不可靠的原因。
  • 不可靠传输:UDP的数据传输不建立在连接上,这也导致了它不能保证消息的可靠送达。接收方收到的数据包的顺序可能与发送顺序不同、且数据包也可能会丢失或重复。
  • 无拥塞控制:UDP不进行拥塞控制,因此其网络数据的发送速度不会自动调整,在高负载情况会导致数据的丢失。

总结

特性TCP数据段UDP数据段
连接类型面向连接的无连接的
可靠性高(通过ACK和序列号保证)低(不保证消息送达)
头部开销较大(20字节)较小(8字节)
使用场景需要可靠传输的应用需要快速传输的应用
控制机制流量控制、拥塞控制

TCP的使用场景:需要保证数据的可靠性,且数据量和传输速率要求不是特别大。诸如:登录网页获取网页资源(HTML、CSS、JS),支付信息数据传输...

UDP的使用场景:往往应用于流媒体的传输,这类资料往往对数据的可靠性要求不是特别高,且传输的数据量特别大。