HTTP协议 HTTP状态码



1. http请求过程

  1. 先判断地址需不需要 Redirect

  2. 查看App Cache 中是否有缓存

  3. 查找该域名对应的 IP 地址进行 DNS 解析

    DNS 解析过程:浏览器缓存、hosts 文件 、路由器缓存、ISP 解析服务器 、递归查询

  4. TCP 连接建立需要经历三次握手(SYN -> SYN+ACK -> ACK)

  5. 浏览器给Web服务器发送一个HTTP请求

  6. 服务器接收请求,ngin处理请求,如php文件,python文件

  7. 服务器返回响应,浏览器开始显示HTML,获取html,js,css,img等


2. 网络模型


  1. 物理层:物理传输设备。如中继器,集成器、网线等
  2. 数据链路层:通信的实体间建立数据链路连接。如网卡、网桥、二层交换机
  3. 网络层:为数据在结点之间传输创建逻辑链路。如路由器,交换机
  4. 传输层:提供应用进程之间的通信逻辑。如TCP、UDP
  5. 会话层:提供访问验证和回话管理。如服务器验证登录
  6. 表示层:数据格式转换。如URL加密、口令加密
  7. 应用层:访问网络服务接口。如Telnet、FTP、Http

3. Http协议历史


4. TCP协议:Transmission Control Protocol传输控制协议

Http 请求需要在 Tcp 链接基础上传输数据

客户端与服务器通过 Http 请求发送过程中需要创建 Tcp

Tcp 链接中可以发送多个 Http 请求,不同的 Http 版本请求数不同

每次建立 Tcp 链接都需要三次握手

  1. 历史Http Tcp 建立过程

    http1.0 创建 Tcp 链接 请求完成时候关闭

    http1.1 声明 Tcp 链接保持,不需要三次握手的开销

    http2.0 http 请求可以并发

  2. TCP 三次握手过程

  1. 为什么要开启TCP链接

    网络延迟导致服务器开销的问题,过滤创建无用的链接


5. UDP协议: User Datagram Protocol 用户数据报协议

和TCP协议一样用于处理数据包

无连接协议

不可靠性体现在无连接上,通信都不需要建立连接,想发就发,这样的情况肯定不可靠

面向报文传输,不处理接收的数据,直接塞进数据报中

没有拥塞控制
支持一对多,多对多,多对一的方式发送

不需要和 TCP一样在发送数据前进行三次握手建立连接的


6. URI、URL、URN

URI:Uniform Resource Identifier / 统一资源标志符

  • 用来标识互联网上的信息资源,包含URL和URN

URL:Uniform Resource Locator / 统一资源定位器

  • 类似于住址,它告诉你一种寻找目标的方式

URN:Universal Resource Name / 永久统一资源定位符

  • 用来唯一标识一个实体

7. 状态码

100 => 'Continue',  // 继续
101 => 'Switching Protocols',  // 交换协议
102 => 'Processing',  // 处理
103 => 'Early Hints',  // 提前暗示
200 => 'OK',  // 成功
201 => 'Created',
202 => 'Accepted',  // 认可的
203 => 'Non-Authoritative Information',  // 非授权信息
204 => 'No Content',  // 无内容
205 => 'Reset Content',  // 重置内容
206 => 'Partial Content',  // 部分内容
207 => 'Multi-Status',  // 多状态
208 => 'Already Reported',  // 已经播报
226 => 'IM Used',  // 异步使用
300 => 'Multiple Choices',  // 多选

301 => 'Moved Permanently',  // 永久重定向, 请求的资源已永久移动到了一个新的Url
    // 重新更新Url链接
302 => 'Found',      //临时重定向, 请求的资源已临时移动到了一个新的URL,但未来可能会恢复到原始Url

303 => 'See Other',  // 当前响应在另一个 URI 上被找到
304 => 'Not Modified',  // 服务端已经执行了GET,但文件未变化
305 => 'Use Proxy',  // 请求只能使用代理服务器
307 => 'Temporary Redirect',  // 临时跳转
308 => 'Permanent Redirect',  // 永久跳转
400 => 'Bad Request',  // 无效请求
401 => 'Unauthorized',  // 未授权请求
402 => 'Payment Required',  // 请求不允许

403 => 'Forbidden',   // 请求被禁止,当服务器接收到请求,但由于某些原因拒绝提供请求的资源或操作
    // 被列入黑名单,被防火墙拒绝,没有权限,Ip被封锁,资源不存在
404 => 'Not Found',   // 请求对象不存在, 页面、资源不存在

405 => 'Method Not Allowed',  // 方法不允许
406 => 'Not Acceptable',
407 => 'Proxy Authentication Required',  // 需要代理身份验证
408 => 'Request Timeout',  // 请求超时
409 => 'Conflict',  // 冲突
410 => 'Gone',  // 请求丢失
411 => 'Length Required', 
412 => 'Precondition Failed', // 先决条件失败
413 => 'Payload Too Large', // 负载太大
414 => 'URI Too Long',  // url太长
415 => 'Unsupported Media Type', // 媒体类型不支持
416 => 'Range Not Satisfiable', // 范围不适合
417 => 'Expectation Failed',  // 预期失败
418 => 'I\'m a teapot',   
421 => 'Misdirected Request',  // 误导请求       
422 => 'Unprocessable Entity',  // 无法处理的实体     
423 => 'Locked',                                       
424 => 'Failed Dependency',       
425 => 'Reserved for WebDAV advanced collections expired proposal',      //保留用于WebDAV高级集合过期提案 
426 => 'Upgrade Required',       
428 => 'Precondition Required',  // 要求先决条件 
429 => 'Too Many Requests',   
431 => 'Request Header Fields Too Large',  // 请求头字段太大  
451 => 'Unavailable For Legal Reasons',  // 因法律原因无法获得
499 => 'Client has closed connection',  // 客户端主动关闭连接
500 => 'Internal Server Error',  // 内部服务器错误

501 => 'Not Implemented',  // 服务器无法满足客户端请求。 检查请求方法是不是get post
502 => 'Bad Gateway',  // 接收到了无效的响应。 通常出现在网络架构中的代理服务器、反向代理服务器或负载均衡器中
503 => 'Service Unavailable',  // 无法提供请求的服务。 表示服务器过载、维护、故障或其他暂时的问题
504 => 'Gateway Timeout',  // 请求超时

505 => 'HTTP Version Not Supported',  // http 版本不支持
506 => 'Variant Also Negotiates',  // 服务器存在内部配置错误
507 => 'Insufficient Storage',  // 远程服务器返回错误 
508 => 'Loop Detected',
510 => 'Not Extended',
511 => 'Network Authentication Required',  // 客户端需要进行身份验证以获得网络访问。

2. 参考链接

1. 中文网 http 状态码大全

posted @ 2021-04-26 15:57  linsonga  阅读(96)  评论(0编辑  收藏  举报