1 浏览器生成消息
热身问答
下列说法是正确的(√)还是错误的(×)?
- http://www.nikkeibp.co.jp/ 中的 www 代表 World Wide Web 协议(对通信操作规则所作的定义)。
- 个人也可以申请注册互联网中的域名。
- 浏览器等网络应用程序实际上并不具备网络控制功能。
参考
- ×。http://www.nikkeibp.co.jp/ 中的 www 只是 Web 服务器上的一种命名。而且,World Wide Web也不是一个协议的名字,而是Web的提出者最早开发的浏览器兼HTML编辑器的名字。
- √。如果是“.com”“.net”“.org”“.jp”(除“co.jp”“ne.jp”等“xx.jp”格式的域名外)A等没有对注册对象范围进行限制的域名,任何个人都可以申请注册。此外,也有一种“.name”域名是专门为个人申请者准备的。
- √。应用程序并不是自己去控制网络,而是委托操作系统来控制网络。
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 地址和端口号:客户端和服务器之间用来识别对方套接字的机制
实际负责收发消息的是协议栈、网卡驱动和网卡
小测验
- http://www.nikkeibp.co.jp/ 中的 http 代表什么意思?
- 下面两个网址有什么不同?
a. http://www.nikkeibp.co.jp/sample
b. http://www.nikkeibp.co.jp/sample/ - 用来识别连接在互联网上的计算机和服务器的地址叫什么?
- 根据Web服务器的域名来查询IP地址时所使用的服务器叫什么?
- 向DNS服务器发送请求消息的程序叫什么?
参考
- HTTP 协议
- a 中的sample代表文件名,b中的sample代表目录名
- IP 地址
- DNS服务器
- 解析器
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)