📌【计算机网络】应用层
type
status
date
slug
summary
category
tags
icon
password
AI summary
Blocked by
Blocking
Category
应用层协议
http、https、cdn、dns、ftp都是应用层协议
常见Header
- 请求
- content-type
- content-length
- user-agent
- accept
- accept-language
- host
- authorization
- cookie
- connection
- if-modified-since
- range(分块传输)
- 响应
- content-type
- content-length
- cache-control
- date
- access-control-allow-origin
- etag
- 通用
- upgrade
- transfer-encoding
- connection
- keep-alive
- close
HTTP的报文格式

请求报文
- 请求行:方法名+url+http版本
- 请求头:包含一些附加信息,如host、user-agent、content-type
- 空行
- 请求体
相应报文
- 状态行:http版本+code+状态信息
- 响应头:content-type、content-length
- 空行
- 响应体
HTTP状态码
分类
- 1xx 状态码属于提示信息,是协议处理中的一种中间状态
- 2xx状态码表示服务器正确处客户端请求
- 3xx状态码表示客户端请求的资源发生了变化,需要客户端用新的URL重新发送请求,获取资源
- 4xx状态码表示客户端发送的请求报文有问题,服务器无法正确处理
- 5xx状态码表示客户端请求报文正确,但是服务器内部处理有问题
常见状态码
- 200 OK,表明已经被服务器正确相应
- 202 Accepted,表示服务已经接收,处理结果可能存在延迟,并不一定表示能够正确处理(常见于异步处理)
- 204 No Content 请求成功,但无返回值,可以有效减少带宽消耗和提升性能
- 206 Partital content 表明服务器处理了部分请求(常见于断点续传、大文件分块、视频流)
- 301 Moved Permanently :表示请求的资源已永远移动到新的URL,将永久重定向到新的URL(适用于网站结构发生变化、域名变更等永久性变更)
- 302 Found:表示请求的资源暂时从不同的URL响应,适用于临时性移动,如网站维护、AB测试
- 304 Not Modified:资源为修改,可以使用缓存的版本
- 400 Bad Request 表示客户端的请求存在语法问题,服务端无法理解
- 401 Unauthorized:请求需要用户认证
- 403 Fobbiden:服务器理解请求,但拒绝请求,通常是客户端没有足够的权限
- 404 Not Found ,请求资源在服务器上不存在,可能是因为URL错误
- 405 Method Not Allowed
- 406 Not Acceptable 表示服务器无法根据客户端提供的Accept类型的数据,可能是客户端要求的格式不支持
- 408 Request Timeout 请求超时
- 429 Too many requests:限流
- 500 Internal Server Error
- 501 Not Implemented 服务器不支持请求的方法
- 502 bad gateway:服务器作为网关或代理,从上游服务器收到无效响应
- 503 service unavailable 服务繁忙,暂时无法响应客户端
- 504 gateway timeout :服务器作网关或代理,未能在规定时间内从上游服务器收到响应
502和504的区别
- 502 bad gateway:上游服务器返回了无效响应,通常是上游服务器崩溃或网络配置错误导致。
- 504 gateway time-out:请求超时,通常是上游服务器处理太慢或者代理超时时间过短导致
举个例子,假设nginx是代理服务器,收到客户端的请求后,将请求转发到后端服务器
- nginx收到了服务器无效的响应,nginx就回复502
- nginx超过自己配置的超时时间,还没能收到服务器的响应,返回504
HTTP请求类型
- GET:用于向服务器请求资源
- POST:用于向服务提交数据,通常用于提交表单或者是进行资源的创建【新增数据或提交数据】
- PUT:用于向服务器更新指定资源
- DELETE:用于请求将删除某些资源
- HEAD:类似于GET,用于获取资源的元数据,而不是所有的数据
不同的HTTP版本区别
版本 | 核心特性 | 缺点 |
HTTP 1.0 | 短连接(每次请求建立 TCP 连接,请求完成后关闭)、无持久连接、无流水线 | 连接开销大,并发性能差(队头阻塞) |
HTTP 1.1 | 长连接(Connection: keep-alive)、流水线(同一连接可发送多个请求,无需等待响应)、分块传输、缓存控制(Cache-Control) | 流水线仍存在队头阻塞(一个请求阻塞后续请求) |
HTTP 2.0 | 二进制帧(替代文本格式,效率更高)、多路复用(同一连接并行处理多个请求,无队头阻塞)、头部压缩(HPACK)、服务器推送 | 依赖 TCP,仍受 TCP 队头阻塞影响 |
HTTP 3.0 | 基于 UDP(QUIC 协议)、彻底解决队头阻塞、0-RTT 建立连接(快速握手)、加密默认 | 兼容性有待提升 |
http和https的区别
- http是超文本传输协议,信息明文传输,存在安全风险;https基于http,引入ssl、tls安全协议,使得报文能加密传输
- http使用80端口;https使用443端口
- https需要向CA申请数字证书,来保证服务器是可信的
TLS的过程
- tls第一次握手,客户端向服务端发起加密请求
- 客户端支持的TLS协议版本
- 客户端生成随机数,用于后续 【会话密钥的生成】
- 客户端支持的密码套件列表,如RAS算法
- tls第二次握手,服务端收到客户端的请求后,返回响应
- 确认tls版本
- 服务端生成随机数,用于后续【会话密钥的生成】
- 确定密码套件列表,如RSA算法
- 服务器的数字证书
- tls第三次握手,客户端收到服务器的响应,首先通过浏览器或者操作系统的CA公钥,确定服务器的证书真伪
- 如果证书为真,执行后续操作
- 生成一个随机数,这个随机数用服务器的公钥加密
- 加密算法改变通知,后续的消息都用会话密钥加密
- 客户端握手结束通知。将之前所有的内容的发送数据做一个摘要,用来供服务端检验
- tls第四次握手,服务端收到客户端的三个随机数后,通过协商的加密算法,计算出本次通信的【会话密钥】
- 加密通信算法改变通知,表示随后的信息都将用【会话密钥】加密通信
- 服务端握手结束通知,表示服务端的握手阶段已结束。将之前发送的数据内容做一个摘要,用来供客户端校验
JWT
Prev
【计算机网络】传输层
Next
【Redis学习笔记】过期策略
Loading...