读图解http有感;
网络基础
- TCP/IP协议分层
- 应用层
- 传输层
- 网络层
- 链路层
客户端通过http协议发送请求,告知我想要什么,
这些信息需要通过链路层(物理层面,电脑,网线)传递给服务器;
传输层TCP获取到应用层发来的http请求后,解析http请求,知道了客户端想要干嘛,,;传递给网络层;
网络层IP则把获取到的信息打包成能在链路层传输的形式;进行网络传输;
在链路层: 物理层面,电脑,主机,操作系统,网线;等等;
信息从上到下,每过一层,都会有一层封装,到达接收端后从下到上,每到一层便会解封一层,获取自己需要的信息;
TCP协议的三次握手:
1.客户端:发送信息
2.服务端: 收到信息了
3.客户端: 我知道已收到信息了
现在主流用的是http1.1
Http://user:pass@www.baidu.com:8000/dir/index.html?uid=1
协议名,登录信息(可选),域名,端口号(可选),文件路径,参数(查询字符串)
Http是不保存状态的协议;
http简介
请求方法:
- GET: 获取资源
- POST: 传输实例主体(传输内容)
- PUT: 传输文件
- HEAD: 与get方法类似,去请求获取资源,但是并不会返回资源,而是返回资源的状态(有效性,更新时间等;)VB
- DELETE: 删除文件
- OPTION: 询问服务器支持的请求方法
- TRACE: 请求资源,有一个参数Max-Forwards,表示能够被代理转发的次数,服务器响应时会把之前的请求通信回环返回给客户端;(很少用)
- PATCH: PATCH方法对PUT方法的补充,用来对资源进行局部更新;
持久链接:
只要任意一端没有明确提出断开链接,则保持TCP网络链接状态;
在HTTP1.1中,所有的连接默认都是持久链接;
Cookie:
http协议是无状态协议为了保存客户端的状态,开发了cookie技术
客户端: 第一次没有cookie信息的请求:
服务端: 生成了cookie,记录状态,在响应报文中有Set-Cookie信息
客户端: 第二次发送请求,会自动带上cookie信息;
HTTP报文:
http报文大致可以分为报文首部和报文主题
报文首部: 请求或响应的属性;包括请求行(请求方法,url,http版本),状态行(状态码),首部字段,(各种条件和属性;)
报文主题: 发送的数据;
编码
http在传输数据时,可以按照数据原貌直接传输,也可以通过编码再传输
一般包括: 压缩传输的内容编码, 分割发送的分块传输编码
http状态码;
状态码有三位数字和原因短语组成
三位数字中第一位表示类别,后两位无分类;
状态码类别:
- 1XX: 信息性,请求正在处理
- 2XX: 成功,请求成功
- 3XX: 重定向,需要进行附加操作以完成请求
- 4XX: 客户端错误,服务器无法处理请求
- 5XX: 服务器错误,服务器处理请求出错
只要遵守状态码类别的定义,改变状态码或自行创建都可以;
代表性状态码
- 200 OK
请求正常处理;
2. 204 NoContent
请求已经成功处理但是没有什么资源可以返回;
3. 206 Partial Content
请求成功,请求只需要某一资源的一部分; 响应报文中有 Content-Range指定范围的试题内容
4. 301 Moved Permanently
永久重定向,分配了新的URI;
5. 302 Found
临时重定向;
6. 303 See Other
临时重定向
7. 304 Not Modified
请求的资源找到了,但是没有达成请求条件,比如请求资源,结果响应304,表示缓存未过期,请用缓存
8. 307 Temporary Redirect
临时重定向
9. 400 Bad Request
错误请求,
10. 401 Unauthorized
请求未认证,第一次返回401,会提示输入用户名密码;
11. 403 Forbidden
请求的资源找到了,但是没有权限获取;不允许访问;
12. 404 Not Found
请求的资源找不到;
13. 500 Internal Server Error
服务器错误
14. 503 Service Unavailable
服务器正忙;
- 状态码和状况的不一致
有可能会出现状态码和真实状况不一致的情况,比如状态码200,表示请求成功,但是里面却没有实体内容;
英文单词
Partial: 局部的
Permanently: 永久的
Modified: 修改的
Temporary: 临时的
Redirect: 重定向
unauththorized: 非法的
Forbidden: 禁止