一、HTTP
主要负责浏览器与服务器之间的通信
主要特征:
- 无状态:每次通信的请求是独立的,服务器不会记住上一次的请求信息,例如刷新网站后,服务器不会自动识别“这是刚才的用户”。
- 基于“请求——相应”:通信必须由客户端发起请求(输入网址),服务器再更具请求内容返回响应(加载网页内容)。
- 明文传输(不加密):数据在传输时未进行加密,可能会被第三方拦截
解决缺点方案:
1.对于“无状态”的解决方案:
- cookie:服务器通过响应头给客户端发送一小段数据,客户端后续请求的时候会自动携带这段数据,服务器通过检测来识别该用户是否登录过
- session:服务器会为每个登录的用户创建一个会话,并存储会话状态,再通过cookie发送sessionID,后续通过该ID识别用户
- token:客户端登录成功(第一次请求成功)后,服务器会返回一个加密的token,客户端发起请求时会在请求头携带token,服务器通过解密token识别用户
2.对于“明文传输”的解决方案:
使用加密性更好的HTTPS解决
- 使用端口不一样:http使用80端口;https使用443端口
- 地址标识不一样:http开头 http开头
- HTTPS基于SSL/TLS加密传输
http适用于非敏感数据场合(公开的文章,公开政府文件)
https适用于支付,登录,转账
二、HTTP传输过程
HTTP传输过程时基于“客户端——服务器的四次交互”
1.建立TCP连接(三次握手)
2.客户端发起请求
客户端(浏览器)会按照HTTP协议格式,封装并发送请求数据给服务器
请求内容:
- 请求行(明确请求方法GET/POSE),提供目标资源路径,HTTP版本
- 请求头:附带附加信息,浏览器类型,接收的数据类型,cookie
- 请求体(可选):仅在POST方法中出现,用于传递数据
3.服务器处理客户端请求,并响应
3.1.解析客户端请求(请求行,请求头,请求体)解析,处理相关资源
例如当客户端发送的请求是这样的时:GET/index.html HTTP/1.0,服务器就会读取/index.html文件
3.2执行业务逻辑(查询数据库,生成动态界面)
3.3封装相应数据
分为三部分:响应行:包含HTTP版本,状态码(200 ok ,404(资源不存在),403(无权访问)),状态描述
响应头:携带服务器版本信息,数据类型,数据长度
响应体(核心内容):HTML代码,图片的二进制数据,JSON数据
3.4.关闭TCP连接(四次挥手)
三、HTTP通信里面的长链接和短链接
| 短链接 | 长链接 | |
| 对TCP连接生命周期的判定 | 连接建立后,承载一次请求响应,然后就关闭 | 建立连接后,承载多次请求响应,闲置时关闭 |
| 默认版本 | http/1.0 | http/1.1 |
| 连接标识 | 短链接无需额外生命 | 会在请求头中:Connection: Keep‑Alive |
| 场景 | 早期简单页面(只用一两个资源) | 现代复杂页面 |
| 资源消耗 | 频繁建立/关闭连接,消耗CPU资源 | 复用连接,减少连接的开销,消耗少 |
注意事项:
1.长链接不是永久链接,长链接时,会设置一个“闲时超时时间”的值,闲置时间超过该值,会自动断开
2.部分老旧服务器不兼容,需要长连接时,需要手动声明,显式声明KEEP-ALIVE
使用场景:
- 短链接:接口调用,简单数据查询
- 长链接:多次请求场景(加载网页,APP首页资源)
四、四个重要网络协议
- DNS(域名解析协议):将域名(www.xxx.com)解析为IP地址
- APR(地址解析协议):将IP地址解析为MAC物理地址 方便找到物理地址
- NAT(网络地址转换):私有IP转换为公有IP 多设备共享同一共有IP地址,解决资源不足
- DHCP(动态主机分配协议):当主机连接时,自动分配私有IP地址 无需手动设置IP,自动完成网络连接
当bind绑定的是小端口时,需要切换成管理员运行
/index.html是网页的默认首页文件,当用户访问某个域名,服务器会自动查找这个文件
当浏览器输入路径名时,需要注意浏览的文件范围,根目录(注意!!!),以防止路径里面..的效果
前端框架VUE:
HTML:超文本标记语言,用于创建网页的标准标记语言,通过标签设置网页
CSS:层叠样式表,用于控制HTML元素的显示样式,颜色,字体,布局
JS:网页交互脚本语言,可实现动态效果,表单验证,数据处理