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

news2024/11/18 18:41:49

目录

1. 网络应用体系结构

1.1 客户机/服务器结构

1.2 P2P结构 

1.3 混合结构 

2. 进程通信

2.1 标识进程通信 

2.2 套接字(socket) 

3. 网络应用的服务需求

3.1 可靠数据传输

3.2 吞吐量

3.3 定时

3.4 安全性 

3.5 常见网络应用的要求 

4. 因特网提供的传输服务 

4.1 TCP服务

4.2 UDP服务 

5. 应用层协议 


前言:网络应用是计算机网络存在的理由,这些应用在应用层为用户提供服务,满足我们日常需求的网络程序, 都是在应用层  

1. 网络应用体系结构

应用层的体系结构和之前讨论过的网络的体系结构有所不同,网络的体系结构是固定的,而应用程序体系结构(application architecture)由应用程序开发者设计,规定了如何在各种端系统上组织该应用程序

目前主流的应用程序体系结构有三种:

  • 客户-服务器体系结构(client-server, C/S)
  • 点对点结构(Peer-to-peer, P2P)
  • 混合结构(Hybrid)

1.1 客户机/服务器结构

  • 客户机:向服务器请求服务的主机
  • 服务器:一个总是打开的主机,服务其他称为客户 的主机的请求

客户-服务器模型的著名应用程序包括Web、FTP、Telnet和电子邮件,一个典型的例子是Web应用程序,其中总是打开的Web服务器服务于来自浏览器(运行在客户主机上)的请求

服务器的特点有:

  • 7*24小时提供服务
  • 永久性访问地址/域名
  • 利用大量服务器实现可扩展性

客户机的特点有:

  • 与服务器通信,使用服务器提供的服务
  • 间歇性接入网络
  • 可能使用动态IP地址
  • 不会与其他客户机直接通信 

通常而言,如果服务器的请求量过大,一台单独的服务器会不堪重负。为此,配备大量主机的数据中心 (data center) 常被用于创建强大的虚拟服务器。例如谷歌有分布于全世界的30~50个数据中心,而每个数据中心能够有数十万台服务器

1.2 P2P结构 

P2P结构中,对于服务器的依赖减少,取而代之的是应用程序可以在主机之间直接通信,这些主机被称为对等方

许多目前流行的、流量密集型应用都是P2P体系结构的,包括文件共享(如BitTorrent)、对等方协助下载加速器(如迅雷)、因特网电话和视频会议(如Skype) 

P2P的特点有:

  • 没有永远在线的服务器
  • 任意端系统/节点之间可以直接通讯
  • 节点间歇性接入网络
  • 节点可能改变IP地址 

P2P体系结构的优点,也是最引人入胜的特性之一是它的自扩展性,在一个P2P文件共享应用中,尽管每个对等方都由于请求文件产生工作负载,但每个对等方通过向其他对等方分发文件也为系统增加服务能力

P2P体系结构的缺点是它难于管理

1.3 混合结构 

综合C/S结构和P2P结构的特点,在充分利用各自的优点且规避缺点的基础上诞生了混合结构

典型的例子是Napster,它是一款可以在网络中下载自己想要的MP3文件的软件。它同时能够让自己的机器也成为一台服务器,为其它用户提供下载

Napster的特点是:

  • 文件传输使用P2P结构
  • 文件搜索采用C/S结构——集中式(每个节点向中央服务器登记自己的内容,每个节点向中央服务器提交查询请求,查找感兴趣的内容) 

2. 进程通信

2.1 标识进程通信 

用操作系统的术语来说,应用程序之间的通信实际上是进程之间的通信,进程也就是主机上运行的程序

同一主机上运行的进程之间可以通过进程间通信机制和操作系统来实现进程通信

不同主机上运行的进程间主要通过消息交换来实现进程通信

在一个客户-服务器结构中

客户机进程: 发起通信的进程
服务器进程: 等待通信请求的进程 

在一个P2P文件共享结构中

下载文件的对等方标识为客户

上传文件的对等方标识为服务器

2.2 套接字(socket) 

多数应用程序是由通信进程对组成,每队中的两个进程互相发送报文。进程通过一个称为套接字(socket)的软件接口向网络发送报文和从网络接受报文

进程间通信利用socket发送/接收消息实现,这一过程类似于寄信

  1. 发送方将消息送到门外邮箱 (这里的门就相当于套接字)
  2. 发送方依赖(门外的)传输基础设施将消息传到接收方所在主机,并送到接收方的门外
  3. 接收方从门外获取消息

为了实现不同主机上的进程间通信,每个进程必须拥有标识符,每台主机有一个唯一的IP地址,但这不足以唯一确定一个进程(一台主机上可以有多个进程需要通信),我们为主机上每个需要通信的进程分配一个端口号,采用IP地址+端口号来标识一个进程

IP地址:主机的标识,一个IP地址可唯一标识一台主机 

端口号:主机上进程的标识,一个端口号可唯一标识主机上的一个进程,典型的如:

HTTP Server:80

Mail Server:25

3. 网络应用的服务需求

计算机网络是分层结构,下层为上层提供服务,而这种服务通过接口来实现

在我们采用的五层参考模型中,应用层的下层是传输层,套接字是应用程序和传输层协议之间的接口,因此在设计应用程序时,往往会根据应用程序的要求来选择相应的传输层协议

从四个方面对应用程序的服务要求进行分类:可靠数据传输吞吐量定时安全性

3.1 可靠数据传输

之前已经讨论过,分组在计算机网络中可能丢失——路由器缓存溢出、分组比特损坏后被丢弃。而某些应用程序对于数据丢失是不可容忍的,例如电子邮件、文件传输、远程主机访问、Web文档传输以及金融应用等

为了支持这些应用,必须做一些工作以确保由应用程序的一端发送的数据正确完全地交付给应用程序的另一端

如果一个协议提供了确保数据交付的服务,就认为提供了可靠传输机制

当一个传输层协议提供可靠数据传输时,发送进程只要将其数据传递进套接字,就可以完全相信该数据能无差错地到达接收进程

有一些应用对数据的丢失并不敏感,这类应用称为忍丢失的应用(loss-tolerant applications),最常见的是多媒体应用,如交谈式音频/视频,它们能够承受一定量的数据丢失

3.2 吞吐量

可用吞吐量是指发送进程能够向接收进程交付比特的速率

两个进程之间的通信往往依赖于某条网络路径,而这条路径的带宽会被别的会话所共享,随着会话的到达和离开,可用吞吐量会产生波动

对于一些应用程序而言,传输层协议必须保证能够以某种特定的速率提供确保的可用吞吐量

例如因特网电话应用程序对语音以32kbps的速率进行编码,那么它需要以这个速率向网络发送数据,并以该速率向接收应用程序交付数据,如果协议不能提供这种吞吐量,这个应用程序就必须以较低速率进行编码或放弃发送,这种具有吞吐量要求的应用程序被称为带宽敏感的应用(bandwidth-sensitive applications)

像电子邮件、文件传输以及Web传送这种能够根据可用带宽或多或少地利用可供使用吞吐量的应用称为弹性应用(elastic applications

3.3 定时

传输层协议也能提供定时保证,例如:发送方注入进套接字中的每个比特到达接收方的套接字不迟于100ms

这种服务将对交互式实时应用程序有吸引力,如因特网电话、虚拟环境、电话会议和多方游戏,所有这些服务为了有效性而要求数据交付有严格的时间限制 

打电话和多人游戏时,这种服务能保证时延在一定范围内,满足通话或游戏实时性

3.4 安全性 

传输层协议也能为应用程序提供一种或多种安全性服务。这种服务能够在发送和接收进程之间提供机密性,以防止该数据以某种方式在这两个进程之间被观察到

例如:在发送主机中,传输层协议能够加密由发送进程传输的所有数据,在接收主机中,传输层协议能够在数据交付给接收进程之前解密这些数据

3.5 常见网络应用的要求 

应用数据丢失带宽时间敏感
文件传输不能丢失弹性
电子邮件不能丢失弹性
Web文档不能丢失弹性(几kbps)
因特网电话/视频会议容忍丢失

音频(几kbps~1Mbps)

视频(10kbps~5Mbps)

是,100ms
流式存储音频/视频容忍丢失同上是,几秒
交互式游戏容忍丢失几kbps~10kbps是,100ms
智能手机讯息不能丢失弹性是和不是

4. 因特网提供的传输服务 

因特网(更一般的是TCP/IP网络)为应用程序提供两个传输层协议——TCP和UDP,作为一个软件开发者,为因特网创建一个新的应用时,首先要做出的决定是,选择UDP还是TCP

4.1 TCP服务

TCP服务模型包括面向连接服务和可靠数据传输服务

面向连接

  • 在应用层数据报文开始流动之前,TCP让客户和服务器互相交换传输层控制信息,这就是所谓的"握手"
  • “握手”之后,一个TCP连接就在两个进程的套接字之间建立了,这条连接是全双工
  • 应用程序结束报文发送,必须拆除该连接

可靠数据传输

  • 通信进程能够依靠TCP,无差错、按适当顺序交付所发送的数据
  • TCP的数据交付是基于字节流

另外,无论是TCP还是UDP都没有提供任何的加密机制,为了保证安全性,因特网界已经研制了TCP的加强版——安全套接字层Secure Sockets Layer, SSL ),提供了进程到进程间的安全性服务,包括加密、数据完整性和端点鉴别

4.2 UDP服务

UDP是无连接的,它提供不可靠数据传输服务,是一种尽最大努力向上层交付数据的协议(言外之意是不能确保数据交付的准确性)

当一个进程将一个报文发送进UDP套接字时,UDP协议并不保证该报文将到达接收进程。不仅如此,到达接受进程的报文也可能是乱序到达的 

我们将在传输层详细介绍TCP和UDP的相关知识

5. 应用层协议 

现在我们知道了应用是如何将报文发送进套接字并实现网络进程通信的,接下来要面临的问题是如何规定应用层协议

网络应用需遵循应用层协议,它定义了运行在不同端系统上的应用进程如何让相互传递报文。有些应用层协议是公开的,这些协议

  • 由RFC(Request For Comments)定义 
  •  允许互操作
  • HTTP, SMTP, ……

有一些应用层协议是私有的,

  • 多数P2P文件共享应用 

应用层协议的内容主要有

  • 消息的类型(type) —— 请求消息、响应消息
  • 消息的语法(syntax)/格式 —— 消息中有哪些字段、每个字段如何描述
  • 字段的语义(semantics) —— 字段中信息的含义
  • 规则(rules) —— 进程何时发送/响应消息、进程如何发送/响应消息
HTTP请求消息的格式

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ArcGIS基础实验操作100例--实验69布局中添加报表和Excel图表

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台:ArcGIS 10.6 实验数据:请访问实验1(传送门) 高级编辑篇--实验69 布局中添加报表和Excel图表 目录 一、实验背景 二、实验数据 三、实验步骤 &…

最快的表格:Dapfor Wpf GridControl

Dapfor Wpf GridControl 特性Wpf GridControl 是我们网格的第三个版本,它基于 WPF 技术。前两个产品是基于Microsoft WinForms 技术的MFC Grid 和.Net Grid。在网格的第三次迭代中,Dapfor 的专家采用了以前产品的最佳功能,从而产生了比其他供…

(4)go-micro微服务proto开发

文章目录一 Protobuf介绍二 安装Protobuf三 Protobuf语法1.1 基本规范1.2 字段规则1.3 service如何定义1.4 Message如何定义四 proto代码编写五 生成.go文件六 最后一 Protobuf介绍 Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,…

微信小程序开发笔记 基础篇③——自定义数据dataset,事件触发携带额外信息

文章目录一、前文二、视频演示三、原理和流程四、注意事项五、全部源码六、参考一、前文 想要实现一个电费充值界面。多个不同金额的充值按钮,每个按钮都携带自定义数据(金额)点击不同金额的充值按钮,就会上传对应的数据&#xf…

ssh无法登录Centos9解决方法

环境:Centos Stream release 9 情况:通过ssh方式,不管本地登录localhost还是远程登录,均失败。 尝试关闭firewalld和selinux,也不起作用。经搜索和尝试,需要修改/etc/ssh/sshd_config的PermitRootLogin的参…

Cpp20入门0:使用模块输出HelloWorld (import module)

时间:2023.1.8 视频地址:C20要不要学???_哔哩哔哩_bilibili 目录 一、Cpp20_HelloWorld ​编辑 头文件 Module.ixx 源文件 main函数 0.Cpp20_HelloWorld.cpp 二、Cpp20 main直接import 三、visual studio 快捷…

C语言银行管理系统

程序示例精选 C语言银行管理系统 如需安装运行环境或远程调试&#xff0c;见文章底部微信名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对<<C语言银行管理系统>>编写代码&#xff0c;代码整洁&#xff0c;规则&#xff0c;易读。 学习与应…

指针进阶版☞(超easy~)

回顾初级指针&#xff1a;http://t.csdn.cn/5tCSr &#xff08;其中包含指针和指针数组&#xff09; 接下来的内容是进阶新知识点哟 (&#xff3e;&#xff35;&#xff3e;)ノ~&#xff39;&#xff2f;一.字符指针o(*&#xffe3;▽&#xffe3;*)ブ1.常量字符的指针。对于常…

STL-vector容器和string容器

目录 一、STL的基本概念 二、vector容器 1.遍历 2.vector存放自定义数据类型 3.容器嵌套容器 4.构造函数 5.容量和大小 6.插入和删除 7.容器互换 三、string容器 1.string和char的区别 2.string的构造函数 3.赋值操作 4.字符串拼接 5.查找和替换 6.比较 7.字符串的存取和单个字…

Linux应用编程---5.多线程的创建以及线程间数据共享

Linux应用编程—5.多线程的创建以及线程间数据共享 5.1 多线程的创建 ​ 创建多线程&#xff0c;则多次调用pthread_create()函数。创建两个线程&#xff0c;线程1每隔一秒打印字符串&#xff1a;Hello world&#xff01;&#xff0c;线程2每隔一秒打印字符串&#xff1a;Goo…

【目标检测】Casecade R-CNN论文讲解(超详细版本)

目录&#xff1a;Casecade R-CNN论文讲解一、背景二、简单回顾R-CNN结构2.1 Training阶段2.2 Inference阶段三、论文摘要四、介绍五、关于mismatch问题六、关于单纯增大训练时IoU阈值问题七、相关工作7.1 two-stage7.2 one-stage7.3 multi-stage八、Cascade R-CNN讲解九、总结论…

【NI Multisim 14.0原理图设计基础——元器件分类】

目录 序言 一、元器件分类 &#x1f349;1.电源库 &#x1f349;2.基本元器件库 &#x1f349;3.二极管库 &#x1f349; 4.晶体管库 &#x1f349;5.模拟元器件库 &#x1f349; 6.TTL库 &#x1f349;7.CMOS库 &#x1f349;8.其他数字元器件库 &#x1f349;9.混合…

白帽子VPS 选购指南

本文长期更新&#xff0c;用于记录价格便宜&#xff0c;可以支持个人代码审计测试/部署资产监控任务/hw临时使用等。因为国内云服务器的一些限制&#xff0c;所以文章推荐服务器均为国外服务器&#xff0c;且不需要进行实名认证 PS&#xff1a;不要进行未授权非法活动&#xf…

2、HDFS 入门

一、概述 ​ HDFS&#xff08;Hadoop Distributed File System&#xff09;是分布式文件存储系统&#xff0c;主要用来解决海量数据的存储问题。HDFS比较适合一次写入&#xff0c;多次读出的场景。 NameNode&#xff08;NN&#xff09; 管理HDFS的namespace维护副本策略管理Bl…

黑马学ElasticSearch(二)

目录&#xff1a; &#xff08;1&#xff09;初始ES-安装IK分词器 &#xff08;2&#xff09;IK分词器的拓展和停用词典 &#xff08;3&#xff09;操作索引库-mapping属性 &#xff08;4&#xff09;操作索引库-创建索引库 &#xff08;5&#xff09;操作索引库-查询-删除…

2023浙大MPA项目复试参考

今年浙大MPA项目复试是否会恢复线下面试呢&#xff1f;从形式上来说&#xff0c;常规批复试无论是采取钉钉线上还是现场&#xff0c;似乎都可以顺利完成这一项研究生录取前的必要环节。但在2021年浙大MBA和MPA两个项目顶着风险组织了一次现场面试&#xff0c;只不过是放在了西溪…

EEG-SEED数据集作者的---基线论文阅读和分析

《Investigating Critical Frequency Bands and Channels for EEG-based Emotion Recognition with Deep Neural Networks》 方法&#xff1a; A.预处理根据被试的反应&#xff0c;只选择诱发目标情绪的实验时期进行进一步分析。 将原始脑电图数据降采样至200Hz采样率。目视…

【C语言课堂】 函数精讲

欢迎来到 Claffic 的博客 &#x1f49e;&#x1f49e;&#x1f49e; 前言&#xff1a; 上期我们详细讲了分支和循环语句&#xff0c;这次我们来讲解函数。说到函数&#xff0c;大家应该不陌生。C语言中的函数是什么样的呢&#xff1f;听我娓娓道来 ~ 目录 ❤️1.何为函数 &a…

目标检测:YOLO V1 思想总结

目标检测&#xff1a;YOLO V1 思想总结YOLO V1Introduction&#xff08;模型介绍&#xff09;Network Design&#xff08;网络设计&#xff09;Backbone&#xff08;骨干网络&#xff09;Grid Cell&#xff08;单元格&#xff09;Loss Function&#xff08;损失函数&#xff09…

信息系统项目管理师考点之进度与成本常见计算

信息系统项目管理师考点之进度与成本常见计算总时差和自由时差区别PERT技术进度管理常见问题解决方案挣值分析成本控制主要工作内容参考链接总时差和自由时差区别 总时差 指一项工作在不影响总工期的前提下所具有的机动时间 总时差 LS - ES LF - EF 自由时差 指一项工作在不…