前端网络学习笔记
网络分层模型和应用协议
分层模型
网络一般分为五层(应用层、传输层、网络层、数据链路层和物理层)
应用层:跟具体应用的相关的消息格式,也就是应用协议(HTTP) 传输层:保证消息的传递(TCP) 网络层:在互联网找到对方(IP) 数据链路层:在一个局域网中找到具体设备(MAC) 物理层:消息具体的传输通道(光纤)
应用协议
URL
uniform resource locator,统一资源定位符。它的作用就是定位互联网中特定资源。 URL是一个固定格式的字符串,如下图所示:
URL表达的意思是:从互联网中哪个台计算机(通过域名domain来确定)中的哪个程序(通过端口port来确定)寻找哪个服务资源(通过资源路径path来确定),以及使用什么协议(schema)
细节:
- 当协议为http,端口为80时,端口号可以省略
- 当协议为https,端口为443时,端口号可以省略
HTTP
超文本传输协议(Hyper Txet Transfer Protocol,HTTP) 广泛应用于互联网的应用协议
该协议规定了两个方面的内容:
- 传递消息的模式
- 传递消息的格式
模式
HTTP使用一种极为简单的消息传递模式,【请求-响应】模式
发送请求的称为客户端,接收请求并完成响应的称为服务端
格式
HTTP消息格式是一种纯文本格式,文本分为三个部分:
请求行
请求头
(空一行)
请求体
响应行
响应头
响应体
例子
使用VSCode插件REST Client来给淘宝网发送一个请求
GET / HTTP/1.1 GET和HTTP之间的 / 代表path和query
Host: www.taobao.com Host代表域名和端口(默认端口可以不写)
返回响应内容
响应行和响应头
响应体
请求方法
请求行中的GET就是请求方法
GET / HTTP/1.1
在HTTP协议中,请求方法仅有语义上的区别,就是告诉服务器此次请求是干什么的。
常见的请求方法:
- GET:获取资源
- POST:提交
- PUT:修改
- DELETE:删除 常用的请求方法为GET和POST(获取数据使用GET 提交数据使用POST)
请求头 Host
Host: www.taobao.com
Host代表着URL中的域名和端口(这里默认端口 可以不写)
请求头 Content-Type
当请求方法为POST时,需要通过请求头中的Content-Type设置请求体的数据格式
Content-Type: application/json
Content-Type表明了请求体的数据格式
{
"Id":"admin",
"Pwd":"123"
}
这里还可以设置其他的数据格式
Content-Type: appliction/x-www-form-urlencoded
Id=admin&Pwd=123
Content-Type: multipart/form-data;boundary=f
--f
Content-Disposition: form-data;name="Id"
admin
--f
Content-Disposition: form-data;name="Pwd"
123
--f--
响应码
响应码是响应行中的数字,后面往往有一个代表服务器响应的态度
常见的状态码:
- 200 OK:一切正常
- 301 Moved Permanently:资源已被永久重定向了 资源永久的更换了地址。
- 302 Found:资源已被临时重定向 资源暂时被更换了地址(过段时间还可以根据现在的url访问)
- 304 Not Modified:文档内容未被修改 请求的资源和之前一样,这里的响应不给资源,请使用以前缓存的资源。
- 400 BadRequest:语义有误,当前请求无法被服务器理解 服务器不能解析请求的url
- 403 Forbidden:服务器拒绝执行 请求收到,但是服务器不给响应资源
- 404 Not Found:资源不存在 请求收到了 url中的path在服务器中不存在
- 500 Internal Server Error:服务器内部错误
3开头的状态码与资源有关,4和5开头的状态码与服务器有关
响应头-Content-Type
常见的有:
text/plain: 普通的纯文本text/html:html文档text/javascript或application/javascript:js代码text/css:css代码image/jpeg:jpg图片attachment:附件- 其他
MIME类型