一、应用层协议原理
1.进程通信
进程
进行通信的是 进程 而不是程序。在两个不同的端系统的 进程 ,通过跨越计算机网络交换 报文 相互通信。进程间发送报文必须通过下面的网络(传输层、网络层等)。
接口
进程通过一个称为套接字(socket)的软件接口向网络发送报文和接收报文,是同一台主机内应用层与运输层之间的接口,由于该套接字是建立网络应用程序的可编程接口,因此它也称为应用程序和网络之间的 应用程序编程接口(Application Programming Interface,API) 。应用程序开发者对于运输层的控制权仅限于:1.选择运输层协议;2.设定几个运输层参数,如最大缓存和最大报文段长度等。
进程寻址
标识接收进程:1.主机地址;2.定义在目的主机中的接收进程的标识符。即: IP地址+端口号
2.可供应用程序使用的运输服务
在发送端的应用程序将报文推进该套接字,在套接字另一侧运输层协议负责是该报文进入接收进程的套接字。应用程序要求运输层最主要为其提供这4类服务: 可靠数据传输、吞吐量、定时和安全性 。
3.因特网提供的运输服务
因特网(TCP/IP网络)为应用程序提供两个运输层协议:UDP和TCP,下面为某些应用程序的服务要求;
| 应用 | 数据丢失(可靠数据传输) | 带宽(吞吐量) | 时间敏感(定时) |
|---|---|---|---|
| 文件传输 | 不能丢失 | 弹性 | 不 |
| 电子邮件 | 不能丢失 | 弹性 | 不 |
| Web文档 | 不能丢失 | 弹性(几kbps) | 不 |
| 因特网电话/视频会议 | 容忍丢失 | 几kbps~5Mbps | 是,100ms |
| 存储音频/视频 | 容忍丢失 | 同上 | 是,几秒 |
| 交互式游戏 | 容忍丢失 | 几kbps~10kbps | 是,100ms |
| 即时通讯 | 不能丢失 | 弹性 | 是和不是 |
TCP服务
TCP服务模型包括 面向连接服务和可靠数据传输服务 。
- **面向连接服务**:TCP让客户和服务器互相交换运输层控制信息,这个握手过程提示客户和服务器为之后大量分组的到来做好准备,之后一个TCP连接(TCP connection)就在两个进程的套接字之间建立,该连接是全双工的,即连接的进程可以在此连接上同时进行报文收发;- **可靠的数据传送服务**:通信进程可以依靠TCP,无差别、按适当顺序交付所有发送的数据,当应用程序的一端将字节流传进套接字时,能够依靠TCP将相同的字节流交付给接收方的套接字,而没有字节的丢失和冗余。- **拥塞控制机制**:当发送与接收之间的网络出现拥塞,TCP该机制就会发送进程;同时该机制也试图控制每个TCP连接,使它们达到公平共享网络带宽的目的。
UDP服务
不提供不必要服务的轻量级运输协议,仅提供最小服务;它是无连接的,在两个进程通信前是没有握手过程的;UDP协议提供的是一种不可靠数据传送服务,当进程将一个报文发送进UDP套接字时,并不保证该报文将到达接收进程,同时到达接收进程的报文也可能是乱序到达,其中也不包括拥塞控制机制。
TCP安全:TCP的加强版本称为安全套接字层(secure socket layer,ssl),对TCP进行加密、数据完整性服务和端点鉴别,ssl不是运输层协议,是对TCP的加强,这种强化是在应用层实现的使用ssl服务需要在两端使用ssl代码;
4.应用层协议
应用层协议定义:
- 交换的报文类型,例如请求报文和响应报文。- 各种报文类型的语法,如报文的各个字段及这些字段是如何描述的。- 字段的语义,即这些字段之后包含的信息的含义。- 一个进程何时以及如何发送报文,对报文进行响应的规划。
下面是流行的因特网应用及其应用层协议和支撑的运输协议
| 应用 | 应用层协议 | 支撑的运输协议 |
|---|---|---|
| 电子邮件 | SMTP [RFC 5321] | TCP |
| 远程终端访问 | Telnet [RFC 854] | TCP |
| Web | HTTP [RFC 2616] | TCP |
| 文件传输 | FTP [RFC 959] | TCP |
| 流式多媒体 | HTTP | TCP |
| 因特网电话 | SIP [RFC 3261] 、RTP [RFC 3550] | UDP或TCP |
二、Web和HTTP
1.HTTP
Web的应用层协议是 超文本传输协议(HyperText Transfer Protocol,HTTP) ,它定义了Web客户向Web服务器请求Web页面的方式,以及服务器向客户传送Web页面的方式。因为HTTP服务器并不保存关于客户的任何信息,所以说HTTP是一个无状态协议。
待续…
