Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ssl URL如何转换为TCP/IP请求?_Ssl_Tcp_Https_Ip_Tcp Ip - Fatal编程技术网

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

Ssl URL如何转换为TCP/IP请求?,ssl,tcp,https,ip,tcp-ip,Ssl,Tcp,Https,Ip,Tcp Ip,最近一位同事告诉我,HTTPS GET请求的查询字符串对第三方是可见的,我打算证明他错了。但要找到URL解析的任何明确描述都很困难 我的理解是,URL只是零星发送的,域传递到IP报头,端口传递到TCP报头,等等。在HTTPS GET的特定情况下,这意味着查询字符串将只驻留在HTTP报头中,而HTTP报头又驻留在TLS主体中,它是端到端加密的,因此是安全的 那么,我的问题有两个: 首先,关于HTTPS GET查询字符串的特殊情况,我说得对吗 第二,有谁能为我提供一个URL的一般剖析,并着眼于它的

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

我的理解是,URL只是零星发送的,域传递到IP报头,端口传递到TCP报头,等等。在HTTPS GET的特定情况下,这意味着查询字符串将只驻留在HTTP报头中,而HTTP报头又驻留在TLS主体中,它是端到端加密的,因此是安全的

那么,我的问题有两个:

  • 首先,关于HTTPS GET查询字符串的特殊情况,我说得对吗
  • 第二,有谁能为我提供一个URL的一般剖析,并着眼于它的各个部分如何转换为TCP/IP请求

首先,关于使用HTTPS时在传输过程中受保护的查询字符串,您是对的。例如,关于这一点已经有很多问题了。本质上,HTTPS是HTTP over SSL/TLS,因此SSL/TLS连接是在发送任何HTTPS流量之前建立的。(可能可见的是主机名,在TLS的服务器名指示扩展中,或者这可能会被DNS请求泄漏。)

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

  • 您的浏览器建立到主机的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不可分割的一部分,是发送的


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

IP头不会使用URL或域或类似的内容,但它们封装的TCP会使用。在这种情况下,封装的所有内容都是加密的

我认为值得指出的是,虽然您可能看不到很多给定的HTTPS消息,但是

GET https://example.com/query?q=text
我相信您会在clear中看到一个DNS请求作为“示例”;其他所有内容都将在HTTPS中加密。所有这些都表明在主机解析步骤中不要忘记加密。它不在IP报头中,这就是IP地址的用途。但我们必须通过DNS获取这些地址