HTTP协议-http事务详解
来源:互联网 发布:mac 合上盖子不休眠 编辑:程序博客网 时间:2024/04/25 01:29
本篇参考了《深入理解计算机系统》的第12章-网络编程
一个完整的http 事务由http请求和http响应组成,其中,
http请求是由请求行(request line)和请求报头(request header)组成,并以一个空的文本行来终止报头列表(这说明报表是可以有多个的)。
http响应是由响应行(response line)和响应报头(response header)和响应主体(response body)组成,同请求报头类似,要终止响应报头的话,就在响应报头列表的后面跟随一个空行来终止。
注意:以下说明中出现的空格都是一个,只是为了更加清晰易读,才使用多个空格
请求行的形式:
<请求方法> <uri> <http版本>
这种形式表明的意思是,以指定的“请求方法”到服务器上的uri指定的位置把相应的资源取回来。http版本应该是为了保持客户端和服务器端之间的http版本兼容性。
例子1:GET /index.html HTTP/1.1
例子2:GET / HTTP/1.0
<uri>在后面会有说明
请求报头的形式:
<报头名称>:<报头数据>
请求报头的作用应该是传输一些用于服务器的信息,比如,服务器需要了解到的客户端信息等。
例子:
host: www.sina.com
响应行的形式:
<http版本> <状态代码> <状态消息>
状态代码的一些主要编码会在后面给出。
响应行的意思是告诉客户端本次响应的“http版本”是什么,以及响应的情况如何(以状态代码表示),状态消息只是跟状态代码同义的英文表达。
例子1:HTTP/1.1 200 OK
例子2:HTTP/1.1 404 NOT FOUND
响应报头的形式:
跟请求报头形式一样。
例子 1:Content-Type:text/html
Content-length: 4096
例子 2:Content-Type:image/gif
响应主体的形式:
就是用户请求的数据。
具体形式依赖于响应报头中指定的 Content-Type
比如当 Content-Type:text/html 时,响应主体就是通常所见到的 html 文档
URL及URI的相关说明:
比如一个url为 http://www.helloworld.com:80/index.html
那么通常情况下,uri是指url中除开表示服务器网络位置(一般是服务器地址和端口)的相关信息后的那部分内容,如上面的url中,uri是 /index.html,
另外要说到的是url的后缀,如上面的url中,url后缀是 /index.html,但url后缀应该不总是等于uri的,因为有最小的url后缀是 /,而对于这种url后缀,服务器会把它扩展为某个默认的文件名(一般通过配置服务器来达成这点),而获取到文件名之后,才会得到uri。另外,在浏览器中直接输入域名时,可以不用输入 / 的原因是浏览器自动帮你补上了这个 / 。
响应行中的状态代码:
- HTTP协议-http事务详解
- 【http】http协议详解
- HTTP协议详解----HTTP消息
- HTTP协议 (一) HTTP协议详解
- HTTP 协议详解与HTTP 协议压缩
- HTTP协议 (一) HTTP协议详解
- HTTP协议 (一) HTTP协议详解
- 转载:HTTP协议 (一) HTTP协议详解
- HTTP协议 (一) HTTP协议详解
- HTTP协议 (一) HTTP协议详解
- HTTP协议系列-----------HTTP协议详解
- HTTP协议 (一) HTTP协议详解
- HTTP协议 (一) HTTP协议详解
- HTTP 协议详解与HTTP 协议压缩
- HTTP协议 (一) HTTP协议详解
- HTTP协议 (一) HTTP协议详解
- HTTP 协议详解与HTTP 协议压缩
- Http协议详解
- Qt实现自定义模型基于QAbstractTableModel
- C++ 虚函数表解析
- Qt实现自定义模型基于QAbstractItemModel
- Eclipse中项目全部报错----项目全部打红叉的解决办法
- 智能平台管理接口(IPMI:Intelligent Platform Management Interface)详细介绍
- HTTP协议-http事务详解
- Qt Model/View 的简单说明
- 昂贵的“财富值
- xt邀请赛
- 前端第一步——HTML
- 纹理坐标
- 黑马程序员—JavaIO流
- 破坏MBR的代码
- 【TelephonyManager】android 获取手机IMEI号码