- 先Client端发送请求报文。让服务器知道我要发起连接
- Server端接受连接后回复ACK报文,并为这次连接分配资源
- Client端接收到ACK报文后也向Server端发送ACK报文,并分配资源
- Client端发起中断连接请求,也就是发送FIN(结束)报文。
- server发送ACK,"告诉Client端,你的请求我收到了,但是我还没准备好,请继续等我的消息"。 wait:这个时候Client端就进入FIN_WAIT状态,继续等待Server端的FIN报文。
- 当Server端确定数据已发送完成,则向Client端发送FIN报文
- Client端收到FIN报文后,"就知道可以关闭连接了,发送ACK后,Server端收到ACK后,"就知道可以断开连接了"。Client端等待了2MSL后依然没有收到回复,则证明Server端已正常关闭.
- 请求行: 请求方法 url http版本
- 请求头:
- Accept: 客服端接受的内容类型
- Accept-Charset: 接受的字符编码集
- Accept-encoding: 接受的压缩类型
- content-length: 请求的内容长度
- content-type: 请求的内容长度
- 请求体: 包含的数据
- 响应行: http版本 状态吗 状态描述
- 响应头:
- 响应体: 包含的数据
- GET 使用url传参,放到body发不出去,url长度有限制
- POST 发送的数据更多
-
readyState:
- 0: 未调用send
- 1: 已调用send,正在发送
- 2: 已接收返回的内容
- 3: 正在解析返回的内容
- 4: 解析响应内容完成
-
status:
-
1** 服务器收到请求,需要请求者继续执行操作
-
2** 成功,操作被成功接收并处理
-
3** 重定向,需要进一步的操作以完成请求
-
4** 客户端错误,请求包含语法错误或无法完成请求
-
5** 服务器错误,服务器在处理请求的过程中发生了错误
-
301: 永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替
-
302: 临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI
-
304: 未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源
-
前者对应服务器返回的响应头,后者是客户端的请求头,当客户端再次请求该资源时,将在HTTP Request中加入If-None-Match信息(ETags的值)。如果服务器验证资源的ETags没有改变(该资源没有改变),将返回一个304状态,然后浏览器得知是304状态,就去浏览器缓存中取数据,否则,服务器将返回200状态,并返回该资源和新的ETags。
原理和前面的是一样的
请求头部和响应头部中都可以包含该字段,该字段是用来设置浏览器缓存的保留时间
等同于Cache-control的max-age的效果
- 满足同源策略
- 用来跟踪会话
- 当服务器返回了cookie的时候,浏览器自动将其保存在本地, 下次请求时自动带上
- 具有保质期,并且大小一般不超过4k