加载中...
浏览器是怎样通信的
发表于:2021-06-19 | 分类: 《网络是怎样连接的》读书笔记
字数统计: 1.2k | 阅读时长: 4分钟 | 阅读量:

第1步,从在浏览器中输入网址开始:

  • 首先网址就是URL,通常是访问web服务器,用”http:”,即HTTP协议
  • URL的格式会随着协议的不同而不同
  • URL的各种格式如下:
    • 访问Web服务器或FTP服务器时,URL包括域名和文件路径名,有时还会包含用户名和密码和服务器端口号

第2步,浏览器对URL进行解析

对URL解析也就是对URL进行拆分,拆分结果如下:

  • 还有URL中省略文件名的特殊情况,甚至最后不以/结尾,将会直接访问服务器中设置的默认文件

第3步,根据解析信息来生成HTTP请求消息

HTTP方法最常用的就是GET和POST:

  • 在地址栏中输入网址并显示网页,因此这里应该使用 GET 方法
  • 点击超级链接的场景中也是使用 GET 方法
  • 如果是表单,在 HTML 源代码中会在表单的属性中指定使用哪种方法来发送请求,可能是 GET也可能是POST

生成HTTP请求消息的格式:

怎么生成HTTP请求消息:

  • 第1步,写好方法,是GET还是POST,加一个空格
  • 第2步,写URI,即文件和程序的路径名,直接从URL中提取出来即可,再加一个空格,写HTTP版本
  • 第3步,第二行开始写消息头,存放请求的额外信息,如日期,客户端支持的数据类型,软件名称和版本等等
  • 第4步,空一行,写消息体。GET方法不需要写消息体,POST方法把表单中的信息写上

生成结果如下:

第4步,生成请求消息后,向DNS服务器查询Web服务器的IP地址

虽然浏览器能生成解析地址生成HTTP请求消息,但是浏览器不能发送消息到网络,需要委托操作系统来做

IP地址原理

子网:

由集线器连接起来几台计算机,看成一个单位

网络:

把子网用路由器连起来形成网络

IP地址:

  • 网络中所有的设备都被分配一个地址,由网络号、主机号组成
  • 通过IP地址可以判断出访问服务器的位置,从而发送消息

消息发送过程:

发送者的消息先通过子网的集线器发送到最近的路由器上,路由器根据目的地判断并发送到下一个路由器,然后再经过子网的集线器发到下一个路由器,直到发送到目的地

为什么要查询IP地址?

因为发送消息需要的不是域名,而是域名对应的IP地址

怎么向DNS服务器查询IP地址?

  • 首先操作系统上有DNS客户端,客户端里有Socket库的DNS解析器
  • 需要查询IP地址时
    • 第1步,浏览器会调用操作系统的解析器,解析器委托操作系统的协议栈通过网卡向DNS服务器发送查询消息,然后DNS会返回响应消息
    • 第2步,响应消息通过协议栈传递给解析器,解析器会取出响应消息中的IP地址,并写入浏览器指定的内存地址中
  • 解析器程序如下:

第5步,委托操作系统的协议栈向目标IP服务器收发HTTP消息

基本原理:

  • 首先收发消息操作之前,先要建立一条管道连接双方。管道两端的数据出入口叫套接字,所以先创建套接字
  • 然后通过套接字连接起来形成管道
  • 这些步骤都是委托协议栈完成的

第1步,收发消息的准备工作:

  • 首先服务器创建套接字,等待客户端创建套接字并返回描述符
  • 协议栈根据描述符、IP地址、端口号判断哪个套接字和哪个服务器的哪个套接字进行连接管道,连接后就完成了准备工作
    • 原理:描述符是用来在一台计算机内部识别套接字的,端口号就是用来识别服务器的套接字的
  • 传输完成后任何一方断开管道,通信就结束,套接字将删除

第2步,收发HTTP消息

  • 发送消息:调用write程序组件并指定套接字和HTTP消息(需要发送的数据),协议栈就会发送数据到服务器
  • 服务器响应消息:
  • 接收消息:调用read程序组件并指定消息存放内存地址,协议栈就会接收数据到接收缓冲区

第3步,断开连接

服务器首先断开连接,传达到客户端后,客户端套接字也会断开,浏览器调用read后会得知通信结束,浏览器也会断开

上一篇:
第1章 网络基础知识
下一篇:
第17章 集合深入研究
本文目录
本文目录