gpt4 book ai didi

ssl - URL 如何转换为 TCP/IP 请求?

转载 作者:可可西里 更新时间:2023-11-01 02:46:45 26 4
gpt4 key购买 nike

最近一位同事告诉我,第三方可以看到 HTTPS GET 请求的查询字符串,我打算证明他是错的。但是很难找到任何对 URL 解析的明确描述。

我的理解是 URL 只是零碎地发送,域传递到 IP header ,端口传递到 TCP header 等。在 HTTPS GET 的特定情况下,这意味着查询字符串将仅驻留在 HTTP header 中,而 HTTP header 又驻留在 TLS 正文中,后者是端到端加密的,因此是安全的。

那么,我的问题是双重的:

  • 首先,我对 HTTPS GET 查询字符串的特殊情况是否正确?
  • 其次,任何人都可以向我提供 URL 的一般剖析,并着眼于它的各个部分如何转换为 TCP/IP 请求吗?

最佳答案

首先,关于使用 HTTPS 时查询字符串在传输过程中受到保护,您是对的。已经有很多关于此的问题,例如 this one .本质上,HTTPS 是基于 SSL/TLS 的 HTTP,因此 SSL/TLS 连接是在发送任何 HTTPS 流量之前建立的。 (可能可见的是主机名,要么在 TLS 的服务器名称指示扩展中,要么无论如何都可能被 DNS 请求泄露。)

其次,当您向 https://host.example:port/something?blabla=1 发出 GET 请求时,这是对所发生情况的概述:

  • 您的浏览器在该端口上建立到 host.example 的 TCP 连接。

  • 因为它是一个 https:// URL,所以建立了 SSL/TLS 连接。 SSL/TLS 堆栈应验证证书并且它与您之后的主机名匹配。

  • 在此 SSL/TLS 连接之上(使用纯 HTTP 时将直接在 TCP 连接之上),您的浏览器发送如下内容:

      GET /something?blabla=1 HTTP/1.1
    Host: host.example:port
    .... (other headers)

    所有这些都是通过 SSL/TLS 发送的。请注意,严格来说,查询参数是 URL 的组成部分,并发送 in the Request-Line, not headers .

您可以在 RFC 2616 中找到有关 HTTP 的详细信息(最近被取代)和关于 HTTPS 的 RFC 2818 .

关于ssl - URL 如何转换为 TCP/IP 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25811851/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com