START:
2.1.3 可供应用程序使用的运输服务
- 套接字是应用程序进程与运输层协议之间的接口。在发送端的进程将报文推入套接字,运输层协议负责从接收进程的套接字中获取报文。
- 通过研究可用的运输层协议所提供的服务来选择一个最适合的协议。
- 一个运输层协议能够提供大致四方面的服务:
- 可靠数据传输。
- 吞吐量。
- 定时。
- 安全性。
1. 可靠数据传输
- 分组可能在传输中丢失。
- 做一些工作用以确保应用程序的一端发送的数据正确地、完全地交付给该应用程序的另一端。如果提供这种确保数据交付的服务,就称提供了可靠数据传输(reliable data transfer)。
- 运输层协议能够潜在的向应用程序提供的一个重要服务就是进程到进程间的可靠数据传输。
- 当一个运输协议提供这种服务是,发送进程只需要把数据传递给套接字,就能够认定数据将无差错的到达接收进程。
- 当一个运输层协议不提供可靠数据传输时,某些数据可能无法到达接收进程。而这肯恩那个被容忍丢失的应用(loss-tolerant application)所接受。
2. 吞吐量
可用吞吐量会随时间波动。
有运输层协议能够以某种特定的速率提供确保的可用吞吐量。假设应用需要 r bit/s 的确保吞吐量,该协议会保证可用吞吐量至少为 r bit/s。
具有吞吐量要求的应用程序被称为带宽敏感的应用(bandwidth - sensitive application)。
弹性应用(elastic application)能够根据当时可用的带宽或多或少的利用可用的吞吐量。
吞吐量越多越好。
3. 定时
- 运输层协议也能提供定时保证,这种服务对于交互式实时应用程序有吸引力,所有这些服务为了有效性而要求数据交付有严格的时间限制。
- 对于非实时的应用,较低的时延比高时延好,但对端与端的时延没有具体的约束。
4. 安全性
能够提供一种或者多种安全性服务。
例如在发送主机中,运输协议可以加密由发送进程传输的所有数据;在接收主机中,运输层协议可以在数据交付给接收进程之前,就能够解密这些数据。这种服务可以在发送和接收进程之间提供机密性。
运输层协议还呢能够提供包括数据完整性校验和断点鉴别之内的其他安全性服务。
2.1.4 因特网提供的运输服务
- 因特网为应用程序提供两个运输层协议:UDP,TCP。
1. TCP 服务
包括:
- 面向连接的服务。
- 可靠数据传输服务。
当某个应用程序调用 TCP 作为其运输协议时,该应用程序就能够获得来自 TCP 的两种服务。
面向连接的服务。
在报文开始发送之前,TCP 让客户与服务器之间交换运输层控制信息,这个过程叫做握手过程。在此之后,一个 TCP 连接(TCP connection)在两者套接字之间建立起来。这条连接是全双工的,即双方的进程可以同时进行报文的收发。当结束报文发送时,必须拆除此连接。
可靠的数据传输服务。
通信进程可以依靠 TCP,无差错地,按适当顺序地交付所有发送的数据。当一端的字节流流入套接字时,它能够依靠 TCP 将相同的字节流交给接收方的套接字,没有丢失,也没有冗余。
拥塞控制机制。
这种服务不一定为通信进程之间提供好处,但是能为整个因特网带来整体好处。当端到端之间出现拥塞时,该机制会试图抑制发送进程,也会试图限制每个 TCP 连接,使它们达到公平共享网络带宽的目的。
SSL:
发送进程->SSL->套接字->套接字->SSL->接收进程
2. UDP服务
仅提供最小服务。在两个进程通信之前没有握手过程。提供一种不可靠数据传送服务。UDP 协议并不保证该报文将到达接收进程,即使到达,也可能不按顺序。
UDP 没有拥塞控制机制,UDP 的发送端可以以它选用的任何速率向下层(网络层)注入数据。但打不打得到就不管了(带宽受限,拥塞)。
3. 因特网运输协议所不提供的服务
目前的因特网并没有提供对于吞吐量和定时保证的功能。但是时间敏感的应用依旧活得好好的,因为它们已经被设计成尽最大可能对付这种保证的缺乏。
电子邮件、远程终端访问、Web、文件传输都用了 TCP。因为 TCP 提供了可靠数据传输服务。
因特网电话应用常常能够容忍某些丢失,但是要求达到一定最小速率才能够有效工作。还为了避开 TCP 的拥塞控制机制还有分组开销,常常将其运行在 UDP上。但是由于防火墙的配置,所以这些通话应用也被设计为如果 UDP 通信失败再用 TCP 作为备份。