计算机网络中进行通信的实际上是 ”进程“ 而不是 ”程序“,一个进程可以被认为是运行在端系统上的一个程序
-
- 在同一端系统上,进程使用进程间通信机制相互通信,规则由端系统上的操作系统决定
- 位于不同端系统上的进程,通过跨越计算机网络 交换 ”报文“ 来互相通信
网络应用程序由成对的进程组成,这些进程通过网络互相发送报文。
-
- 对每对通信进程,之一标为 ”客户“,之二标为 ”服务器“
- 有些进程既是服务器,又是客户,如 P2P既可以上载也可以下载
- 但在具体场景中总的来说发起通信的就是客户,响应请求的就是服务器
- 对每对通信进程,之一标为 ”客户“,之二标为 ”服务器“
套接字:又称为应用程序和网络之间的 ”应用程序编程接口(Application Programming Interface,API)“
-
- 同一台主机内应用层和运输层之间的接口。
- 应用开发者可以控制套接字在应用层端的一切,但对于该套接字的运输层端几乎没有控制权。开发者对运输层的控制仅限于:
- 选择运输层协议
- 定义运输层参数
进程寻址(接收方的地址):
-
- 主机地址:使用 IP 地址(一个 32 位比特的量)
- 目的进程的标识符(接收套接字):目的地端口号(port number)
选择运输层协议:TCP 或 UD
-
- 可靠数据传输(reliable data transfer):即不允许数据丢失,与之相反的是 “容忍丢失的应用(loss-tolerant application)”
- 吞吐量:具有吞吐量要求的应用称为 “带宽敏感的应用(bandwidth-senitive application)”,与之相反的是 “弹性应用(elastic application)”
- 定时:即时延要求
- 安全性:
- 运输中的加解密
- 数据完整性判定
- 端点鉴别
- TCP:面向连接、可靠
- 传输应用层报文之前,TCP 让客户和服务器交换运输层控制信息(握手过程),然后一个 TCP 就建立了,它是 “全双工” 的,报文发送完毕即拆除连接
- 无差错、按顺序地交付数据
- 拥塞机制:网络繁忙时限制发送进程或每个 TCP 连接
- UDP:轻量级运输协议
- 无连接,故没有握手过程
- 不可靠也可能是乱序的
- 无拥塞机制
- TCP、UDP 均不提供加解密机制
- 安全套接字层(Secure Sockets Layer,SSL):TCP的加强版,增加了安全服务:加解密、完整性、端点鉴别。
-
- 强化体现在应用层:SSL 位于 TCP 上层,SSL 和 TCP 交换信息。
-
- TCP 解决了可靠和安全的问题,吞吐量和定时则是当前因特网协议所未提供的功能,这些将由应用设计者来尽可能实现,但这并非有保障的。
-
-
- 电话协议使用两种是因为如果防火墙阻挡了 UDP 协议,那么将使用备份的 TCP
- 应用层协议:定义了运行在不同端系统上的应用程序进程如何相互传递报文
- 交换的报文类型,例如请求报文和响应报文
- 各种报文类型的语法,如报文中的各个字段及这些字段是如何描述的
- 字段的语义,即这些字段中包含的信息的含义
- 一个进程何时以及如何发送报文、对报文进行响应的规则
- 一些 该层协议 由 RFC 文档定义,位于公共域中:HTTP(超文本传输协议),遵从该规则开发的浏览器可访问遵从该规则的 Web 服务器
- 一些 该层协议 是专用的,有意不为公共域使用,如 Skype。
- 应用层协议 是 网络层 的一部分
- Web 的应用层协议是 HTTP,定义了浏览器和 Web 服务器之间传输的报文格式和序列
- 电子邮件的首要应用层协议是 SMTP(简单邮件传输协议)
-