计算机网络——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将其加密在互联网上传输

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

DS18B20 与 单总线

学习链接&#xff1a;学习B站 up 主金善愚的DS18B20课程 一、单总线概述 单总线芯片&#xff0c;在其内部的 ROM 中都编制好了唯一的序列号&#xff08;64位&#xff09;。 单总线芯片在应用时对时序的要求非常高。 二、单总线的基本操作 三、DS18B20的主要性能 电源电压范围&…

【Django】Django日志管理

Django日志管理 Django使用Python内置的logging模块处理系统日志。 1.日志框架的组成元素 Python logging 配置由下面四部分组成&#xff1a; Loggers Handlers 过滤器 Formatters 1.1 Loggers logger是日志系统的入口&#xff0c;每个 logger都是命名了的 bucket&…

第72讲后台管理Container布局实现

新建layout目录 登录成功后&#xff0c;跳转layout布局容器页面 login页面&#xff1a; 导入router import router from "/router";登录成功&#xff0c;跳转后台管理页面 选用布局容器&#xff1a; <template><div class"common-layout">…

并行计算导论 笔记 1

目录 并行编程平台隐式并行超标量执行/指令流水线超长指令字处理器 VLIW 内存性能系统的局限避免内存延迟的方法 并行计算平台控制结构通信模型共享地址空间平台消息传递平台对比 物理组织理想并行计算机并行计算机互联网络网络拓朴结构基于总线的网络交叉开关网络多级网络全连…

指纹浏览器如何颠覆传统浏览器的使用?

传统浏览器在互联网时代发挥了巨大的作用&#xff0c;但随着科技的不断进步和用户需求的不断变化&#xff0c;新一代的浏览器工具开始崭露头角。指纹浏览器作为一种创新性的浏览器工具&#xff0c;正逐渐颠覆传统浏览器的使用方式。本文将探讨指纹浏览器如何颠覆传统浏览器&…

501. 二叉搜索树中的众数

给你一个含重复值的二叉搜索树&#xff08;BST&#xff09;的根节点 root &#xff0c;找出并返回 BST 中的所有 众数&#xff08;即&#xff0c;出现频率最高的元素&#xff09;。 如果树中有不止一个众数&#xff0c;可以按 任意顺序 返回。 假定 BST 满足如下定义&#xf…

pycharm控制STM32F103ZET6拍照并上位机接收显示(OV7670、照相机、STM32、TFTLCD)

基于STM32的照相机 准备工作最终效果一、下位机1、主函数2、OV7670初始化 二、上位机1、控制拍照2、接收图片数据 三、资源获取 准备工作 一、硬件及片上资源: 1,串口1(波特率:921600,PA9/PA10通过usb转ttl连接电脑&#xff0c;或者其他方法)上传图片数据至上位机 2,串口2(波特…

Acwing---836. 合并集合

合并集合 1.题目2.基本思想3.代码实现 1.题目 一共有 n n n 个数&#xff0c;编号是 1 ∼ n 1∼n 1∼n&#xff0c;最开始每个数各自在一个集合中。 现在要进行 m m m 个操作&#xff0c;操作共有两种&#xff1a; M a b&#xff0c;将编号为 a a a 和 b b b 的两个数所…

电脑数据误删如何恢复?9 个Windows 数据恢复方案

无论您是由于软件或硬件故障、网络犯罪还是意外删除而丢失数据&#xff0c;数据丢失都会带来压力和令人不快。 如今的企业通常将其重要数据存储在云或硬盘上。但在执行其中任何一项操作之前&#xff0c;您很有可能会丢失数据。 数据丢失的主要原因是意外删除&#xff0c;任何…

python健身房管理系统 django健身课程预约系统

系统所要实现的功能分析&#xff0c;对于现在网络方便的管理&#xff0c;系统要实现用户可以直接在平台上进行查看首页、健身课程、留言板、个人中心、后台管理等&#xff0c;根据自己的需求可以进行查看健身课程&#xff0c;这样既能节省用户的时间&#xff0c;不用在像传统的…

第7讲 全局异常统一处理实现

新建GlobalExceptionHandler类。 package com.java1234.exception;import com.java1234.entity.R; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdv…

多机多卡运行nccl-tests和channel获取

nccl-tests 环境1. 安装nccl2. 安装openmpi3. 单机测试4. 多机测试mpirun多机多进程多节点运行nccl-testschannel获取 环境 Ubuntu 22.04.3 LTS (GNU/Linux 5.15.0-91-generic x86_64)cuda 11.8 cudnn 8nccl 2.15.1NVIDIA GeForce RTX 4090 *2 1. 安装nccl #查看cuda版本 nv…

牛客——递归实现组合型枚举(枚举,dfs)

链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 题目描述 从 1~n 这 n 个整数中随机选出 m 个&#xff0c;输出所有可能的选择方案。n>0n \gt 0n>0, 0≤m≤n0 \leq m \leq n0≤m≤n, n(n−m)≤25n(n-m)\leq 25n(n−m)≤25。 输入描述…

【Qt 学习之路】在 Qt 使用 ZeroMQ

文章目录 1、概述2、ZeroMQ介绍2.1、ZeroMQ 是什么2.2、ZeroMQ 主线程与I/O线程2.3、ZeroMQ 4种模型2.4、ZeroMQ 相关地址 3、Qt 使用 ZeroMQ3.1、下载 ZeroMQ3.2、添加 ZeroMQ 库3.3、使用 ZeroMQ3.4、相关 ZeroMQ 案例 1、概述 今天是大年初一&#xff0c;先给大家拜个年&am…

免费数据恢复软件哪个好?适用于 Windows的顶级免费数据恢复软件推荐

终于要说到Windows 11了&#xff0c;有太多令人惊叹的功能&#xff0c;让人跃跃欲试。但是&#xff0c;在升级到 Windows 11 或使用 Windows 11 时&#xff0c;人们可能会因计算机问题而导致文件被删除或丢失。这就是为什么需要 Windows 11 的免费文件恢复的原因。这是适用于 W…

蓝桥云课-2024-第5场入门赛

参赛地址&#xff1a; 第 5 场 小白入门赛 - 蓝桥云课 (lanqiao.cn) 题目列表&#xff1a; 第一题&#xff1a;是签到题&#xff0c;就不需要解释了 第二题&#xff1a;欢迎参加福建省大学生程序设计竞赛&#xff08;题目&#xff09; 主要思路&#xff1a; 就是分类&#…

【深度学习 目标检测】R-CNN系列算法全面概述(一文搞懂R-CNN、Fast R-CNN、Faster R-CNN的来龙去脉)

&#x1f680;个人主页&#xff1a;为梦而生~ 关注我一起学习吧&#xff01; &#x1f4a1;相关专栏&#xff1a; 深度学习 &#xff1a;现代人工智能的主流技术介绍 机器学习 &#xff1a;相对完整的机器学习基础教学&#xff01; &#x1f4a1;往期推荐&#xff1a; 【机器学…

使用C++从零开始,自己写一个MiniWeb

第一步&#xff1a;新建项目 1、打开VS点击创建新项目 2、选择空项目并点下一步&#xff08;切记不能选错项目类型&#xff09; 3、填写项目名称和路径&#xff0c;点击创建即可 新建好后项目是这样的比较干净 4、右击源文件&#xff0c;点击添加&#xff0c;新建http.cpp文件…

Vue核心基础5:数据监测、收集表单数据、过滤器

1 数据监测 【代码】 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>总结</title><scrip…

vue项目文件夹介绍

目录 Vue项目目录结构 项目介绍: node_modules 文件及子目录 src目录 assets 文件夹 components 文件夹 实例:简单的注册并使用组件 Vue项目目录结构 项目介绍: node_modules 文件及子目录 这个文件夹里面全部都是node的一些基础的依赖包&#xff0c;当我们拓展的安…