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

第二章-应用层 复习大纲

  • 网络应用程序体系结构
  • 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状态码。

    例如:

    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状态码应答
  • 消息格式
    • 头部
    • 数据
相关推荐
烟锁迷城26 分钟前
软考中级 软件设计师 第一章 第十节 可靠性
笔记
胡楚昊27 分钟前
B站pwn教程笔记-1
笔记
Themberfue27 分钟前
UDP/TCP ⑤-KCP || QUIC || 应用场景
网络·网络协议·tcp/ip·计算机网络·udp
路溪非溪1 小时前
计算机网络三张表(ARP表、MAC表、路由表)总结
网络·计算机网络·macos
IT 青年1 小时前
计算机网络 (60)蜂窝移动通信网
计算机网络
Nydia.J5 小时前
【学习笔记】计算机网络(一)
计算机网络·考研
Bunny02126 小时前
SpringMVC笔记
java·redis·笔记
路溪非溪11 小时前
计算机网络之物理层
计算机网络
路溪非溪12 小时前
计算机网络之应用层
计算机网络
贾贾202312 小时前
配电网的自动化和智能化水平介绍
运维·笔记·科技·自动化·能源·制造·智能硬件