计算机网络——超文本传送协议HTTP
简述
每个万维网网点都有一个服务器进程,它不断地监听TCP的端口80,以便发现是否有浏览器向它发出连接建立请求。一旦监听到连接建立请求并建立了TCP连接之后,浏览器就向万维网服务器发出浏览某个页面的请求,服务器接着就返回所请求的页面作为响应。最后,TCP连接就被释放了。
HTTP协议的底层传输默认使用的是可靠的TCP协议。
在浏览器和服务器之间的请求和响应的交互,必须按照规定的格式和遵循一定的规则。
这些格式和规则就是超文本传送协议HTTP。
HTTP协议是应用层协议,在TCP/IP协议接收到数据之后需要通过HTTP协议来解析才可以使用。
报文结构
HTTP协议中的报文结构非常重要。
HTTP中报文分为请求报文(request message)和响应报文(response message)两种类型,这两种类型都包括三部分:
-
- 首行
- 头部
- 主体
主体保存具体内容,请求报文中主要保存POST类型的参数,响应报文中保存页面要显示的结果。
首行、头部和主体以及头部的各项内容用回车换行(\r\n)分割,另外头部和主体之间多一个空行,也就是有两个连续的回车换行。它们的接口如下图所示:
请求
HTTP请求由三部分组成,分别是:请求行、消息报头、请求正文
HTTP请求报文的方法:
- GET 请求获取Request-URI所标示的资源
- POST 在Request-URI所标示的资源后附加新的数据
- HEAD 请求获取由Request-URI所标示的资源的响应消息报头
- PUT 请求服务器存储一个资源,并用Request-URI作为其标示
- DELETE 请求服务器删除Request-URI所标识的资源
- TRACE 请求服务器回送收到的请求信息,主要用于测试或诊断
- CONNECT 用于代理服务器
- OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求
响应
每个请求报文发出后,都能收到一个响应报文。响应报文的第一行就是状态行。
状态行包括三项内容,即HTTP的版本,状态码,以及解释状态码的简单短语。
状态码都是三位数字的,分为5大类共33种:
- 1XX:表示通知信息,如请求收到了或正在进行处理
- 2XX:表示成功,如接受、理解
- 3XX:表示重定向,如要完成请求还必须采取进一步的操作
- 4XX:表示客户的错误,如请求中有错误的语法或不能完成
- 5XX:表示服务器的差错,如服务器失效无法完成请求
常见状态代码:
- 200 OK //客户端请求成功
- 400 Bad Request //客户端请求有语法错误,不能被服务器所理解
- 401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
- 403 Forbidden //服务器收到请求,但是拒绝提供服务
- 404 Not Found //请求资源不存在,eg:输入了错误的URL
- 500 Internal Server Error //服务器发生不可预期的错误
- 503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
梦想要一步步来!