(4)传输层

(4)传输层

1. 基本概念

简单来说,网络层实现了设备与设备的通信问题。但是在实际应用中,一个设备上通常会运行多个进程,这些进程可能都需要进行网络通信。因此,我们需要一种机制来区分这些进程的通信数据,这就是端口的作用。每个进程都会监听一个或多个端口,当这些端口收到数据时,对应的进程就会处理这些数据。

当客户端程序和服务器程序建立通信连接后,我们需要规范这个通信流程。这包括如何处理数据丢包的问题,以及如何控制通信的速度。这些问题通常由传输层的协议(如TCP或UDP)来处理。

除此之外,我们还需要研究以下问题:

  1. 如何处理网络拥塞?网络拥塞可能会导致数据传输速度下降,甚至导致网络连接断开。我们需要一种机制来检测和控制网络拥塞。
  2. 如何保证数据的顺序?由于网络的不确定性,数据包可能会乱序到达。我们需要一种机制来保证数据包的顺序。
  3. 如何保证数据的完整性?在数据传输过程中,可能会发生错误,导致数据的损坏。我们需要一种机制来检测和纠正这些错误。
  4. 如何保证通信的安全性?在开放的网络环境中,我们需要保护数据不被未授权的用户访问或修改。

而这些研究问题一般就体现在TCP或者UDP协议中。

而TCP和UDP最简单的区别就是,一个用于流式数据,一个用于非流式数据。

流式数据的特点就在于数据可以丢包,比如说视频任务等,数据处理完就无所谓了。

非流式数据的特点在于数据需要有完整的控制能力,比如说下载任务,每一个数据包都不能丢,而且得有序。

除此之外,一般而言TCP被认为是控制能力强,但牺牲一定性能的;而UDP则是控制能力弱,但性能最快的。

在两个协议之间,有很多从控制能力和性能之间做trade-off的魔改协议。

如QUIC(Quick UDP Internet Connections)。这是由Google开发的一种基于UDP的传输层协议。它的目标是降低网络延迟,提高网络通信的效率,特别是在有丢包和延迟的网络环境中。

2. 对比

2.1 TCP和UDP的区别

TCP(传输控制协议)和UDP(用户数据报协议)是两种常见的传输层协议,它们有以下主要的区别:

  1. 连接性:TCP是一种面向连接的协议,它在数据传输前需要建立连接.而UDP是一种无连接的协议,它不需要建立连接就可以直接发送数据.

  2. 可靠性:TCP提供了数据传输的可靠性保证,它使用了确认/重传和流量控制等机制来确保数据的正确传输.而UDP不提供数据传输的可靠性保证,它只是简单地将数据发送出去,不关心数据是否能正确到达.

  3. 传输方式:TCP是一种流式协议,它将数据看作是一个无结构的字节流.而UDP是一种数据报协议,它将数据划分为一个个的数据报,每个数据报都独立传输.

  4. 速度:由于TCP需要进行连接建立和可靠性保证,所以它的传输速度通常比UDP慢.而UDP由于没有这些开销,所以它的传输速度通常比TCP快.

  5. 应用场景:TCP通常用于需要可靠传输的应用,例如Web浏览/电子邮件和文件传输等.而UDP通常用于对实时性要求高的应用,例如语音和视频通信/在线游戏等.

以上就是TCP和UDP的主要区别.需要注意的是,选择使用TCP还是UDP需要根据应用的具体需求来决定.

2.2 TCP和UDP相关的协议与端口号

基于TCP的协议:

  • HTTP:端口80,用于Web浏览
  • HTTPS:端口443,用于安全的Web浏览
  • FTP:端口20和21,用于文件传输
  • SSH:端口22,用于安全的远程登录
  • Telnet:端口23,用于远程登录
  • SMTP:端口25,用于电子邮件发送
  • POP3:端口110,用于电子邮件接收
  • IMAP:端口143,用于电子邮件接收

基于UDP的协议:

  • DNS:端口53,用于域名解析
  • DHCP:端口67和68,用于动态主机配置
  • SNMP:端口161和162,用于简单网络管理
  • RTP:端口通常在5000到6000之间,用于实时音视频传输

需要注意的是,以上的端口号都是默认的端口号,实际使用中可以根据需要更改.