《网络是怎样连接的》之浏览器生成消息

浏览器生成消息

简介

《网络是怎样连接的》全貌已经介绍了《网络是怎样连接的》全书的探索之旅的框架图,本篇文章则主要是阐述在浏览器生成HTTP去请求消息,并委托协议栈发送该消息的过程。

本章主要讲述两个内容:

  • HTTP请求信息的生成
  • 通过协议栈对HTTP请求信息进行发送

主要内容描述

上面的XMind包含了本章的基本内容介绍,详细的内容如下图所示:

浏览器生成请求消息

解析URL请求

 URL的实际作用是使用哪种功能访问相应的数据

如上,URL中包含服务器的域名和要访问的文件的路径名。

HTTP基本思路

请求消息的内容

格式

在HTTP请求消息中,最常用的就是GET方法,比如说获取网页的数据,另外就是POST,用于提交一些表单数据给服务器。

请求消息由如下的内容组成:

  • 请求行(最重要,描述进行怎样的操作)
  • 第二行开始为消息头,额外的详细信息,诸如日期,客户度支持的数据类型,语言和压缩格式,数据有效期等。
  • 空行
  • 消息体

并且发送请求后,会收到响应。需要注意的是:

示例

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

委托协议栈发送请求消息

  在委托操作系统发送消息时, 必须要提供的不是通信对象的域名, 而是它的 IP 地址。 因此, 在生成 HTTP 消息之后, 下一个步骤就是根据域名查询 IP 地址。 解析器向DNS服务器获取服务器域名所在IP。

 在网络中, 所有的设备都会被分配一个地址。 这个地址就相当于现实中某条路上的“×× 号 ×× 室”。 其中**“号” 对应的号码是分配给整个子网的**, 而**“室” 对应的号码是分配给子网中的计算机的**, 这就是网络中的地址。“号” 对应的号码称为网络号,“室” 对应的号码称为主机号, 这个地址的整体称为 IP 地址。 通过 IP 地址我们可以判断出访问对象服务器的位置, 从而将消息发送到服务器。

由上图,可以得到如下的结论:

通信子网是由许多子网号相同,但主机号不同的计算机通过集线器连接而成的。

多个集线器连接在路由器上,相当于小的子网由路由器连接而成

数据包传输时,先是以子网为目标的。

网络号表示

IP地址结合的附加信息(子网掩码)共同确定子网号和主机号。子网掩码是一串与IP地址长度相同的32位比特数字,其左边一半都是1,右边一半都是0。

Socket库提供查询IP地址的功能

 查询 IP 地址的方法非常简单, 只要询问最近的 DNS 服务器“www.lab.glasscom.com 的 IP 地址是什么” 就可以了, DNS 服务器会回答说“该服务器的 IP 地址为 xxx.xxx.xxx.xxx”。 这一步非常简单, 很多读者也都很熟悉, 那么浏览器是如何向 DNS 服务器发出查询的呢? 让我们把向 Web服务器发送请求消息的事情放一放, 先来探索一下 DNS 。向DNS服务器发出查询,也就是向DNS服务器发送查询消息,并接受服务器返回的响应信息。通过DNS查询IP的操作称为域名解析:resolution。

DNS解析IP的操作是通过UDP协议而进行的。

DNS服务器是通过手动配置实现的。如下图:

DNS 服务器会从域名与 IP 地址的对照表中查找相应的记录,并返回 IP 地址。

域名的存储具有层次结构

协议栈发送请求消息概览

 这个章节,就是笔者阅读本书的最大收获吧,因为弄清了一些之前困惑的问题。

 在准备好HTTP请求消息之后(通过协议栈发送的内容),我们通过DNS解析了URL中域名所在的服务器IP地址,至此,我们就可以开始委托协议栈进行HTTP请求消息的发送了。

 消息的发送会通过在服务器和客户端程序建立套接字,通过网络完成数据的传送。

整体的过程如下:

应用程序是通过描述符来识别套接字的。

创建套接字阶段

创建套接字之后,会返回一个描述符。

在同一台计算机上可能同时存在着多个套接字,我们需要描述符来识别特定的套接字。

连接阶段

数据传输节点

断开连接阶段

总结

 一直坐着发博客还是挺累的,通过博客把书读薄了,或许就是一种进步吧。这篇文章写了两天的。希望能加深各位看官对于HTTP协议和委托协议栈发送消息的操作,由生处转熟,比昨天多了解一点,或许这就是学习的意义。

最简单、最经济、最有效的方法就是多一些认识世界的模型和框架。

希望自己永远开放和分享。

2021年6月27日 SUN 09:57:37于AUC

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值