html基础标签+Http请求

本文详细介绍了HTTP协议的工作原理、请求报文和响应报文,包括常用的HTTP状态码。还探讨了域名解析过程、端口号的作用、路径信息的含义,以及HTTPS协议的加密机制。重点讲解了对称和非对称加密算法,以及数字证书和数字签名在确保数据安全中的关键作用。
摘要由CSDN通过智能技术生成

文章目录


前言

        我们想象一个场景,当我们在浏览器中输入网址后,网页会自动生成对应网页且打开曾经登录过的网站,发现无需重新登录直接进入首页,这是如何做到的呢?

        其实,当们在浏览器输入网址后浏览器会通过网址中域名解析出的IP地址访问该网址对应的服务器;服务器收到浏览器发出的请求后,根据网址中包含的执行方法,路径信息等信息返回相应的文本信息,最终浏览器解析服务器返回的信息从而生成对应的网页!!!


一.网址组成

一个完整的网址(URL)通常包含以下部分:

  1. 协议(Protocol):表示访问网页时使用的通信协议,常见的有HTTP、HTTPS、FTP等。HTTP(超文本传输协议)是一种用于传输超文本的协议,是互联网上应用最为广泛的协议之一。HTTPS(安全超文本传输协议)是一种加密的HTTP协议,可以保证数据传输的安全性。FTP(文件传输协议)则是一种用于文件传输的协议。
  2. 域名(Domain Name):表示网站的名称,是网站在互联网上的唯一标识。域名由多个部分组成,包括主域名和子域名。例如,在www.example.com中,“www”是子域名,“example”是主域名,“.com”是顶级域名。域名也可以被视为一个IP地址的代称,目的是为了便于记忆。
  3. 端口号(Port):表示用于访问网站的端口号,默认为80。端口号的范围是0~65535。
  4. 路径(Path):表示网站上具体的文件或目录路径。路径通常由多个目录和文件名组成,用斜杠(/)分隔。例如,在www.baidu.com/news/index.html中,“news/index.html”就是路径。
  5. 此外,一个完整的网址还可能包含查询参数锚点。查询参数用于向服务器发送额外的数据,通常以“?”开头,后跟参数名和参数值。锚点则用于指定网页内部的定位点,以“#”开头,用于跳转到网页的特定位置。

二.HTTP协议解析

http协议详解

      HTTP协议(超文本传输协议)是用于从万维网(WWW)服务器传输超文本到本地浏览器的传输协议。它是互联网上应用最为广泛的一种网络协议。

  •   工作原理:HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端(即WEB服务器)发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。
  •  特点:HTTP协议具有简单、灵活的特点。它基于TCP/IP协议,是一种无连接、无状态的协议,每个请求都是独立的,不依赖于之前的请求或响应。这意味着服务器不会跟踪客户端的状态,每个请求都需要包含足够的信息以供服务器处理。此外,HTTP协议还允许传输任意类型的数据对象,具有很好的扩展性。

点击此处了解TCP协议

Http 请求报文

 一个完成的Http请求报文包含以下三个部分:请求行+请求头+请求体

 报文请求方法
GET : 请求指定的页面信息,并返回实体主体。
HEAD : 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头
POST : 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。
PUT : 从客户端向服务器传送的数据取代指定的文档的内容。
DELETE : 请求服务器删除指定的页面。
CONNECT : HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。
OPTIONS : 允许客户端查看服务器的性能。
TRACE : 回显服务器收到的请求,主要用于测试或诊断。
PATCH : 是对 PUT 方法的补充,用来对已知资源进行局部更新 。
 报文头

以下是对HTTP请求报文头的一些常见字段的解析:

  1. Host:指定了请求的目标服务器的域名和端口号。这是HTTP/1.1规范中必须包含的字段,用于告诉服务器请求的目标地址。

  2. User-Agent:表示发出请求的客户端类型,通常包括浏览器类型、版本、操作系统等信息。服务器可以根据User-Agent来定制响应内容,以适配不同的客户端设备。

  3. Accept:告诉服务器客户端能够处理的媒体类型。这个字段可以包含多种媒体类型,并且可以通过质量因子(q-factor)来指定每种类型的优先级。

  4. Accept-Language:表示客户端偏好的自然语言。这可以帮助服务器返回针对特定语言环境的本地化内容。

  5. Accept-Encoding:客户端告诉服务器它支持的内容编码方式,如gzip、deflate等。服务器可以根据这个字段来决定是否对响应内容进行压缩。

  6. Accept-Charset:表示客户端支持的字符集,如UTF-8、GBK等。这有助于服务器正确编码响应内容。

  7. Connection:用于控制网络连接的行为。常见的值有"close"(表示请求完成后关闭连接)和"keep-alive"(表示保持连接以便复用)。

  8. Cache-Control:用于控制缓存行为。客户端可以通过这个字段来指定是否缓存请求的响应,以及缓存的有效期等。

  9. Authorization:当需要进行身份验证时,客户端会在这个字段中包含认证信息,如用户名和密码。

  10. Referer:表示发出请求的页面的URL。这个字段通常用于跟踪用户访问来源,也可以帮助服务器生成重定向或重写的规则。

  11. Content-Type:在POST或PUT请求中,用于指定请求体的媒体类型。例如,在发送表单数据时,可能会使用application/x-www-form-urlencodedmultipart/form-data

  12. Content-Length:表示请求体的长度(以字节为单位)。这个字段对于服务器来说很重要,因为它知道需要读取多少数据。

  13. Cookie:用于在客户端和服务器之间传递会话信息。浏览器会在每个请求中自动包含之前收到的所有Cookie。

Cache-Control 常见缓存控制行为
Public 指示响应可被任何缓存区缓存;
Private 指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效;
no-cache 指示请求或响应消息不能缓存;
no-store 用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存;
max-age 指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应;
min-fresh 指示客户机可以接收响应时间小于当前时间加上指定时间的响应;
max-stale 指示客户机可以接收超出超时期间的响应消息。如果指定 max-stale 消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。
 cookie 解析

        Cookie是HTTP协议的一种规范,它是服务器发送到用户浏览器并保存在本地的一小段数据。每当客户端(通常是浏览器)请求同一个网站时,它会发送之前接收并保存的Cookie信息到服务器。这些信息可以被服务器用来识别用户身份、跟踪会话状态等。

Cookie中主要包含以下内容:

  1. 名称(Name):Cookie的唯一标识符,用于标识和区分不同的Cookie。

  2. 值(Value):Cookie的具体数据,服务器发送到客户端的实际数据,可以是任何类型的数据,通常以字符串形式存储。

  3. 域名(Domain):指定哪些域名可以访问该Cookie。通常,Cookie只能由创建它的域名下的网页访问。

  4. 路径(Path):指定哪些路径或页面可以访问该Cookie。只有路径或子路径下的页面才能访问该Cookie。

  5. 有效期/过期时间(Expires/Max-Age):指定Cookie何时过期。如果设置了过期时间,浏览器会将Cookie保存到硬盘上,并在过期时间之前发送该Cookie给服务器。否则,Cookie只在浏览器会话期间有效,关闭浏览器后会被删除。

  6. 安全标志(Secure):如果设置了Secure属性,那么Cookie只能通过HTTPS协议发送,不能通过HTTP协议发送,这有助于保护Cookie的安全。

  7. HttpOnly标志:如果设置了HttpOnly属性,那么Cookie将无法通过客户端脚本(如JavaScript)访问,这有助于防止跨站脚本攻击(XSS)。

Http 响应报文

一个完成的Http响应头包含以下信息:响应行+响应头+响应体

 常见状态码
1xx : 信息响应类,表示接收到请求并且继续处理
2xx : 处理成功响应类,表示动作被成功接收、理解和接受
3xx : 重定向响应类,为了完成指定的动作,必须接受进一步处理
4xx : 客户端错误,客户请求包含语法错误或者是不能正确执行
5xx : 服务端错误,服务器不能正确执行一个正确的请求
100(继续):请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。
101(切换协议):请求者已要求服务器切换协议,服务器已确认并准备切换。

200(成功):服务器已成功处理了请求。通常,这表示服务器提供了请求的网页。
201(已创建):请求成功并且服务器创建了新的资源。
204(无内容):服务器成功处理了请求,但在返回的响应报文中不含实体的主体部分(没有资源可以返回)。
206(部分内容):服务器成功处理了部分GET请求。

301(永久移动):被请求的资源已永久移动到新位置。
302(临时移动):请求的资源临时从不同的URI响应请求,但请求者应继续使用原有位置来进行以后的请求。
304(未修改):自从上次请求后,请求的网页未修改过。

400(错误请求):请求有语法错误或无法理解。
401(未授权):请求要求身份验证。
403(禁止):服务器已经理解请求,但是拒绝执行它。
404(未找到):服务器无法找到被请求的页面。

500(内部服务器错误):服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。
503(服务不可用):服务器暂时处于超负载或正在进行停机维护,无法处理请求。

 三.域名解析(DNS)

DNS 域名解析是将域名(如www.example.com)转换为对应的IP地址(如192.0.2.1)的过程。在这个过程中,涉及到两种主要的查询方式:递归查询和迭代查询。

DNS域名服务器分类

  • 根域名服务器: 主要负责解析互联网最顶级的域名,如.com、.org、.net等。当用户输入一个网址时,当本地域名服务器向根域名服务器发出查询请求时,路由器就把查询请求报文转发到离这个DNS客户最近的一个根域名服务器,以获取目标域名对应的IP地址。根域名服务器全球共13台。
  • 顶级域名服务器:负责管理在该顶级域名服务器注册的所有二级域名。例如,.com域名的顶级域名服务器负责管理所有以.com结尾的域名。也被称为权威域名服务器
  • 权限域名服务器:这些域名服务器负责管理某个区的域名。每一个主机的域名都必须在某个权限域名服务器处注册登记。因此权限域名服务器知道其管辖的域名与IP地址的映射关系。另外,权限域名服务器还知道其下级域名服务器的地址。
  • 本地域名服务器:。这些服务器主要服务于其所在区域内的用户,提供快速的域名解析服务。当用户在浏览器中输入一个域名时,本地域名服务器会迅速将该域名解析为相应的IP地址,从而快速地完成网页的加载。

递归查询

递归查询是客户端向DNS服务器发送一个查询请求,然后等待DNS服务器返回查询结果。如果DNS服务器本地缓存中有对应的结果,则直接返回;如果没有,它会向其他DNS服务器(如根服务器)发送查询请求,并等待这些服务器返回结果。一旦获取到结果,它会将这个结果返回给客户端,并且可能会将结果缓存起来,以便未来对同样的查询请求能够更快地响应。

迭代查询

迭代查询是客户端向DNS服务器发送一个查询请求,然后等待DNS服务器返回一个或多个可能包含答案的DNS服务器的地址。客户端接着向这些服务器发送查询请求,重复这个过程,直到找到答案或确定答案不存在。

 总结:递归查询由本地域名服务器返回给主机域名对应的IP地址;迭代查询由本地服务器返回给主机一个其它可能查询到该域名的DNS服务器地址并由主机根据返回的地址自主访问。

通常采用模式:从请求主机到本地域名服务器的查询是递归查询,而其余的查询是迭代查询。

四.端口号

当一个计算机上的应用程序或服务需要与其他计算机进行通信时,它会使用一个特定的端口号作为目标端口。接收方的计算机会根据目标端口号来确定将数据包传送给哪个应用程序或服务。

五.路径信息

URL中的路径信息是指在主机名后面的部分,通常用来指定访问服务器上特定资源的路径。路径信息的作用如下:

  1. 标识资源位置:路径信息可以告诉服务器需要访问的资源所在的具体路径,服务器可以根据路径信息来定位资源的存储位置。

  2. 指定资源类型:路径信息的扩展名可以指定要访问的资源的类型,例如.html表示访问HTML文件,.jpg表示访问图片文件等。

  3. 支持页面跳转:路径信息可以用来实现页面之间的跳转,通过在URL中指定不同的路径信息,可以直接访问不同的页面或资源。

  4. 支持动态生成内容:路径信息可以用来传递参数,从而实现动态生成内容。服务器可以根据路径信息中的参数来生成不同的内容或返回不同的数据。

六.Https协议

        Http协议与Https最大的区别是Http协议是明文传输,Https协议是密文传输;当明文传输的报文被拦截后极易造成信息泄露!!!

 对称加密算法

          对称加密算法是一种使用相同的密钥进行加解密的算法,其加密和解密过程相互对称。在对称加密算法中,消息的发送方使用密钥将明文转化为密文,而消息的接收方则使用相同的密钥将密文转化回明文。

对称加密算法的主要特点包括:

  1. 加密和解密使用相同的密钥,因此速度较快。
  2. 密钥的管理较为困难,需要确保密钥的安全性。
  3. 对称加密算法通常具有较高的加密强度,可以提供较高的安全性。
  4. 若公钥在发送图中被拦截会导致信息泄露。

非对称加密算法

    非对称加密算法是一种使用不同的密钥进行加密和解密的加密算法。它使用一对密钥,包括公钥和私钥,其中公钥用于加密数据,私钥用于解密数据。

 总结:为防止对称加密算法中客户端公钥在传输给服务端的过程中被窃取,通常使用非对称加密算法来加密客户端的公钥,这样即使服务端的公钥被窃取,由于没有服务端的私钥所以无法解密从而获得客户端的公钥;而客户端与服务端之间的报文则使用对称加密算法进行加密从而提高通讯效率。

如何破解对称/非对称加密?

        黑客破解对称加密算法本身并不是一件容易的事情,但在公钥传输给服务器的过程中被黑客截获造成公钥泄露,黑客就可通过客户端公钥解密加密信息,造成信息泄露。

        为防止黑客截获客户端公钥一般使用非对称加密算法加密客户端公钥,然而非对称加密并非不可破解?其实不然,设想一下,黑客如果充当客户端与服务器的中间代理会发生什么事?

如下图:

         我们都知道无论Https/Http协议都需要TCP协议来建立可靠连接,若黑客从在连接建立过程中冒充服务器与客户端建立连接,同时冒充客户端与服务器建立连接,此时黑客成为客户端与服务器两者之间的第三者。

        图中,黑客会发送自己的公钥给客户端用于客户端加密客户端公钥,等待客户端公钥发来后再用自身私钥解密获得客户端公钥,此时黑客可以使用客户端公钥解密客户端发送过来的所有信息。其次,黑客冒充客户端与服务器建立连接,由于传输的信息使用公钥加密且黑客用于真正客户端的公钥,因此黑客也能够解密服务器发送的所有信息。

数字证书和数字签名

  • 数字证书:(保证数据的不可否认性+可溯源性)

        上述黑客行为也是常见的钓鱼网站的工作原理,有什么办法可以防止此类事件的发生?本着从源头解决问题的原则,客户端仅需要确认收到的公钥是服务器发送过来的公钥即可防止,如何确认?找到一个可信第三者确保该密钥可信即可,可信第三者就是由CA机构颁发的数字证书。数字证书包含了证书持有者的公钥、证书颁发机构的数字签名和其他相关信息。用户可以通过验证数字证书的签名来确认证书持有者的身份和公钥的真实性

  • 数字签名:(保证数据完整性)

        数字签名是一种技术手段,用于验证数字文件的来源和完整性。它通常使用非对称加密算法,通过发送者的私钥对文件进行加密,生成一串唯一的数字签名。接收者可以使用发送者的公钥来验证这个签名,从而确认文件的真实性和是否被篡改。数字签名主要用于防止数据被伪造或篡改,确保文件的完整性和发送者的身份认证。

 

 

 

 

 

 10.假设此时第三者出现用自己的公钥替换了鲍勃的公钥,第三者就可冒充鲍勃与苏珊通信,此时苏珊为了验证公钥的可溯源性,要求鲍勃去找CA机构作证,证明该公钥的确是鲍勃自己的公钥而非第三针的公钥,证书中心用自己的私钥对鲍勃的公钥和一些信息一起加密,生成“数字证书”。

 

 数字证书在Https中的应用

 

 

 


总结

  • 20
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北 染 星 辰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值