• UDP和TCP是TCP/IP体系结构运输层中的两个重要协议

      • UDP(User Datagram Protocol)
      • TCP (Transmission Control Protocol)
    • 使用UDP协议的通信双方,可以随时发送数据。

    • 使用TCP协议的通信双方,需要先进行”三报文握手”建立连接才能进行数据传输
    • 数据传输结束后,必须使用”四报文挥手”释放连接。
    • 送上所述:UDP是无连接的,TCP是面向连接的。

    • UDP支持单播,多播以及广播。一对一,一对多,一对全。

    • TCP面向连接,仅支持单播。一对一。

    • UDP是面向应用报文的,对应用进程交付下来的报文,既不合并也不拆分。

    • TCP把应用进程交付下来的数据块,看作字节流,不管字节流的含义,仅编号并存在缓存中,根据发送策略从发送缓存中提取一定数量的字节,构建TCP报文段并发送。一方面从接收到的TCP报文段中,取出数据载荷部分并存储在接收缓存中;一方面将接收缓存中的一些字节交付给应用进程。
      • TCP不保证接收方应用进程收到的数据块与发送方应用进程发出的数据块具有对应大小的关系。
      • 但接收方应用进程收到的字节流必须和发送方应用进程发出的字节流完全一样。
      • 接收方应用进程必须有能力识别字节流,把它还原成有意义的应用层数据。
    • 所以TCP是面向字节流的:实现可靠传输、流量控制、拥塞控制的基础。

    • TCP/IP体系结构的网际层,向其上层提供的是无连接不可靠的传输服务。

    • 当运输层使用UDP协议是,向其上层提供的也是无连接不可靠的传输服务。
      • 发送方给接收方发送UDP数据报,若数据报受干扰产生误码,接收方UDP可以通过该数据报首部中的校验和字段的值,检查出产生误码的情况,但仅丢弃该数据报,别的都不做。
      • 发送方发送的UDP数据报,如果传输过程中被路由器丢弃了,发送方UDP不做任何处理。
      • UDP向上层提供无连接不可靠传输服务,适用于IP电话、视频会议等实时应用
    • 当运输层使用TCP协议,向其上层提供的是面向连接的可靠传输服务。
      • 可以想象成使用TCP协议的收发双方基于TCP连接的可靠信道进行数据传输。不会出现误码、丢失和乱序重复等。
      • TCP向上层提供面向连接的可靠传输服务,适用于要求可靠传输的应用,例如文件传输。
    • UDP用户数据报由首部和数据载荷构成:
      • 首部格式如图所示:

    image.png
    四个字段,每个字段长度为2个字节。

    • 由于UDP不提供可靠传输服务,它仅仅在网际层的基础上,添加了用于区分应用进程的端口
      • TCP报文段由首部和数据部分构成 :
    • 格式如下:

    image.png
    TCP报文段首部最小20字节,最大60字节

    • 这是因为TCP要提供可靠传输、流量控制,拥塞控制等服务,首部复杂,字段较多。