一、应用层协议原理

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服务模型包括 面向连接服务和可靠数据传输服务

  1. - **面向连接服务**:TCP让客户和服务器互相交换运输层控制信息,这个握手过程提示客户和服务器为之后大量分组的到来做好准备,之后一个TCP连接(TCP connection)就在两个进程的套接字之间建立,该连接是全双工的,即连接的进程可以在此连接上同时进行报文收发;
  2. - **可靠的数据传送服务**:通信进程可以依靠TCP,无差别、按适当顺序交付所有发送的数据,当应用程序的一端将字节流传进套接字时,能够依靠TCP将相同的字节流交付给接收方的套接字,而没有字节的丢失和冗余。
  3. - **拥塞控制机制**:当发送与接收之间的网络出现拥塞,TCP该机制就会发送进程;同时该机制也试图控制每个TCP连接,使它们达到公平共享网络带宽的目的。

UDP服务

不提供不必要服务的轻量级运输协议,仅提供最小服务;它是无连接的,在两个进程通信前是没有握手过程的;UDP协议提供的是一种不可靠数据传送服务,当进程将一个报文发送进UDP套接字时,并不保证该报文将到达接收进程,同时到达接收进程的报文也可能是乱序到达,其中也不包括拥塞控制机制。

TCP安全:TCP的加强版本称为安全套接字层(secure socket layer,ssl),对TCP进行加密、数据完整性服务和端点鉴别,ssl不是运输层协议,是对TCP的加强,这种强化是在应用层实现的使用ssl服务需要在两端使用ssl代码;

4.应用层协议

应用层协议定义:

  1. - 交换的报文类型,例如请求报文和响应报文。
  2. - 各种报文类型的语法,如报文的各个字段及这些字段是如何描述的。
  3. - 字段的语义,即这些字段之后包含的信息的含义。
  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是一个无状态协议。

待续…