进程通信
Process Communication
分为主机内进程通信与主机间进程通信,我们关注后者(前者是由 OS 调控的)。
客户端进程(client process):发起通信的进程。
服务器进程(server process):等待被联系以开始会话(session)的进程。
网络暴露给进程的 API:套接字(socket)。
进程寻址:主机的 IP 地址与
应用层协议
应用层协议规定进程之间交换消息的:
- 类型(type):request 还是 response?
- 语法(syntax):有哪些字段(field)?这些字段接受什么样的内容?
- 语义(semantics):字段的含义?
- 交互规则:进程应怎样发起请求与回应?
应用层协议是网络应用的一个重要组分。我们将会介绍:
- Web 应用与 HTTP 协议
- 电邮与 SMTP 协议(还有 POP3,IMAP,MIME 等)
- 目录服务与 DNS 协议
- 流媒体应用与 MPEG-DASH 协议
- P2P 文件共享应用与 BitTorrent 等 P2P 协议
网络提供的传输服务
进程在根据应用层协议构造好消息,通过套接字使用传输层提供的传输服务进行通信。可大致将这种服务分为四种:
吞吐量(throughput)
- 有吞吐量要求的应用:带宽敏感型应用(bandwidth-sensitive application)
- 反之是弹性应用(elastic application),如电子邮件,文件传输等
时延(timing):一端发送的数据被另一方接收的时延有最低保证。有实验要求的应用有网络通话,多人游戏等。
安全(security)
互联网提供的传输服务
互联网提供两种传输层协议,传输控制协议(Transmission Control Protocol, TCP)与用户数据单元协议(User Datagram Protocol, UDP)。
TCP 与 UDP 均不保证吞吐量与时延:互联网存在其他设计使得时延敏感的应用能够提供令人满意的服务。
TCP
连接面向(connection-oriented)服务:在应用层开始传输消息之前,客户端与服务器先进行
TCP 传输字节(bytes)。
TCP 提供可靠数据传输服务。
TCP 有拥塞控制机制(congestion control mechanism),降低互联网整体的拥塞率。
TCP 在经传输层安全(Transport Layer Security, TLS)机制加强后提供安全服务。
UDP
UDP 是无连接的,不需要握手。
UDP 传输数据包(packets)。
UDP 提供的数据传输服务是不可靠的;消息到达的顺序也无法保证与发送的顺序一致。
UDP 没有拥塞控制机制,因此发送端能以任意速率将消息塞到网络中(不能保证传到就是了)。