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

应用层协议考虑的是不同端系统之间的通信,因为网络核心不具有应用层
网络应用程序体系结构
应用程序体系结构,即application architecture
现代网络应用程序中所使用的两种主流体系结构:客户-服务器体系结构和对等(P2P)体系结构
客户-服务器体系结构
client-server architecture
端系统通信模式
一个总是打开的主机称为服务器,它服务于来自许多其他称为客户的主机的请求
特点
- 客户相互之间不直接通信
- 服务器具有固定的、周知的IP地址
- 在CS架构中,客户根据IP地址向服务器发送分组
- 为了实现服务器端的负载均衡,现实情况中的服务器往往是由配备大量主机的数据中心(data center)创建的虚拟服务器
应用程序举例
Web、FTP、Telnet和电子邮件
P2P体系结构
P2P architecture
端系统通信模式
应用程序在间断连接的主机对(对等方)之间使用直接通信
特点
自扩展性(self-scalability)
举个例子,在一个P2P文件共享应用中,尽管每个对等方都由于请求文件产生工作负载,但每个对等方通过向其他对等方分发文件也为系统增加服务能力。
应用程序举例
文件共享(例如BitTorrent)、对等方协助下载加速器(例如迅雷)、因特网电话和视频会议(例如Skype)
缺点
高度非集中式结构,面临安全性、性能和可靠性等挑战
CS和P2P杂合的体系结构
举个例子,即时讯息应用如qq,服务器跟踪用户的IP地址,用户到用户的消息在用户主机间直接发送
进程通信
严谨地说,在进行的通信的主体是进程(process)而非程序
当存储在外存中的程序被加载到内存时才变为进程
当多个进程运行在相同的端系统上时,它们使用进程间通信机制相互通信,这个过程由操作系统管理
运行在不同端系统(可能具有不同的操作系统)上的进程间的通信才属于计算机网络讨论的范畴
运行在两个不同端系统上的进程,通过跨越计算机网络交换报文(message)相互通信
客户和服务器进程
网络应用程序由成对的进程组成,这些进程通过网络相互发送报文。
对每对通信进程,一个被标识为客户(client),另一个进程被标识为服务器(server)
客户进程和服务器进程的定义
在一对进程之间的通信会话场景中,发起通信(即在该会话开始时发起与其他进程的联系)的进程被标识为客户,在会话开始时等待联系的进程是服务器。
举个例子
对于Web而言,浏览器是一个客户进程,Web服务器是一台服务器进程
对于P2P文件共享,下载文件的对等方标识为客户,上载文件的对等方标识为服务器。
进程与计算机网络之间的接口
谈论的问题在于通信进程对是如何实现互相发送报文的?
引入套接字,进程通过套接字(socket)向网络发送报文和从网络接收报文
套接字
- 通信进程与运输层的接口,是同一台主机内应用层与运输层之间的接口
- 建立网络应用程序的可编程接口,应用程序和网络之间的应用程序编程接口(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服务
轻量级运输层协议,仅提供最小服务
无连接
提供一种不可靠数据传送服务
没有拥塞控制机制
因特网运输协议所不提供的服务
目前的因特网运输协议不提供吞吐量保证和定时保证
由于TCP协议提供的可靠数据传输服务,电子邮件、远程终端访问、Web、文件传输都使用了 TCP
因特网电话则对最小带宽有比较高的要求,使用UDP协议来避免TCP的拥塞控制机制和分组开销。但许多防火墙被配置成阻挡(大多数类型的)UDP流量,因特网电话往往需要TCP连接在UDP通信失败的情况下进行备份
应用层协议
application-layer protocol
作用
定义了运行在不同端系统上的应用程序进程如何相互传递报文
应用层协议分两类:共享协议和专用协议。
共享协议是由RFC文档定义的,位于公共领域,例如HTTP协议。
专用协议是只有某些人可以使用的,例如Telnet协议。应用层协议和传输层协议之间的关系是,传输层的协议TCP或UDP加上端口就可以标识一个应用层协议,
应用层协议和网络应用
应用层协议是网络应用的一部分
举个例子:Web应用包括文档格式的标准(即HTML)、Web浏览器、Web服务器和应用层协议(HTTP)
本章谈论的网络应用
5种重要的网络应用:Web、文件传输、电子邮件、目录服务、流式视频和P2P
参考资料
- James F.Kurose&Keith W.Ross Computer Networking A Top-Down Approach(7th ed) 中文版
- TCP如何保证数据的有序传输
相关文章:

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

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

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

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

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

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

AWS SAA知识点整理(作成中)
共通 一些信息已经更新了,但参考题的答案还是旧的。 比如: S3的最大读写性能已经提高到 3,500 PUT/COPY/POST/DELETE or 5,500 GET/HEAD requests per second 并且不再要求使用random prefix 题目中有时候会让选择Not violation 不合适的一项ÿ…...

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入门 索…...

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

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

软件设计师_数据库系统_学习笔记
文章目录 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 三级模式 两级映射 内模式直接与物理数据库相关联的 定…...

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

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

C/C++进程超详细详解【中部分】(系统性学习day07)
目录 前言 一、守护进程 1.概念 2.守护进程创建的原理(如图清晰可见) 3.守护进程的实现(代码块) 二、dup和dup2 1,复制文件描述符 2.文件描述符重定向 三、系统日志 1,打开日志 2,向日…...
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…...

自动驾驶中的感知模型:实现安全与智能驾驶的关键
自动驾驶中的感知模型:实现安全与智能驾驶的关键 文章目录 引言感知模型的作用感知模型的技术安全与挑战结论 2023星火培训【专项营】Apollo开发者社区布道师倾力打造,包含PnC、新感知等的全新专项课程上线了。理论与实践相结合,全新的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.选择语句 # 注意事项:MySQL不区分大小写,SELECT * 代表选择全部 // 测试一 USE sql_store; -- 使用 sql_store库 SELECT * FROM customers -- 查询customers表 WHERE customer_id 1 OR customer_id 4 -- 条件判断为customer_id 1或customer_id …...

四、浏览器渲染过程,DOM,CSSDOM,渲染,布局,绘制详细介绍
知识点: 1、为什么不能先执行 js文件?? 我们不能先执行JS文件,必须等到CSSOM构建完成了才能执行JS文件,因为前面已经说过渲染树是需要DOM和CSSOM构建完成了以后才能构建,而且JS是可以操控CSS样式的&#…...

2021-06-10 51单片机设计一个蜂鸣器报警电路每秒
缘由求助一下谢谢啦51单片机_嵌入式-CSDN问答设计一个蜂鸣器报警电路,按下K1,蜂鸣器响一声,按下K2,蜂鸣器响三声,按下K3,蜂鸣器长鸣。要求响声和间隔的时间均为1秒,长鸣不限时,但是此时应设置一…...

D‘Agostino-Pearson正态检验|偏度skewness和峰度kurtosis
DAgostino-Pearson检验(也称为DAgostino和Pearson正态性检验)是一种用于检验数据是否符合正态分布的统计检验方法。它基于数据的样本统计量,主要包括偏度(skewness)和峰度(kurtosis),…...

基于树莓派CM4制作img系统镜像批量制作TF卡
文章目录 前言1. 环境与工具2. 制作镜像3. 烧录镜像4. 总结 前言 树莓派烧录完系统做定制化配置比较费时间。在面对大批量的树莓派要配置,那时间成本是非常巨大的。第一次配置完可以说是摸着石头过河,但是会弄了以后再配置,都是一些重复性操…...

【中秋国庆不断更】OpenHarmony组件内状态变量使用:@State装饰器
State装饰的变量,或称为状态变量,一旦变量拥有了状态属性,就和自定义组件的渲染绑定起来。当状态改变时,UI会发生对应的渲染改变。 在状态变量相关装饰器中,State是最基础的,使变量拥有状态属性的装饰器&am…...

【Java 进阶篇】MySQL多表关系详解
MySQL是一种常用的关系型数据库管理系统,它允许我们创建多个表格,并通过各种方式将这些表格联系在一起。在实际的数据库设计和应用中,多表关系是非常常见的,它能够更好地组织和管理数据,实现数据的复杂查询和分析。本文…...

【开发篇】十、Spring缓存:手机验证码的生成与校验
文章目录 1、缓存2、用HashMap模拟自定义缓存3、SpringBoot提供缓存的使用4、手机验证码案例完善 1、缓存 缓存是一种介于数据永久存储介质与数据应用之间的数据临时存储介质使用缓存可以有效的减少低速数据读取过程的次数(例如磁盘IO),提高…...

【Aurora 8B/10B IP(1)--初步了解】
Aurora 8B/10B IP(1)–初步了解 1 Aurora 8b/10b IP的基本状态: •通用数据通道吞吐量范围从480 Mb/s到84.48 Gb/s •支持多达16个连续粘合7GTX/GTH系列、UltraScale™ GTH或UltraScale+™ GTH收发器和4绑定GTP收发器 •Aurora 8B/10B协议规范v2.3顺从的 •资源成本低(请参…...

C++ vector容器的介绍与使用
一、vector简介 std::vector 是 C 标准模板库 (STL) 中的一个动态数组容器。允许存储元素(可以使用任何数据类型作为其元素类型)集合,并能够动态调整其大小。 特点: 动态大小:与常规数组不同,vector 可以…...

openstack的组成
OpenStack 是一个开源的云计算平台,由一系列组件构成,各组件之间相互协作,提供了完整的基础设施即服务(IaaS)解决方案。下面详细解释了 OpenStack 的主要组件及其相互关系: Nova(计算服务&…...