【计算机网络】应用层协议原理
文章目录
- 网络应用程序体系结构
- 客户-服务器体系结构
- 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 …...
.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 适用场…...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...
Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...
