谁都能看懂的计算机网络入门教程 day3

120 阅读3分钟

HTTP 报文

报文组成部分

  • 对报文进行描述的起始行
  • 包含属性的头部(header)
  • 包含数据的主体(body)

image.png

HTTP请求方式

  • PUT 上传资源 form表单不支持 提交即存储的原则(无验证机制 安全漏洞) 需配置服务器支持put方法转发给后端操作
  • DELETE 删除资源 form表单不支持 提交即删除的原则(无验证原则 安全漏洞) 需配置服务器支持put方法转发给后端操作
  • POST 修改资源
  • GET 获取资源

对应的就是数据的增删改查

四种不同的请求方式是为了分清楚不同请求的目的 但是不代表用POST就一定要修改数据 GET就不能修改数据

POST/GET请求 区别

  1. POST更安全不会作为URL的一部分 不会被缓存 保存在服务器日志和浏览器记录当中
  2. POST发送的数据量更大(GET有url长度限制)
  3. POST能发送更多的数据类型(各种类型的文件) GET只能发送ASCII字符
  4. POST比GET速度慢

连环问

为什么POST比GET慢

  1. POST接收数据之前会先将请求头发送给服务器确认 然后发送数据
  2. POST请求头比较长
  3. POST不能进行管道化传输

什么是管道化传输 首先我们先要知道HTTP的长连接与短连接

image.png

  • 短连接会在每次请求都要进行三次握手连接 和 四次挥手断开
  • 而长连接会建立持久化的连接,TCP连接只要建立一次,后续的请求都复用该通道,不用再重新建立TCP通道,效率大大提升

无论是长连接和短连接,他们都属于有序的,都是等上一次请求响应后,才接着下一个请求的。 那么怎么才能进一步提升性能,不需要等待上一次请求响应之后就可以发下一个请求呢?--这就出现了管道化传输

管道化传输会把所有的请求放到发送队列里,无需等待响应,发送请求的时候同时接受相应

image.png

HTTP 状态码

  • 1XX 信息 服务器收到请求 需要请求者继续执行操作
  • 2XX 成功 操作被成功接收并处理
  • 3XX 重定向 需要进一步的操作以完成请求
  • 4XX 客户端错误 请求包含语法错误 或无法完成请求
  • 5XX 服务器错误 服务器在处理请求的过程中发生了错误

一些常用的状态码:

304 not-modified: 重定向(跳转) 浏览器里有缓存(根据Etag last-modified 一样 ) 直接从缓存里面拿

last-modified时间和咱们的 时间内不一致 因为是世界协调时间

404:页面不存在

403:服务器拒绝请求 没权限

500:服务器不可预测的错误

503:服务器当前不能处理客户端请求(关闭应用程序池或者程序标识出错或者程序池队列已满)