当前位置: 首页 > article >正文

计算机网络•自顶向下方法:网络应用原理

网络应用原理

网络应用架构

目前有两种主流的网络应用架构:

  • 客户-服务器架构(Client-server)

    • 服务器(server):
      • 有一台总是在线的主机,上面运行着服务器程序(server)
      • 服务器主机(server machine)具有永久的、众所周知的地址
    • 客户(client)
      • 用户终端上运行一个客户程序(client),需要时与服务器程序通信,请求服务
      • 客户机(client machine)使用动态地址,通常不会总是在线

    客户只与服务器通信,客户之间不通信
    在这里插入图片描述

  • 对等架构(Peer-to-peer ,P2P)

    • 没有总是在线的服务器主机
    • 任意一对端系统(对等方)可以直接通信
    • 对等方多为用户自己的计算机,使用动态地址
    • 每个对等方既可请求服务,也可提供服务
    • 典型的P2P应用:
      • BT、迅雷
      • Skype
      • PPLive

在这里插入图片描述

两种架构的比较

客户-服务器架构P2P架构
资源集中:资源(服务)只在某些固定的终端上提供任何终端都可以提供资源(服务)
资源发现简单易于扩展、均衡网络流量
集中式计算带来的问题:服务端扩容压力、网络流量不均衡、响应延迟长资源发现困难、社会问题(版权、安全性等)

不同终端上的进程通信

不管采用哪种网络应用架构,都需要解决不同终端上应用程序之间的通信问题。按照操作系统的术语,在端系统上运行的程序称为进程。因此,不同终端上的网络应用程序通信,就是不同终端上的进程进行通信。

  • 进程:主机上运行的程序
  • 在分布式应用中,不同终端上的进程需要通信
  • 进程通信的方法:
    • 同一个主机内:进程间通信机制(OS提供)
    • 在不同主机上:通过交换报文进行通信
  • 一次确定的通信会话中,总能标示一方为客户进程,另一方为服务器进程
    • 客户进程:主动发起请求的进程
    • 服务器进程:接收请求的进程

进程与网络的接口:套接字(socket)

设想在应用程序和网络之间存在一扇门(套接字):

  • 发送报文:发送进程将报文推到门外
  • 门外的运输设施(因特网)将报文送到接收进程的门口
  • 接收报文:接收进程打开门,艮即可收到报文

套接字是应用层和传输层的接口,也是应用程序和网络之间的API

在这里插入图片描述

进程编址

每个进程都需要一个标识,以便其它进程能够找到它。

在因特网中,主机是使用IP地址标识的,使用IP地址能够标识进程吗?

不能,因为一台主机上通常运行着许多进程

端口号:用于区分同一个主机上的不同进程。

进程标识包括:

  • 主机地址
  • 与该进程关联的端口号

端口范围:端口号是一个16位的整数,范围是0-65535。

端口号的例子:HTTP server使用端口80,Mail server使用端口25

端口号与IP地址结合:在网络通信中,IP地址 + 端口号 共同组成了一个完整的标识符,这就是所谓的套接字(Socket)地址。例如,192.168.1.1:80表示IP地址为192.168.1.1的设备上,HTTP服务的端口号为80。

传输服务

在创建一个应用程序时,开发者需要选定一种传输服务

数据完整性 (Data Integrity)

  • 要求:确保传输的数据在传输过程中不被损坏或篡改。
  • 适用应用:许多应用需要完全可靠的数据传输,尤其是涉及重要文件或信息的传输,如文件传输邮件传输等。

吞吐量 (Throughput)

  • 要求:应用程序需要根据网络带宽的需求来选择适当的吞吐量。某些应用(如文件传输、视频流)可能需要较高的吞吐量。
  • 适用应用:高吞吐量需求的应用包括文件传输大规模数据传输等。

延迟 (Timing)

  • 要求:一些应用对传输的延迟非常敏感,需要尽可能减少延迟,确保数据能迅速到达。
  • 适用应用:延迟敏感的应用包括网络电话实时视频会议交互式网络游戏等。

安全性 (Security)

  • 要求:某些应用对数据的加密性和完整性有很高的要求,防止数据在传输过程中被窃听或篡改。
  • 适用应用:涉及敏感信息的应用,如银行交易在线购物电子邮件等,需要提供安全保障。

因特网能够提供的传输服务

因特网提供2种传输服务,分别用TCP和UDP协议实现

TCPservice:

  • 面向连接:保证传输顺序
  • 可靠传输:不出错
  • 流量控制:发送进程不会“压垮”接收进程
  • 拥塞控制:网络超载时抑制发送进程

不提供:及时性,最低带宽保证,安全性

UDP service:通过因特网接收和发送报文

不提供:顺序保证,可靠传输,流量控制,拥塞控制,及时性,最低带宽保证,安全性

应用层协议

应用层协议定义了不同应用进程之间交换的报文格式、字段及其语义,同时也规定了发送和接收报文时应遵循的规则。它是应用程序和网络之间的“语言”,通过这种协议,应用进程可以在不同计算机或设备间进行有效的通信。

应用层协议通常包括以下几个组成部分:

  • 报文类型:规定了应用程序中不同类型的消息(请求、响应等)。
  • 报文语法:定义了消息中各字段的格式和组织方式。例如,在HTTP协议中,报文由请求行、头部、体部分组成。
  • 报文语义:每个字段或部分的具体含义。例如,HTTP的User-Agent字段表示客户端使用的浏览器或操作系统信息。
  • 交换规则:定义了如何正确地交换报文,包括哪些报文可以顺序发送,哪些应该等待响应等。

协议分类

  • 公共域协议:公共域协议通常是由标准组织(如IETF)定义,并且公开可用的协议。这些协议通常具有明确的报文格式和定义,且支持跨平台和跨应用程序的互操作性。
  • 专用协议:除了公共域协议,某些应用程序或服务使用专用的协议,这些协议通常为特定应用或服务设计,并且可能不公开或为内部使用。专用协议通常用于公司或组织内部的特殊应用,

小结

为创建一个新的网络应用,需要:

  • 选择一种网络应用架构:客户-服务器 or P2P
  • 选择一种网络服务:TCP or UDP
  • 确定一个端口号
  • 定义应用层协议
  • 编写客户程序和服务器程序(调用套接字接口)

网络应用和应用层协议:

  • 应用层协议只是网络应用的一部分
  • 网络应用还包括客户程序、服务器程序等

http://www.kler.cn/a/459194.html

相关文章:

  • 集线器,交换机,路由器,mac地址和ip地址知识记录总结
  • RabbitMQ基础篇之Java客户端 Topic交换机
  • vscode 多项目冲突:进行 vscode 工作区配置
  • _使用CLion的Vcpkg安装SDL2,添加至CMakelists时报错,编译报错
  • 详细了解Redis分布式存储的常见方案
  • Three.js教程008:使用lil-GUI调试开发3D效果
  • FPGA中EMIO接口的模块引出
  • ZooKeeper注册中心实现
  • 使用 ASP.NET Core wwwroot 上传和存储文件
  • MySQL内存分析常用语句
  • 基本算法——聚类
  • 基于eBPF的微服务网络安全(Cilium 1)
  • spring-boot 日志配置的几种方式
  • 【每日学点鸿蒙知识】Shape描述、全局loading组件、checkbox样式、H5监听键盘收起、弹窗不关闭
  • 利用JavaScript实现猜数字
  • k8S-foundation-_ label、ns
  • Java设计模式 —— 【行为型模式】模板方法模式(Template Method Pattern) 详解
  • EasyExcel(环境搭建以及常用写入操作)
  • 智能工厂的设计软件 应用场景的一个例子:为AI聊天工具添加一个知识系统 之8 重新开始 之1
  • 如何在 Ubuntu 22.04 上添加 Swap 内存
  • nginx中try_files $uri $uri index.html的作用 和 $uri的含义
  • 【每日学点鸿蒙知识】PersistentStorage持久化、插槽方法、相对布局、上拉加载下拉刷新、List联动滑动
  • 【GO基础学习】Gin 框架中间件的详解
  • Error: The Calculated NPWS= 84330 != The Read NPWS= 84328
  • 优化租赁小程序提升服务效率与用户体验的策略与实践
  • 代码随想录算法训练营第六天 | 242. 有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和