计算机网络应用层协议分析总结

2023-11-07

1、应用层协议原理

1.1、网络应用程序体系结构

C/S结构,有一个总是打开的主机称为服务器,它服务于来自许多其他称为客户机的主机请求。客户机主机既可能有时打开,也可能总是打开。C/S结构之下,客户机之间不直接通信。服务器有固定的IP地址。在C/S体系结构中,常用主机集群创建强大的虚拟服务器。基于C/S结构的应用服务通常是基础设施密集的(infrastrucuture intensive)。

P2P结构,任意间断连接的主机对(称为对等方)直接相互通信,不必通过专门的服务器。P2P结构的最突出特性之一是它的自扩展性(self-scalability)。

1.2、进程通信

同一个端系统上的进程通过操作系统上的进程间通信机制相互通信。不同端系统上的进程通过跨越计算机网络交换报文(message)而相互通信。

客户机和服务器进程

对于每对通信进程,通常将这两个进程之一标示为客户机(client),另一个标示为服务器(server)。标示的规则是,在给定的一对进程之间的通信回话中,发起通信的进程称为客户机,在会话开始时等待联系的进程是服务器。(P2P结构下一个进程既可以使服务器也可以是客户机)。

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

进程通过一个称为套接字(socket)的软件接口在网络上发送和接收报文。套接字是同一台主机内应用层与运输层之间的接口,是网络上建立网络应用程序的可编程接口,称为应用程序和网络之间的应用程序编程接口(API)。

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

可靠数据传输

如果一个协议能够确保由应用程序的一端发送的数据正确地、完全地交付给该应用程序的另一端,那么该协议提供了可靠数据传输服务(reliable data transfer)。

吞吐量

两个进程在一条网络路径上进行通信会话时,可用吞吐量就是发送进程能够向接收进程交付比特的速率。因为其它会话将共享沿着该网络路径上的带宽,并且这些其它会话将会到达和离开,所以可用吞吐量将随时间波动。因此有了另一种服务,即运输层协议能够以某种特定的速率提供确保的可用吞吐量。

定时

运输层协议也能提供定时保证,如同吞吐量保证一样,定时保证可以以多种形式实现。例如,可以设置发送方注入进套接字的每个比特到达接收方的套接字不迟于100ms。这种服务对交互式实时应用程序非常适用。

安全性

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

1.4、因特网提供的传输服务

因特网上的应用使用了两个运输层协议:UDP和TCP。

TCP服务

面向连接服务: 使用TCP协议时,在应用层数据报文开始流动之前,其客户机程序和服务器程序之间相互交换运输层控制信息(握手过程)。握手阶段后,两个进程的套接字之间建立一个TCP连接,连接双方可以在此连接上同时进行报文收发。报文收发结束之后,该连接将被拆除。

可靠数据传输服务:进行通信的进程依靠TCP协议,无差错、按适当顺序交付发送的数据。

拥塞控制机制:发送方和接收方之间的网络出现拥塞时,TCP协议的拥塞机制会抑制发送进程。TCP协议的拥塞控制试图限制每个TCP连接,使它们达到公平共享网络带宽的目的。

UDP服务

UDP是一种不提供不必要服务的轻量级运输层协议。它是无连接的,两个进程通信前没有握手过程。UDP协议提供的是不可靠数据传输服务,也就是说,当进程通过UDP套接字发送报文时,UDP协议不保证该报文能够被接收进程收到。此外,接收进程收到报文的顺序也可能是乱序的。UDP协议没有拥塞控制机制。

TCP和UDP的安全问题

TCP和UDP都没有提供任何加密机制,发送进程传送至套接字的数据与经过网络传送到目的进程的数据相同。如果某个进程以明文方式将一个口令传送至它的套接字,该明文口令将经过发送方和接收方之间的所有链路传送,这就可能在任何中间链路被嗅探和发现。

由于存在种种隐私和其他安全问题,人们研制了TCP的加强版本,称为安全套接字层(Secure Socket Layer, SSL)。SSL不是独立于TCP和UDP的第三种协议,而只是对TCP的增强。这种增强是在应用层上实现的。如果一个应用程序要使用SSL的服务,它需要在其客户机和服务器中都包括SSL的代码。

进程寻址

为了识别接收进程,需要定义两种信息:主机名称或地址;目的主机上接收进程的标识。在因特网中,主机是用IP地址进行标识的。目的地端口号则用于标识接收进程。

2、web应用和HTTP协议

2.1、HTTP概况

web的应用层协议是产文本传输协议(HyperText Transfer Protocol, HTTP)。HTTP协议由两部分程序实现

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算机网络应用层协议分析总结 的相关文章

随机推荐

  • C++与Java比较(转)

    作为一名C 程序员 我们早已掌握了面向对象程序设计的基本概念 而且Java的语法无疑是非常熟悉的 事实上 Java本来就是从C 衍生出来的 然而 C 和Java之间仍存在一些显著的差异 可以这样说 这些差异代表着技术的极大进步 一旦我们弄清
  • VS2019 windows驱动开发环境配置

    配置Windows驱动开发环境 VS2019 下载VS2019 下载链接 https visualstudio microsoft com zh hans downloads 选择你所需要的开发环境和配置 确认下载完后 在你安装的WDK 的
  • 【数据库系统概论】第三章:SQL

    B站视频 B站第一章 参考资料 图片来自视频链接和参考资料 本章目录 SQL特点 SQL基本概念 SQL的基本语法 SQL特点 SQL包括 数据查询 数据操作 数据定义 数据控制 它是一个非过程语言 什么是非过程性语言 我们在逻辑和物理模型
  • WPF依赖属性优先级

    有下面代码 属性 样式 触发器都设置了按钮的颜色 请问按钮最终是什么颜色
  • DIY个人智能家庭网关—— 路由器篇之安装python

    Python是一种解释型 面向对象 动态数据类型的高级程序设计语言 在openwrt上进行二次开发编写自己的程序 python肯定是最方便最快捷的编程语言 因为它是解释型语言 无需openwrt的编译环境 只要安装好了python就可以直接
  • vite跨域问题,你可能需要看这篇文章

    最近在学习项目的时候 使用了vite工具进行构建 然后出现了跨域的问题 中间的曲折不过多叙述 直接进入正题 前端成功启动后的界面 然后在后端进行的Controller上使用了如下的配置 然后浏览器就会出现跨域的问题 为什么会出现这个情况了
  • 学生成绩管理系统、Java

    这是一个功能比较简单的学生管理系统 特别适合初学者练练手 没有使用Java的特点 更完美的学生管理系统在我的博客寻找 import java util Scanner public class StudentManagement publi
  • JS - 4字节转单精度浮点数

    文章目录 JS 数据类型 IEEEE475 Sign 符号位 Exponent 指数位 Significand 小数位 转换公式 转换方法 在线工具 参考鸣谢 JS 数据类型 JS 是一种弱类型的语言 它的数据类型包含字符串值 数值 布尔值
  • C语言,用函数封装实现字符串逆置

    include
  • 门控时钟

    结构 1 这种系统时钟门控的机制算然简单 但是容易使门控后的时钟不完整 甚至产生毛刺 结构 2 这种门控方法避免了门控时钟的不完整性 也可以避免避免毛刺的产生 但门控后的时钟可能会产生亚稳态 结构 3 这种结构解决了结构 2的亚稳态问题 结
  • 【FreeRTOS】队列的使用

    作者主页 凉开水白菜 作者简介 共同学习 互相监督 热于分享 多加讨论 一起进步 专栏资料 https pan baidu com s 1nc1rfyLiMyw6ZhxiZ1Cumg pwd free 点赞 收藏 再看 养成习惯 订阅的粉丝
  • Mysql Partition 理论知识总结

    简述 本文内容主要 Giuseppe Maxia 曾在Mysql Conference Expo 2010发表关于
  • qt_共享库的使用

    在 Windows 中 MinGW 将输出 a 和 dll MSVC 将输出 lib 和 dll 在 Linux 中 MinGW 将输出 so so 1 so 1 0 和 so 1 0 0 lib 其中 a 和 so 是导入库 它们有助于将
  • STM32的CAN过滤

    文章目录 简介 相关寄存器 代码实例 只过滤一个CAN ID 过滤多个CAN ID 简介 STM32的CAN控制器可以对接收到的数据报文进行过滤 只接收指定CAN ID的数据 对于其他CAN ID发送过来的数据 则不再触发CAN中断 根据芯
  • 关于C语言的二分法

    1 二分法 二分法所属现代词 指的是数学领域的概念 经常用于j计算机中的查找过程中 2 基本思想 把函数f x 的零点所在的区间 a b 满足f a f b lt 0 一分为二 得到 a m 和 m b 根据 f a f m lt 0 是否
  • Harmony OS 开发指南——源码下载和编译

    本文介绍了如何下载鸿蒙系统源码 如何一次性配置可以编译三个目标平台 Hi3516 Hi3518和Hi3861 的编译环境 以及如何将源码编译为三个目标平台的二进制文件 坑点总结 下载源码基本上没有太多坑 可以很顺利的进行 编译源码主要的一个
  • PS CJ37/CJ38/CJ34 增加/返回/转借预算

    目录 CJ37增加预算 CJ38返回预算 CJ34转借预算 01 CJ37增加预算 1 补充预算 调用事务代码CJ37 输入要增加的WBS要素的预算 点击保存即可 2 代码示例 预算补充代码 调用函数 KBPP EXTERN UPDATE
  • 【目标检测】基于yolov7的海上船舶检测和识别(附代码和数据集,Windows系统)

    写在前面 首先感谢兄弟们的订阅 让我有创作的动力 在创作过程我会尽最大能力 保证作品的质量 如果有问题 可以私信我 让我们携手共进 共创辉煌 本次项目是在Windows系统上运行的 Ubuntu系统上运行请看专栏的另外一篇文章 文末附项目代
  • 精练排序算法

    排序算法 1 首先列举一些经典的案例 皆为python编写 1 a 33 24 45 16 77 for i in range 2 for j in range 4 i 1 if a j gt a i a j a i a i a j pri
  • 计算机网络应用层协议分析总结

    1 应用层协议原理 1 1 网络应用程序体系结构 C S结构 有一个总是打开的主机称为服务器 它服务于来自许多其他称为客户机的主机请求 客户机主机既可能有时打开 也可能总是打开 C S结构之下 客户机之间不直接通信 服务器有固定的IP地址