应用层
通过应用进程间的交互来完成特定的网络应用,应用层的协议定义是应用进程(进程:主机中正在运行的程序)间的通讯和交互规则,对不同的网络应用需要不同的应用层协议,在互联网中应用层协议很多,如域名系统 DNS,支持万维网应用的 HTTP 协议,支持电子邮件的 SMTP 协议等等。
HTTP
超文本传输协议,是互联网应用最为广泛的一种网络协议,所有的 WWW(万维网) 文件都必须遵守这个标准。
传输层
传输层(transport layer)的主要任务就是负责向两台主机进程之间的通信提供通用的数据传输服务。应用进程利用该服务传送应用层报文。
传输层常用的两种协议
- 传输控制协议-TCP:提供面向连接的,可靠的数据传输服务。
- 用户数据协议-UDP:提供无连接的,尽最大努力的数据传输服务(不保证数据传输的可靠性)
TCP(Transmisson Control Protocol)
- TCP 是面向连接的(需要先建立连接);
- 每一条 TCP 连接只能有两个端点,每一条 TCP 连接只能是一对一;
- TCP提供可靠交付的服务。通过TCP连接传送的数据,无差错、不丢失、不重复、并且按序到达;
- TCP 提供全双工通信。TCP 允许通信双方的应用进程在任何时候都能发送数据。TCP 连接的两端都设有发送缓存和接收缓存,用来临时存放双方通信的数据;
- 面向字节流。TCP 中的“流”(Stream)指的是流入进程或从进程流出的字节序列。
UDP(User Datagram Protocol)
- UDP 是无连接的;
- UDP 是尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的链接状态;
- UDP 是面向报文的;
- UDP 没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如直播,实时视频会议等);
- UDP 支持一对一、一对多、多对一和多对多的交互通信;
- UDP 的首部开销小,只有 8 个字节,比 TCP 的 20 个字节的首部要短。
- 单工数据传输只支持数据在一个方向上传输
- 半双工数据传输允许数据在两个方向上传输,但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;
- 全双工数据通信允许数据同时在两个方向上传输,因此,全双工通信是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力。