[关闭]
@Dale-Lin 2023-03-08T22:15:56.000000Z 字数 2698 阅读 174

Transport

计算机网络


进程通信

  1. 用操作系统的术语来说,进行通信的实际上是进程(process)而不是程序。一个进程是运行在端系统中的一个程序,多个进程运行在相同的端系统上时,他们使用进程间通信(InterProcess Communication, IPC)机制相互通信;在两个不同端系统上的进程,通过跨越计算机网络交换 message 相互通信。

  2. 计算机网络中,进程通过一个称为套接字(socket)的软件接口向网络发送 message 和接受 message。Socket 是同一台主机内,Application 层和 Transport 层之间的接口,也被称为应用程序编程接口(Application Programming Interface,API)

  3. 进程寻址:为了向另一条主机上运行的 process 发送分组,接收进程需要有一个地址。地址标识需要两种信息:①host;②目的主机中接收进程的标识符
    因特网中,主机由 IP 地址(IP address)标识,IPV4 是一个 32 byte 的值,且可以唯一识别。除此之外,发送进程还需要指定接收主机上的接收进程的 socket,端口号(port number)用于这个目的。目前已经给流行的 Application 分配了特定的端口号,例如,Web 服务器用端口号 80/443 来标识(HTTP 协议 是80;HTTPS 协议是 443);邮件服务器进程用端口号 25 来标识(SMTP 协议)。端口号列表

Transport 层服务

一个 Transport 层能够为 App 提供什么服务?大体能从四个方面进行分类:可靠数据传输、吞吐量、定时和安全性。

可靠数据传输

分组在计算机网络中可能丢失,例如,分组使路由器中的缓存溢出,或者当分组中某些 byte 损坏后被丢弃。如果一个 Transport 层协议确保应用程序一端发送的数据正确、完整地交付给应用程序的另一端,那么就认为这个协议提供可靠数据传输(reliable data transfer),当一个 transport 协议提供这种服务时,发送进程只要将数据传输进 socket,就可以完全相信该数据能够无差错的传达到接收程序。

当一个 Transport 层协议不能提供 reliable data tranfer 时,发送进程发出的某些数据可能到达不了接收进程。容忍丢失的应用(loss-tolerant application)可以接受这种丢失,多媒体应用,如交谈式音频/视频,它们能承受一定程度的数据丢失,在这些多媒体应用中,丢失的数据引起播放的音频/视频出现小干扰,并不是致命的损伤。

吞吐量

在沿着一条网络路径上两个路径之间的通信会话场景中,可用吞吐量就是发送进程能够向接收进程交付 byte 的速率。某些 Transport 层协议能以某种特定的速率提供确保的可用吞吐量的特性。

带宽敏感的应用(bandwidth-sensitive application)具有吞吐量要求,指该应用程序需要以特定的速率进行编码(并且接收足够的吞吐量以维持这一速率),如果协议不能提供这种吞吐量,则应用或以较低速率进行编码,或必须放弃发送。

弹性应用(elastic appliction)能够根据当时可用的带宽或多或少的利用可供使用的吞吐量。

定时

Transport 层协议也能提供定时保证。例如,发送方注入 socket 的每个 byte 到达接收方的 socket 不迟于 100 ms,这种服务对交互式实时应用有吸引力,如英特网电话、虚拟环境、电话会议和多人游戏,这些服务为了有效性而要求数据交付有严格的时间限制。对于非实时的应用,较低的时延总比较高的时延好,但没有严格的要求。

安全性

Transport 层能为 Application 提供一种或多种安全性服务。例如,在发送主机中,Transport 协议能够加密发送进程传输的所有数据,接收主机中,Transport 协议能够在数据交付给接收进程之前解密这些数据。

Transport

TCP/IP 网络为应用程序提供两个 Transport 层协议,UDP 和 TCP。当软件开发者为因特网创建一个新的 App 时,首先要做出的决定是,选择 UDP 还是 TCP。

App data loss bandwidth 时间敏感 应用层协议 支撑的运输层协议
文件传输 不能 弹性 FTP TCP
email 不能 弹性 SMTP TCP
web 文档 不能 弹性 HTTP/HTTPS TCP/TCP+SSL
因特网电话/视频会议 容忍丢失 音频(几kbps~1Mbps)、视频(10kbps~5Mbps) 是,100ms SIP/RTP UDP/TCP
流式存储音频/视频 容忍丢失 同上 是,几秒 HTTP TCP
交互式游戏 容忍丢失 几kbps~10kbps 是,100ms
智能手机讯息 不能 弹性 是和不是

TCP 服务

TCP 服务模型包括面向连接服务可靠数据传输服务

TCP 还具有拥塞控制机制,当发送方和接收方的网络出现拥塞时,TCP 的拥塞控制机制会抑制发送进程。

TCP 和 UDP 都没有提供任何加密机制,为了防止中间人攻击,因特网界已经研制了 TCP 的加强版本,称为安全套接字(Secure Socket Layer,SSL)。SSL 加强后的 TCP 不仅能够做到传统 TCP 的能力,还提供了关键的进程到进程的安全性服务,包括加密、数据完整性和端点鉴别。SSL 是在 Application 层(7层协议中在 Session 层)实现的。如果一个 App 要使用 SSL 服务,需要在 App 的客户端和服务器端包括 SSL 代码(利用现有的库)。SSL 有自己的 socket API。

UDP

UDP 仅提供最小服务,是无连接的,因此在两个进程通信前没有握手进程。UDP 协议提供一种不可靠数据传输服务,当进程将一个报文发送到 UDP 套接字时,UDP 协议并不保证该报文将到达接收进程;此外到达接收进程的报文也可能是乱序到达的。

UDP 不具有拥塞控制机制,所以 UDP 的发送端可以用它选定的任何速率向下层(Network 层)注入数据。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注