1 浏览器生成消息



热身问答

下列说法是正确的(√)还是错误的(×)?

  1. http://www.nikkeibp.co.jp/ 中的 www 代表 World Wide Web 协议(对通信操作规则所作的定义)。
  2. 个人也可以申请注册互联网中的域名。
  3. 浏览器等网络应用程序实际上并不具备网络控制功能。
参考
  1. ×。http://www.nikkeibp.co.jp/ 中的 www 只是 Web 服务器上的一种命名。而且,World Wide Web也不是一个协议的名字,而是Web的提出者最早开发的浏览器兼HTML编辑器的名字
  2. √。如果是“.com”“.net”“.org”“.jp”(除“co.jp”“ne.jp”等“xx.jp”格式的域名外)A等没有对注册对象范围进行限制的域名,任何个人都可以申请注册。此外,也有一种“.name”域名是专门为个人申请者准备的。
  3. √。应用程序并不是自己去控制网络,而是委托操作系统来控制网络

1 生成http请求消息

URI:统一资源标识符 Uniform Resource Identifier

URL:统一资源定位符 Uniform Resource Locator

http的基本思路

http消息的格式

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

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

消息体的格式会通过消息头中的 Content-Type 字段来定义(MIME 类型)

消息体包含服务器向客户端发送的数据,例如从文件中读取的数据,或者CGI应用程序输出的数据等。消息体的内容作为二进
制数据来处理


2 向DNS服务器查询Web服务器的IP地址

Socket 库是用于调用网络功能的程序组件集合

根据域名查询 IP 地址时,浏览器会使用 Socket 库中的解析器

HTTP 消息是用文本编写的,但 DNS 消息是使用二进制数据编写的

协议栈:操作系统内部的网络控制软件,也叫“协议驱动”“TCP/IP 驱动”等


3 全世界DNS服务器的大接力

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

将根域的 DNS 服务器信息保存在互联网中所有的 DNS 服务器中。这样一来,任何 DNS 服务器就都可以找到并访问根域 DNS 服务器了

分配给根域 DNS 服务器的 IP 地址在全世界仅有 13 个 A,而且这些地址几乎不发生变化,因此将这些地址保存在所有的 DNS 服务器中也并不是一件难事。实际上,根域DNS 服务器的相关信息已经包含在 DNS 服务器程序的配置文件中了,因此只要安装了 DNS 服务器程序,这些信息也就被自动配置好了

根域 DNS 服务器在运营上使用多台服务器来对应一个 IP 地址,因此尽管 IP 地址只有 13 个,但其实服务器的数量是很多的


4 委托协议栈发送消息

向操作系统内部的协议栈发出委托时,需要按照指定的顺序来调用 Socket 库中的程序组件

服务器程序一般会在启动后就创建好套接字并等待客户端连接管道

收发数据的操作分为若干个阶段,可以大致总结为以下 4 个。
(1)创建套接字(创建套接字阶段)
(2)将管道连接到服务器端的套接字上(连接阶段)
(3)收发数据(通信阶段)
(4)断开管道并删除套接字(断开阶段)

前面这 4个操作都是由操作系统中的协议栈来执行的,浏览器等应用程序并不会自己去做连接管道、放入数据这些工作,而是委托协议栈来代劳

应用程序是通过“描述符”这一类似号码牌的东西来识别套接字的

当调用 Socket 库中的程序组件时,应用程序所指定的参数会通过 Socket 库的程序组件传递给协议栈,并由协议栈来实际执行相应的操作

准确地说,IP 地址不是分配给每一台设备的,而是分配给设备中安装的网络硬件的。因此,如果一台设备中安装了多个网络硬件,那么就会有多个 IP 地址。

端口号的规则是全球统一的,为了避免重复和冲突,端口号和 IP 地址一样都是由 IANA(Internet Assigned Number Authority,互联网编号管理局)这一组织来统一管理的

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

总而言之,就是当调用 connect 时,协议栈就会执行连接操作。当连接成功后,协议栈会将对方的 IP 地址和端口号等信息保存在套接字中,这样我们就可以开始收发数据了

描述符:应用程序用来识别套接字的机制 IP 地址和端口号:客户端和服务器之间用来识别对方套接字的机制

实际负责收发消息的是协议栈、网卡驱动和网卡


小测验

  1. http://www.nikkeibp.co.jp/ 中的 http 代表什么意思?
  2. 下面两个网址有什么不同?
    a. http://www.nikkeibp.co.jp/sample
    b. http://www.nikkeibp.co.jp/sample/
  3. 用来识别连接在互联网上的计算机和服务器的地址叫什么?
  4. 根据Web服务器的域名查询IP地址时所使用的服务器叫什么?
  5. 向DNS服务器发送请求消息的程序叫什么?
参考
  1. HTTP 协议
  2. a 中的sample代表文件名,b中的sample代表目录名
  3. IP 地址
  4. DNS服务器
  5. 解析器
posted @   guanyubo  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示