HTTP协议

众所周知,路由器后台管理界面一般都是以Web服务的方式提供的,而Web服务是使用HTTP协议传输的,所以深入理解HTTP协议十分重要。超文本传输协议(HyperText Transfer Protocol,简写为HTTP)是一个应用层协议,虽然在2015年已推出HTTP/2版本,并被主要的web浏览器及web服务器支持,但目前使用最广泛的还是HTTP/1.1版本。

       HTTP协议较为简单,所以传输速度很快。一般来说,每次HTTP连接只处理一个请求,这样的好处是可以节省传输时间。

1、请求报文结构

报文中的数据都使用ASCII编码,各个字段的长度是不确定的(除了作为结尾的CRLF外,不允许出现单独的CR或LF字符),如图所示:

请求报文以GET请求为例,如所示:

GET /Get_web.asp?name=admin&pass=123456 HTTP/1.1
Host: 192.168.1.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
DNT: 1
Connection: keep-alive
Upgrade-Insecure-Requests: 1

请求报文参数详解

所有请求方法名称全为英文大写,目前有9种,路由器主要支持2种,如下表所示:

请求方法请求需要请求体说明
GET不需要请求参数放在URI之后,使用?分割URI和数据,如:参数之间以&相连,如、/Get_web.asp?name=admin&pass=123456,浏览器的地址栏输入来浏览网页,都是GET方式
POST需要请求参数放在请求体中,像提交表单的操作,都是POST方式

HTTP请求常见头部字段,如下表所示:

Header示例说明
HostHost: 192.168.1.1请求的服务器的域名、IP,一般也包含端口号
User-AgentUser-Agent: Mozilla/5.0 (Linux; X11)包含发出请求的浏览器信息、系统信息
RefererReferer: http://192.168.1.1/hello.html先前网页的地址,当前请求网页紧随其后,即来路
AcceptAccept: text/plain, text/html指定客户端能够接收的内容类型
Accept-EncodingAccept-Encoding: compress, gzip指定浏览器可以支持的web服务器返回内容压缩编码类型
Accept-LanguageAccept-Language: en,zh浏览器可接受的语言
AuthorizationAuthorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==HTTP授权的授权证书,一般是账号:密码的base64编码后的数据
Content-LengthContent-Length: 123请求体的长度
Content-TypeContent-Type: application/x-www-form-urlencoded请求的与实体对应的扩展类型信息
CookieCookie: id=12345678;HTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器

2、请求报文结构

响应报文示例:

HTTP/1.1 401 Unauthorized
Server: httpd
Date: Wed Sep 18 00:59:20 2019
Set-Cookie: cookie=db00-0051-2200-0094
Pragma: no-cache
Cache-Control: no-cache
Content-Type: text/html
 
<html><head><title>Document Error: Unauthorized</title></head>
<body><h2>Access Error: Unauthorized</h2>
<p>Access to this document requires a User ID</p></body></html>

响应状态码

状态码含义说明
1xx信息收到请求,继续处理
2xx成功请求已成功接收,理解和接受
3xx重定向需要采取进一步措施才能完成请求
4xx客户端错误请求包含错误的语法或无法满足
5xx服务器错误服务器无法满足明显有效的请求

留下评论

您的电子邮箱地址不会被公开。 必填项已用*标注