进程通信

Process Communication

分为主机内进程通信与主机间进程通信,我们关注后者(前者是由 OS 调控的)。

客户端进程(client process):发起通信的进程。
服务器进程(server process):等待被联系以开始会话(session)的进程。

网络暴露给进程的 API:套接字(socket)。

进程寻址:主机的 IP 地址与端口号(port number)。端口号用于标识一台主机上所运行的不同网络应用。

应用层协议

应用层协议规定进程之间交换消息的:

  • 类型(type):request 还是 response?
  • 语法(syntax):有哪些字段(field)?这些字段接受什么样的内容?
  • 语义(semantics):字段的含义?
  • 交互规则:进程应怎样发起请求与回应?

应用层协议是网络应用的一个重要组分。我们将会介绍:

  • Web 应用与 HTTP 协议
  • 电邮与 SMTP 协议(还有 POP3,IMAP,MIME 等)
  • 目录服务与 DNS 协议
  • 流媒体应用与 MPEG-DASH 协议
  • P2P 文件共享应用与 BitTorrent 等 P2P 协议

网络提供的传输服务

进程在根据应用层协议构造好消息,通过套接字使用传输层提供的传输服务进行通信。可大致将这种服务分为四种:

可靠数据传输(reliable data transfer, RDT):保证由一端发送的数据能够被另一端正确并完整的接收。

吞吐量(throughput)

  • 有吞吐量要求的应用:带宽敏感型应用(bandwidth-sensitive application)
  • 反之是弹性应用(elastic application),如电子邮件,文件传输等

时延(timing):一端发送的数据被另一方接收的时延有最低保证。有实验要求的应用有网络通话,多人游戏等。

安全(security)

互联网提供的传输服务

互联网提供两种传输层协议,传输控制协议(Transmission Control Protocol, TCP)与用户数据单元协议(User Datagram Protocol, UDP)。

TCP 与 UDP 均不保证吞吐量与时延:互联网存在其他设计使得时延敏感的应用能够提供令人满意的服务。

TCP

连接面向(connection-oriented)服务:在应用层开始传输消息之前,客户端与服务器先进行握手(handshaking)建立一条全双工(full-duplex)的 TCP 连接。传输消息完毕后需要关闭该连接。

TCP 传输字节(bytes)。

TCP 提供可靠数据传输服务。

TCP 有拥塞控制机制(congestion control mechanism),降低互联网整体的拥塞率。

TCP 在经传输层安全(Transport Layer Security, TLS)机制加强后提供安全服务。

UDP

UDP 是无连接的,不需要握手。

UDP 传输数据包(packets)。

UDP 提供的数据传输服务是不可靠的;消息到达的顺序也无法保证与发送的顺序一致。

UDP 没有拥塞控制机制,因此发送端能以任意速率将消息塞到网络中(不能保证传到就是了)。