计算机网络-自顶向下 第二章 应用层

 
2.1 应用层协议原理
研发网络应用程序的核心是写出可以运行在不一样的端系统和经过网络彼此通讯的程序。
2.1.1网络应用程序体系结构
应用程序体系结构 主流体系结构:
  1. 客户-服务器结构
  2. 对等(P2P)体系结构
 
客户-服务器结构:有一个老是打开的主机称为服务器,它服务来自其余称为客户的主机的请求(ex: web应用程序)。
  • a.在该体系结构中,客户和客户之间不会直接通讯。
  • b.服务器具备固定的、周知的地址。该地址称为IP地址。
具体应用:web ftp telnet 电子邮件
服务器可能存在处理不堪重负。因而配备大量主机的数据中心被用于建立强大的虚拟服务器。

P2P结构:应用程序在间断链接的主机对之间使用直接通讯,对数据中心依赖不多。
具体应用:BT 迅雷 Skype IPTV
特性:自扩展性。一个P2P文件共享应用中,尽管每一个对等方都因为请求文件产生工做量,但每一个对等方经过向其余对等方分发文件也为
系统增长服务能力。

混合结构应用: 许多即时讯息应用,服务器用于跟踪用户IP,但用户到用户的报文在用户主机之间直接发送。

2.1.2 进程通讯
1.客户和服务进程
     在给定的一对进程之间的通讯会话场景中,发起通讯的进程被标识为客户,在会话开始时等待联系的进程是服务器。
2.进程和计算机网络之间的借口
进程经过一个称谓套接字(socket)的软件接口向网络发送报文和从网络接收报文。
3.进程寻址
在一台主机上运行的进程为了向在另外一台主机上运行的进程发送分组,接收进程须要有一个地址。
为了标识该接收进程,须要定义两种信息。
  1. 主机的地址  ip
  2. 定义在目的主机中的接收进程的标识符  port

2.1.3 可供应用程序使用的运输服务
运输层协议提供的服务要求分类
  • 可靠数据传输 :数据无差错到达接收进程
  • 吞吐量
  • 定时:控制延迟
  • 安全性

2.1.4 因特网提供的运输服务
1.TCP服务
提供两种服务:
面向链接的服务:
可靠的数据传送服务:
2.UDP服务
UDP是一种不提供没必要要服务的轻量级运输协议,它仅提供最小服务。无链接、不可靠、乱序、无阻塞控制。
3.因特网运输协议所不提供的服务
对吞吐量和定时的保证 不禁运输层协议提供。

2.1.5 应用层报文
应用层协议 定义了运行在不用端系统上的应用程序如何相互传递报文。特别是应用层定义了:
  • 交换的报文类型,例如请求报文和响应报文。
  • 各类报文类型的语法,如报文中的各个字段及这些字段是如何描述的。
  • 字段的语义,即这些字段中包含的信息的含义。
  • 一个进程什么时候以及如何发送报文,对报文进行响应的规则。

2.2 HTTP
2.2.1 HTTP概况
web的应用层协议是超文本传输协议(HTTP),HTTP由两个程序实现:一个客户端程序,和一个服务器程序。
web页面是由对象组成。一个对象只是一个文件,如一个HTML文件,一个JPEG图形,一个Java小程序等。
多数web页面里含有一个HTML基本文件(base HTML file)以及几个引用对象。
HTML基本文件经过对象的URL地址引用页面中的其余对象。
每一个URL地址由两部分组成:存放对象的服务器主机名和对象的路径名。例如:www.example.com/default/1.gif
www.example.com 是主机名,/default/1.gif为路径名。
web浏览器实现了HTTP的客户端,web服务器实现了HTTP的服务器端,用于存储web对象,每一个对象由URL寻址。
服务器向客户发送被请求的文件,而不存储任何关于该客户的状态信息。因此咱们称HTTP是一个无状态的协议。
 
2.2.2  非持续链接和持续链接
每一个请求/响应都是一个单独的TCP链接发送,非持续链接
全部的请求/响应通过相同的TCP链接发送,持续链接
 
2.2.3  HTTP报文格式
2.2.3.1 HTTP请求报文
 
GET /index.html HTTP/1.1       
Host: www.test.com                
Connection: close
User-agent: Mozilla/5.0
Accept-language: f r
 
第一行为请求行:  方法字段、URL字段、HTTP版本字段。后续均为首部行
首部行:Host:www.test.com    指明主机地址。该首部行提供的信息是Web代理告诉缓存所要求的。
Connection:close ,该浏览器告诉服务器不但愿麻烦的使用持续链接,它要求服务器在发送完被请求的对象后就关闭这条链接。
User-agent 首部行指明用户代理,即向服务器发送请求的浏览器的类型。上述例子中为Firefox浏览器。服务器能够根据不一样类型的用户代理发送相同对象的不一样版本。
Accept-language 首部行指明用户想获得该对象的法语版本。
 
2.2.3.2 HTTP响应报文
HTTP/1.1 200 OK
Connection: close
Date: Tue, 09 Aug 2011 15:44:04 GMT
Server: Apache/2.3.3 (Centos)
Last-Modified: Tue, 09 Aug 2011 1511:03 GMT
Content-Length: 6821
Content-Type: text/html
 
(data date date....)
第一行初始状态行,6个首部行,而后是实体体,请求对象的实体。
状态行有3个字段:协议版本字段、状态码和相应的信息。
首部行:
服务器用Connection:close 首部行告诉客户,发送完报文后将关闭TCP链接。
Date:首部行指示服务器产生并发送该响应报文的日志和时间,特指服务器从它的文件系统中检索到该对象,插入到响应报文,并发送该响应报文的时间。
Server:l相似请求报文中的User-agent字段.
Last-Modified: 指示对象建立或者最后修改的日期和时间。
Content-Length:被发送的对象中的字节数。
Content-Type:实体体中的对象是HTML文件。
 
2.2.4 用户与服务器的交互:cookie
Web站点但愿可以识别用户,多是由于服务器但愿限制用户的访问,或者由于它但愿把内容与用户身份联系起来,为此使用cookie.
cookie技术有四个组件:
  1. 在HTTP响应报文中的一个cookie首部行
  2. 在HTTP请求报文中的一个cookie首部行
  3. 在用户端系统中保留有一个cookie文件,并由用户的浏览器进行管理
  4. 位于web站点的一个后端数据库
cookie能够标识一个用户,用户首次访问一个站点的时候可能须要提供一个用户标识,在后续的会话中,浏览器向服务器传递一个cookie首部,从而
向服务器标识了用户。所以cookie能够在无状态的HTTP之上创建一个用户会话层。
 
2.2.5 Web缓存
Web缓存 也称为代理服务器,它能表明初始的Web服务器来知足HTTP请求的网络实体。Web缓存器有本身的磁盘存储空间,而且在存储空间中保存最近请求过的对象的副本。
 
2.2.6 条件get
引入高速缓存有相应的问题,即存放在缓存器中的对象副本多是陈旧的,可能已经被修改了。
HTTP协议有机制,容许缓存器证明它的对象是最新的,条件get方法
若是请求报文是get方法,请求报文包含一个“if-Midified-Since:” 首部行,则该报文为条件GET报文。
浏览器-> 缓存器->服务器-> 缓存器->浏览器
第一次交互过程当中服务器给缓存器的响应报文中含有Last-Modified。
第二次交互 缓存器把该值做为 if-Midified-Since的值发给服务器,用来时间来判断当前缓存是否能够继续使用。
 
2.3 FTP
 
用户经过一个FTP代理与FTP交互。该用户首先提供一个远程主机的主机名,使本地主机的FTP客户进程创建一个到
远程主机FTP服务器进程的TCP链接。该用户接着提供用户标识和口令,做为FTP命令的一部分在该TCP链接上传送。
一旦该服务器向该用户受权,用户能够将存放在本地文件系统中的一个或者多个文件复制到远程文件系统(反之亦然)。
FTP使用两个并行的TCP链接来传输文件,一个是控制链接,一个是数据链接。
控制链接用于在两主机间传输控制信息,如用户标识、口令、改变远程目录的命令以及get 、put命令。
数据链接用于实际发送一个文件。
当用户主机与远程主机开始一个FTP会话时,FTP的客户端首先会在服务器21号端口与服务器端发起一个用于控制的TCP链接。
FTP的客户端也经过该控制链接发送用户的标识和口令,发送改变远程目录的命令。当FTP的服务器端从该链接上收到一个文件传输的
命令后,就发起一个到客户端的TCP数据链接。FTP在该数据链接上准确的传送一个文件,而后关闭该链接。在同一个会话期间,
若是用户还须要传输另外一个文件,FTP则打开另外一个数据链接。
FTP服务器必须在整个会话期间保留用户的状态。
 
2.4 邮件协议(暂时跳过)
 
2.5 DNS:英特网的目录服务
相关文章
相关标签/搜索