网络分层模型和应用协议
1. 分层模型
1.1 五层网络模型
网络要解决的问题是:两个程序之间如何交换数据。
四层?五层?七层?
2. 应用层协议
2.1 URL
URL(uniform resource locator,统一资源定位符)用于定位网络服务
- 当协议是
http
端口为80
时,端口可以省略 - 当协议是
https
端口为443
时,端口可以省略 schema
、domain
、path
是必填的,其他的根据具体的要求填写
2.2 HTTP
超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个广泛运用于互联网的应用层协议。
该协议包含了传递信息的模式和格式。
2.2.1 传递信息的模式
HTTP使用了一种极为简单的消息传递模式,「请求-响应」模式。发起请求的称之为客户端,接收请求并完成响应的称之为服务器。「请求-响应」完成后,一次交互结束。
2.2.2 传递信息的格式
请求行
请求头请求体
举个例子:
安装插件:REST Clinet
点击 Send Request
,发送请求,然后可以查看响应的响应行,响应头和响应体。
分析关键信息:
- 常见的请求方法有:
GET
:获取POST
:提交PUT
:修改DELETE
:删除
关于请求方法的协议原文见 HTTP/1.1规范RFC7231-Chapter4
-
请求路径
path + query
-
协议
-
请求头
Host
标注了URL
地址中的Domain + Port
,比如:Host: www.taobao.com
。Content-type
指出客户端给服务器的请求体格式,比如:
Content-Type: application/json`。 -
请求体
比如:
Content-Type: application/x-www-form-urlencodedloginId=admin&loginPwd=123123
Content-Type: application/json{ "loginId": "admin", "loginPwd": "123123" }
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryraPtlntBIqy4X2Ho------WebKitFormBoundaryraPtlntBIqy4X2Ho Content-Disposition: form-data; name="loginId"admin ------WebKitFormBoundaryraPtlntBIqy4X2Ho Content-Disposition: form-data; name="loginPwd"123456 ------WebKitFormBoundaryraPtlntBIqy4X2Ho--
-
响应码
这是响应码一般情况,但实际情况还要看公司后端人为决定。
常见的状态码有:
-
200 OK:一切正常。
-
301 Moved Permanently:资源已被永久重定向。
你的请求我收到了,但是你要的东西不在这个地址了,已经永远的把它移动到了一个新的地址,麻烦你请求新的地址,地址我放到了响应头的Location中了
举个例子:www.douyutv.com 重定向到 www.douyu.com。
-
302 Found:资源已被临时重定向。
你的请求我收到了,但是你要的东西不在这个地址了,我临时的把它移动到了一个新的地址,麻烦你取请求新的地址,地址我放到了请求头的Location中了
举个例子:国内 bing 的重定向(不会还有人不知道自己一直访问的是 cn.bing.com,而不是 www.bing.com,不会吧不会吧~~~)
-
304 Not Modified:文档内容未被修改。
你的请求我收到了,你要的东西跟之前是一样的,没有任何的变化,所以我就不给你结果了,你自己就用以前的吧。啥?你没有缓存以前的内容,关我啥事
-
400 Bad Request:语义有误,当前请求无法被服务器理解。
-
403 Forbidden:服务器拒绝执行。
-
404 Not Found:资源不存在。
-
500 Internal Server Error:服务器内部错误。
-
-
响应头 -
Content-Type
Content-Type
标注了附带的响应体是什么格式。常见的值有:
text/plain
: 普通的纯文本text/html
:html文档text/javascript
或application/javascript
:js代码text/css
:css代码image/jpeg
:jpg图片attachment
:附件- 其他
MIME
类型