HTTP
简介
超文本传输协议,http是一个客户端请求和服务器应答的标准(TCP)。
OSI七层协议
应用层
用户感知到的只有最上面一层也就是应用层,用户在应用层上提出需求,比如输入一个网址,这条命令会委托给传输层。
传输层
收到应用层指令后执行,与服务器建立连接。IP会解析为mac地址,每个网卡都有,全世界唯一。
连接方式:
-
UDP
- 客户端直接连接到服务端,直接发送信息,不会确认。速度很快,安全性低。
-
TCP/IP
三次握手
- 客户端向服务器发送连接请求
- 服务器向客户端发送已收到
- 客户端收到后建立连接断开时四次挥手
四次挥手
- 客户端向服务器发送断开连接请求
- 服务器向客户端发送已收到
- 服务器有确保双方没有信息往来后确认断开
- 客户端再向服务器发送收到
网络层
引入一套新的地址来区分不同的广播域/子网,这套地址就是网络地址。
物理层
任何数据都会序列化,从物理层传出去。
HTTP状态码
- 1xx——请求已被服务器接收,继续处理
- 2xx——请求已成功被服务器接收、理解、接受
- 3xx——需要后续操作才能完成这一请求
- 4xx——请求错误,无法执行
- 5xx——服务器在处理某个正确请求时发生错误
无状态
http协议是无状态的,每一个请求都是独立的,服务器根据请求处理后不会记录任何信息,若想获得之前的信息就必须重传,严重阻碍了交互式Web应用程序的实现。
Cookie和Session
HTTP无状态
每一个客户端访问服务器时都会开启一个Session。服务器根据JSESSIONID判断Session属于哪个客户端,它是一不会重复的字符串,服务器会把根据请求生成的数据存到JSESSIONID中。
cookie是属于客户端的一个小型文本仓库。客户端第一次向服务器发送请求时,服务器首先检查这个客户端的请求里是否已包含了一个JSESSIONID,如果已包含说明以前已经为此客户端创开启过session,服务器就按照JSESSIONID把这个 session检索出来使用。如果客户端请求不包含,则为此客户端开启一个session且生成一个与此session相关联的JSESSIONID,服务器响应时将JSESSIONID存到cookie中。