在因特网中应用层协议有很多,http,smtp.ftp等等协议,这些协议规定了数据在网络传输中的格式。这里主要介绍下http协议。
HTTP的操作过程
http协议定义了浏览器怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。
HTTP规定在HTTP客户与HTTP服务器之间的的每次交互,都由一个ASCII码串构成的请求和一个类似的通用因特网邮件扩充,即“类MIME”的响应组成。HTTP报文通常都使用TCP连接传送。
当我们在浏览器中输入www.baidu.com会发生什么呢?
(1)浏览器向DNS请求解析www.baidu.com的ip地址。
(2)域名系统DNS解析出百度的ip地址为202.108.22.5。
(3)浏览器与服务器建立TCP连接(在服务器端ip地址是202.108.22.5,端口号80)
(4)浏览器发出取文件命令:GET/www.baidu.com
(5)服务器www.baidu.com给出响应,把文件发送给浏览器。
(6)释放TCP连接
HTTP使用了面向连接的TCP作为运输层协议,保证了数据的可靠传输。HTTP不必考虑数据在传输及过程中被丢弃后又怎样被重传。但是,HTTP协议本身是无连接的。
HTTP的报文结构
HTPP有两类报文:
(1)请求报文——–从客户端向服务器发送请求报文。
(2)响应报文——–从服务器到客户端的回答。
HTTP请求报文和响应报文都是由三个部分组成,这两种 报文格式的区别就是开始行不同。
(1)开始行,用于区分是请求报文还是响应报文。在请求报文中的开始行叫做请求行(Request-Line),而在响应报文中的开始行交做状态行(Status-Line)。在开始行的三个字段之间都是以空格分隔开,最后的“CR”和“LF”分别代表“回车”和“换行”。
(2)首部行,用来说明浏览器、服务器或保温主体的一些信息。首部可以有好几行,但是也可以不使用。在每一个首部行中都有首部字段名和它的值,每一行在 结束的地方都要有“回车”和“换行”。整个首部行结束时,还有一个空行将首部行和后面的实体主体分开。
(3)实体主体,在请求报文中一般都不用这个字段,而在响应报文中也可能没有这个字段。
HTTP请求报文的一些方法
PITION:请求一些选项的信息
GET:请求读取URL所标志的信息
HEAD:请求读取URL所标志的信息的首部
POST:给服务器添加信息(注释)
PUT:在知名的URL下存储一个文档
DELETE:删除指明的URL所标志的资源
TRACE:用来进行环回测试的请求报文
CONNECT:用于代理服务器
HTTP响应报文的主要特点
每一个请求报文发出后,都能收到一个响应报文。响应报文的第一行就是状态行。状态行包括三项内容,即HTTP的版本,状态码,以及解释状态码的简单短语。状态码都是三位数字的,分5大类共33种(见RFC 2616),例如
1XX表示通知信息的,如请求收到了或正在进行处理。
2XX表示成功,如接受或知道了
3XX表示重定向,如要完成请求还必须采取进一步的行动。
4XX表示客户端的差错,如请求中有错误的语法或不能完成。
5XX表示服务器的差错,如服务器失效无法完成请求。