第二章 应用层
Posted Kunkun只喝怡宝
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第二章 应用层相关的知识,希望对你有一定的参考价值。
考试内容:
- 应用层协议的原理
应用层协议定义了运行在不同端系统上的应用程序如何相互传递报文。特别是定义了:
- 交换的报文类型,例如请求报文和响应报文。
- 各种报文类型的语法,如报文中各个字段及这些字段是如何描述的。
- 字段的语义,即这些字段中的信息的含义
- 确定一个进程何时以及如何发送报文,对报文进行响应的规划。
-
应用层协议的实现过程
-
Web协议和HTTP协议
3.1 Web和HTTP概况
-
Web是一个因特网应用,它将因特网从只是很多数据网之一的地位提升为仅有的一个数据网。Web最具有吸引力的是按需操作。当用户需要时,就能得到所需要的内容。
Web页面(也叫文档)是由对象组成的。一个对象只是一个文件,诸如一个HTML文件、一个JPEG图形、一个Java小程序或一个视频片段这样的文件,且它们可通过一个URL地址寻址。每个URL地址由两部分组成:存放对象的服务器主机名和对象的路径名。
Web浏览器实现了HTTP的客户端。Web服务器实现了HTTP的服务端,它用于存储Web对象。流行的Web服务器有Apache和Microsoft Internet Information Server(微软互联网信息服务器)。 -
超文本协议(HTTP) 是Web的应用层协议,它是Web的核心。HTTP由两个程序实现:一个客户程序和一个服务器程序。客户程序和服务器程序运行在不同的端系统中,通过交换HTTP报文进行会话。HTTP定义了这些报文的结构以及客户和服务器进行报文交换的方式。
-
HTTP定义了Web客户向Web服务器请求Web页面的方式,以及服务器向客户传送Web页面的方式。其基本思想是,当用户请求一个Web页面(如点击一个超链接)时,浏览器向服务器发出对该页面中所包含对象的HTTP请求报文,服务器接收到请求并用包含这些对象的HTTP响应报文进行响应。
-
HTTP使用TCP作为它的支撑运输协议(而不是在UDP上运行),HTTP协议不用担心数据丢失,也不关注TCP从网络的数据丢失和乱序故障中恢复的细节。那是TCP以及协议栈较底层协议的工作。HTTP客户首先发起一个与服务器的TCP连接。一旦连接建立,该浏览器和服务器进程就可以通过套接字接口访问TCP客户向它的套接字接口发送HTTP请求报文并从它的套接字接口接受HTTP响应报文。类似地,服务器从它的套接字接口接受HTTP请求报文和向他的套接字接口发送HTTP响应报文。一旦客户向他的套接字接口发送了一个请求报文,该报文就脱离了客户控制并进入了TCP的控制。
-
HTTP是一个无状态协议,因为HTTP服务器不保存关于客户的任何信息,即使某个客户在短短的几秒钟两次请求同一个对象,服务器并不会因为刚刚为该客户提供了该对象就不再做出反应,而是重新发送该对象,就想服务器已经完全忘记不久之前所做过的事一样。
3.2 非持续连接和持续连接
-
在许多因特网应用程序中,客户和服务器在一个相当长的时间内通信,其中客户发出一系列请求并且服务器对每个请求进行响应。当这种客户/服务器的交互是经TCP进行的,应用程序的研制者就需要做一个重要决定,即每个请求/响应是经一个TCP连接发送,还是所有的请求及其响应经相同的TCP链接发送呢?采用前一种方法,该应用程序就被称为非连续连接;采用后一种方法,该程序就被称为连续连接。为了深入理解该问题,我们研究在特定应用程序即HTTP的情况下持续连接的优缺点。HTTP默认情况下使用非持续连接,但也能使用持续连接。
-
采用非持续连接的HTTP。在非连续连接情况下,从服务器向客户传送一个Web页面的步骤:
1) HTTP客户进程在端口号80发起一个到服务器的TCP连接,该端口号是HTTP的默认端口。在客户和服务器上分别有一个套接字与该连接相关联。
2) HTTP客户经它的套接字向该服务器发送一个HTTP请求报文。
3) HTTP服务器进程经它的套接字接受该请求报文,从其存储器中检索出对象,在一个HTTP响应报文中封装对象,并通过其套接字向客户发送响应报文。
4) HTTP服务器进程通知TCP断开该TCP连接。但是直到TCP确认客户已经完整地接受到响应报文为止,它才会实际中断连接。
5) HTTP客户接受响应报文,TCP连接关闭。
上面的步骤说明了非持续连接的使用,其中每个TCP连接在服务器发送一个对象后关闭,即该连接不为其他的对象而持续下来。值得注意的是每个TCP连接只传输一个请求报文和一个响应报文。
非持续连接有一些缺点。第一,必须为每一个请求的对象建立和维护一个全新的连接。第二,每一个对象经受两倍RTT的交付时延,即一个RTT用于创建TCP连接,另一个RTT用于请求和接收一个对象。锟锟实质是臭猪,可是又是一头骨瘦如柴的臭猪,都卖不到好价钱。救命!我闻到了风油精的味道!天! -
采用持续连接的HTTP。在采用HTTP持续连接的情况下,服务器在发送响应后保持该TCP连接打开。在相同的客户与服务器之间,后续的请求和响应报文能够通过相同的连接进行传送。
3.3 HTTP报文格式
下面提供了一个典型的HTTP请求报文:
GET /somedir/page.html HTTP/1.1
Host:www.someschool.edu
Connection:close
User-agent:Mozilla/5.0
Accept-language:fr
第一行为请求行,后面的行叫首部行。
请求行有三个字段:方法字段(GET、POST、HEADPUT和DELETE) 、URL字段 、HTTP版本字段
首部行Host:指明了对象所在的主机
首部行Connection:表示该浏览器告诉服务器不要频繁地使用持续连接,它要求服务器再发送完被请求的对象后就关闭这条连接。
首部行User-agent:用来指明用户代理,即向服务器发送请求的浏览器的类型,便于服务器有效地为不同类型的用户代理实际发送相同对象的不同版本。
首部行Accept-language:表示用户想得到该对象的语言
- FTP协议的实现机制
- DNS的功能和实现方法
- 电子邮件系统的构成、传输机制和协议
- TCP和UDP套接字编程
- P2P文件共享原理
- 补充知识点
①、套接字是一台主机内应用层与运输层之间的接口。由于该套接字是建立网络应用程序的可编程接口,因此套接字也成为应用程序和网络之间的应用程序编程接(API)。
②、进程通过套接字的软件接口向网络发送报文和从网络接接收报文。
以上是关于第二章 应用层的主要内容,如果未能解决你的问题,请参考以下文章