运输层为应用进程提供了端到端的通信服务。但不同的网络应用进程之间,还需要有不同的通信规则。因此在运输层协议之上,还需要有应用层协议。应用进程之间的通信必须遵守严格的规则。应用层的协议应当定义:
- 应用进程交换的报文类型,如请求报文和响应报文
- 各种报文类型的语法,报文中各个字段的详细描述
- 字段的语义,即包含在字段中的意义
- 进程何时、如何发送报文、以及对报文进行响应的规则
1、域名系统DNS
域名到IP地址的解析是由分布在因特网上的许多域名服务器程序共同完成的。域名服务器程序在专设的结点上运行,而人们也常把运行服务器程序的机器成为域名服务器。为了提高DNS查询效率,并减轻根域名服务器的负载和减少因特网上的DNS查询报文数量,在域名服务器中广泛地使用了高速缓存。高速缓存用来存放最近查询过的域名以及从何处获得域名映射信息的记录。
2、万维网WWW
万维网是一个分布式的超媒体系统,它是超文本系统的扩充,所谓超文本,是包含指向其他文档的链接的文本。万维网以客户服务器方式工作。客户向服务器程序发出请求,服务器程序向客户程序送回客户索要的万维网文档,在一个客户程序主窗口上显示出的万维网文档成为页面。万维网必须解决以下几个问题
- 怎么标识分布在整个因特网上的万维网文档—-使用统一资源定位符URL
- 用什么样的协议来实现万维网上的各种连接—-HTTP协议
- 怎样使不同作者创作的不同风格的万维网文档都能在因特网上各种主机上显示出来,同时用户清楚什么地方存放连接—–HTML
- 怎样使用户能够方便的找到所需的信息
3、超文本传送协议HTTP
HTTP是面向事务的应用层协议,它是万维网上能够可靠地交换文件的基础。每个万维网网点都有一个服务器进程,它不断监听TCP的端口80,以便发现是否有浏览器向他发出连接请求,一旦监听到连接建立请求并建立了TCP连接之后,浏览器就向万维网服务器发出浏览某个页面的请求,服务器接着就返回所请求的页面 作为响应。最后,TCP连接就被被释放了。在浏览器和服务器之间的请求和响应的交互,必须按照规定的格式和遵循一定的规则,这就是HTTP。
大致过程:
- 浏览器分析链接指向页面的URL
- 浏览器向DNS请求解析域名的IP地址
- 浏览器与万维网服务器建立TCP链接
- 浏览器通过POST/GET向服务器发送请求报文
- 服务器给出响应,传输响应报文
- 服务器或者客户端释放链接
- 浏览器解析显示html文件
HTTP协议补充:
HTTP协议本身是无连接的,无状态的!
4、HTTP报文结构
有两类报文,都是由3部分构成,只是开始行不同
(1)请求报文—从客户向服务器发送请求报文
(2)响应报文—从服务器得到客户的回答
开始行:用于区分是请求报文还是响应报文,在请求报文中的开始航叫做请求行,在响应报文中叫状态行
首部行:用来说明浏览器、服务器或报文主体的一些信息
实体主体:在请求报文中一般不使用这个字段,而在响应报文中也可能没有。
(3)响应报文的状态码
1XX:提示信息
2XX:成功
3XX:重定向
4XX:客户端差错
5XX:服务器差错
5、HTTP1.0和HTTP1.1的区别
(1)HTTP1.0
若一个主页上有很多链接的对象需要一次进行链接,那么每一次链接下载都要导致2*RTT的开销。另一种开销就是万维网客户和服务器为每一次建立新的TCP链接都要分配缓存和变量,特别是服务器往往服务于大量客户的请求。非持续链接会使万维网服务器的负担很重。
(2)HTTP1.1
使用了持续连接,使万维网服务器在发送响应后仍然在一段时间内保持这条连接,使同一个客户和该服务器可以继续在这条连接上传输后续的HTTP请求报文和响应报文