应用层

应用层

应用层概述

  • 基本概念:
    • 应用层:使用下层协议为==应用软件==提供服务
    • 单位:报文(HTTP协议)
  • 功能
    • 域名解析(DNS 协议)
    • 文件传输(FTP 协议)
    • 邮件系统(SMTP,POP3协议)
    • 虚拟终端(HTTP协议)
  • 网络应用模型
    • C/S 客户端/服务器
    • P2P

协议

DNS 协议(需要修改)

  • 域名(主机名)

    • 概念:应用层用于==标识主机==的方式

      1. 传输层:采用 IP 地址标识主机;端口号标识进程
      2. 网络层:采用 IP 地址标识主机;
      3. 数据链路层:采用 MAC 地址标识主机
    • 格式:==三级域名 + 二级域名 + 顶级域名==

      1. 根域名:.(默认情况下不写:域名后加上 . 仍然是可以访问的)
      2. 顶级域名
        • 国家顶级域名:cn us uk
        • 通用顶级域名:com org net gov
        • 基础结构域名:arpa
      3. 二级域名:
        • 类别域名:com edu gov net org
        • 行政域名:cq beijing shanghai
        • 自定义域名:bilibili
      4. 三级域名:www mail ftp
      5. 四级域名:域名需要进一步划分时使用
    • 图示:

      • 举例

      image-20210412144024007

      • 划分

        image-20210412144113902

  • DNS 协议:

    • 引入:传输层和网络层使用 ==IP 地址==才能够确定主机在网络中的位置,而应用层使用 ==域名== 确定,显然需要映射关系进行转化
    • 定义:将应用层的==域名==(主机名)根据==映射关系==转换到 ==IP 地址==
    • 相关协议:
      • UDP 协议 端口 53:用于传输 DNS 请求和响应报文
      • DHCP 协议:获取本地 DNS 服务器的 IP 地址
  • DNS 服务器:

    • 定义:==查找== 域名 和 IP 地址 ==映射关系== 的服务器(运行在 BIND 软件的 UNIX 机器)

      注:DNS 服务器 和 DNS 数据库是两个东西,服务器负责在数据库中查找所需的映射关系,并不存储映射关系

    • 功能:

      1. 查找映射关系

      2. 查找主机规范名:根据主机别名查找主机规范名及其 IP 地址

        • 主机别名:简短的主机规范名;举例:bilibili.com
        • 主机规范名:完整的域名格式;举例:www.bilibili.com
      3. 负载分配:多个 IP 地址的==集合映射一个域名==

        • 网站过于繁忙时需要多台服务器进行分布式处理
        • 每台服务器都运行在不同的端系统上,实际的 IP 地址也是不一样的
        • 每次通过域名访问网站时,实际访问的可能是不同的 IP 地址

        注:一个 IP 地址可以对应多个 域名;一个域名也可以对应多个 IP 地址

    • 分类:

      • 根域名服务器

        1. 全世界共有 400 多台根域名服务器,但是只有 13 个域名(13 个 组织管理)
        2. 根域名服务器==只==返回==顶级域名服务器的 IP 地址==,不会返回查询的域名的 IP 地址
        <!-- ipconfig/displaydns -->
        <!-- 13 台根服务器的 域名 和 IP 地址 -->
        记录名称. . . . . . . : a.gtld-servers.net
        A (主机)记录 . . . . : 192.5.6.30

        记录名称. . . . . . . : b.gtld-servers.net
        A (主机)记录 . . . . : 192.33.14.30

        记录名称. . . . . . . : c.gtld-servers.net
        A (主机)记录 . . . . : 192.26.92.30

        记录名称. . . . . . . : d.gtld-servers.net
        A (主机)记录 . . . . : 192.31.80.30

        记录名称. . . . . . . : e.gtld-servers.net
        A (主机)记录 . . . . : 192.12.94.30

        记录名称. . . . . . . : f.gtld-servers.net
        A (主机)记录 . . . . : 192.35.51.30

        记录名称. . . . . . . : g.gtld-servers.net
        A (主机)记录 . . . . : 192.42.93.30

        记录名称. . . . . . . : h.gtld-servers.net
        A (主机)记录 . . . . : 192.54.112.30

        记录名称. . . . . . . : i.gtld-servers.net
        A (主机)记录 . . . . : 192.43.172.30

        记录名称. . . . . . . : j.gtld-servers.net
        A (主机)记录 . . . . : 192.48.79.30

        记录名称. . . . . . . : k.gtld-servers.net
        A (主机)记录 . . . . : 192.52.178.30

        记录名称. . . . . . . : l.gtld-servers.net
        A (主机)记录 . . . . : 192.41.162.30
        <!-- 还有一台 m.gtld-servers.net 服务器 -->
      • 顶级域名服务器:顶级域名只会返回权威域名服务器的 IP 地址,不会返回查询的域名对应的 IP 地址

      • 权威域名服务器:返回查询的域名对应的 IP 地址

      • 本地域名服务器:

        1. 每个 ISP 中都有一个本地域名服务器
        2. 每个本地域名服务器和客户端相隔很近(几个路由器) -> 同一个局域网中
        3. 可以直接返回查询的域名对应的 IP 地址
    • 高速缓存:DNS 查询得到的映射关系存储在缓存中

      • 浏览器缓存:浏览器短时间内容会缓存 DNS 映射(Chrome 大约几分钟)
      • 操作系统缓存:客户端在开机后会从本地域名服务器中的缓存进行下载得到 DNS 映射(关机后缓存消失)
      • hosts 文件:文件形式存储 DNS 映射;可以在 hosts 文件中写死映射关系,如果写错很有可能打开不了网站
      • 本地域名服务器缓存
        1. 每次 DNS 查询后都会返回 DNS 映射,本地域名服务器都会进行缓存(大约几天)
        2. 存储的映射包括:==DNS 服务器的域名对应的 IP 地址==,==查询的域名的对应的 IP 地址==
    • 查找过程

      1. 浏览器==先解析 URL 地址== -> 得到需要访问的域名

      2. 浏览器==检查浏览器缓存==中是否存储该域名的 IP 地址:

      3. 浏览器==检查操作系统缓存==中是否存储该域名的 IP 地址

      4. 浏览器==检查 hosts 文件==中是否存储过该域名的 IP 地址

        如果上述缓存查询中都没有找到 IP 地址,浏览器会==调用 DNS 程序发送 DNS 请求==

      5. 本地域名服务器接收 DNS 请求

        • 检查高速缓存中是否存储对应的 IP 地址,如果存储过那么直接返回
        • 如果高速缓存中没有存储对应的 IP 地址,那么发送 DNS 请求给==根域名服务器==进行处理

        注:这里使用的是递归查询

      6. 根域名服务器接收 DNS 请求,返回给本地域名服务器==对应的顶级域名服务器的 IP 地址==(DNS 响应)

      7. 本地域名服务器再次向顶级域名服务器发送 DNS 请求

      8. 顶级域名服务器接收 DNS 请求,返回给本地域名服务器==对应的权威域名服务器的 IP 地址==

      9. 本地域名服务器再次向权威域名服务器发送 DNS 请求

      10. 权威域名服务器返回查询的域名对应的 IP 地址

      注:整个过程采用的迭代查询;DNS 查询过程是迭代和递归混合使用的

FTP 协议

  • 概念:提供不同种类主机系统之间==传输文件==的能力

  • 分类:

    • 文件传送协议 FTP
    • 简单文件传送协议 TFTP
  • 特点

    • 基于客户端/服务器(==C/S==)的传送方式
    • 基于 TCP 协议实现文件传输
  • 传输过程

    • 连接建立

      1. 登陆 FTP 服务器
        • 用户名 + 密码登陆
        • 匿名登录:部分公共 FTP 服务器访问的人数过大,不需要经过注册取得 FTP 服务器授权就可以直接进入 FTP 服务器下载文件
      2. FTP 服务器 ==主进程== 打开熟知端口 21,建立 TCP ==控制连接==

      注:主进程只有一个

    • 文件传输

      1. 控制连接建立后接收到 FTP 客户端下载文件的请求,打开==端口号==,建立 TCP ==数据连接==
      2. 数据连接建立后,FTP 服务器开始向 FTP 客户端传送文件
      3. 文件传送完毕后,==数据连接关闭==,==控制连接暂时不关闭==
      4. FTP 客户端如果需要继续下载文件,那么再次打开端口号,建立 TCP 数据连接进行传送
      5. FTP 客户端如果不需要再下载文件,那么关闭控制连接,即连接释放
    • 连接释放

    • 数据连接端口号:根据传输模式而定,主动方式采用端口号 20;被动方式端口号 > 1024,客户端和服务器协商决定

SMTP 协议

  • 概念:为==电子邮件系统==提供服务

  • 电子邮件系统

    • 组成:
      • 用户代理
        1. 提供用户阅读,回复,编写,保存邮件的功能
        2. 发送方和接收方都具有用户代理
      • 邮件服务器
        1. 提供==接收和发送邮件==的功能
        2. 发送方和接收方都具有邮件服务器
        3. 发送方的用户代理将邮件发送给发送方的邮件服务器
        4. 邮件服务器发送邮件==不成功==,向发送方用户代理==报告发送失败==
        5. 邮件服务器不是专属的,是多个用户==共享==的
      • 简单邮件传输协议(SMTP)
        1. SMTP 建立在 TCP 协议之上 -> ==端口号 25==
        2. SMTP 规定两个电子邮件系统之间如何交换信息
        3. SMTP 不会借助中间邮件服务器传递邮件 -> 两台邮件服务器是==直接连接==
        4. SMTP 采用 ASCII 7位比特编码 -> 不能够传送二进制数据文件或者音视频文件 -> 需要转码才能够进行发送
        5. SMTP 采用持续连接 -> 同一个 TCP 连接中可以传递多份邮件
        6. SMTP 细节
          • 连接建立:SMTP 客户端发送 HELLO 命令 -> SMTP 服务器返回 220 准备建立连接
          • 邮件传输:
            • SMTP 客户端发送 MAIL FROM + 发送方地址 -> SMTP 服务器返回 250 -> 能够接收邮件;不能够接收返回 421
            • SMTP 客户端发送 RCPT TO + 接收方地址 -> SMTP 服务器返回 250
            • SMTP 客户端发送 DATA (客户端准备发送数据)-> SMTP 返回 354 同意发送;让客户端发送 . 表示数据发送完成
            • SMTP 客户端发送 Date -> SMTP 服务器返回 250 接收完成
          • 连接释放:邮件发送完成 -> SMTP 客户端发送 QUIT 命令 -> SMTP 服务器返回 221 -> 断开连接
    • 发送过程:
      1. 发送方==用户代理==和发送方==邮件服务器==之间建立 TCP 连接
      2. 发送方采用 ==SMTP 协议==将邮件发送到发送方的邮件服务器
      3. 邮件到达邮件服务器后==在队列中等待==服务器发送
      4. 发送方邮件服务器和接收方邮件服务器之间==建立 TCP 连接==
      5. 发送方邮件服务器采用 ==SMTP 协议==发送邮件到接收方的邮件服务器
        • 如果发送成功,那么邮件保存在接收方的邮件服务器中,等待接收方用户代理采取 ==POP3 协议==读取邮件
        • 如果发送失败,那么发送方邮件服务器会再次尝试发送,如果多次尝试后仍然发送失败,那么会报告发送方用户代理
    • 图示:

    image-20210413173141269

POP3 协议

  • 概念:为用户代理获取邮件服务器中的邮件提供服务
  • 内容
    • POP3 建立在 TCP 协议之上 -> ==端口号 110==
    • POP3 细节
      1. 特许:用户代理登陆邮件服务器 -> 邮件服务器允许其获取邮件
      2. 事务处理:用户代理对邮件服务器中的邮件进行处理
        • 获取邮件后是否在邮件服务器中删除该邮件
      3. 更新:用户代理结束会话后执行删除操作

IMAP 协议

HTTP 协议

详情见 JavaWeb 笔记

网络应用模型

  • 客户端-服务器模型
    • 概念:
      • 客户端
      • 服务器
    • 优点
    • 缺点
  • P2P 模型
    • 概念:
    • 执行过程:
    • 优点
    • 缺点
    • 应用:BitTorrent
Author: Fuyusakaiori
Link: http://example.com/2021/09/09/network/应用层/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.