计算机网络6:Http协议

news2024/12/23 11:02:33

目录

  • HTTP
    • 1.基本概念
      • 1.1.1 URI
    • 2. 请求和响应报文
      • 2.1.请求报文
      • 2.2.响应报文
    • 3.HTTP报文实现细节
      • 3.1响应头主要字段
      • 3.2HTTP状态码
      • 3.3 HTTP方法
        • 3.3.1 GET方法
        • 3.3.2 HEAD
        • 3.3.3 POST
        • 3.3.4 PUT
        • 3.3.5 PATCH
        • 3.3.6 DELETE
        • 3.3.7 OPTIONS
        • 3.3.8 CONNECT
      • 3.4 HTTP首部(头部)
    • 4.具体应用
      • 4.1 连接管理
        • 4.1.1 短连接与长连接
        • 4.1.2 流水线
      • 4.2 Cookie
        • 4.2.1 Cookie的用途
        • 4.2.2 创建过程
        • 4.2.3 Cookie的分类
        • 4.2.4 Secure
      • 4.3 Session
      • 4.4 浏览器禁用Cookie
      • 4.5 Cookie和Session的区别
      • 4.6 缓存

HTTP

1.基本概念

HTTP是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范,即超文本传输协议

1.1.1 URI

URI包含URL和URN
URL格式:
协议名://域名或IP:端口号/请求资源路径?查询参数#锚点
锚点:用于定位页面某个位置
eg:
https://www.baidu .com/java/web?flag=1#function

2. 请求和响应报文

2.1.请求报文

=GET和POST请求的实例=

GET /search/users?q=JakeWharton HTTP/1.1        ---请求行
-----以下都是请求头
Host: api.github.com          
Connection: keep-alive 指定与连接相关的属性,例如(Keep_Alive,长连接)  
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64)   AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36 发送请求的应用名称
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Accept-Encoding: gzip, deflate, br通知服务器端可以发送的数据压缩格式
Accept-Language: zh-CN,zh;q=0.9通知服务器端可以发送的语言  
Cookie: _octo=GH1.1.1623908978.1549006668; _ga=GA1.2.548087391.1549006688; logged_in=yes; dotcom_user=GoMarck; _gid=GA1.2.17634150.1554639136; _gat=1
POST / HTTP/1.1			----请求行
Host: www.wrox.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
Gecko/20050225 Firefox/1.0.1
Content-Type: application/x-www-form-urlencode  d
Content-Length: 40
Connection: Keep-Alive ----以上是请求头
						----空行
name=Professional%20Ajax&publisher=Wiley--请求数据(正文)

2.2.响应报文

3.HTTP报文实现细节

3.1响应头主要字段

3.2HTTP状态码


  • 1xx 服务器收到请求 ,需要请求者继续执行操作,提示信息

    100 Continue:表明到目前为止都很正常,客户端可以继续发送请求或者忽略这个响应
    
  • 2xx 成功,报文已经收到并被正确处理

    200 OK ,请求正常处理
    204 No Content :请求已经成功处理,但是返回的响应报文不包含实体的主体部分。一般在只需要从客户端 往服务器发送信息,而不需要返回数据时使用。 
    206 Partial Content :表示客户端进行了范围请求,响应报文包含由 Content-Range 指定范围的实体内容。
    

    3xx 重定向,客户端请求的资源被永久转移到其他的URL

    301 Moved Permanently :永久性重定向 资源(网页等)被永久转移到其它URL 
    302 Found :临时性重定向 资源临时移动  
    303 See Other :和 302 有着相同的功能,但是 303 明确要求客户端应该采用 GET 方法获取资源。 注:虽然 HTTP 协议规定 301、302 状态下重定向时不允许把 POST 方法改成 GET 方法,但是大多数浏览器都 会在 301、302 和 303 状态下的重定向把 POST 方法改成 GET 方法。 
    304 Not Modified :如果请求报文首部包含一些条件,例如:If-Match,If-Modified-Since,If-NoneMatch,If-Range,If-Unmodified-Since,如果不满足条件,则服务器会返回 304 状态码。 
    307 Temporary Redirect :临时重定向,与 302 的含义类似,但是 307 要求浏览器不会把重定向请求的 POST 方法改成 GET 方法。资源已经重新分配  
    
  • 4xx 客户端请求错误,服务端无法处理

    400 Bad Request :请求报文中存在语法错误
    401 Unauthorized :该状态码表示发送的请求需要有认证信息(BASIC 认证、DIGEST 认证)。如果之前已进 行过一次请求,则表示用户认证失败。 
    403 forbidden请求资源被拒绝,通常原因是服务器上某些文件或目录设置了权限,客户端权限不够  		
    404 not found、找不到请求资源,用户输入错误的链接,该链接指向的网页不存在;除此之外,也可以在服务器端拒绝请求且不想说明理由时使用。
    
  • 5xx 服务器错误,请求报文正确,服务器处理时内部发送错误

    500 internal server error服务器故障,服务器内部错误(比如浏览器代理除了问题,ip,端口不对等)该状态码表明服务器端在执行请求时发生了错误。也有可能是Web应用存在的bug或某些临时的故障
    502,Bad Gateway,作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应  
    503,服务器超载或停机维护  
    504,Gateway Timeout网关超时 服务器作为网关或代理,未及时从上游服务器接收请求。
    505 HTTP Version Not Supported
    

3.3 HTTP方法

3.3.1 GET方法

当前网络请求中,绝大部分使用的是 GET 方法。

作用:获取资源

3.3.2 HEAD

和 GET 方法类似,但是不返回报文实体主体部分。 主要用于确认 URL 的有效性以及资源更新的日期时间等。

作用:获取报文首部

3.3.3 POST

POST 主要用来传输数据,而 GET 主要用来获取资源

作用:传输实体主体

3.3.4 PUT

由于自身不带验证机制,任何人都可以上传文件,因此存在安全性问题,一般不使用该方法。

作用:上传文件
PUT /new.html HTTP/1.1
Host: example.com 
Content-type: text/html Content-length: 16
<p>New File</p>

3.3.5 PATCH

PUT 也可以用于修改资源,但是只能完全替代原始资源,PATCH 允许部分修改。

作用:对资源进行部分修改
PATCH /file.txt HTTP/1.1
Host: www.example.com 
Content-Type: application/example If-Match: "e0023aa4e" 
Content-Length: 100
[description of changes]

3.3.6 DELETE

与 PUT 功能相反,并且同样不带验证机制。

作用:删除文件
DELETE /file.html HTTP/1.1

3.3.7 OPTIONS

查询指定的 URL 能够支持的方法。
会返回 Allow: GET, POST, HEAD, OPTIONS 这样的内容。

作用:查询支持的方法

3.3.8 CONNECT

作用:要求在与代理服务器通信时建立隧道

使用 SSL(Secure Sockets Layer,安全套接层)和 TLS(Transport Layer Security,传输层安全)协议把通信内容 加密后经网络隧道传输

3.4 HTTP首部(头部)

有 4 种类型的首部字段:通用首部字段、请求首部字段、响应首部字段和实体首部字段。

1.通用首部字段

2.请求首部字段

3.响应首部字段

4.实体首部字段

4.具体应用

4.1 连接管理

4.1.1 短连接与长连接

4.1.2 流水线

4.2 Cookie

HTTP 协议是无状态的,主要是为了让 HTTP 协议尽可能简单,使得它能够处理大量事务。HTTP/1.1 引入 Cookie 来 保存状态信息。

4.2.1 Cookie的用途

4.2.2 创建过程

服务器发送的响应报文包含 Set-Cookie 首部字段,客户端得到响应报文后把 Cookie 内容保存到浏览器中。

HTTP/1.0 200 OK 
Content-type: text/html 
Set-Cookie: yummy_cookie=choco 
Set-Cookie: tasty_cookie=strawberry
[page content]

4.2.3 Cookie的分类

  1. 会话期 Cookie:浏览器关闭之后它会被自动删除,也就是说它仅在会话期内有效。
  2. 持久性 Cookie:指定过期时间(Expires)或有效期(max-age)之后就成为了持久性的 Cookie。
Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT;

4.2.4 Secure

4.3 Session

除了可以将用户信息通过 Cookie 存储在用户浏览器中,也可以利用 Session 存储在服务器端,存储在服务器端的信 息更加安全。

Session在服务器的存储位置

**使用 Session 维护用户登录状态的过程如下: **

安全性:

4.4 浏览器禁用Cookie

4.5 Cookie和Session的区别

(1)存储位置不同

  • Cookie的数据信息存储在客户端的浏览器上
  • Session的数据信息存储在服务器上的文件、内存数据库中
    (2)存储容量并不同
  • 单个Cookie保存的数据<=4KB,一个站点最多保存20个Cookie
  • Session没有陕西,但出于对服务端性能考虑,Session不要存放过多的东西,并且要设置Session删除机制
    (3)存储方式不同
  • Cookie中只能存放ASCII字符串,并需要通过编码方式存储为Unicode字符或二进制数
  • Session中能存储任何类型的数据,包括但不限于String、integer、list、map等
    (4)隐私策略不同
  • Cookie对客户端可见,别有用心的人可以分析存放在本地的Cookie,并进行Cookie欺骗,所以不安全
  • Session存储在服务器,对客户端透明,不存在名信息泄露的缝隙
    (5)有效期不同
  • Cookie:开发可以通过设置Cookie的属性达到使Cookie长期有效的结果
  • Session依赖于名为JSESSIONID的Cookie,而Cookie JSESSIONID的国企是加密默认为-1,只需要关闭窗口,该Session就会失效,因此Session不能达到长期有效的结果
    (6)服务器压力不同
  • Cookie保存在客户端,不占用服务器资源,对于并发用户很多的网站,Cookie比较好
  • Session保存在服务器端,每个用户都会产生一个Session,假如并发用户很多,就会产生大量Session,耗费大量内存
    (7)浏览器支持不同
    a.浏览器不支持Cookie:
  • 如果仅有Cookie,则会话跟踪失效,常规的Cookie派不上用场
  • Session需要使用URL地址重写的方式,一切用到Session程序的URL都要进行URL地址重写,否则Session会话跟踪也会失效
    b.浏览器支持Cookie
  • Cookie既能设为本浏览器窗口以及子窗口内有效,也能设为一切窗口有效
  • Session只能在本窗口及其子窗口内有效
    (8)跨域支持不同
  • Cookie支持跨域访问
  • Session不支持

4.6 缓存

1.优点

2.实现

1.让代理服务器进行缓存
2.让客户端浏览器进行缓存

**3. Cache-Control **

HTTP/1.1 通过 Cache-Control 首部字段来控制缓存。

4.缓存操作

1.禁止缓存

2.强制确认缓存


3.私有缓存和公共缓存


4.缓存过期机制

ps:图片大部分来源于cyc大佬,然后自己截图并添加备注,仅供自己学习并做笔记使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/340631.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MT7628】开发环境搭建-Fedora12安装之后无法上网问题解决

1.按照如下图所示,打开Network Connections 2.点击Network Connections,弹出如下界面

面向对象程序(C++)设计基础

一、类&对象C 在 C 语言的基础上增加了面向对象编程&#xff0c;C 支持面向对象程序设计。类是 C 的核心特性&#xff0c;通常被称为用户定义的类型。类提供了对象的蓝图&#xff0c;所以基本上&#xff0c;对象是根据类来创建的。声明类的对象&#xff0c;就像声明基本类型…

面试题(二十二)消息队列与搜索引擎

2. 消息队列 2.1 MQ有什么用&#xff1f; 参考答案 消息队列有很多使用场景&#xff0c;比较常见的有3个&#xff1a;解耦、异步、削峰。 解耦&#xff1a;传统的软件开发模式&#xff0c;各个模块之间相互调用&#xff0c;数据共享&#xff0c;每个模块都要时刻关注其他模…

Grafana 系列文章(十五):Exemplars

Exemplars 简介 Exemplar 是用一个特定的 trace&#xff0c;代表在给定时间间隔内的度量。Metrics 擅长给你一个系统的综合视图&#xff0c;而 traces 给你一个单一请求的细粒度视图&#xff1b;Exemplar 是连接这两者的一种方式。 假设你的公司网站正经历着流量的激增。虽然…

ansible的模块详解

ansible 的概述 什么是ansible Ansible是一款为类Unix系统开发的自由开源的配置和自动化工具。 它用Python写成&#xff0c;类似于saltstack和Puppet&#xff0c;但是有一个不同和优点是我们不需要在节点中安装任何客户端。 它使用SSH来和节点进行通信。Ansible基于 Python…

Redux 源码分析

Redux 目录结构 redux ├─ .babelrc.js ├─ .editorconfig ├─ .gitignore …

列线图工具_Nomogram

定义 列线图是一种相对传统的分析方法&#xff0c;用于展示自变量和因变量的线性关系&#xff0c;及其特征的重要程度。 现在用SHAP&#xff0c;和机器学习库中的 Feature importance 工具可以实现类似甚至更好效果。不过很多传统的研究领域比较认这种方法。 列线图工具建立在…

什么是相机标定

1. 相机标定的定义及作用 相机标定是指借助标定板来计算单个或多个相机的内参、外参和镜头畸变参数。 作用&#xff1a; 将畸变的图像恢复为正常的图像&#xff0c;为后续进行拼接、SLAM等奠定基础。 多相机标定可以将所有相机输出变换到同一个坐标系。 相机标定是三维视觉…

适用于 Windows 11/10/8/7 的 10 大数据恢复软件分享

适用于 Windows 11/10/8/7 的 最佳数据恢复软件综述。选择首选的专业数据/文件恢复软件&#xff0c;轻松恢复丢失的数据或删除的照片、视频等文件、SSD、外接硬盘、USB、SD卡等存储设备中的文件等。流行的sh流行的数据恢复软件也包括在内。 10 大数据恢复软件分享 为了帮助您恢…

美赛Day2

3 熵权法 相对客观的权重计算方法&#xff08;层次分析法都是自己瞎填&#xff09; 3.1 原理 指标的变异程度越小&#xff0c;反应的信息越少&#xff0c;对应的权值越低。 一个事件的信息量&#xff1a;I(x) -ln(p(x)) 信息熵&#xff1a;对X可能发生的所有情况的信息量的…

仿真与测试:通过Signal Builder模块生成输入信号

本文研究通过Signal Builder模块生成输入信号的方法。 文章目录1 生成输入信号2 仿真过程2.1 搭建被测模型2.2 搭建Signal Builder输入模块2.3 配置仿真log及仿真3 总结1 生成输入信号 在汽车的电控软件开发中&#xff0c;经常会在Simulink模型内部进行单元测试。单元测试的本…

FlexRay™ 协议控制器 (E-Ray)-04

网络管理 累积的网络管理 (NM) 向量位于网络管理寄存器 1 到网络管理寄存器 3 (NMVx (x = 1-3)) 中。【The accrued Network Management (NM) vector is located in the Network Management Register 1 to Network Management Register 3 (NMVx (x = 1-3)).】 网络管理向量 x…

『前端必备』本地数据接口—json-server

文章目录前言一、json-server简介二、起步三、使用步骤前言 Ajax 是前端必学的一个知识点&#xff0c;但刚接触 Ajax 的同学可能会因为没接口测试而烦恼。本文 入门篇 会花你10分钟解决 没接口测试 这个烦恼&#xff0c;而且不需要你具备后端知识。 一、json-server简介 json…

一个测试人员,在现阶段的环境下如何在测试行业发展和自我价值。

前言周末和几个测试圈子里的大佬饭局上聊了一些职场和测试职业发展相关的话题&#xff0c;我将聊天的内容做了整理和阐述。。朋友圈有测试同学对这篇文章提了比较深刻的建议&#xff0c;下面是他的评价和建议&#xff1a;评价&#xff1a;据说是大佬饭桌总结&#xff0c;有两点…

【论文精读】Deep Residual Learning for Image Recognition

1 Degradation Problem&#x1f4a6; 深度卷积神经网络在图像分类方面取得了一系列突破。深度网络自然地将低/中/高级特征和分类器以端到端的多层方式集成在一起&#xff0c;特征的“层次”可以通过堆叠层数(深度)来丰富。最近的研究揭示了网络深度是至关重要的&#xff0c;在具…

Netty零拷贝机制

Netty零拷贝机制一&#xff1a;用户空间与内核空间二&#xff1a;传统IO流程三&#xff1a;零拷贝常见的实现方式1. mmap write2. sendfile四&#xff1a;Java中零拷贝五&#xff1a;Netty 中如何实现零拷贝1. CompositeByteBuf 实现零拷贝2. wrap 实现零拷贝3. slice 实现零拷…

Pytorch 混合精度训练 (Automatically Mixed Precision, AMP)

Contents混合精度训练 (Mixed Precision Training)单精度浮点数 (FP32) 和半精度浮点数 (FP16)为什么要用 FP16为什么只用 FP16 会有问题解决方案损失缩放 (Loss Scaling)FP32 权重备份黑名单Tensor CoreNVIDIA apex 库代码解读opt-level (o1, o2, o3, o4)apex 的 o1 实现apex …

Docker安全

容器的安全性问题的根源在于容器和宿主机共享内核。如果容器里的应用导致Linux内核崩溃&#xff0c;那么整个系统可能都会崩溃。 与虚拟机是不同的&#xff0c;虚拟机并没有与主机共享内核&#xff0c;虚拟机崩溃一般不会导致宿主机崩溃 一、Docker 容器与虚拟机的区别 1、隔…

Redis配置哨兵模式

Redis配置哨兵模式 ​ ​ 主从复制模式&#xff0c;它是属于 Redis 多机运行的基础&#xff0c;但这种模式本身存在一个致命的问题&#xff0c;当主节点奔溃之后&#xff0c;需要人工干预才能恢复 Redis 的正常使用。 我们需要一个自动的工具——Redis Sentinel&#xff08;…

Win11浏览器无法上网,秒杀网上99.9%教程—亲测完胜

前言 例如&#xff1a;网上的教程 列如&#xff1a; 关闭代理服务器、QQ微信可以登录&#xff0c;但浏览器无法上网、Win11、Win10无法上网、重启网络、重启电脑、去掉代理服务器等等。 一系列教程&#xff0c;要多鸡肋就多鸡肋。 我是用我2020年在CSDN上发布的第一篇文章&…