计算机网络之HTTP报文
HTTP请求报文——来自用户一封简讯
请求报文是由客户向服务器发送的,请求的服务器服务的。既然是请求的短信,那就一定包含一些基本的信息
GET /somedir/page.html HTTP/1.1 // 请求行
Host:www.someschool.edu //首部行
Connection:close //首部行
User-agent:Mozilla/5.0 //首部行
Accept-language:fr //首部行
(实体体)
-
第一行,请求行,最基本的告诉别人,你的请求,请求的内容,和你遵守的HTTP协议版本:
-
对应就是:方法字段 URL字段 HTTP版本字段
-
方法字段:告诉服务器你要干什么
- GET:向服务器请求HTML对象
- POST:向服务器提交关键字。
- 你搜索网页的时候,会向百度提交关键字;你写邮件的时候会有附件,一般是为空,除非你有什么附加说明
- HEAD:对网络应用进行调试和跟踪
- PUT:从用户端将对象上传到指定的Web服务器上的指定路径,网盘大致是这个道理
- DELETE:允许用户或者应用程序将Web服务器上的对象删除,微信里的收藏删除
-
URL字段:请求对象是什么
- 用来表示请求对象的标记,
-
HTTP版本字段:告诉计算机你遵守的HTTP协议是什么?
-
-
第二行:首部行,你的对象具体存放在那台主机上
- Host:www.someschool.edu
- 收件人的地址
-
第三行,因为TCP有两种,一种是持续性连接,一种是非持续性连接,在这里告诉服务器你是需要哪一种
- close,发送完对象直接关闭TCP,采用非持续性连接
- open,发送完对象不要关闭TCP,采用持续性链接
-
后两行:User-agent和Accept-language
- 是谁帮我代理的,指明用户代理服务器类型
- 不同的服务器需要的HTML版本是不同的,服务器会根据你的代理版本发给你有有效的形式
- Accpet-language:字如其义,你接受的语言类型
HTTP回应报文——来自服务器的一个快递
先看看一份快递单
再来对比一下HTTP相应报文
HTTP/1.1 200 OK
Connection:close
Date:Tue,18 Aug 2015 15:44:04 GMT
Server:Apache/2.2.3(CentOS)
Last-modified: Tue ,18 Aug 2015 15:11:03 GMT
Content-Length:6821
Content-Type:text/html
(实体体,具体的数据)
首先来看看前三行,关于TCP连接的
HTTP/1.1 200 OK
Connection:close
Date:Tue,18 Aug 2015 15:44:04 GMT
- 我们对比快递单内容,由于服务器和用户之间的是用已经建立好的TCP连接,相当于一个通道,所以不需要再写什么收件人,因为这个通道的后面只有一个收件人,将快递扔进去就行了,所以就将快递单的有半部分用户信息屏蔽了
- 当然,既然是通道,那通道建立是否成功,都得给人家回个信,同时还得说明通道的使用方式
- 对应“200 OK”状态码和“Connection:close”连接使用方式
- 快递公司是有协议的,服务器的响应报文也是有遵从协议的,如HTTP/1.1
- 最后注明一下发货日期,对应“Date:Tue,18 Aug 2015 15:44:04 GMT“
然后再来看看后半部分
Server:Apache/2.2.3(CentOS)
Last-modified: Tue ,18 Aug 2015 15:11:03 GMT //对象生产和修改日期
Content-Length:6821 //对象的大小
Content-Type:text/html //对象的类型
- 对比快递单的发件人信息,同样的回应报文也得说明一下发件人的信息,是谁发送的信息,对应就是”Server:Apache/2.2.3(CentOS)“
- 补充一下,常用的服务器:IIS,Kangle, WebLogic,Apache,Tomcat,Nginx
- 在对比一下快递单,上面会写货物的类型,大小,回应报文也同样会有相关内容,注明发送内容的大小和类型,同时还会注明这个对象生产创建日期,对应就是
- 然后就是快递的真正内容
最后了,再说明一下常见的一些状态码
- 200 OK:请求成功,信息再返回的相应报文中
- 301 Moved Permanently”请求对象被永久的转移了,但是相应的你的浏览器会自动的获取对应的连接,相当于跳转
- 400 Bad Request:通用的差错代码,服务器理解不了你的请求
- 404 Not Found:请求的文档不在服务器上
- 505 HTTP Version Not Supported:服务器不支持对应的报文使用的HTTP协议,协议太老,我不支持