计网-浏览器

浏览器发送请求的具体过程

当用户在浏览器中输入网址或点击链接时,浏览器会按照以下步骤发送请求:

  1. URL 解析:浏览器首先解析 URL,提取出其中的协议、主机名、端口号、路径和查询参数等信息。
  2. DNS 解析:浏览器使用主机名查询 DNS 服务器,获取主机对应的 IP 地址。
  3. 建立 TCP 连接:浏览器向目标主机发起 TCP 连接请求,与目标主机建立连接。
  4. 发送 HTTP 请求:浏览器向服务器发送 HTTP 请求,包括请求方法、请求头、请求体等信息。
  5. 服务器响应:服务器接收到请求后,返回 HTTP 响应,包括响应头、响应体等信息。
  6. 接收响应数据:浏览器接收到响应后,根据响应头中的信息判断响应类型,如 HTML、CSS、JavaScript、图片等,并开始接收响应体数据。
  7. 渲染页面:浏览器接收到 HTML 文件后,开始解析 HTML,构建 DOM 树和渲染树,然后进行布局和绘制,最终显示出页面内容。
  8. 断开连接:浏览器在接收完响应数据后,关闭 TCP 连接,释放资源。

需要注意的是,浏览器在发送请求时还会进行一些优化措施,如使用缓存、压缩数据、并行请求等,以提高页面加载速度和性能。
在这里插入图片描述

浏览器发送请求的方式:

  1. GET 请求:GET 请求是浏览器最常用的请求方式,它通常用于获取资源,如获取 HTML、CSS、JavaScript、图片等文件。GET 请求会将请求参数附加在 URL 的后面,以 ? 分隔,多个参数之间用 & 连接。
  2. POST 请求:POST 请求通常用于向服务器提交数据,如提交表单数据、上传文件等。POST 请求会将请求参数放在请求体中,以键值对的形式提交。
  3. PUT 请求:PUT 请求通常用于更新资源,如更新文件内容。PUT 请求会将请求参数放在请求体中,以键值对的形式提交。
  4. DELETE 请求:DELETE 请求通常用于删除资源,如删除文件或记录。DELETE 请求会将请求参数放在 URL 的后面,以 / 分隔,表示要删除的资源路径。
  5. HEAD 请求:HEAD 请求与 GET 请求类似,但不返回响应体,只返回响应头。HEAD 请求通常用于获取资源的元数据,如资源大小、最后修改时间等。
  6. OPTIONS 请求:OPTIONS 请求通常用于获取服务器支持的请求方法、请求头等信息。

除了以上常见的请求方式,还有 TRACE 和 CONNECT 请求,但这两种请求方式用得比较少,TRACE 请求主要用于调试和诊断,而 CONNECT 请求主要用于代理和隧道。

GET和POST请求的区别

GET 和 POST 是 HTTP 协议中常用的两种请求方式,它们的主要区别如下:

  1. 参数传递方式不同:GET 请求将请求参数放在 URL 的后面,以 ? 分隔,多个参数之间用 & 连接,而 POST 请求将请求参数放在请求体中,以键值对的形式提交。
  2. 安全性不同:GET 请求的参数会显示在 URL 中,所以不适合传递敏感信息,如密码等,而 POST 请求的参数不会显示在 URL 中,所以更加安全。但需要注意的是,使用 HTTPS 协议可以对请求和响应数据进行加密,提高数据传输的安全性。
  3. 缓存机制不同:GET 请求可以被缓存,而 POST 请求不可以被缓存,因为 POST 请求通常会改变服务器上的资源状态,如果被缓存可能会导致数据不一致的问题。
  4. 传输数据大小不同:GET 请求传输的数据大小有限制,通常是在 2KB 到 8KB 之间,而 POST 请求没有固定的限制。
  5. 语义不同:GET 请求用于获取资源,而 POST 请求用于提交数据,即 GET 请求是幂等的(执行多次的结果是相同的),而 POST 请求不是幂等的(执行多次的结果可能会不同)。

需要注意的是,GET 和 POST 请求并不是绝对的,它们的使用也需要根据具体情况而定。比如,如果请求的数据量较小,且不包含敏感信息,可以使用 GET 请求,因为 GET 请求更简单、更直观,而如果请求的数据量较大,或包含敏感信息,应该使用 POST 请求,因为 POST 请求更加安全、更加稳定。

URL 解析和DNS 解析

URL 解析和 DNS 解析是浏览器发送请求的前两个步骤。

URL 解析:

URL(Uniform Resource Locator)是一种用于标识互联网资源的地址格式,包括协议、主机名、端口号、路径和查询参数等信息。当用户在浏览器中输入网址或点击链接时,浏览器会对 URL 进行解析,提取出其中的各个部分信息。具体来说,URL 解析包括以下步骤:

  1. 解析协议:解析 URL 中的协议部分,如 HTTP、HTTPS、FTP 等。
  2. 解析主机名:解析 URL 中的主机名部分,如 www.example.com。
  3. 解析端口号:解析 URL 中的端口号部分,如 80(HTTP 默认端口)或 443(HTTPS 默认端口)。
  4. 解析路径:解析 URL 中的路径部分,如 /index.html。
  5. 解析查询参数:解析 URL 中的查询参数部分,如 ?id=123。

DNS 解析:

DNS(Domain Name System)是互联网上域名解析的系统,它将主机名转换为 IP 地址,使得浏览器能够找到目标服务器。当浏览器收到 URL 并解析出主机名后,它会向 DNS 服务器发送请求,查询主机名对应的 IP 地址。DNS 解析过程包括以下步骤:

  1. 浏览器查询本地 DNS 缓存:浏览器首先会查询本地 DNS 缓存,如果缓存中存在目标主机名对应的 IP 地址,则直接返回。
  2. 浏览器查询本地 hosts 文件:如果本地 DNS 缓存中不存在目标主机名对应的 IP 地址,则浏览器会查询本地 hosts 文件,查找目标主机名对应的 IP 地址。
  3. 浏览器向 DNS 服务器查询:如果本地 DNS 缓存和 hosts 文件中都没有目标主机名对应的 IP 地址,则浏览器会向 DNS 服务器发送请求,查询主机名对应的 IP 地址。
  4. DNS 服务器返回结果:DNS 服务器接收到请求后,会查询它的缓存或其他 DNS 服务器,最终返回目标主机名对应的 IP 地址。

需要注意的是,DNS 解析过程可能会受到网络环境、DNS 缓存、DNS 服务器负载等因素的影响,从而影响浏览器请求的响应速度。
图片来源@红帽小生

DNS查询和响应的具体过程如下:
  1. 应用程序发起DNS查询请求(例如浏览器请求访问某个网站)。
  2. 操作系统检查本地DNS缓存,如果存在该域名的解析结果,则返回缓存的解析结果,否则继续向下执行。
  3. 操作系统向本地DNS服务器发送DNS查询请求。本地DNS服务器通常由互联网服务提供商(ISP)提供,也可以是企业内部搭建的DNS服务器。
  4. 如果本地DNS服务器缓存了该域名的解析结果,则返回缓存的解析结果,否则继续向下执行。
  5. 本地DNS服务器向根DNS服务器发送DNS查询请求。根DNS服务器是DNS层次结构中的最高级别的DNS服务器,它负责管理顶级域名服务器的地址信息。
  6. 根DNS服务器返回一个包含顶级域名服务器的地址信息的DNS响应。
  7. 本地DNS服务器向顶级域名服务器发送DNS查询请求。顶级域名服务器是负责管理该域名的权威DNS服务器的地址信息。
  8. 顶级域名服务器返回一个包含该域名的权威DNS服务器的地址信息的DNS响应。
  9. 本地DNS服务器向权威DNS服务器发送DNS查询请求。
  10. 权威DNS服务器返回一个包含该域名的IP地址信息的DNS响应。
  11. 本地DNS服务器将该域名的IP地址信息缓存起来,并将该DNS响应返回给操作系统。
  12. 操作系统将该域名的IP地址信息返回给应用程序。

总之,DNS查询和响应的过程涉及多个DNS服务器之间的交互,其中本地DNS服务器起到了缓存和转发DNS查询请求的作用,而权威DNS服务器则负责提供该域名的IP地址信息。

TCP和UDP传输层协议区别

TCP和UDP是两种不同的传输层协议,它们具有以下主要区别:

  1. 连接性:TCP是一种面向连接的协议,而UDP是一种无连接的协议。TCP在通信之前需要建立连接,而UDP则不需要。

  2. 可靠性:TCP是一种可靠的协议,它使用确认和重传机制来确保数据的可靠传输。UDP则不提供这种可靠性保证。

  3. 速度:由于TCP提供了可靠性保证,因此它的速度相对较慢。UDP则更快,因为它不需要建立连接或提供可靠性保证。

  4. 通信量:TCP适用于大量数据的传输,因为它可以分段传输数据,并且可以通过流量控制和拥塞控制来控制数据传输速度。UDP则适用于小量数据的传输,例如DNS查询等。

  5. 适用场景:TCP适用于需要可靠性保证的场景,例如文件传输、电子邮件等。UDP则适用于实时性要求高的场景,例如音频、视频、游戏等。

    DNS协议最初设计时考虑到了网络带宽和传输效率等因素,将DNS消息长度限制在512字节以内,以确保DNS查询和响应能够快速地传输。如果DNS消息超过了512字节,DNS服务器将使用TCP协议进行传输,因为TCP可以传输更大的数据量。

HTTP协议和HTTPS协议

HTTP协议:

HTTP(Hypertext Transfer Protocol)是一种应用层协议,用于在Web浏览器和Web服务器之间传输数据。HTTP协议是基于客户端-服务器模型的,其中客户端向服务器发送请求,服务器则返回响应。HTTP协议通常使用TCP协议作为传输层协议,它定义了客户端和服务器之间的通信格式和规则,使得Web应用程序可以在不同的平台和操作系统之间进行通信和交互。

HTTP协议的主要特点:
  1. 简单性:HTTP协议的设计非常简单,易于实现和使用。
  2. 灵活性:HTTP协议可以通过扩展头部信息和请求方法来支持各种应用场景。
  3. 无状态性:HTTP协议是一种无状态协议,即服务器不会保存客户端的请求信息,每个请求都是独立的。
  4. 可靠性:HTTP协议使用TCP协议作为传输层协议,因此具有可靠性和稳定性。
  5. 安全性:HTTP协议本身不提供加密和认证机制,但可以通过HTTPS协议(HTTP over SSL/TLS)来提供安全性保证。

HTTP协议的请求和响应格式通常由三部分组成:请求行(Request Line)、头部信息(Header)和消息体(Body)。请求行包括请求方法、请求的URL和HTTP协议的版本信息,头部信息包括各种标准和自定义的头部字段,消息体包括请求或响应的具体数据。HTTP协议支持多种请求方法,例如GET、POST、PUT、DELETE等,每种请求方法都有不同的语义和使用场景。

总之,HTTP协议是Web应用程序通信和交互的基础,它的简单性、灵活性和可靠性使得Web应用程序可以在全球范围内进行通信和交互。

http和https的区别

HTTP(Hypertext Transfer Protocol)和HTTPS(Hypertext Transfer Protocol Secure)是两种不同的协议,用于在 Web 上传输数据。HTTP 是一种不加密的协议,而 HTTPS 则是一种加密的协议,用于保护数据传输的安全性。

具体来说,HTTP 使用明文传输,因此数据可能会被窃取或篡改。而 HTTPS 使用 SSL/TLS(Secure Sockets Layer/Transport Layer Security)协议对数据进行加密和身份验证,确保数据传输的安全性和完整性。

在使用 HTTPS 协议时,数据在客户端和服务器之间进行加密传输,使得黑客无法轻易获取敏感信息,如用户名、密码等。

因此,HTTPS 更加安全可靠,广泛用于在线交易、网上银行等安全敏感的场景。而 HTTP 则主要用于一些无需保密性和完整性的场合,如简单浏览网页等。

常见的状态码和原因短语

以下是常见的HTTP状态码和对应的原因短语:

  • 200 OK:请求成功,服务器正常返回页面;
  • 201 Created:请求成功,服务器创建了新的资源;
  • 204 No Content:请求成功,服务器没有返回任何内容;
  • 301 Moved Permanently:请求的资源已经被永久移动到新的URL;
  • 302 Found:请求的资源临时被移动到新的URL;
  • 304 Not Modified:请求的资源未被修改,可以直接使用缓存;
  • 400 Bad Request:请求语法错误,服务器无法识别请求;
  • 401 Unauthorized:请求需要用户认证;
  • 403 Forbidden:服务器拒绝访问请求的资源;
  • 404 Not Found:请求的资源不存在;
  • 500 Internal Server Error:服务器内部错误,无法完成请求;
  • 502 Bad Gateway:服务器作为网关或代理,从上游服务器收到无效的响应;
  • 503 Service Unavailable:服务器当前无法处理请求,一般用于临时维护或过载状态。

OSI七层模型

OSI层功能TCP/IP协议
应用层文件传输,电子邮件,文件服务,虚拟终端HTTP,TFTP,FTP,SMTP,DNS,DHCP
表示层数据格式化,代码转换,数据加密
会话层解除或建立与其他结点的联系
传输层提供端对端的接口TCP,UDP
网络层为数据包选择路由IP,ICMP,IGMP,OSPF,BGP,RIP
数据链路层传输有地址的帧, 错误检测功能PPP,ARP,RARP,HDLC
物理层以二进制数据形式在 在物理媒体上传输数据ISO2110,IEEEE802, IEEE802.2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值