【计算机网络自顶向下】如何学好计网-第二章应用层

news2024/12/26 12:04:06

第二章 应用层

应用层协议原理

image-20230613100610004

网络应用程序体系结构

  • 客户机/服务器体系结构:至少有一个服务器,一个客户机,其中服务器总是打开的,具有固定的众所周知的IP地址,主机群集常被用于创建强大的虚拟服务器,而客户机向服务器端进行通信,可以间断的同服务器连接,可以拥有动态的IP地址,客户机相互之间不直接通信
  • P2P体系结构:没有总是打开的服务器,任意一对主机直接相互通信,对等方间歇连接并且可以改变IP地址
    • 优点:自扩展性
    • 缺点:难以管理
  • 客户机/服务器和P2P混合的体系结构:文件直接在对等方之间交换,文件搜索通过服务器,中心服务器记录对等方内容,对等方查询中心服务器来决定要求文件位置,两个聊天用户之间是P2P,注册查询时通过服务器,用户上线时要在中心服务器上进行注册,用户与中心服务器联系以找出在线小伙伴,git配合上共享服务器就能实现该种方式

进程通信

  • 进程:运行在端系统中的程序
  • 同一主机上的两个进程通过内部进程通信机制进行通信
  • 不同主机上的进程通过交换报文相互通信
    • 客户进程: 发起通信的进程
    • 服务器进程: 等待联系的进程
  • 寻址通过IP地址和端口号

注意:具有P2P体系结构的应用程序既有客户进程和服务器进程。

image-20230613100931875

应用层协议

  • 交换的报文类型,如请求报文和应答报文
  • 报文类型的语法:报文中的各个字段及其详细描述
  • 字段的语义,即包含在字段中的信息的含义
  • 进程何时、如何发送报文及对报文进行响应

因特网传输协议提供的服务

  • TCP服务

    • 面向连接的服务:在客户机程序和服务器程序之间必须建立连接
    • 可靠的传输服务:接收和发送进程间,数据是可靠的
    • 流量控制:发送方不会淹没接收方
    • 拥塞控制:网络出现拥塞时抑制发送进程
    • 没有提供:时延保证,最小带宽保证
  • UDP服务

    • 无连接服务
    • 不可靠数据传输
    • 没有提供:建立连接,可靠性,流量控制,拥塞控制,时延和带宽保证

面向连接是指:必须在建立连接之前确认双方链路可达,并已准备好才开始通信,提供了可靠或者不可靠的服务

无连接指:发送端在开始通信前不去询问接收端是否可达和是否已准备好数据,提供不可靠的服务

应用应用层协议下面的传输协议
电子邮件SMTP [RFC 28c21]TCP
远程终端访问Telnet [RFC 854]TCP
WebHTTP [RFC 2616]TCP
文件传输FTP [RFC 959]TCP
流媒体通常专用(e.g. RealNetworks)TCP or UDP
因特网电话通常专用(e.g., Skype)典型用 UDP

  • TCP和UDP
    • 没有加密
    • 网络明文传输,如用户名和口令信息等
  • SSL【应用层】
    • 提供加密的TCP连接
    • 保证数据完整性
    • 端点认证
    • 应用使用SSL库调用TCP服务接口
    • SSL提供套接字API

Web应用和Http协议

  • 网页(Web页,或称文档)由许多对象组成。
  • 对象就是文件,可以是HTML文件, JPEG图像, Java applet, 音频文件…
  • 多数网页由单个基本HTML文件和若干个所引用的对象构成
  • 每个对象被一个URL(Uniform Resource Locator统一资源定位符)寻址
    举例URL:

image-20230613101736572

  • HTTP: 超文本传输协议(HyperText Transfer Protocol)

    • Web的应用层协议
    • client/server模式
      • client: 浏览器browser请求, 接收, “解释显示” Web对象
      • server: Web服务器响应请求,发送 Web对象
    • HTTP 1.0: RFC 1945
    • HTTP 1.1: RFC 2616
  • 使用TCP:

    • 客户初始化一个与HTTP服务器80端口的TCP连接 (创建套接字)
    • HTTP服务器接受来自客户的TCP连接请求, 建立连接
    • Browser (HTTP client)和Web服务器 (HTTP server) 交换HTTP消息(应用层协议消息)包括HTTP请求和响应消息
    • 最后结束(或叫关闭)TCP连接
  • HTTP是无状态协议

  • HTTP服务器不维护客户先前的状态信息

非持续连接和持续连接

  • 非持久HTTP连接

    • 每个TCP连接上只传送一个对象,下载多个对象需要建立多个TCP连接
    • HTTP/1.0使用的是非持久HTTP连接
  • 持久HTTP连接

    • 一个TCP连接上可以传送多个对象
    • HTTP/1.1默认使用持久HTTP连接
    • 不带流水的持久HTTP连接:客户必须收到响应才能继续发送请求,也就说多个资源之间不能够并发
    • 带流水的持久HTTP连接:客户可以在收到响应之前发送新的请求,多个请求可以同时发送,只需要一个RTT就能获得所有资源
  • 定义往返时间RTT(Round-Trip Time):
    • 1个小分组从客户主机到服务器再到客户主机所花费的时间
  • 响应时间:
    • 1个RTT用于建立TCP连接
    • 1个RTT用于HTTP请求/响应消息的交互
    • html文件传输时间
  • total = 2RTT+transmit time
image-20230613102129398

HTTP/2

  • 关键目标:减少多对象HTTP请求的延迟
    • HTTP1.1:在单个TCP连接上引入了多个流水线GET
    • 服务器按顺序响应GET请求(FCFS: first-come-first-served scheduling)
    • 对于FCFS,小对象可能必须在大对象后面等待传输( head-of-line (HOL) blocking, 线头阻塞HOL)
    • 丢失恢复(重新传输丢失的TCP段)对对象传输时间的影响
    • HTTP/2:[RFC 7540,2015]增加了服务器向客户端发送对象的灵活性
    • 方法、状态代码、大多数头字段与HTTP1.1相比没有变化
    • 基于客户端指定的对象优先级的请求对象的传输顺序(不一定是FCFS)
    • 将未请求的对象推送到客户端
    • 将对象划分为框架,安排框架以减少HOL阻塞

image-20230613104237180

image-20230613104240709

  • 普通TCP连接没有安全性
  • HTTP/3:通过UDP增加了安全性、每个对象的错误和拥塞控制(更多的流水线操作)
  • 关于传输层支持HTTP/3的更多信息: QUIC协议(Quick UDP Internet Connections)

HTTP报文格式

请求报文格式

image-20230613104328886

image-20230613104406002

请求方法类型

  • GET
  • POST
  • HEAD
    • 服务器收到请求时,用HTTP报文进行响应,但不返回请求对象
  • HTTP1.1
    • PUT
      • 文件在实体主体中被上载到URL字段指定的路径
    • DELETE
      • 删除URL字段指定的文件

响应报文格式

image-20230613104525836

HTTP 响应的状态码

位于服务器响应客户的响应消息的第一行
几个常见的样本状态码:

  • 200:请求成功,所请求信息在响应消息中返回
  • 301:所请求的对象已永久迁移,新的URL在本响应信息的头部指出
  • 400:该请求不能被服务器解读
  • 404:服务器不存在所请求文档

Cookies

目的:提高用户和服务的交互性

  • cookie头部行在HTTP请求消息中
  • cookie头部行在HTTP响应消息中
  • cookie文件保存在用户主机中并被用户浏览器管理
  • cookie信息也保存在Web站点的后端数据库中

cookies可以跟踪用户:例如虚拟购物车,推荐广告,身份认证,用户会话状态

Web缓存

  • 目标: 代表起始服务器满足HTTP请求

  • 用户配置浏览器: Web 访问经由缓存

  • 所有HTTP请求指向缓存

    • 对象在缓存中:缓存器返回对象
    • 否则缓存器向起始服务器发出请求,接收对象后转发给客户机
  • 减少对客户机请求的响应时间

  • 减少内部网络与接入链路上的通信量

  • 能从整体上大大降低因特网的Web流量

条件GET方法:

  • 用于判断缓存是否为最新的版本,在请求中包含if-modified-since:根据响应报文的内容判断缓存是否为最新的
  • 如果是最新的,响应报文中不会含有请求的对象,会包含:HTTP/1.0 304Not Modified表示缓存是最新版本
  • 如果修改过,则会返回正常请求的对象

文件传输协议:FTP

FTP:传输文件到远程主机/从远程主机下载文件,默认端口号21

FTP的工作流程:

  • 客户首先发起建立一个与服务器21端口之间的TCP连接(控制连接)
  • 客户在控制连接上进行身份认证
  • 客户在控制连接上发送命令浏览远程主机目录
  • 当服务器接收到一个文件传输命令时,他使用端口20创建一个与客户的TCP数据连接
  • 传输一个文件后,服务器结束这个连接,因为FTP是带外发送控制信息,也就是说如果要请求其他的文件会建立新的TCP连接,因为FTP传输的单位是文件,所以传输多个文件时会创建多个TCP连接这是低效的,推荐打包后传送

image-20230613105630220

FTP数据连接的建立的方式:

  • 主动模式客户端指定地址和端口):
    • 客户端通过发送PORT命令来指定IP地址和端口号
    • 服务器根据PORT命令的端口号和地址来建立连接
  • 被动模式服务器指定地址和端口):
    • 客户端发送PASV命令
    • 服务器返回监听的地址和端口号
    • 客户端发起数据连接

SMTP

电子邮件的三大组成

  • 用户代理:运行在客户端的软件或者Web网页,允许用户对邮件进行相关操作(发送,转发等)
  • 邮件服务器:存放用户邮件的服务器,邮件之间的发送通过邮件服务器通信来完成
  • 邮件协议:邮件的发送协议,邮件的收取协议,采用标准的7位ASCII码

SMTP

  • 用来交换邮件消息的协议
  • 客户使用TCP来可靠传输邮件消息到服务器端口号25
  • 直接传送: 发送服务器到接收服务器
  • 传输的3个阶段
    • 握手 (问候)
    • 邮件消息的传输
    • 结束
  • 命令/应答的交互
    • 命令: ASCII文本格式
    • 应答: 状态码及其短语
  • 邮件消息必须是7-bit ASCII

image-20230613105954332

image-20230613110024701

SMTP: 总结

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

与HTTP的比较:

  • HTTP: 拉协议
  • SMTP: 推协议
  • 都有ASCII 命令/应答交互, 状态码
  • HTTP: 每个对象封装在它各自的HTTP响应消息中发送
  • SMTP: 一个邮件内各个对象置于同一个邮件消息的多目部分发送

邮件访问协议

  • SMTP: 递送/存储邮件消息到接收者邮件服务器
  • 邮件访问协议: 从服务器获取邮件消息
    • POP: Post Office Protocol 邮局协议[RFC 1939]110端口号
      • 身份认证 (代理 <–>服务器) 并 下载邮件消息
      • 包含三个阶段:
      • 授权,事务处理,更新,POP是没有状态的,当断开连接之后,需要重新登录
    • IMAP: Internet Message Access Protocol [RFC 3501] 143端口
      • 更多功能特征 (更复杂!)
      • 允许用户像对待本地邮箱那样操纵远程邮箱的邮件
    • HTTP: 也可以通过HTTP来进行邮件的接收

POP3协议

image-20230613110723752

image-20230613110733317

DNS

DNS: 存储资源记录(RR,Resource Records)的分布式数据库

DNS的出现是为了方便人们记忆网站的地址,IP地址难以记忆,可以转换为其他的字符串例如转换为uestc.edu.cn

DNS主要提供的功能:

  • 主机名到IP地址的转换
  • 主机别名
    • 一个主机可以有一个规范主机名和多个主机别名
  • 邮件服务器别名
  • 负载分配
    • DNS实现冗余服务器:一个IP地址集合可以对应同一个规范主机名

DNS的分层架构【Domain Name System】域名系统:

  • 分布式数据库:一个由分层DNS服务器实现的分布式数据库
  • 应用层协议:DNS服务器实现域名转换 (域名/地址转换)

image-20230613111315934

客户机怎样决定主机名www.amazon.com的IP地址?

  1. 客户机查询根服务器得到com DNS服务器

  2. 客户机查询com DNS服务器得到amazon.comDNS服务

  3. 客户机查询amazon.comDNS服务器得到www.amazon.com的IP地址

根名字服务器负责记录顶级域名服务器的信息

顶级域服务器(top-level domain servers):负责顶级域名 com, org, net, edu, etc, 和所有国家的顶级域名 uk, fr, ca, jp.

  • Network solutions 公司维护com顶级域的TLD服务器
  • Educause 公司维护edu顶级域的 TLD服务器

权威DNS服务器(authoritative DNS servers):

在因特网上具有公共可访问主机(如Web服务器和邮件服务器)的每个组织机构必须提供公共可访问的DNS记录,这些记录将这些主机的名字映射为IP地址。组织机构的权威DNS服务器负责保存这些DNS记录。

  • 多数大学和公司维护它们的基本权威DNS服务器

本地DNS服务器:Local DNS Name Server

  • 严格来说不属于层次架构
  • 每个ISP都有一个本地DNS服务器,也叫默认服务器
  • 当主机发出DNS请求时,该请求被发往本地DNS服务器,起着代理的作用,转发请求到层次结构中

image-20230613111647881

image-20230613111712500

image-20230613111733874

DNS存储资源记录(RR:Resource Records)

RR格式(name,value,type,ttl)

当type=A(Address)时,name表示主机名,value表示ip地址

当type=CNAME(canonical)时,name表示主机别名,value表示规范主机名

当type=NS(name server)时,name表示域名,value表示权威名字服务器的主机名

当type=MX(Mail Exchange)时,name表示邮件服务器的主机别名,value表示邮件服务器的真实规范主机名


DNS协议 : 查询报文与应答报文 , 但具有同样的报文格式

image-20230613112109390

image-20230613112507408

image-20230613112552315

P2P技术

  • 没有总是在线的服务器
  • 任意端系统之间直接通信
  • 对等方之间可以间断连接并可以改变IP地址

一般采用集中式目录架构:例如git+github

image-20230613112753952

存在问题

  • 单点故障
  • 性能瓶颈
  • 侵犯版权

BitTorrent是一种用于文件分发的流行P2P协议。
参与一个特定文件分发的所有对等方的集合被称为一个洪流(torrent)。
一个洪流中的对等方彼此下载等长度的文件块(chunk),典型块长度为256KB。

image-20230613113112329

内容分发网络(CDN)

  • 将多份拷贝存储在地理上分散的不同站点来提供服务(CDN)
  • 深入: 将CDN服务器部署在众多的接入网络中
    • 靠近用户
    • Akamai首创, 使用了1700多个位置
  • 邀请做客: 在少量(例如10个)靠近接入网的关键位置(例如IXP)建造大集群,邀请到ISP做客
    • Limelight等使用

image-20230613113242784

image-20230613113257676

网络应用程序体系结构
Web应用和HTTP协议
基本术语(网页、URL等)
HTTP的特性及其区别(无状态、非持久和持久等)
请求和响应报文
COOKIE技术
Web缓存

文件传输协议FTP :两种连接*

  • 数据连接、控制连接

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

  • SMTP
  • POP
  • IMPA
  • HTTP

DNS的功能和实现
P2P文件共享原理和实现技术*
CDN
构造简单的web服务器*

第二章单元检测

image-20230613113713751

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/653978.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenCV 笔记_1

笔记_1 文章目录 笔记_1Mat类数据类型读取Mat类支持的运算图像读取&#xff0c;显示&#xff0c;保存imread 图像读取namedWindow 创建要显示的窗口imshow 窗口显示imwrite 图像保存 视频加载与摄像头的使用VideoCapture 加载视频或摄像头get 获取属性VideoWriter 保存视频 图像…

vue 生命周期

人的-生命周期 一组件从 创建 到 销毁 的整个过程就是生命周期 Vue_生命周期 1. 钩子函数 Vue 框架内置函数&#xff0c;随着组件的生命周期阶段&#xff0c;自动执行 作用: 特定的时间点&#xff0c;执行特定的操作 场景: 组件创建完毕后&#xff0c;可以在created 生命周期…

实际项目中使用gorm-gen来生成实体类

一、为什么要使用gorm-gen来生成实体类和查询 1、根据gorm官网地址&#xff0c;正常的写法是先写数据模型,然后由数据模型自动同步生成到数据库中,但是这样的工作量会比较大,对于写后端的人来说都熟悉sql语句,正常来说都是先自己手动创建表,利用工具将表字段同步到项目实体类中…

java商业销售分析系统Myeclipse开发mysql数据库web结构jsp编程计算机网页项目

一、源码特点 java 商业销售分析系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&…

电脑重装系统后需要更新哪些驱动

在电脑重装系统后&#xff0c;由于系统的重置&#xff0c;您需要重新安装和更新一些关键的驱动程序&#xff0c;以确保硬件设备正常工作和性能最佳化。以下是在电脑重装系统后需要更新的一些常见驱动程序。 工具/原料&#xff1a; 系统版本&#xff1a;win10系统 品牌型号&…

TOGAF10®标准中文版-(介绍和核心概念)摘要

第1章&#xff1a;简介 TOGAF标准是企业架构的框架。任何希望开发企业架构以在该组织内使用的组织都可以免费使用它&#xff08;见第1.3.1节&#xff09;。 TOGAF标准由The Open Group成员在架构论坛内开发和维护&#xff08;请参阅www.opengroup.org/Architecture&#xff0…

java8 (jdk 1.8) 新特性——Lambda 以及函数式接口

1. 什么是lambda? 目前已知的是&#xff0c;有个箭头 -> 说一大段官方话&#xff0c;也没有任何意义 我们直接看代码&#xff1a; 之前我们创建线程是这样的 Runnable runnable new Runnable() {Overridepublic void run() {System.out.println("run。。。。。。…

阿里云服务器的网络性能如何?有多快?是否适合高流量应用?

阿里云服务器的网络性能如何&#xff1f;有多快&#xff1f;是否适合高流量应用&#xff1f;   [本文由阿里云代理商[聚搜云www.4526.cn]撰写]    阿里云服务器网络性能简介   阿里云服务器&#xff08;ECS&#xff09;在网络性能方面表现卓越&#xff0c;可满足用户对高…

通过环路分析仪得到系统的闭环传递函数方法(Matlab System Identification)

目录 前言 环路分析仪数据整理 Matlab导入环路分析仪的数据 System Identification使用 闭环传递函数导出 总结 前言 之前开发的时候通过Matlab的环路设计工具实现了控制系统的补偿器参数整定&#xff0c;然后在系统硬件上面进行了验证&#xff0c;设计带宽和环路分析仪的…

基于Java实验中心管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精…

排序算法:插入排序(直接插入排序、希尔排序)

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下有关排序算法的相关知识点&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从入门到精通…

CQ 社区版 v2.1.0 发布 | 新增数据发布变更、内置脱敏规则等功能

Hello&#xff0c;社区的小伙伴们&#xff0c;又到了每月版本发布时间。&#x1f389;&#x1f389;&#x1f389; 本次社区版更新带来了新功能 「发布变更」&#xff0c;以及内置脱敏规则、授权粒度细化、连接池管理、变更链接密钥等&#xff0c;信息量不少&#xff0c;一起来…

在生信中利用Chat GPT/GPT4

论文链接Ten Quick Tips for Harnessing the Power of ChatGPT/GPT-4 in Computational Biology | Papers With Code 之前在paper with code上比较火的一篇文章&#xff0c;最近要给生科的学长学姐们个分享所以把这个翻了翻&#xff0c;原文自认为废话比较多&#xff0c;于是选…

基于Java物流管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精…

【图书推荐 | 14】后端系列

【赠书活动第十四期 】 图书推荐 本期书籍&#xff1a;后端系列 图书列表 本期图书列表&#xff1a; Spring Cloud 微服务快速上手项目驱动零起点学JavaNode.js 从基础到项目实战Diango Web 开发实例精解Flask Web 全栈开发实战精通Hadoopsmysql 数据库基础与实战应用Neo4j 图谱…

ChatGLM-6B云服务器部署教程

目录 一、准备服务器1.购买服务器2.开机进入终端3.进入终端 二、部署ChatGLM1.执行命令2.本地代理访问地址2.1 结果如下2.2 api接口一样操作 三、Fastapi流式接口1.api_fast.py1.2 将api_fast.py上传到服务器 2.准备插件3.访问地址 博客园地址&#xff1a;https://www.cnblogs.…

【裸机开发】中断系统 —— IRQ 中断服务函数(汇编部分)

IRQ 和前面的Reset 函数不大一样&#xff0c;当一个IRQ中断产生时&#xff0c;我们也不知道这个IRQ中断来自哪个外设&#xff0c;因此&#xff0c;需要先获取到中断ID&#xff0c;随后才会跳转到真正的中断服务函数执行处理逻辑。 整个 IRQ 中断处理可以看做是包含了两个部分&…

CSS查缺补漏之选择器

最近在复盘CSS基础知识&#xff0c;发现很多CSS选择器里面还是大有学问&#xff0c;需要详细总结一番&#xff0c;以备差缺补漏~ 作为CSS基础的一大类别&#xff0c;选择器又分为多种类别&#xff0c;本篇内容默认读者已了解并掌握基础选择器【通配符选择器】、【元素选择器】…

springboot+vue项目之MOBA类游戏攻略分享平台(java项目源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的MOBA类游戏攻略分享平台。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xf…

自动化测试框架Playwright安装以及使用

最近&#xff0c;微软开源了一个非常强大的自动化项目叫 playwright-python 它支持主流的浏览器&#xff0c;包含&#xff1a;Chrome、Firefox、Safari、Microsoft Edge 等&#xff0c;同时支持以无头模式、有头模式运行&#xff0c;并提供了同步、异步的 API&#xff0c;可以…