计网笔记-第二章:应用层

第二章-应用层 复习大纲

  • 网络应用程序体系结构
  • Web应用和HTTP协议
    • 基本术语(网页、URL等)
    • HTTP的特性及其区别(无状态、非持久和持久)
    • 请求和响应报文
    • cookie技术
    • Web缓存
  • 电子邮件:组成及其使用的协议
  • DNS的功能和实现

网络应用程序体系结构

网络应用程序体系结构定义了应用程序在网络上的部署和运行方式。常见的网络应用程序体系结构包括:

  1. 客户端-服务器模型
  • 客户端请求服务,服务器提供服务。
  • 例如,Web浏览器与Web服务器之间的关系。
  1. 三层架构
  • 分为表示层(客户端)、逻辑层(应用服务器)和数据层(数据库服务器)。
  • 提高了应用的可扩展性和维护性。
  1. 分布式架构
  • 应用程序的组件分布在多个网络节点上。
  • 常见于大规模的企业应用和云计算环境。
  1. 微服务架构
  • 应用程序由多个小的、独立部署的服务组成,每个服务实现特定功能。
  • 提高了灵活性和可维护性。

Web应用和HTTP协议

基本术语
  • 网页(Web Page):通过Web浏览器访问的文档,通常使用HTML、CSS和JavaScript编写。
  • URL(Uniform Resource Locator):统一资源定位符,用于定位互联网上的资源。例如,https://www.example.com/index.html
HTTP的特性及其区别
  • 无状态(Stateless)
  • 每个HTTP请求都是独立的,服务器不会保留之前请求的状态。
  • 非持久连接(Non-Persistent Connection)
  • 每次请求/响应后,连接即关闭。
  • 需要多个连接来请求多个资源。
  • 持久连接(Persistent Connection)
  • 一个TCP连接可以用于多个请求/响应对,减少了建立和关闭连接的开销。
请求和响应报文
  • HTTP请求报文

  • 包括请求行(方法、URL、HTTP版本)、头部(Headers)和可选的消息体(Body)。

  • 示例:

    GET /index.html HTTP/1.1
    Host: www.example.com
    
  • HTTP响应报文

  • 包括状态行(HTTP版本、状态码、状态描述)、头部(Headers)和可选的消息体(Body)。

  • 示例:

    HTTP/1.1 200 OK
    Content-Type: text/html
    Content-Length: 1234
    
Cookie技术
  • Cookie

  • 由服务器发送到客户端的小数据文件,用于存储会话信息。

  • 通过HTTP头部Set-Cookie设置,客户端在后续请求中通过Cookie头部发送回服务器。

  • 示例:

    Set-Cookie: sessionId=abc123; Path=/; HttpOnly
    
Web缓存
  • Web缓存
  • 存储经常访问的网页内容以减少服务器负担和提高访问速度。
  • 缓存控制
    • 通过HTTP头部Cache-ControlExpires控制缓存行为。
    • 条件GET请求(If-Modified-Since、If-None-Match)用于验证缓存资源是否仍然有效。

电子邮件:组成及其使用的协议

  • 电子邮件组成
  • 邮件头:包含发件人、收件人、主题等信息。
  • 邮件体:邮件的实际内容。
  • 附件:可以包含多种格式的文件。
  • 使用的协议
  • SMTP(Simple Mail Transfer Protocol):用于发送邮件。通常在端口25或465(加密连接)上运行。
  • POP3(Post Office Protocol version 3):用于从邮件服务器下载邮件。通常在端口110或995(加密连接)上运行。
  • IMAP(Internet Message Access Protocol):用于在服务器上管理和同步邮件。通常在端口143或993(加密连接)上运行。

DNS的功能和实现

DNS的功能
  1. 域名解析
  • 将域名转换为IP地址,便于网络设备之间通信。
  1. 负载均衡
  • 通过返回多个IP地址来分配网络流量,提高服务的可用性。
  1. 域名注册与管理
  • 域名注册机构管理顶级域名的注册和分配。
  1. 缓存功能
  • 缓存解析结果以减少重复查询和提高解析效率。
  1. 安全性
  • 通过DNSSEC(DNS Security Extensions)提供数据完整性和来源验证。
DNS的实现
  • 层次结构
  • 根域名服务器:管理顶级域(如.com、.org)。
  • 顶级域名服务器(TLD):管理特定顶级域下的域名(如example.com)。
  • 权威域名服务器:存储特定域名的实际IP地址。
  • 本地域名服务器:缓存和解析局域网内的DNS请求。
  • DNS查询过程
  1. 用户输入域名。
  2. 本地域名服务器检查缓存。
  3. 若未命中缓存,向根域名服务器查询。
  4. 根域名服务器指向相应的TLD服务器。
  5. TLD服务器指向权威域名服务器。
  6. 权威域名服务器返回IP地址,本地域名服务器缓存结果并返回给用户设备。
  • 常见记录类型
  • A记录:将域名映射到IPv4地址。
  • AAAA记录:将域名映射到IPv6地址。
  • CNAME记录:将一个域名别名映射到另一个域名。
  • MX记录:指定邮件服务器。
  • TXT记录:存储任意文本数据,如SPF记录。

通过以上这些功能和实现,DNS系统确保了互联网的正常运作,使用户能够通过域名访问网络资源,并提供负载均衡、安全和缓存等多种高级功能。

2.1 应用层协议原理

  • 网络应用程序体系结构

    • C/S体系结构(客户机/服务器体系结构)

      • 服务器:
        1. 总是打开的主机
        2. 具有固定的、众所周知的IP地址
        3. 主机集群(cluster)常被用于创建强大的虚拟服务器
      • 客户机:
        1. 同服务器端通信
        2. 可以间断地同服务器连接
        3. 可以拥有动态IP地址
        4. 客户机相互之间不直接通信
    • P2P体系结构

      • 特点:
        1. 没有总是打开的服务器
        2. 任意一对主机直接相互通信
        3. 对等方(peer,即参与网络的各个节点)间歇连接并且可以改变IP地址
      • 优点:自拓展性、自主平等、资源共享(如带宽、存储空间、算力)、分布式架构(无单点故障)、去中心化
      • 缺点:难以管理(安全性)、资源分配不均衡、搜索查找效率低
    • 以上二者混合的体系结构

      • Napster
        1. 文件在对等方之间交换
        2. 中心服务器记录对等方内容,文件搜索通过服务器
      • 即时讯息
        1. 两个聊天用户之间是P2P
        2. 注册、查询通过服务器
        3. 用户上线时要在中心服务器上注册,用户与中心服务器联系以找出在线伙伴
  • 进程通信

    • 同一主机上的两个进程通过内部进程通信机制进行通信

    • 不同主机上的进程通过 交换报文 相互通信

      • 客户进程:发起通信的进程
      • 服务器进程:等待联系的进程
    • 注:具有P2P体系结构的应用程序既有客户进程,也有服务器进程

  • 进程与计算机网络的接口—— 套接字

    • 进程通过其套接字在网络上发送和接收报文(可以将 套接字 类比为 大门)

    • 套接字又叫做 API(应用程序编程接口)

      • 用户通过API对传输层的控制仅限于:
        1. 选择传输协议;
        2. 能设定几个参数

    在这里插入图片描述

  • 进程寻址

    • 进程为了能接收报文,他需要一个标识:

      • 主机的IP地址足够标识进程吗?——不能,因为一台主机上可能有多个进程
    • 主机上的进程标识—— IP地址+端口号

      常用端口号:

      1. Web服务:80
      2. 发送邮件:25
      3. 接收邮件:10
      4. HTTPS:443
  • 应用层协议

    • 分类:
      • 公共领域协议:由RFC文档定义,可供大家使用。如HTTP,SMTP。
      • 专用协议:如KaZaA,Skype
    • 服务要求:数据丢失率?时延?带宽和吞吐量?安全?
  • 因特网运输协议提供的服务

    • TCP服务
    • UDP服务

TCP(Transmission Control Protocol)

特点

  1. 面向连接:TCP是一种面向连接的协议,通信双方在传输数据前必须先建立连接(通过三次握手)。
  2. 可靠传输:TCP提供可靠的数据传输服务,确保数据包按序到达,并且没有重复或丢失。如果数据包丢失,TCP会进行重传。
  3. 流量控制:TCP通过滑动窗口机制进行流量控制,防止发送方发送数据过快而使接收方无法处理。
  4. 拥塞控制:TCP具有拥塞控制机制,可以动态调整数据传输速率,以避免网络拥塞。
  5. 数据完整性:TCP使用校验和(checksum)来确保数据在传输过程中没有被损坏。

应用场景

  • 网页浏览:HTTP/HTTPS协议基于TCP。
  • 文件传输:FTP协议基于TCP。
  • 电子邮件:SMTP协议基于TCP。
  • 远程登录:SSH和Telnet协议基于TCP。

UDP(User Datagram Protocol)

特点

  1. 无连接:UDP是一种无连接的协议,数据在传输前不需要建立连接,数据包独立发送。
  2. 不保证可靠性:UDP不提供可靠传输服务,数据包可能会丢失、重复或乱序到达。
  3. 无流量控制和拥塞控制:UDP没有流量控制和拥塞控制机制,数据传输速率不受限制。
  4. 低开销:UDP头部较简单,开销较小,适合对延迟敏感的应用。

应用场景

  • 实时应用:视频会议、VoIP(网络电话)等对延迟敏感但允许少量数据丢失的应用。
  • 广播和组播:UDP支持广播和组播,适用于多点传输。
  • 在线游戏:一些实时在线游戏使用UDP来减少延迟。

对比总结

  • 连接性:TCP是面向连接的,UDP是无连接的。
  • 可靠性:TCP提供可靠传输,UDP不保证可靠性。
  • 流量控制:TCP有流量控制,UDP没有。
  • 延迟:UDP延迟较低,适合实时应用;TCP延迟较高,因为需要保证可靠性。
  • 应用场景:TCP适用于需要可靠传输的数据,如网页浏览、文件传输;UDP适用于实时应用和多点传输,如视频会议、在线游戏。

2.2 Web应用和HTTP协议

  • 网页(Web页,或称文档)由许多对象(即文件,如HTML文件、JPEG图像、音频…)组成

    • 多数网页由单个基本 HTML网页+若干引用的对象构成

    • 每个对象被一个 URL(Uniform Resource Locator)寻址

      举例:http://www.someschool.edu/someDept/pic.gif

      其中,http是协议;www.someschool.edu是主机名;someDept/pic.gif是路径名

  • HTTP(HyperText Transfer Protocol)

    • Web的应用层协议
    • C/S模式
      • client:浏览器请求,接收,解释显示 Web 对象
      • server:Web 服务器响应请求,发送 Web 对象
    • 使用TCP:
      • 客户初始化一个与HTTP服务器80端口的TCP连接(创建套接字)
      • HTTP服务器接受来自客户的TCP连接请求,建立连接
      • HTTP client(Browser)和HTTP server(Web服务器)交换HTTP消息(应用层协议消息),包括HTTP请求和响应消息
      • 最后结束TCP连接
    • HTTP是无状态协议(HTTP不维护客户先前的状态信息)
    • HTTP连接分类:
      • 非持久HTTP连接:每个TCP连接只传送一个对象
      • 持久HTTP连接:一个TCP连接上可以传送多个对象
  • 非持久HTTP连接的响应时间模型

    • 往返时间RTT(Round-Trip Time):1个小分组从客户主机到服务器再到客户主机所花费的时间

    • 响应时间= 2*RTT + transmit time

      • 1个RTT用于建立TCP连接

      • 1个RTT用于HTTP请求/响应消息的交互

      • html文件传输时间

在这里插入图片描述

  • 持久HTTP连接:服务器发送响应消息后保持连接

    • 非持久的问题:
      • 每个对象需要2个RTT
      • OS必须为每个TCP连接分配主机资源
      • 大量客户的并发TCP连接形成服务器的严重负担
    • 分类:
      • 不带流水线的持久HTTP连接:客户收到前一个响应消息再发出新的请求消息,每次引用对象经历1个RTT
      • 带流水线的持久HTTP连接:客户遇到1个引用对象就发送请求消息,所有引用对象只经历1个RTT
  • HTTP/2:减缓HOL阻塞(减少多对象HTTP请求的延迟)

    • HTTP1.1:在单个TCP连接上引入了多个流水线GET,服务器按顺序响应GET请求(FCFS)

      • 导致的问题:由于FCFS,小对象可能在大对象后面等待传输(HOL,head-of-line blocking,线头阻塞)
      • 丢失回复(重新传输丢失的TCP段)对对象传输时间的影响
    • HTTP/2:增加了 服务器向客户端发送对象的灵活性。

      • 基于 客户端指定的优先级 的请求对象的传输顺序(所以就不一定是FCFS)
      • 将未请求的对象推送到客户端
      • 将对象划分为框架,安排框架以减少HOL阻塞
    • 对比图如下:

      在这里插入图片描述

  • HTTP/3:采用基于 UDP 的 QUIC 协议(Quick UDP Internet Connection)

    • HTTP/2通过单个TCP连接——如果要从数据包丢失中恢复,仍然要暂停所有对象的传输!

      并且普通 TCP 连接没有安全性

    • 优点:

      • 更快的连接建立、传输速率
      • 更好的拥塞控制和丢包恢复性能
      • 彻底消除队头阻塞
      • 更高的安全性
  • HTTP报文格式:

    • 请求报文格式:

      GET /index.html HTTP/1.1  // 请求行
      Host: www.example.com     // 以下四行为头部行
      User-Agent: Mozilla/5.0   // 该代理类型的对象版本
      Connection:Close		  // 不使用持久连接
      Accept-language:zh-cn
      
    • 响应消息格式:

      HTTP/1.1 200 OK
      Content-Type: text/html
      Content-Length: 137
      
      <html>
      <head>
      <title>Example</title>
      </head>
      <body>
      <h1>Hello, World!</h1>
      </body>
      </html>
      

      HTTP响应的状态码:

      200 OK;301 请求对象已永久迁移,本响应消息的头部会指出新的URL;

      400 该请求无法被服务器解读;404 Not Found;505 HTTP版本不支持

  • Cookies:跟踪用户

在这里插入图片描述

  • 4个重要方面:

    • cookie头部行在HTTP请求消息中,也在HTTP响应消息中
    • cookie文件保存在用户主机中,被用户浏览器管理;也保存在Web站点的后端DB
  • 作用:

    • 身份认证、用户会话状态
    • 购物车、推荐广告
  • Web缓存(代理服务器)

    • 代理服务器 代表 起始服务器,满足HTTP请求

在这里插入图片描述

  • 所有HTTP请求指向缓存(用户的Web访问经由缓存):

    • 若对象在缓存中,缓存器返回对象;否则,缓存器向起始服务器发出请求,接收到请求后再转发给客户机。
  • 缓存器既是服务器又是客户机,典型的缓存器由 ISP 提供

  • 作用:

    • 减少客户机请求的响应时间
    • 减少内部网络与接入链路上的通信量
    • 能从整体上大大降低因特网的Web流量
  • 降低时延的方法:

    • 方法1:增加介入链路的速率——成本高

    • 方法2:安装缓存器

在这里插入图片描述

  • 条件 GET 方法:一种减少网络带宽消耗和提高响应速度的机制

    允许客户端(通常是浏览器或缓存代理)在发送HTTP GET请求时附带某些条件,如果这些条件满足,服务器才会返回资源;如果不满足,服务器则返回一个状态码(通常是304 Not Modified),指示资源没有变化,客户端可以继续使用缓存中的版本。

    客户端在请求头中包含此字段,并附带一个日期时间值。服务器比较请求的资源的最后修改时间(Last-Modified)和这个时间值,如果资源在此时间后没有修改,则返回304状态码。

    例如:

    yaml复制代码GET /index.html HTTP/1.1
    Host: www.example.com
    If-Modified-Since: Tue, 08 Jun 2021 10:18:14 GMT
    

2.3 文件传输协议 FTP (了解 = 不考)

2.4 因特网中的电子邮件 SMTP,POP3,IMAP

  • 电子邮件

    • 三个主要组成部分:
      • 用户代理:允许用户阅读、回复、转发、保存、编辑邮件信息
      • 邮件服务器
      • 简单邮件传送协议(SMTP)和邮件接收协议
  • SMTP(Simple Mail Transfer Protocol)

    • 客户使用TCP来可靠传输邮件信息到服务器端口号25

    • 三个部分:

      • 邮件头
      • 空行
      • 正文
    • 传输的3个阶段:

      • 握手(问候)
      • 传输邮件信息
      • 结束

      例子:A 发邮件给 B

      1. A 使用用户代理编写邮件信息给 B@qq.com
      2. A 的用户代理发送邮件信息到她的邮件服务器,邮件消息存放再邮件消息队列
      3. A 邮件服务器的 SMTP 客户端发起建立一个到 B 的邮件服务器的 SMTP 服务器端的 TCP 连接,经过应用层握手
      4. SMTP 客户在这个 TCP 连接上发送 A 的邮件消息
      5. B 服务器存放邮件消息存到 B 的邮箱
      6. B 调用他的用户代理读邮件消息

      如下图:2和4采用了SMTP,6采用邮件访问协议(如POP,IMAP)

      在这里插入图片描述

    • 邮件访问协议:从服务器获取邮件消息

      • POP(Post Office Protocol),110端口号

      • IMAP(Internet Message Access Protocol),143端口,更复杂

        对比分析 POP3 和 IMAP:

        存储位置

        • POP3:邮件通常存储在本地设备。
        • IMAP:邮件存储在服务器上,设备之间同步。

        功能和灵活性

        • POP3:功能简单,适合单一设备使用,不支持邮件同步。
        • IMAP:功能丰富,支持多设备同步,适合需要在多个设备之间访问和管理邮件的用户。

        适用性

        • POP3:适合需要将邮件下载到本地并离线阅读的用户。会话是无状态的。
        • IMAP:适合需要在多个设备之间同步邮件和状态的用户。跟踪用户会话状态信息。
    • 特点:

      • SMTP 使用持久连接
      • SMTP 要求邮件消息(header & body)必须是 7-bit ASCII
      • SMTP 服务器使用 CRLF.CRLF 来判断邮件消息的结束

2.5 DNS:因特网的目录服务

  • DNS(Domain Name System)

    • 功能:

      • 域名解析——域名到IP地址的转换

      • 负载均衡——可以通过设置多个IP地址来实现负载均衡,将用户请求分发到不同的服务器上

      • 管理域名——创建、更新、删除

      • 分布式系统——每一层负责管理不同层次的域名信息,提升了系统的可扩展性和可靠性

        不用集中式 DNS,避免单点故障、巨大访问量,同时便于维护

      • 缓存功能——缓存解析过的域名和对应的IP地址,以减少重复查询。缓存时间由 TTL(Time To Live)字段控制

    在这里插入图片描述

    >问:客户机怎样决定 主机名 www.amazon.com 的 IP 地址?
    >
    >1. 查询根服务器,得到com DNS服务器
    >2. 查询com DNS服务器得到amazon.com DNS服务器
    >3. 查询amazon.com DNS服务器得到www.amazon.com 的IP地址
    
  • DNS 查询方法:

    • 方法1:递归查询

      • 名字解析的负担交给被查询的名字服务器

    在这里插入图片描述

    • 方法2:迭代查询

      • 被查询的名字服务器 回复可以被查询的名字服务器的IP地址

        “我不知道它的名字,但是你可以问服务器xx”

    在这里插入图片描述

  • DNS记录

    • 一旦名字服务器获得DNS映射,它将缓存该映射到局部内存(一定时间后丢弃),即本地DNS服务器可以缓存TLD(Top-Level Domain)
    • 存储资源记录(RR,Resource Records)的分布式数据库
      • 格式:(name,value,type,ttl)
  • DNS协议:分为 查询报文 与 应答报文,二者有相同的报文格式:

在这里插入图片描述

  • DNS攻击:

    • DDoS攻击:对根域名服务器或顶级域名服务器发起拒绝服务攻击
    • 重定向攻击:发送欺骗的域名解析结果给DNS服务器
    • DNS reflector attacks:伪造客户地址向大量的dns服务器发出请求,导致客户无法访问dns服务器进行域名解析
    • 常见的攻击方法
      • 本机Host文件被篡改
      • DNS劫持
      • DNS污染

2.6 P2P(了解 = 不考)

2.7 内容分发网络(CDN)

  • 如何从海量视频中,挑选出某些内容,采用流的方式发送给成千上万的用户?

    • 选项1:单点、庞大的服务器——单点故障、单点网络阻塞、远距离用户访问路径长、输出链路上发送同一视频的多份重复拷贝

      不具有可拓展性

    • 选项2:将多分拷贝存储在地理上分散的不同站点来提供服务(CDN)

      • 优先选最近的,若网络路径拥塞则可能选择其他拷贝

2.8 构造一个简单的Web服务器

参考实验

第二章小结:

  • 应用程序体系结构
    • C/S
    • P2P
    • 混合
  • 应用服务器需要的服务
    • 可靠、带宽、时延
  • 网络运输层协议
    • TCP:面向连接,可靠
    • UDP:速度快,不可靠
  • 通用协议:
    • HTTP
    • FTP
    • SMTP,POP,IMAP
    • DNS
  • 应用层协议(重点)
  • 典型的请求/应答消息交换
    • 客户请求消息或服务
    • 服务器以数据or状态码应答
  • 消息格式
    • 头部
    • 数据

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-06-12 17:10:05       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-12 17:10:05       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-12 17:10:05       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-12 17:10:05       18 阅读

热门阅读

  1. Spring Boot 面试热点(一)

    2024-06-12 17:10:05       8 阅读
  2. 初识Docker

    2024-06-12 17:10:05       5 阅读
  3. 记录一个apisix修改后台接口超时时间的方法

    2024-06-12 17:10:05       6 阅读
  4. YOLOv10改进|采用ADown降采样模块有效融合

    2024-06-12 17:10:05       4 阅读
  5. YOLO v5与YOLO v8框图比较

    2024-06-12 17:10:05       9 阅读
  6. 2024年,计算机相关专业还值得选择吗?

    2024-06-12 17:10:05       8 阅读
  7. 22.正则化

    2024-06-12 17:10:05       3 阅读
  8. 一些常用的git指令总结

    2024-06-12 17:10:05       7 阅读