奇思妙想录 男儿不展风云志,空负天生八尺躯。——冯梦龙
博主

一秒前在线

奇思妙想录
才须学也。非学无以广才,非志无以成学。——诸葛亮
歌曲封面 未知作品

萌ICP备20248808号

津ICP备2023004371号-2

网站已运行 3 年 141 天 3 小时 9 分

Powered by Typecho & Sunny

2 online · 98 ms

Title

TCP/IP 四层模型 + URL 请求流程 + HTTP 请求核心区别

IhaveBB

·

技术分享

·

Article
AI摘要:TCP/IP四层模型包括应用层、传输层、网络层和数据链路层。从输入URL到页面展示,流程涉及DNS解析、TCP连接建立、网络路由、数据封装传输及服务器处理。HTTP请求中,GET通过URL传参,可缓存;POST通过请求体传参,安全性更高。

Powered by AISummary.

TCP/IP 四层模型

TCP/IP 四层模型,从顶到底分别是:应用层、连接层、网络层、数据链路层。对于 TCP/IP 相对的还有 OSI 七层网络模型,从顶到底分别是:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。OSI 七层网络模型因为一些原因没有投入实际使用,是一个理想模型,实际我们所使用的为 TCP/IP 四层模型。他们每层的作用分别是:

  • 应用层:为用户提供应用访问的协议,如 HTTP、DNS、FTP、SMTP 等
  • 传输层:负责端到端之间的可靠传输/不可靠传输

    • TCP:面向连接、可靠性、保证有序。

      • 三次握手、四次挥手、流量控制、拥塞控制、超时重传
      • 常用于需要保证可靠性的场景如 HTTP、文字图片传送等
    • UDP:无链接、不保证可靠性、无需

      • 常用语及时性高于可靠性的场景,如游戏音视频通话等
  • 网络层:让数据从目标主机到源主机(跨网)

    • IP 协议:提供 IP 地址、路由选择、分片重组(MTP 限制)
    • ARP 协议:通过 IP 地址寻找对应 MAC 地址
    • ICMP 协议:用于网络检测如 ping、telent
    • NAT:通过端口复用实现多设备共用同 IP
  • 数据链路层:让数据在同网络设备中传输(同网)

    • 以太帧格式:CRC 校验、协议、数据、源 MAC 地址、目的 MAC 地址
    • CRC 循环冗余校验:差错控制,不具备纠错功能
    • MTU 最大 1500,在网络层如果是 IPV4 超过长度可以分片,IPV6 发送端进行分片

整体流程:

  • 【应用层】用户输入 URL,进行 HTTP 请求
  • 【应用层】进行 DNS 解析,将域名转为目的服务器 IP 地址
  • 【传输层】通过 TCP 三次握手建立连接
  • 【网络层】根据目标 IP 判断是否跨网(跨域不夸怎么样呢?)

    • 没有跨网:【网络层】ARP 查询,根据 IP 获取目标 MAC 地址,直接封装帧发给目标主机
    • 跨网:【网络层】ARP 查询网关 MAC 地址,将数据封装成帧后发给路由器,根据路由表找到最终目标
  • 【链路层】将目标 MAC、源 MAC、数据、MTC、协议封装以太帧,交换机根据 MAC 表将帧转发到目标设备。

从输入 URL 到页面展示发生了什么?

  1. 浏览解析用户输入:

    1. 若输入为网址,则为访问网站
    2. 若输入为关键字,则交由搜索引擎搜索(仍然是发起一次 HTTP 请求)
  2. 浏览器检查缓存

    1. 强缓存:若未过期 → 本地返回,不发请求
    2. 协商缓存:若强缓存失效则使用协商缓存去服务端判断,若服务器判断资源未修改 → 返回 304 Not Modified,浏览器继续用本地缓存。
  3. 应用层进行 HTTP 请求
  4. 应用层通过 DNS 解析域名

    1. ((20251201201954-921fa20 'DNS 请求过程中都发生了什么?'))
  5. 传输层建立 TCP 连接

    1. 第一次:客户端主动发送 SYN(我想通信)
    2. 第二次:服务端回复 ACK+SYN(允许,并且我能通信)
    3. 第三次:客户端回复 ACK(确认)

      若使用 HTTPS,还会在 TPC 后进行 TLS 检查,交互密钥证书等等

  6. 网络层检查目标 IP 是否在同一网段

    1. 本网段:使用 ARP(地址解析协议) 查询目标 IP 对应的 MAC。
    2. 非本网段:先查询 本地网关(路由器)MAC,把数据帧先发给网关。
  7. 数据链路层封装并发送

    1. 构造以太网帧:源 MAC、目标 MAC、数据、MTC(1500 最大)、协议(IPV4/6)
    2. 帧经过:

      1. 交换机:根据 MAC 表转发
      2. 路由器:根据路由表进行转发
      3. 多跳网络 → 最终到达服务器
  8. 服务器入口(如 Nginx)处理请求

    1. 经过流量控制、反向代理、负载均衡等
  9. 后端程序处理逻辑:

    1. 将响应返回给 Nginx,再由 Nginx 转回给客户端。
  10. 浏览器接收到后,根据响应头进行解析

    1. Content-Type: text/html → 进入 HTML 解析、渲染流程
    2. Content-Type: application/octet-stream → 触发 文件下载
    3. Location + 301/302重定向,再次发起请求
    4. Cache-Control / ETag → 更新缓存策略
  11. 浏览器进行渲染

DNS 请求过程中都发生了什么?

假设:

  • 本地配置了 8.8.8.8 的 DNS 服务器(递归 DNS)
  • 有一个域名 bbpad.com 使用 DNSPOD 的解析服务(顶级 DNS)

对于 DNS 请求可以分为两个阶段,第一阶段:本地缓存、第二阶段:DNS 请求

  • 第一阶段:本地解析(不发网络请求)

    • 浏览器缓存:浏览器会缓存最近一段时间的 DNS 记录
    • 本地缓存:系统在解析域名后会把记录保存一段时间。如我们修改递归 DNS 服务器后,往往会使用 ipconfig/flushdns 命令,这个命令刷新的就是本地缓存,且强制下一次解析重新查询 DNS 或 hosts
      ❗ 注意:flushdns 不会刷新 hosts,hosts 修改立即生效。
    • 本地 Hosts 文件:将域名强制绑定到指定 IP,本地开发测试使用较多,或网站 dns 解析未生效,可以自己先强制绑定使用
      ❗hosts 是优先级最高的域名解析文件。
  • 第二阶段:向 DNS 服务器请求(只有本地无缓存时才发生)

    • 如果本地找不到解析结果,系统会向配置的递归 DNS(如 8.8.8.8)发起解析请求。递归 DNS 会依次发起 递归查询
    • 根域名服务器:全球共 13 个,负责返回顶级域名服务器
    • 顶级域名服务器:.com、.net 等域名的服务器,返回该域名所属 权威 DNS 服务器 的地址
    • 权威域名服务器:如 DNSPod、Cloudflare,存放的是自己配置的解析记录。

HTTP 请求方式有哪些,GET 请求和 POST 请求的区别?

  • HTTP 请求方式

    • GET 请求(获取数据)
    • POST 请求(发送数据)
    • PUT 请求(更新指定数据)
    • DELETE(删除指定数据)
  • GET 请求和 POST 请求的区别

    • GET 请求:

      • URL 传参,留痕、安全性低、容易泄露隐私数据且参数长度受限
      • 常用于获取操作,具备天然幂等性等信(后端接口规范前提下)
      • GET 请求可在浏览器直接访问
      • GET 请求可以被缓存
    • Post 请求:

      • 请求体传参,参数类型丰富,安全性高,不宜泄露,无长度限制
      • 通常用于提交操作等,不具备幂等性
      • POST 请求需使用工具发出
      • POST 请求不会被缓存
现在已有 1 次阅读,0 条评论,0 人点赞
Author:IhaveBB
作者
TCP/IP 四层模型 + URL 请求流程 + HTTP 请求核心区别
当前文章累计共 3285 字,阅读大概需要 4 分钟。
和大家分享一款软件PicList
2023年7月28日 · 0评论
短视频时代:娱乐之余,思考之道
2024年2月1日 · 1评论
大青山野生动物园
2023年7月19日 · 0评论
Comment:共0条
发表
搜 索 消 息 足 迹
你还不曾留言过..
你还不曾留下足迹..
博主

哈喽大家好呀

不再显示
博主