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

news2024/11/24 15:31:34

文章目录

  • 网络应用程序体系结构
    • 客户-服务器体系结构
    • 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如何保证数据的有序传输

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

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

相关文章

Redis实现API访问频率限制

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

phpstudy_pro高效率建一个属于自己的网站

1.下载phpStudy_32 2.下载wordpress-6.3-zh_CN 安装好phpstudy后启动phpstudy中对应的服务,并在网站中配置好对一个的应用的路径 ps:根目录中的路径是你想要通过phpstudy部署应用的路径 这里以wordpress为例 将下载wordpress的压缩包解压后,需要修改…

Python海洋专题六之Cartopy画地形水深图

Python海洋专题六之Cartopy画地形水深图 海洋与大气科学 上期读取nc水深文件,并出图 但是存在一些不完美,本期修饰 本期内容 1:使用Cartopy画出范围图 导入函数包 import matplotlib.pyplot as plt import cartopy.crs as ccrs import c…

上机实验一 顺序表的基本操作和简单程序 西安石油大学数据结构

上机一 实验名称:顺序表的基本操作和简单程序 题目:设计一个有序顺序表,实现以下操作: 1.将元素x插入表中并保持有序; 2.查找值为x的元素,若找到则将其删除; 3.输出表中所有元素。 要求&a…

当面试被问到jvm(Java虚拟机)时,如何将面试官引入自己的节奏?

本文目录 前言快问快答抛砖引玉锦上添花好书推荐总结 前言 作为一名Java开发工程师,不管是校招还是社招jvm一定是必问必会的知识点。虽然说真正开发中用到的不多,甚至可以说用不到(对于刚入行或者Java初级),但是当面试…

mathtype试用期后如何继续使用?

MathType7已经正式发布,作为一款强大的数学公式编辑器可以将编辑好的公式保存成多种图片格式或透明图片模式,可以很方便的添加或移除符号、表达式等模板(只需要简单地用鼠标拖进拖出即可),也可以很方便地修改模板,为理…

AdaBoost算法解密:从基础到应用的全面解析

目录 一、简介什么是AdaBoostAdaBoost的历史和重要性定义 二、基础概念集成学习(Ensemble Learning)定义示例 弱学习器和强学习器定义示例 三、AdaBoost算法原理样本权重(Sample Weights)定义示例 学习器权重(Learner …

大麦订单截图生成 大麦一键生成订单截图

新版大麦订单生成 图样式展示 这个样式图就是在大麦生成完的一个订单截图,它的状态是等待卖家发货 后台一键生成,独立后台管理 教程:修改conf数据库账号密码 不会的可以看源码里有搭建教程 下载程序:https://pan.baidu.com/…

python自动解析301、302重定向链接

嗨喽~大家好呀,这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 使用模块requests 方式代码如下: import requests url_string"http://******" r requests.head(url_string, streamTrue) print r.h…

测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)

文章目录 一、任务描述二、指标分析2.1 TP/FP/FN/TN2.2 精准率2.3 召回率 三、接口处理四、数据集处理五、开始计算指标五、实用工具5.1 移动文件5.2 可视化JSON标签5.3 可视化TXT标签 一、任务描述 通过给定的算法接口,对算法的输出(置信度、检测框、告…

【教学类-38-02】20230724京剧脸谱2.0——竖版(小彩图 大面具)(Python 彩图彩照转素描线描稿)

结果展示 背景需求: 前文体运用Python颜色提取功能,将“京剧脸谱”彩色图片转化为线描图案。 【教学类-38】20230724京剧脸谱1.0——横版“彩图线图等大”(Python 彩图彩照转素描线描稿)_reasonsummer的博客-CSDN博客 存在问题&…

大语言模型之十二 SentencePiece扩充LLama2中文词汇

大语言模型的发展潜力已经毋庸置疑了,如何让中文大语言模型更适合中小公司使用这是一道难题。在模型的选择上我们倾向于选择国外的LLama或者BLoom之类的,而不是百川之类的中文大模型,原因在于从基建到框架到数据国外的开源资料非常多&#xf…

背诵不等于理解,深度解析大模型背后的知识储存与提取

自然语言模型的背诵 (memorization) 并不等于理解。即使模型能完整记住所有数据,也可能无法通过微调 (finetune) 提取这些知识,无法回答简单的问题。 随着模型规模的增大,人们开始探索大模型是如何掌握大量知识的。一种观点认为这归功于 “无…

国庆共68条评论《乡村振兴战略下传统村落文化旅游旅游设计》许少辉八一新书

国庆共68条评论《乡村振兴战略下传统村落文化旅游旅游设计》许少辉八一新书 国庆共68条评论《乡村振兴战略下传统村落文化旅游旅游设计》许少辉八一新书

【STM32】IAP升级03关闭总中断,检测栈顶指针

IAP升级方法 IAP升级时需要关闭总中断 TM32在使用时有时需要禁用全局中断,比如MCU在升级过程中需禁用外部中断,防止升级过程中外部中断触发导致升级失败。 ARM MDK中提供了如下两个接口来禁用和开启总中断: __disable_irq(); // 关闭总中…

函数指针详解和简单使用

概念 函数指针&#xff1a;首先它是一个指针&#xff0c;一个指向函数的指针&#xff0c;在内存空间中存放的是函数的地址&#xff1b; 引入 #include <stdio.h>void test() {printf("hehe\n"); } int main() {printf("%p\n", test);printf(&quo…

基于 SpringBoot+Vue 的大学生租房网站

1 简介 本大学生租房系统使用简洁的框架结构&#xff0c;专门用于用户浏览首页&#xff0c;房屋信息&#xff0c;房屋评价&#xff0c;公告资讯&#xff0c;个人中心&#xff0c;后台管理&#xff0c;意见反馈等信息&#xff0c;对个人信息进行修改等&#xff0c;以及系统管理…

基于Java的大学生就业招聘系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

Java基础---第十篇

系列文章目录 文章目录 系列文章目录一、说说Java 中 IO 流二、 Java IO与 NIO的区别(补充)三、java反射的作用于原理一、说说Java 中 IO 流 Java 中 IO 流分为几种? 按照流的流向分,可以分为输入流和输出流; 按照操作单元划分,可以划分为字节流和字符流; 按照流的角色…

【笔试强训day02】倒置字符串 排序子序列

​&#x1f47b;内容专栏&#xff1a; 笔试强训集锦 &#x1f428;本文概括&#xff1a;C笔试强训day02。 &#x1f43c;本文作者&#xff1a; 阿四啊 &#x1f438;发布时间&#xff1a;2023.10.1 二、day02 1.倒置字符串 题目描述&#xff1a; 将一句话的单词进行倒置&…