当前位置: 首页 > news >正文

计算机网络——08应用层原理

应用层原理

创建一个新的网络

编程

  • 在不同的端系统上运行
  • 通过网络基础设施提供的服务,应用进程批次通信
  • Web
    • Web服务器软件与浏览器软件通信

网络核心中没有应用层软件

  • 网络核心没有应用层功能
  • 网络应用只能在端系统上存在
    • 快速网络应用开发和部署

网络应用的体系架构

可能的应用架构

  • 客户-服务器模式(C/S)
  • 对等模式(P2P)
  • 混合体:客户-服务器和对等体系结构

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

  • 服务器
    • 一直运行
    • 固定的IP和周知的端口号(约定)
    • 扩展性:服务器场
      • 数据中心进行拓展
      • 拓展性差
  • 客户端
    • 主动与服务器通信
    • 与互连网有间歇性的连接
    • 可能是动态IP地址
    • 不直接与其他客户端通信
  • 缺点
    • 可拓展性差
    • 达到一定能限,性能暴跌
    • 可靠性差

在这里插入图片描述

对等体(P2P)体系结构

  • (几乎)没有一直运行的服务器
  • 任意端系统之间可以进行通信
  • 每一个节点既是客户端又是服务器
    • 自拓展性-新peer节点带来新的服务能力,当然也带来新的服务请求
  • 参与的主机间歇性连接且可以改变IP地址
    • 难以管理

C/S和P2P体系结构的混合体

Napster

  • 文件搜索:集中
    • 主机在中心服务器上注册其资源
    • 主机向中心服务器铲鲟资源位置
  • 文件传输:P2P
    • 任意Peer节点之间

即时通信

  • 在线检测:集中
    • 当用户上线时,向中心服务器注册其IP地址
    • 用户与中心服务器联系,以找到其在线好友的位置
  • 两个用户之间聊天:P2P

进程通信

进程:在主机上运行的应用程序

  • 在同一个主机内,使用进程间通信机制通信(操作系统定义)
  • 不同主机,通过交换报文来通信
    • 使用OS提供的通信服务
    • 按照应用协议交换报文
      • 借助传输层提供的服务
  • 注意:P2P架构的应用也有客户端进程和服务器进程之分

客户端进程:发起通信的进程

服务器进程:等待连接的进程

分布式进程通信需要解决的问题

在这里插入图片描述

  • 问题1:进程标示和寻址问题(服务用户
  • 问题2:传输层-应用层提供服务是如何(服务
    • 位置:层间界面的SAPTCP/IP:socket
    • 形式:应用程序接口APITCP/IP:socke API
  • 问题3:如何使用传输层提供的服务,实现应用进程之间的报文交换,实现应用(用户使用服务
    • 定义应用层协议:报文格式、解释、时序等
    • 编制程序:使用OS提供的API,调用网络基础设施提供通信服务传报文,实现应用时序等

问题1:对进程进行编址

  • 进程为了接收报文必须有一个标识,即SAP(发送也需要标识)
    • 主机:唯一的32IP地址
      • 仅仅有IP地址不能够唯一标示一个进程:在一台端系统上有很多应用进程在运行
    • 所采用的传输层协议:TCP or UDP
    • 端口号
  • 一些知名端口号例子:
    • HTTP:TCP 80 Mail:TCP25 ftp:TCP 2
  • 一个进程:用IP + port标示端节点
  • 本质上,一对主机进程之间的通信由 2 个端节点构成

问题2:传输层提供的服务-需要穿过层间的信息

  • 层间接口必须要携带的信息
    • 要传输的报文(对于本层来说:SDU
    • 谁传的:对方的应用进程的标示:IP + TCP(UDP) 端口
    • 传给谁:对方的应用进程的标示:对方的IP + TCP(UDP) 端口号
  • 传输层实体(tcp或者udp实体)根据这些信息进行TCP报文段(UDP数据报)的封装
    • 源端口号,目标端口号,数据等
    • IP地址往下交IP实体,用于封装IP数据报:源IP,目标IP

问题2:传输层提供的服务-层间信息的代表

  • 如果Socket API每次传输报文,都携带如此多的信息,太繁琐易错,不便于管理
  • 用个代号标示通信的双方或者单方:socket
  • 就像OS打开文件返回的句柄一样
    • 对句柄的操作,就是对文件的操作
  • TCP socket:
    • TCP服务,两个进程之间的通信需要之前要建立连接
      • 两个进程通信会持续一段时间,通信关系稳定
    • 可以用一个整数标示两个应用实体之间的通信关系,本地标示
    • 穿过层间接口的信息量最小
    • TCP socket:源IP,源端口,目标IP,目标端口

TCP之上的套接字(socket)

  • 对于使用面向连接服务(TCP)的应用而言,套接字是 4 元组的一个具有本地意义的标示
    • 4 元组:(IP、源port、目标IP、目标port
    • 唯一的指定了一个会话( 2 个进程之间的会话关系)
    • 应用使用这个标示,与远程的应用进程通信
    • 不必在每一个报文的发送都要指定这 4 元组
    • 就像使用操作系统打开一个文件,OS返回一个文件句柄一样,以后使用这个文件句柄,而不是使用这个文件的目录名、文件名
    • 简单、便于管理

TCP socket

在这里插入图片描述

在这里插入图片描述

问题2:传输层提供的服务-层间信息代码

  • UDP socket:
    • UDP服务,两个进程之间的通信需要之前无需建立连接
      • 每个报文都是独立传输的
      • 前后报文可能给不同的分布式进程
    • 因此,只能用一个整数表示本应用实体的标示
      • 因为这个报文可能传给另一个分布式进程
    • 穿过层间接口的信息大小最小
    • UDP socket:本IP,本端口
    • 但是传输报文时,必须要提供对方IP,port
      • 接收报文时,传输层需要上传对方的IP,port

UDP之上的套接字(socket)

  • 对于使用无连接服务(UDP)的应用而言,套接字是2元组的一个具有本地意义的标示
    • 2 元组:IP、port(源端指定)
    • UDP套接字指定了应用所在的一个端节点(end point)
    • 在发送数据时,采用创建好的本地套接字(标示ID),就不必在发送每个报文中指明自己所采用的ipport
    • 但是在发送报文时,必须要指定对方的ipudp,port(另外一个端节点)

套接字(Socket)

  • 进程向套接字发送报文或从套接字接收报文
  • 套接字<->门户
    • 发送进程将报文推出门户,发送进程依赖于传输层设施另外一侧的门将报文交付给接受进程
    • 接收进程从另外一端的门户收到报文(依赖于传输层设施)

问题3:如何使用传输层提供的服务实现应用

  • 定义应用层协议、报文格式、解释、时序等
  • 编制程序,通过API调用网络基础设施提供通信服务传报文,解析报文,实现应用时序等

应用层协议

  • 定义了:运行在不同端系统上的应用进程如何相互交换报文
    • 交换的报文类型:请求和应答报文
    • 各种报文类型的语法:报文中的各个字段及其描述
    • 字段的语义:即字段取值的含义
    • 进程何时,如何发送报文及对报文进行响应的</font color=red>规则
  • 应用协议仅仅是应用的一个组成部分
    • Web应用:HTTP协议、web客户端、web服务器、HTML

公开协议:

  • RFC文档定义
  • 允许互操作
  • HTTP、SMTP

专有(私有)协议

  • 协议不公开
  • 如:Skype

应用需要传输层提供什么样的服务

数据丢失率

  • 有些应用则要求100%的可靠数据传输
  • 有些应用能容忍一定比例以下的数据丢失

延迟

  • 一些应用出于有效性考虑,对数据传输有严格的时间限制
    • Internet电话、交互式游戏
    • 延迟,延迟差

吞吐

  • 一些应用必须需要最小限度的吞吐,从而使得应用能够有效运转
  • 一些应用能充分利用可供使用的吞吐(弹性应用)

安全性

  • 机密性
  • 完整性
  • 可认证性(鉴别)

常见应用对传输服务的要求

应用数据丢失率吞吐时间敏感性
文件传输不能丢失弹性
e-mail不能丢失弹性
Web文档不嫩柜式弹性
实时音视频容忍丢失音频:5kbps-1Mbps,视频:100kbps-5Mbps是,100ms
存储音视频容忍丢失同上是,几秒
交互式游戏容忍丢失kbps-10kbps是,100ms
即时讯息不能丢失弹性是和不是

Internet传输层提供的服务

TCP服务

  • 可靠的传输服务
  • 流量控制:发送方不会淹没接受方
  • 拥塞控制:当网络出现拥塞时,最小吞吐保证和安全
  • 面向连接:要求客户端进程和服务器进程之间建立连接

UDP服务

  • 不可靠数据传输
  • 不提供的服务:可靠、流量控制、拥塞控制、时间、带宽控制、建立连接

UDP存在的必要性

  • 能够区分不同的进程,而IP服务不能
    • IP提供的主机到主机端到端功能的基础上,区分了主机的应用进程
  • 无需建立连接,省去了建立连接的时间,适合事务性的应用
  • 不做可靠性的工作,例如检错重发,适合那些对实时性要求比较高而对正确性要求不告而应用
    • 因为为了实现可靠性(准确性、保存等),必须付出时间代价(检错重发)
  • 没有拥塞控制和流量控制,应用能够按照设定的速度发送数据
    • 而在TCP上面的应用,应用发送数据的速度和主机向网络发送的实际速度是不一致的,因为有流量控制和拥塞控制

Internet应用及其应用层协议和传输协议

应用应用层协议下层传输的协议
e-mailSMTP[RFC 2821]TCP
远程终端访问Telent[RFC 854]TCP
WebHTTP[RFC 2616]TCP
文件传输FTP[RFC 959]TCP
流媒体专用协议TCP或UDP
Internet电话专用协议TCP或UDP

安全TCP

TCP & UDP

  • 都没有加密
  • 明文通过互联网传输,甚至密码

SSL

  • 在TCP上面实现,提供加密的TCP连接
  • 私密性
  • 数据完整性
  • 端到端的鉴别

SSL在应用层

  • 应用采用SSL库,SSL库使用TCP通信

SSL socket API

  • 应用通过API将明文交给socket,SSL将其加密在互联网上传输

相关文章:

计算机网络——08应用层原理

应用层原理 创建一个新的网络 编程 在不同的端系统上运行通过网络基础设施提供的服务&#xff0c;应用进程批次通信如Web Web服务器软件与浏览器软件通信 网络核心中没有应用层软件 网络核心没有应用层功能网络应用只能在端系统上存在 快速网络应用开发和部署 网络应用…...

面试计算机网络框架八股文十问十答第五期

面试计算机网络框架八股文十问十答第五期 作者&#xff1a;程序员小白条&#xff0c;个人博客 相信看了本文后&#xff0c;对你的面试是有一定帮助的&#xff01;关注专栏后就能收到持续更新&#xff01; ⭐点赞⭐收藏⭐不迷路&#xff01;⭐ 1&#xff09;与缓存相关的HTTP请…...

拟合案例1:matlab积分函数拟合详细步骤及源码

本文介绍一下基于matlab实现积分函数拟合的过程。采用的工具是lsqcurvefit和nlinfit两个函数工具。关于包含积分运算的函数,这里可以分为两大类啊。我们用具体的案例来展示:一种是积分运算中不包含这个自变量,如下图的第一个公式,也就是说它这个积分运算只有R和Q这两个待定…...

嵌入式软件设计入门:从零开始学习嵌入式软件设计

&#xff08;本文为简单介绍&#xff0c;个人观点仅供参考&#xff09; 首先,让我们了解一下嵌入式软件的定义。嵌入式软件是指运行在嵌入式系统中的特定用途软件,它通常被用来控制硬件设备、处理实时数据和实现特定功能。与桌面应用程序相比,嵌入式软件需要具备更高的实时性、…...

Educational Codeforces Round 135 (Rated for Div. 2)C. Digital Logarithm(思维)

文章目录 题目链接题意题解代码 题目链接 C. Digital Logarithm 题意 给两个长度位 n n n的数组 a a a、 b b b&#xff0c;一个操作 f f f 定义操作 f f f为&#xff0c; a [ i ] f ( a [ i ] ) a [ i ] a[i]f(a[i])a[i] a[i]f(a[i])a[i]的位数 求最少多少次操作可以使 …...

微信小程序介绍、账号申请、开发者工具目录结构详解及小程序配置

目录 一、微信小程序介绍 1.什么是小程序&#xff1f; 2.小程序可以干什么&#xff1f; 3.微信小程序特点 二、账号申请 1.账号注册 2.测试号申请 三、安装开发工具 四、开发小程序 五、目录结构 JSON 配置 小程序配置 app.json 工具配置 project.config.json 页…...

数字的魅力之情有独钟的素数

情有独钟的素数 什么是素数 素数&#xff08;Prime number&#xff09;也称为质数&#xff0c;是指在非0自然数中&#xff0c;除了1与其本身之外不拥有其他因数的自然数。也就是说&#xff0c;素数需要满足两个条件&#xff1a; 大于1的整数&#xff1b;只拥有1和其自身两个…...

Vue2源码梳理:render函数的实现

render 在 $mount 时&#xff0c;会调用 render 方法在写 template 时&#xff0c;最终也会转换成 render 方法Vue 的 _render 方法是实例的一个私有方法&#xff0c;它用来把实例渲染成一个虚拟 Node它的定义在 src/core/instance/render.js 文件中&#xff0c;它返回的是一个…...

flask+python企业产品订单管理系统938re

在设计中采用“自下而上”的思想&#xff0c;在创新型产品提前购模块实现了个人中心、个体管理、发布企业管理、投资企业管理、项目分类管理、产品项目管理、个体投资管理、企业投资管理、个体订单管理、企业订单管理、系统管理等的功能性进行操作。最终&#xff0c;对基本系统…...

Vue2源码梳理:关于数据驱动,与new Vue时的初始化操作

数据驱动 1 &#xff09;概述 vue的一个核心思想&#xff0c;就是数据驱动 所谓数据驱动&#xff0c;就是指视图是由数据驱动生成的 对视图的修改并不会直接操作dom&#xff0c;而是通过修改数据 它相比我们传统的前端开发&#xff0c;如使用 jQuery 的前端库直接去修改 dom…...

【C++航海王:追寻罗杰的编程之路】关于模板,你知道哪些?

目录 1 -> 泛型编程 2 -> 函数模板 2.1 -> 函数模板概念 2.2 -> 函数模板格式 2.3 -> 函数模板的原理 2.4 -> 函数模板的实例化 2.5 -> 函数参数的匹配原则 3 -> 类模板 3.1 -> 类模板的定义格式 3.2 -> 类模板的实例化 1 -> 泛型编…...

分布式springboot 3项目集成mybatis官方生成器开发记录

文章目录 说明实现思路实现步骤第一步&#xff1a;创建generator子模块第二步&#xff1a;引入相关maven插件和依赖第三步&#xff1a;编写生成器配置文件第四步&#xff1a;运行查看结果 说明 该文章为作者开发学习记录&#xff0c;方便以后复习和交流主要内容为&#xff1a;…...

算法学习——LeetCode力扣回溯篇4

算法学习——LeetCode力扣回溯篇4 332. 重新安排行程 332. 重新安排行程 - 力扣&#xff08;LeetCode&#xff09; 描述 给你一份航线列表 tickets &#xff0c;其中 tickets[i] [fromi, toi] 表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。 所有这些机票…...

c++ STL系列——(六)multimap

C标准模板库&#xff08;STL&#xff09;是C编程中不可或缺的一部分&#xff0c;它提供了一系列的容器、算法和函数模板&#xff0c;以简化常见的数据结构和算法的实现。在STL中&#xff0c;multimap是一个非常有用的容器&#xff0c;它提供了一种键值对的存储方式&#xff0c;…...

Json-序列化字符串时间格式问题

序列化字符串时间格式问题 一、项目场景二、问题描述三、解决方案 一、项目场景 最近C#中需要将实体进行json序列化&#xff0c;使用了Newtonsoft.Json public static void TestJson(){DataTable dt new DataTable();dt.Columns.Add("Age", Type.GetType("Sys…...

HarmonyOS鸿蒙学习基础篇 - 自定义组件(一)

前言 在ArkUI中&#xff0c;UI显示的内容均为组件&#xff0c;由框架直接提供的称为系统组件&#xff0c;由开发者定义的称为自定义组件。在进行 UI 界面开发时&#xff0c;通常不是简单的将系统组件进行组合使用&#xff0c;而是需要考虑代码可复用性、业务逻辑与UI分离&#…...

开窗,挖槽,放电齿,拼版

我们在阻焊层画线&#xff0c;就相当于去掉绿油阻焊&#xff0c;开窗一般是用在大电流走线的时候。先画要走的导线&#xff0c;之后切换到TopSolder或者Bottom Solder层&#xff0c;然后Place->line 画一条和原来先粗细一样的线即可&#xff01;但走电流的仍然是导线&#x…...

[Vue的组件通讯.sync修饰]Vue中.sync的使用方法和实现的方式 代码注释

目录 .sync的使用方法1. 在父组件中&#xff0c;将需要传递给子组件的数据使用v-bind绑定到子组件的props中&#xff0c;并在属性名后加上.sync修饰符&#xff0c;如下所示&#xff1a;2. 在子组件中&#xff0c;将需要传递给父组件的数据使用$emit方法触发一个名为update:valu…...

Java 基于springboot+vue在线外卖点餐系统,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…...

Decian 12.x基于LNMP安装phpIPAM(IP管理系统)

phpipam是一个开源Web IP地址管理应用程序&#xff08;IPAM&#xff09;。其目标是提供轻便&#xff0c;且有用的IP地址管理系统。它是基于PHP的应用程序&#xff0c;具有MySQL数据库后端&#xff0c;使用jQuery库&#xff0c;ajax和HTML5 / CSS3功能。 在Debian 12中&…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中&#xff0c;高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司&#xff0c;近期做出了一个重大技术决策&#xff1a;弃用长期使用的 Nginx&#xff0c;转而采用其内部开发…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)

本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...

C++ 设计模式 《小明的奶茶加料风波》

&#x1f468;‍&#x1f393; 模式名称&#xff1a;装饰器模式&#xff08;Decorator Pattern&#xff09; &#x1f466; 小明最近上线了校园奶茶配送功能&#xff0c;业务火爆&#xff0c;大家都在加料&#xff1a; 有的同学要加波霸 &#x1f7e4;&#xff0c;有的要加椰果…...

什么是VR全景技术

VR全景技术&#xff0c;全称为虚拟现实全景技术&#xff0c;是通过计算机图像模拟生成三维空间中的虚拟世界&#xff0c;使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验&#xff0c;结合图文、3D、音视频等多媒体元素…...

《信号与系统》第 6 章 信号与系统的时域和频域特性

目录 6.0 引言 6.1 傅里叶变换的模和相位表示 6.2 线性时不变系统频率响应的模和相位表示 6.2.1 线性与非线性相位 6.2.2 群时延 6.2.3 对数模和相位图 6.3 理想频率选择性滤波器的时域特性 6.4 非理想滤波器的时域和频域特性讨论 6.5 一阶与二阶连续时间系统 6.5.1 …...