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

【计算机网络】应用层协议原理

文章目录

  • 网络应用程序体系结构
    • 客户-服务器体系结构
    • P2P体系结构
  • 进程通信
    • 客户和服务器进程
    • 进程与计算机网络之间的接口
    • 进程寻址
  • 可供应用程序使用的运输服务
    • 可靠数据传输
    • 吞吐量
    • 定时
    • 安全性
  • 因特网提供的运输服务
    • TCP服务
      • 面向连接的服务
      • 可靠数据传输服务
      • TCP安全
    • UDP服务
    • 因特网运输协议所不提供的服务
  • 应用层协议
  • 本章谈论的网络应用
  • 参考资料

image.png
应用层协议考虑的是不同端系统之间的通信,因为网络核心不具有应用层

网络应用程序体系结构

应用程序体系结构,即application architecture
现代网络应用程序中所使用的两种主流体系结构:客户-服务器体系结构和对等(P2P)体系结构

客户-服务器体系结构

client-server architecture
image.png
端系统通信模式
一个总是打开的主机称为服务器,它服务于来自许多其他称为客户的主机的请求
特点

  1. 客户相互之间不直接通信
  2. 服务器具有固定的、周知的IP地址
  3. 在CS架构中,客户根据IP地址向服务器发送分组
  4. 为了实现服务器端的负载均衡,现实情况中的服务器往往是由配备大量主机的数据中心(data center)创建的虚拟服务器

应用程序举例
Web、FTP、Telnet和电子邮件

P2P体系结构

P2P architecture
image.png
端系统通信模式
应用程序在间断连接的主机对(对等方)之间使用直接通信
特点
自扩展性(self-scalability)
举个例子,在一个P2P文件共享应用中,尽管每个对等方都由于请求文件产生工作负载,但每个对等方通过向其他对等方分发文件也为系统增加服务能力。
应用程序举例
文件共享(例如BitTorrent)、对等方协助下载加速器(例如迅雷)、因特网电话和视频会议(例如Skype)
缺点
高度非集中式结构,面临安全性、性能和可靠性等挑战
CS和P2P杂合的体系结构
举个例子,即时讯息应用如qq,服务器跟踪用户的IP地址,用户到用户的消息在用户主机间直接发送

进程通信

严谨地说,在进行的通信的主体是进程(process)而非程序

当存储在外存中的程序被加载到内存时才变为进程

当多个进程运行在相同的端系统上时,它们使用进程间通信机制相互通信,这个过程由操作系统管理
运行在不同端系统(可能具有不同的操作系统)上的进程间的通信才属于计算机网络讨论的范畴
运行在两个不同端系统上的进程,通过跨越计算机网络交换报文(message)相互通信

客户和服务器进程

网络应用程序由成对的进程组成,这些进程通过网络相互发送报文。
对每对通信进程,一个被标识为客户(client),另一个进程被标识为服务器(server)
客户进程和服务器进程的定义
在一对进程之间的通信会话场景中,发起通信(即在该会话开始时发起与其他进程的联系)的进程被标识为客户,在会话开始时等待联系的进程是服务器。
举个例子
对于Web而言,浏览器是一个客户进程,Web服务器是一台服务器进程
对于P2P文件共享,下载文件的对等方标识为客户,上载文件的对等方标识为服务器。

进程与计算机网络之间的接口

谈论的问题在于通信进程对是如何实现互相发送报文的?
引入套接字,进程通过套接字(socket)向网络发送报文和从网络接收报文
image.png

套接字

  1. 通信进程与运输层的接口,是同一台主机内应用层与运输层之间的接口
  2. 建立网络应用程序的可编程接口,应用程序和网络之间的应用程序编程接口(Application Programming Interface, API)

进程寻址

进程地址定义
定义两种信息:
①主机的地址;②在目的主机中指定接收进程的标识符
主机地址
由IP地址(IP address)标识
一个32比特的数值,能够唯一地标识一台主机
特定进程
由端口号(port number)标识
指定在接收主机上的接收进程,也即接收套接字,因为一台主机上能够运行许多网络应用
常用的已分配端口号举例:Web服务器进程使用80端口,邮件服务器进程使用25端口

可供应用程序使用的运输服务

问题:针对特定的应用程序,应该怎么选择特定的运输层协议?
运输层协议的选择取决于应用程序所要求的服务
应用程序服务要求分类:可靠数据传输、吞吐量、定时和安全性

可靠数据传输

reliable data transfer
定义:由应用程序的一端发送的数据正确、完全地交付给该应用程序的另一端
要求可靠数据传输服务的应用程序使用提供确保数据交付服务的运输层协议
容忍丢失的应用(loss-tolerant application)可以使用不提供可靠数据传输的运输层协议,例如多媒体应用能承受一定量的数据丢失

吞吐量

定义
进程通信中,发送进程能够向接收进程交付比特的速率
由于因特网中存在多个会话共享一段网络的情况,因此可用吞吐量是随着时间波动的
吞吐量服务
运输层协议能够以某种特定的速率提供确保的可用吞吐量。举个例子,在这种服务下,应用程序请求r比特/秒的确保吞吐量,对应的运输层协议就确保可用吞吐量至少为r比特/秒
服务对象
带宽敏感的应用(bandwidth-sensitive application):具有吞吐量要求的应用程序,如多媒体应用
弹性应用(elastic application):能够根据当时可用的带宽或多或少地利用可供使用的吞吐量的应用程序,即是对bandwidth不敏感的应用程序,如电子邮件、文件传输以及Web传送

定时

服务对象
交互式实时应用程序,如因特网电话、虚拟环境、电话会议和多方游戏

安全性

运输协议能够为应用程序提供一种或多种安全性服务
提供服务
加密解密,数据完整性和端点鉴别

因特网提供的运输服务

因特网(更一般的是TCP/IP网络)为应用程序提供两个运输层协议,即UDP和TCP

需要根据应用程序的服务要求选择运输层协议

TCP服务

提供服务
面向连接服务和可靠数据传输服务
拥塞控制机制:当发送方和接收方之间的网络出现拥塞时,TCP的拥塞控制机制会抑制发送进程(客户或服务器)

面向连接的服务

使用TCP协议的应用程序,在客户端进程和服务器端进程传输数据包之前需要经过三次握手阶段建立起TCP连接(TCP connection)
握手阶段完成了客户和服务器互相交换运输层控制信息
连接性质
全双工,连接双方的进程可以在此连接上同时进行报文收发

可靠数据传输服务

通信进程能够依靠TCP,无差错、按适当顺序交付所有发送的数据,没有字节的丢失和冗余

TCP连接下的数据传输可以保证有序性。当应用层数据报到了运输层时会被切分为多个小片段,每个片段都被加上带有序列号的头部,用于标识其在数据报中的位置,接收方在接收到数据后,会根据序列号将数据进行排序,然后再交给应用层处理。

TCP安全

TCP、UDP都没有提供任何加密机制
安全隐患
明文传输的数据在发送方和接收方之间的所有链路传送,其可能在任何中间链路被嗅探和发现
解决办法
使用TCP的加强版——安全套接字层(Secure Sockets Layer, SSL),SSL提供进程到进程的安全性服务,包括加密、数据完整性和端点鉴别
注意:SSL是基于TCP连接在应用层上进行了安全性服务强化,而非独立于TCP、UDP之外的第三种运输层协议

UDP服务

轻量级运输层协议,仅提供最小服务
无连接
提供一种不可靠数据传送服务
没有拥塞控制机制

因特网运输协议所不提供的服务

目前的因特网运输协议不提供吞吐量保证和定时保证
image.png
由于TCP协议提供的可靠数据传输服务,电子邮件、远程终端访问、Web、文件传输都使用了 TCP
因特网电话则对最小带宽有比较高的要求,使用UDP协议来避免TCP的拥塞控制机制和分组开销。但许多防火墙被配置成阻挡(大多数类型的)UDP流量,因特网电话往往需要TCP连接在UDP通信失败的情况下进行备份

应用层协议

application-layer protocol
作用
定义了运行在不同端系统上的应用程序进程如何相互传递报文
image.png

应用层协议分两类:共享协议和专用协议。
共享协议是由RFC文档定义的,位于公共领域,例如HTTP协议。
专用协议是只有某些人可以使用的,例如Telnet协议。

应用层协议和传输层协议之间的关系是,传输层的协议TCP或UDP加上端口就可以标识一个应用层协议,

应用层协议和网络应用
应用层协议是网络应用的一部分
举个例子:Web应用包括文档格式的标准(即HTML)、Web浏览器、Web服务器和应用层协议(HTTP)

本章谈论的网络应用

5种重要的网络应用:Web、文件传输、电子邮件、目录服务、流式视频和P2P

参考资料

  1. James F.Kurose&Keith W.Ross Computer Networking A Top-Down Approach(7th ed) 中文版
  2. TCP如何保证数据的有序传输

相关文章:

【计算机网络】应用层协议原理

文章目录 网络应用程序体系结构客户-服务器体系结构P2P体系结构 进程通信客户和服务器进程进程与计算机网络之间的接口进程寻址 可供应用程序使用的运输服务可靠数据传输吞吐量定时安全性 因特网提供的运输服务TCP服务面向连接的服务可靠数据传输服务TCP安全 UDP服务因特网运输…...

buuctf-[WUSTCTF2020]CV Maker

打开环境 随便登录注册一下 进入到了profile.php 其他没有什么页面&#xff0c;只能更换头像上传文件&#xff0c;所以猜测是文件上传漏洞 上传一句话木马看看 <?php eval($_POST[a]);?>回显 搜索一下 添加文件头GIF89a。上传php文件 查看页面源代码&#xff0c;看…...

数据库表操作详解

在数据库管理中,表操作是最基础也最常用的一项功能。不论是临时存储一些数据,还是通过派生表进行复杂的查询,表操作的灵活性和多样性都使其在数据库中发挥着重要的作用。 本文将详细解析数据库中常见的表操作,包括临时表、派生表以及与视图、子查询的比较。我们将使用游戏…...

axios配置代理ip

axios配置代理ip 对于在nodejs中使用axios作为请求库时&#xff0c;有需要配置代理ip的需求&#xff08;比如爬虫等等&#xff09; 最离谱的是&#xff0c;在网上搜了一圈&#xff0c;全是关于axios配置proxy跨域的解决办法&#xff0c;没有配置代理ip的方法。 const axios …...

Apache Commons Pool2 池化技术

对象池是一种设计模式&#xff0c;用于管理和重用对象&#xff0c;以提高性能和资源利用率。对象池的概念在许多应用程序中都有广泛应用&#xff0c;特别是在需要频繁创建和销毁对象的情况下&#xff0c;例如数据库连接、线程、HTTP连接等 对象池通过预先创建一组对象并将它们存…...

二叉树的最近公共祖先LCA

系列题目 236. 二叉树的最近公共祖先 1676. 二叉树的最近公共祖先IV 1644. 二叉树的最近公共祖先 II 235. 二叉搜索树的最近公共祖先 1650. 二叉树的最近公共祖先 III class LowestCommonAncestor:"""236. 二叉树的最近公共祖先题目强调p和q一定存在于二叉树中&…...

AWS SAA知识点整理(作成中)

共通 一些信息已经更新了&#xff0c;但参考题的答案还是旧的。 比如&#xff1a; S3的最大读写性能已经提高到 3,500 PUT/COPY/POST/DELETE or 5,500 GET/HEAD requests per second 并且不再要求使用random prefix 题目中有时候会让选择Not violation 不合适的一项&#xff…...

C++模板大全(持续更新,依不同网站整理而成)

C模板大全 基本模板快读快写快读快写火车头缺省源 基本算法暴力枚举模拟贪心二分三分尺取法分治前缀和差分递推递归倍增排序sort冒泡排序桶排序选择排序插入排序希尔排序归并排序快速排序堆排序计数排序基数排序 基础数据结构栈队列哈希链表单向链表双向链表 单调栈单调队列 高…...

《CTFshow-Web入门》10. Web 91~110

Web 入门 索引web91题解总结 web92题解总结 web93题解 web94题解 web95题解 web96题解 web97题解 web98题解 web99题解总结 web100题解 web101题解 web102题解 web103题解 web104题解 web105题解总结 web106题解 web107题解 web108题解 web109题解 web110题解 ctf - web入门 索…...

计组--总线

一、概念 总线是一组能为多个部件分时共享的公共信息传送线路。 共享是指总线上可以挂接多个部件&#xff0c;各个部件之间互相交换的信息都可以通过这组线路分时共享。 分时是指同一时刻只允许有一个部件向总线发送信息&#xff0c;如果系统中有多个部件&#xff0c;则它们…...

Git中的HEAD

Git中的HEAD HEAD^数字&#xff1a;表示当前提交的父提交&#xff0c;具体是第几个父提交通过数字指定&#xff0c;HEAD^1第一个父提交&#xff0c;该语法只 能用于合并(merge)的提交记录&#xff0c;因为一个通过合并产生的commit对象才有多个父提交。 HEAD~数字&#xff1…...

软件设计师_数据库系统_学习笔记

文章目录 3.1 数据库模式3.1.1 三级模式 两级映射3.1.2 数据库设计过程 3.2 ER模型3.3 关系代数与元组演算3.4 规范化理论3.5 并发控制3.6 数据库完整性约束3.7 分布式数据库3.8 数据仓库与数据挖掘 3.1 数据库模式 3.1.1 三级模式 两级映射 内模式直接与物理数据库相关联的 定…...

毛玻璃态计算器

效果展示 页面结构组成 从上述的效果可以看出&#xff0c;计算机的页面比较规整&#xff0c;适合grid布局。 CSS3 知识点 grid 布局 实现计算机布局 <div class"container"><form class"calculator" name"calc"><input type…...

常说的I2C协议是干啥的(电子硬件)

I2C&#xff08;Inter-Integrated circuit&#xff09;协议是电子传输信号中常用的一种协议。 它是一种两线式串行双向总线&#xff0c;用于连接微控制器和外部设备&#xff0c;也因为它所需的引脚数只需要两条&#xff08;CLK和DATA&#xff09;&#xff0c;硬件实现简单&…...

C/C++进程超详细详解【中部分】(系统性学习day07)

目录 前言 一、守护进程 1.概念 2.守护进程创建的原理&#xff08;如图清晰可见&#xff09; 3.守护进程的实现&#xff08;代码块&#xff09; 二、dup和dup2 1&#xff0c;复制文件描述符 2.文件描述符重定向 三、系统日志 1&#xff0c;打开日志 2&#xff0c;向日…...

S型速度曲线轨迹规划(约束条件为速度和位移)

S型速度曲线规划的基础知识可以查看下面这篇博客: 带平滑功能的斜坡函数(多段曲线控温纯S型曲线SCL源代码+完整算法分析)_RXXW_Dor的博客-CSDN博客PLC运动控制基础系列之梯形速度曲线,可以参看下面这篇博客:PLC运动控制基础系列之梯形速度曲线_RXXW_Dor的博客-CSDN博客运…...

从零手搓一个【消息队列】实现数据的硬盘管理和内存管理(线程安全)

文章目录 一、硬盘管理1, 创建 DiskDataCenter 类2, init() 初始化3, 封装交换机4, 封装队列5, 关于绑定6, 关于消息 二、内存管理1, 数据结构的设计2, 创建 MemoryDataCenter 类3, 关于交换机4, 关于队列5, 关于绑定6, 关于消息7, 恢复数据 三、小结 创建 Spring Boot 项目, S…...

自动驾驶中的感知模型:实现安全与智能驾驶的关键

自动驾驶中的感知模型&#xff1a;实现安全与智能驾驶的关键 文章目录 引言感知模型的作用感知模型的技术安全与挑战结论 2023星火培训【专项营】Apollo开发者社区布道师倾力打造&#xff0c;包含PnC、新感知等的全新专项课程上线了。理论与实践相结合&#xff0c;全新的PnC培训…...

【CVPR 2023】DSVT: Dynamic Sparse Voxel Transformer with Rotated Sets

文章目录 开场白效果意图 重点VoxelNet: End-to-End Learning for Point Cloud Based 3D Object DetectionX-Axis DSVT LayerY-Axis DSVT Layer Dynamic Sparse Window AttentionDynamic set partitionRotated set attention for intra-window feature propagation.Hybrid wind…...

MySQL超入门(1)__迅速上手掌握MySQL

# 1.选择语句 # 注意事项&#xff1a;MySQL不区分大小写&#xff0c;SELECT * 代表选择全部 // 测试一 USE sql_store; -- 使用 sql_store库 SELECT * FROM customers -- 查询customers表 WHERE customer_id 1 OR customer_id 4 -- 条件判断为customer_id 1或customer_id …...

【杂谈】-递归进化:人工智能的自我改进与监管挑战

递归进化&#xff1a;人工智能的自我改进与监管挑战 文章目录 递归进化&#xff1a;人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管&#xff1f;3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU&#xff1a;如何让RNN变得更聪明&#xff1f; 在深度学习的世界里&#xff0c;循环神经网络&#xff08;RNN&#xff09;以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而&#xff0c;传统RNN存在的一个严重问题——梯度消失&#…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted&#xff08;&#xff09;是OpenCV库中用于图像处理的函数&#xff0c;主要功能是将两个输入图像&#xff08;尺寸和类型相同&#xff09;按照指定的权重进行加权叠加&#xff08;图像融合&#xff09;&#xff0c;并添加一个标量值&#x…...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序

一、开发环境准备 ​​工具安装​​&#xff1a; 下载安装DevEco Studio 4.0&#xff08;支持HarmonyOS 5&#xff09;配置HarmonyOS SDK 5.0确保Node.js版本≥14 ​​项目初始化​​&#xff1a; ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...