📌【计算机网络】应用层

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的报文格式

notion image

请求报文

  1. 请求行:方法名+url+http版本
  1. 请求头:包含一些附加信息,如host、user-agent、content-type
  1. 空行
  1. 请求体

相应报文

  1. 状态行:http版本+code+状态信息
  1. 响应头:content-type、content-length
  1. 空行
  1. 响应体
 

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...
Article List
如果去做,还有一丝希望;但是不去做,就毫无希望
技术分享
个人总结
转发