网络是怎么连接的 第一章 browser resolve URL

51 阅读4分钟

first step

浏览器要做的第一步工作就是对 URL 进行解析,从而生成发送给 Web 服务器的请求消息。 http表示协议, URL中服务器名字后面跟的是访问的文件路径 入下图所示

image.png

如果省略了文件名,所以结果就是访问 /index.html 或者 /default.htm 这样的文件了。 因为/ 代表根目录,根目录是没有名字;比如dir/ 就是有名字的目录,它不是根目录; 如果URL中路径连/都没有,可能web server还是会返回默认的default.htm

有一个特殊的情况,如果dir是目录名,但是你在url中访问的时候,是这样: http://webserver/dir 那么, 如果 Web 服务器上存在名为 dir 的文件,则将 whatisthis 作为文件名来处 理;如果存在名为 dir 的目录,则将 dir 作为目录名来处理;但是不管是在windows 还是linux中,都不存在同名的文件或者文件夹;

second step

URL = 协议+ URI

下面是http 方法的汇总 其中最常用的方法是get和post get: 需要获取 /dir1/file1.html 文件中的数据,当 Web 服务器收到消息后,会 打开 /dir1/file1.html 文件并读取出里面的数据,然后将读出的数据存放到 响应消息中,

如果响应的内容(例如一个大文件的内容)超出了服务器或客户端的处理能力或配置的最大响应体大小,服务器可能会根据配置返回 413 Payload Too Large 错误,或者直接中断连接。如果客户端在请求时没有合适的接收能力,可能也会导致超时或连接丢失等问题。

post: 在表单中填写数据并将其 发送给 Web 服务器

image.png

发送请求的payload 格式如下

由于每条请求消息中只能写 1 个 URI,所以每次只能获取 1 个文件, 如果需要获取多个文件,必须对每个文件单独发送 1 条请求。

下面是对get请求解析

这是一个请求头

image.png

DNS 工作原理

在URL中我们使用域名,但是这个并不能被识别。 要自顶向下,依次轮训找到对应的server的 IP 使用IP进行通信考虑到通信的便捷,如果都使用域名,长度不同,增加路由器的负担,还不如都固定4byte进行通信

IP包含网络号+ 主机号,使用mask表示网络号的长度

有两个特殊表示方法 image.png

关于DNS解析,本质上还是server + client

解析器实际上是一段程序,它包含在操作系统的 Socket 库中,解析器就是这个库中 的其中一种程序组件,解析器会取出 IP 地址,并将其写入浏览器指定的内存地址中。

浏览器在向 Web 服务器发送消息时,只要从该内存地址取出 IP 地 址,并将它与 HTTP 请求消息一起交给操作系统就可以了。

浏览器)调用解析器时, 程序的控制流程就会转移到解析器的内部-》 进入内核态

根据URL查询DNS服务器

  1. 上一级DNS服务器 IP会记录到下一集DNS服务器记录
  2. 根域的 DNS 服务器信息保 存在互联网中所有的 DNS 服务器中
  3. 分配给根域 DNS 服务器 的 IP 地址在全世界仅有 13 个

DNS解析过程

browser充当client 向顶级DNS发送请求

如果要查询 www.lab.glasscom.com 这个域名对应的 IP 地址,客 户端会向 DNS 服务器发送包含以下信息的查询消息。 (a)域名 = www.lab.glasscom.com (b)Class = IN (c)记录类型 = A

假设在DNS服务器,记录内容如下,那么,第一条记录就满足条件

image.png

他会返回给client

首先,客户端在创建套接字时,协议栈会为这个套接 字随便分配一个端口号 当协议栈执行连接操作时,会将这个随 便分配的端口号通知给服务器。

协议栈工作原理

下一章节 juejin.cn/post/744330…