TCP与UDP:网络通信中的两种协议及其差异解析

发表时间: 2020-02-14 14:33

通信过程上下层关系


UDP简介

网络通信

是把数据直接发出去,而不管对方是不是在收信,就算是UDP无法送达,也不会产生ICMP差错报文。

概述

(1)UDP 只在 IP 的数据报服务之上增加了很少一点的功能,即端口的功能和差错检测的功能

(2)优点

(3)发送数据之前不需要建立连接

(4)UDP 的主机不需要维持复杂的连接状态表。

(5)UDP 用户数据报只有8个字节的首部开销。

(6)网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的。

UDP数据包首部

UDP数据包

TCP简介

提供了一种可靠的数据传输服务,TCP是面向连接的,只有链接建立起来后才能通信。

优点

(1)面向连接

(2)可靠

(3)全双工

(4)面向字节流

TCP数据包头部

TCP数据包头

注:

数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。

确认号:下一报文的序号

URG = 1 :紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)

ACK = 1 : 确认号字段才有效

PSK = 1 :尽快交付给接受进程

RST = 1 :严重错误,重新连接

SYN = 1 :链接请求

FIN = 1 :链接结束

选项字段:长度可变。TCP 只规定了一种选项,即最大报文段长度 MSS (Maximum Segment Size)。MSS 告诉对方 TCP:“我的缓存所能接收的报文段的数据字段的最大长度是 MSS 个字节。”

UDP和TCP对比:


TCP和UDP对比

概念:


1、UDP 报文头

可以看到,相比 TCP 报文,UDP 的报文的域相对少了很多,有源端口、目标端口、数据包长度、奇偶校验值、和用户数据来组成。

2、UDP 的特点

简单的报文结构,也就意味着 UDP 不像 TCP 那样支持错误重传、滑动窗口等精细控制,其特点如下:

3、UDP简介


(1)、面向非链接

UDP 是一个无连接的协议,连接之前,源端和终端之间不建立连接,当它想传送时,就简单的去抓取来自应用程序的数据,并尽可能快的把它扔到网络上。

在发送端,UDP 传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力、和传输带宽的限制。在接收端,UDP 把每个消息段放在队列中,应用程序每次从队列中读取一个消息段。

(2)、不维护链接状态,支持同时向多个客户端传输相同的信息

由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态。因此一台服务器可同时向多个客户机传输相同的消息。

(3)、数据包报头只有8个字节,额外开销较小

相对于 TCP 的20个字节,UDP 包的额外开销小很多。

(4)、吞吐量受限于数据生成速率、传输速率以及机器性能

吞吐量不受拥挤控制算法的调节,只受限于数据生成速率、传输带宽、源端和终端主机性能的限制。

(5)、尽最大努力交付、不保证可靠交付、不需要维持复杂的链接状态

(6)、面向报文,不对应用程序提交的报文信息进行拆分或者合并

发送方的 UDP 对应用程序交下来的报文,在添加首部后,就向下交付给 IP 层,

既不拆分,也不合并,而是保留这些报文的边界。因此,应用程序需要选择合适的报文大小。上层解决。

结论:


TCP 和 UDP 是 OSI 模型中的运输层中的协议,TCP 提供可靠的通信传输,而 UDP 则常被

用于让网络和细节控制交给应用层的通信传输,两者区别如下:

TCP:面向连接 VS UDP:面向无连接

1、TCP 有三次握手的连接过程,UDP 适合消息的多播发送,从单个点向多个点传输信息。

2、可靠 VS 不可靠

3、有序性(利用了序列号保证了消息报文顺序交付,到达可能无需,但是TCP最终会排序)VS无序

4、速度(慢:因为要创建链接,保证消息的可靠性,和有序性,需要做额外的很多事情)VS(快:速度比较敏感的应用,比如在线视频媒体,电视广播,多人在线游戏)

5、量级(重量级,20字节)VS轻量级:体现在源数据的头大小为8个字节