您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

HTTP 协议及其请求过程

的网络模型有 7 层,Http 协议是位于最上层的应用层。应用层协议的意思是它是服务于我们能体验到的一些电脑软件,QQ/邮箱/浏览器这些。应用层下面还有好几层,他们主要保障的是网络传输中的一些安全性(会话加密),可靠性(字节冗余校验),字符转字节,字节转高低电平实现信号的传输等。

Http 协议及其请求过程是用于浏览器与服务的数据交互的,选择浏览器,笔者下面用 chrome 进行演示。

Http 规定了会话是由客户端发起,服务端响应。发起和响应的消息格式如下:

get https://www.imooc.com/ HTTP/1.1
host:117.121.101.134:443
keyword:http
name:mooc

请求体对应的是具体的业务数据,表单提交的字段,接口的参数等。

可能部分同学会有疑问,上面的两段请求跟浏览器的截图不一样,原因是我上面的是 Http 协议标准的定义,浏览器毕竟面向的是,对请求的信息有做了解析,更人性化地展示了请求的。下面的是某个服务接收到浏览器请求的具体报文信息,借助 TCPflow 这个工具在 Linux 服务器上面监听的。或者简单的 curl -v http://www.baidu.com/ 也可以看到协议。

HTTP/1.1 200 OK
Date:Sun, 23 Feb 2020 07:31:24 GMT
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 129
Content-Type: application/json; charset=UTF-8
...

返回了请求的状态,200状态码对应的就是成功,还有一些状态,的编码,长度,等。

{result: 0, data: ["Vue", "Python", "Java", "r", "springboot", "docker", "React", ""],…}
data: ["Vue", "Python", "Java", "r", "springboot", "docker", "React", ""]
msg: "成功"
result: 0

返回了消息的具体信息,这个消息有可能是一串 html 文本,也可能是 json 串,,附件都有可能,一般是跟 content-type 对应。

在上面的请求中,规定了第是 method 后面是 url 接着是 protocal/version ,这样的约束就是 http 的协议,服务器收到请求就根据这个规则拆开解析。应用这样的模式,web 的客户端和服务端互相知道了请求的,地址,字符编码,参数,响应值等。


联系我
置顶