TCP与UDP

计算机网络

TCP与UDP的区别

  1. 是否面向连接:UDP 在传送数据之前不需要先建立连接。而 TCP 提供面向连接的服务,在传送数据之前必须先建立连接,数据传送结束后要释放连接。
  2. 是否是可靠传输:UDP提供不可靠的数据传输,目的主机在收到UDP报文后,不需要给出任何确认,所以不保证数据不丢失、不出错、不重复、不乱序。TCP提供可靠的数据传输,TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,可以保证数据不丢失、不出错、不重复、不乱序。
  3. 是否有状态:TCP传输是有状态的,指TCP会记录自己发送消息的状态,如消息是否发送了、是否被接收了等。为此,TCP需要维持复杂的连接状态表。而UDP是无状态服务,简单来说就是不管发出去之后的事了。
  4. 传输效率:由于TCP进行传输的时候多了连接、确认、重传等机制,所以TCP的传输效率比UDP的传输效率低。
  5. 传输形式:TCP是面向字节流的,UDP是面向报文的。
  6. 首部开销:TCP首部开销(20~60字节)比UDP首部开销(8字节)大。
  7. 广播/多播服务:TCP只支持点对点通信,UDP支持一对一、一对多、多对一和多对多。

TCP与UDP的选择

使用TCP的协议

  1. HTTP:超文本传输协议HyperText Transfer Protocol,主要为Web浏览器与Web服务器之间的通信而设计。当我们浏览网页的时候,网页内容就是通过HTTP请求进行加载的。
  2. HTTPS:更安全的超文本传输协议HypterText Transfer Protocol Secure,包含SSL的HTTP协议。
  3. FTP:文件传输协议File Transfer Protocol,基于TCP的可靠传输提供文件传输服务。使用 FTP 传输文件的好处是可以屏蔽操作系统和文件存储方式。
  4. SMTP:简单邮件传输协议Simple Mail Transfer Protocol,基于 TCP 协议用来发送电子邮件。
  5. POP3/IMAP: 两者都是负责邮件接收的协议。
  6. Telnet:远程登陆协议,通过一个终端登陆到其他服务器。Telnet 协议的最大缺点之一是所有数据(包括用户名和密码)均以明文形式发送,这有潜在的安全风险。被一种称为 SSH 的非常安全的协议所取代。
  7. SSH:Secure Shell是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH 建立在可靠的传输协议 TCP 之上。

使用UDP的协议

  1. DHCP:动态主机配置协议Dynamic Host Configuration Protocol,动态配置 IP 地址
  2. DNS : 域名系统Domain Name System,将人类可读的域名 (例如,www.baidu.com) 转换为机器可读的 IP 地址 (例如,220.181.38.148)。 我们可以将其理解为专为互联网设计的电话薄。实际上 DNS 同时支持 UDP 和 TCP 协议。