浏览器生成消息

生成请求消息

输入网址
解析URL

协议://web服务器/目录/文件

HTTP协议定义客户端与服务器之间的消息内容和步骤
  • URI
  • Method
    • GET / POST / HEAD / OPTIONS / PUT / DELETE / TRACE / CONNECT
生成HTTP请求消息
格式

<方法><空格><空格><HTTP版本>

:

···

<空行>

<消息体>

向DNS服务器查询web服务器的IP地址

委托操作系统,通过域名查询IP地址

TCP/IP结构
IP地址
子网掩码
域名和IP并用的理由
Socket库提供查询IP地址的功能

DNS客户端向DNS服务器查询

Socket中的解析器的内部原理

  • 浏览器
    • 调用解析器查询地址
  • Socket 解析器
    • 解析器生成查询DNS服务器的消息
    • 向DNS服务器发送查询消息
  • 操作系统协议栈
    • 发送UDP消息
  • 网卡
    • 电信号
  • DNS服务器(查询返回)
  • 网卡
    • 电信号
  • 操作系统协议栈
    • 接收UDP消息
  • Socket解析器
    • 接收信息,提取IP地址
  • 浏览器
    • 获取IP地址

向DNS服务器查询消息时,是知道DNS的服务IP地址的(预设的,网络配置DNS服务器或自动获取DNS服务器)

DNS查询过程

域名 Class 记录类型

域名 :服务器、邮件服务器

Class :IN

记录类型:A -IP地址;MX-邮件服务器;CNAME-域名别名;NS-DNS服务器IP;等

DNS 大接力

域名的层次结构

.分割,约靠右层级越高

子域:example.com.cn - sub1.example.com.cn / sub2.example.com.cn

子域的DNS服务器注册到上级DNS服务器中,跟域名是. 固定的(目前有13个,位于不同的国家/地区),

跟域名DNS服务器信息会保存到所有的DNS服务器中。

查找过程
  • 查找最近的DNS服务器,找到返回
  • 查找根服务器,根据域名依次向下查找
  • 找到后返回

缓存功能

委托操作系统协议栈发送消息

收发数据,借助于Socket库多个组件。

数据收发之前,客户端程序和服务器程序之间建立一条数据通道。

  • 服务器创建套接字,等待客户连接
  • 客户端创建套接字,从套接字延伸出管道,连到服务器套接字上。

结束时,客户端 / 服务器断开

收发数据分4个阶段,每个阶段,Socket库中的程序组件被调用执行相应的数据收发操作

  • 创建套接字
  • 套接字连接
  • 数据收发
  • 断开管道并删除套接字