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

网络应用原理

网络应用架构

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

  • 客户-服务器架构(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.rhkb.cn/news/498193.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

net.eval()和net.trasin()的用法

当构建神经网络使用到dropout层等时,网络的正向传播后反向传播神经元的系数会有所不同,因此需要用.eval()和.train()来指定模型方向。 net.train() 作用:将模型设置为训练模式。影响: 启用 Dropout 层:Dropout 会随机…

数据结构与算法-目录

音视频流媒体开发-目录 iOS知识点-目录 Android-目录 Flutter-目录 数据结构与算法-目录 恋上数据结构与算法一 【恋上数据结构与算法一】(一)复杂度 【恋上数据结构与算法一】(二)动态数组 【恋上数据结构与算法一】(三)链表 【恋上数据结构与算法一】(四)栈 【恋上数据结构与…

算法训练营Day28 | leetcode 122.买卖股票的最佳时机II 55.跳跃游戏 45.跳跃游戏II

122.买卖股票的最佳时机II 本题首先要清楚两点: 只有一只股票!当前只有买股票或者卖股票的操作 想获得利润至少要两天为一个交易单元。 贪心算法 这道题目可能我们只会想,选一个低的买入,再选个高的卖,再选一个低…

da白话讲深度学习-卷积网络

卷积神经网络(CNN)是指至少在网络的一层中使用卷积运算来代替一般的矩阵乘法运算的神经网络,因此名为为卷积神经网络(对于神经网络的发展与类型,可以学习站内的相关文章) 1.什么是卷积? 既然是卷积神经网络&#xff…

搭建android开发环境 android studio

1、环境介绍 在进行安卓开发时,需要掌握java,需要安卓SDK,需要一款编辑器,还需要软件的测试环境(真机或虚拟机)。 早起开发安卓app,使用的是eclipse加安卓SDK,需要自行搭建。 目前开…

12.30 linux 文件操作,磁盘分区挂载

ubuntu 在linux 对文件的相关操作【压缩,打包,软链接,文件权限】【head,tail,管道符,通配符,find,grep,cut等】脑图-CSDN博客 1.文件操作 在家目录下创建目录文件&#…

Python Celery快速入门教程

Celery 是一个简单、灵活且可靠的分布式任务队列框架,用于处理大量的异步任务、定时任务等。它允许你将任务发送到消息队列,然后由后台的工作进程(worker)来执行这些任务,并且支持多种消息中间件,如 Rabbit…

Unity WebGL 部署IIS

Unity WebGL 部署IIS iis添加网站WebGL配置文件WebGL Gzip模式浏览器加载速度优化iis添加网站 第一步在配置好IIS并且添加网站 WebGL配置文件 在web包Build文件夹同级创建web.config文件 web.config文件内容 <?xml version="1.0" encoding="UTF-8"?…

基于西湖大学强化学习课程的笔记

放在前面 课程链接 2024年12月30日 前言&#xff1a;强化学习有原理部分的学习&#xff0c;也有与实践相关的编程部分。我认为实践部分应该是更适合我的&#xff0c;不过原理部分也很重要&#xff0c;我目前是准备先过一过原理。 应该花多少时间学习这部分呢&#xff1f; 但是这…

CannotRetrieveUpdates alert in disconnected OCP 4 cluster解决

环境&#xff1a; Red Hat OpenShift Container Platform (RHOCP) 4 问题&#xff1a; Cluster Version Operator 不断发送警报&#xff0c;表示在受限网络/断开连接的 OCP 4 集群中无法接收更新。 在隔离的 OpenShift 4 集群中看到 CannotRetrieveUpdates 警报&#xff1a; …

Redis--持久化策略(AOF与RDB)

持久化策略&#xff08;AOF与RDB&#xff09; 持久化Redis如何实现数据不丢失&#xff1f;RDB 快照是如何实现的呢&#xff1f;执行时机RDB原理执行快照时&#xff0c;数据能被修改吗&#xff1f; AOF持久化是怎么实现的&#xff1f;AOF原理三种写回策略AOF重写机制 RDB和AOF合…

【数据结构】链表(1):单向链表和单向循环链表

链表 链表是一种经典的数据结构&#xff0c;它通过节点的指针将数据元素有序地链接在一起&#xff0c;在链表中&#xff0c;每个节点存储数据以及指向其他节点的指针&#xff08;或引用&#xff09;。链表具有动态性和灵活性的特点&#xff0c;适用于频繁插入、删除操作的场景…

开源电子书转有声书整合包ebook2audiobookV2.0.0

ebook2audiobook&#xff1a;将电子书转换为有声书的开源项目 项目地址 GitHub - DrewThomasson/ebook2audiobook 整合包下载 更新至v2.0.0 https://pan.quark.cn/s/22956c5559d6 修改:页面已转为中文 项目简介 ebook2audiobook 是一个开源项目&#xff0c;它能够将电子…

NSSCTFpwn刷题

[SWPUCTF 2021 新生赛]nc签到 打开附件里面内容 import osart (( "####!!$$ ))#####!$$ ))(( ####!!$:(( ,####!!$: )).###!!$:##!$:#!!$!# #!$: #$#$ #!$: !!!$:\ "!$: /\ !: /"\ : /"-."-/\\\-."//.-"…

java里classpath都包含哪些范围?

什么是 classpath &#xff1f; classpath 等价于 main/java main/resources 第三方jar包的根目录 「引」SpringBoot中的classpath都包含啥

Docker+Portainer 离线安装

1. Docker安装 步骤一&#xff1a;官网下载 docker 安装包 步骤二&#xff1a;解压安装包; tar -zxvf docker-24.0.6.tgz 步骤三&#xff1a;将解压之后的docker文件移到 /usr/bin目录下; cp docker/* /usr/bin/ 步骤四&#xff1a;将docker注册成系统服务; vim /etc/sy…

#渗透测试#红蓝攻防#红队打点web服务突破口总结01

免责声明 本教程仅为合法的教学目的而准备&#xff0c;严禁用于任何形式的违法犯罪活动及其他商业行为&#xff0c;在使用本教程前&#xff0c;您应确保该行为符合当地的法律法规&#xff0c;继续阅读即表示您需自行承担所有操作的后果&#xff0c;如有异议&#xff0c;请立即停…

Java:190 基于SSM的药品管理系统

作者主页&#xff1a;舒克日记 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 系统的用户分管理员和销售两个角色的权限子模块。 管理员统计药品销售量&#xff0c;可以导出药品出入库记录&#xff0c;管理药品以及报损信息。 销…

Quo Vadis, Anomaly Detection? LLMs and VLMs in the Spotlight 论文阅读

文章信息&#xff1a; 原文链接&#xff1a;https://arxiv.org/abs/2412.18298 Abstract 视频异常检测&#xff08;VAD&#xff09;通过整合大语言模型&#xff08;LLMs&#xff09;和视觉语言模型&#xff08;VLMs&#xff09;取得了显著进展&#xff0c;解决了动态开放世界…

VUE echarts 教程二 折线堆叠图

VUE echarts 教程一 折线图 import * as echarts from echarts;var chartDom document.getElementById(main); var myChart echarts.init(chartDom); var option {title: {text: Stacked Line},tooltip: {trigger: axis},legend: {data: [Email, Union Ads, Video Ads, Dir…