第三周:网络应用(上)

一、网络应用(层)内容概述

我们已经知道,Internet的体系结构是符合TCP/IP协议栈的,而“应用层”就在这个协议的最上层。

本讲内容包括:

二、网络应用的基本原理

常见网络应用包括:

问:网络应用与单机应用有哪些本质的不同?

答:网络应用有网络才能用。网络应用就是有一部分软件是跑在我们自己的计算机上(比如浏览器),而还有一部分软件及数据信息等是跑在互联网的某些硬件服务器上,这两部分软件会互相交互,才共同构成了网络应用。这就是网络应用和单机应用的不同之处。

1、网络应用的体系结构

问:既然网络应用是由不同的部分构成的,那么网络应用应该采用什么样的体系结构呢?

答:互联网经过这些年的发展,基本形成了三种体系结构:客户机/服务器结构、点对点结构、混合结构

(1)客户机/服务器结构(client/server,C/S)

服务器和客户机的差别:

服务器:

  • 提供7*24小时不间断的服务
  • 拥有永久性可以访问的地址/域名(比如:www.baidu.com)
  • 利用大量服务器实现可扩展性(因为服务器要为海量用户提供服务,容易出现并发请求,一台机器是撑不住的,往往需要采用大量的服务器并行分布式的技术来实现可扩展性,能同时处理大量用户的并发请求)

客户机:

  • 与服务器通信,使用服务器提供的服务
  • 间歇性接入网络
  • 可能使用动态IP地址(因为客户端并不需要提供服务,别人不会直接访问你)
  • 不会与其他客户机直接通信

(2)点对点结构(Peer to Peer,P2P)

P2P结构最典型的例子就是BT下载。

(3)混合结构(Hybrid)

($)思考题

2、网络应用进程通信

我们知道,网络应用是由不同的成分构成的,有的运行在我们的PC机上,有的运行在远端的服务器上,而两者显然需要正确的协作才能完成它的功能。这意味着我们PC机上运行的网络应用进程和服务器端运行的进程之间是需要进行通信的。

所以,网络应用的核心和基础就是两个不同的进程之间进行正确的通信,然后完成我们设计的预订功能。本节我们要学习的就是网络应用进程间的通信。

(1)网络应用的基础:进程间通信

因为在P2P架构中,也需要进行消息交换,所以也会有发起通信的进程和等待通信的进程。

(2)套接字Socket

不同主机进程之间的通信依靠的是“套接字”的机制

(3)如何寻址进程

我们已经知道,网络应用之间打交道依靠消息传输(消息交换),那么我这个消息发出去之后,底层的传输基础设施怎么就能正确无误地将消息送到目的地呢?这里就有一个“进程标识”的问题,我们称之为“寻址”。“寻址”是网络世界的一个非常普遍的问题。

“IP地址+端口号”的模式可以保证我们通过微信发出去的消息,会传送到对方的微信上,而不是其他应用上。其中IP地址可以保证消息被传送到正确的主机,而端口号可以保证消息被传送到正确的应用。

(4)应用层协议

(5)应用层协议的内容

3、网络应用需求与传输层服务

(1)典型网络应用对传输服务的需求

(2)Internet提供的传输服务

Internet提供两类传输服务:TCP、UDP(等讲到传输层的时候,会具体讲这两个服务)

(3)典型网络所使用的的传输层服务

$、课后练习

4、Web应用

(1)Web应用概述

(2)HTTP协议概述

Web应用所遵循的协议就是HTTP协议(超文本传输协议),这个协议采用的是客户/服务器架构。

HTTP应用层协议所使用的的传输层协议是TCP。

另外,HTTP协议是一个“无状态”的协议,通俗讲就是,服务器不维护任何有关客户端过去行为的信息。比如2分钟前我请求了新浪的首页,然后我现在又请求获得新浪的首页,那边的服务器不会因为2分钟前已经发给我并且没改过所以就不再给我了,服务器是不区分的,只要我请求,服务器就会给我发。

问:为什么要采用无状态的机制?

答:因为有状态的协议往往更加复杂。因为第一点,你要维护这个状态(记录这个历史信息);第二点更致命,一旦客户机或服务器失效(比如重启了),那必然会产生状态的不一致,解决这种不一致往往是非常复杂的事情,代价也很高。与其这样,我们还不如直接采用无状态的协议,这样反而更可靠。

5、HTTP连接类型

我们已经知道,Web所遵循的应用层协议是HTTP,我们也知道HTTP底下依靠的是TCP。对于TCP的使用,是有2中不同的使用方法的(也称为2种不同的HTTP连接类型)

思考:这两种方式有什么不同呢?

(1)非持久性连接

我们现实生活中,有时候网速特别慢时,网页会先出来,然后图片才一个接一个地出来,甚至会有图片加载失败的情况,这就说明它使用的是非持久性连接。

(2)响应时间分析与建模

(2)持久性HTTP

6、HTTP消息格式

Entity Body(请求体)中会有一些请求的信息,通常Post请求会用到,比如注册账号的时候你的个人信息就是写在Entity Body中的。

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

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

相关文章

【机器学习】正规方程的简单介绍以及如何使用Scikit-Learn实现基于正规方程的闭式解线性回归

引言 Scikit-learn 是一个开源的机器学习库,它支持 Python 编程语言。它提供了多种机器学习算法的实现,并用于数据挖掘和数据分析 文章目录 引言一、正规方程的定义二、正规方程的原理三、使用 Scikit-Learn 实现基于正规方程的闭式解线性回归3.1 工具3.…

如何使用rdma-core来实现RDMA操作

rdma-core 是一个开源项目,为远程直接内存访问(RDMA)提供用户空间的支持。它包括 RDMA 设备的驱动程序、库和工具,旨在简化 RDMA 应用的开发和部署。 基础知识参考博文: 一文带你了解什么是RDMA RDMA 高性能架构基本…

“论数据分片技术及其应用”写作框架软考高级论文系统架构设计师论文

论文真题 数据分片就是按照一定的规则,将数据集划分成相互独立、正交的数据子集,然后将数据子集分布到不同的节点上。通过设计合理的数据分片规则,可将系统中的数据分布在不同的物理数据库中,达到提升应用系统数据处理速度的目的…

快速入门 Spring Security

1 认证授权 认证(Authentication):可以理解为登录,验证访问者的身份。包括用户名密码认证、手机号短信验证码认证、指纹识别认证、面容识别认证等等授权(Authorization):授权发生在系统完成身份…

springboot校园商店配送系统-计算机毕业设计源码68448

摘要 本文详细阐述了基于Spring Boot框架的校园商店配送系统的设计与实现过程。该系统针对校园内的用户需求,整合了用户注册与登录、商品浏览与购买、订单管理、配送追踪、用户反馈收集以及后台管理等功能,为校园内的普通用户、商家、配送员和管理员提供…

用深度学习改进乳腺癌MRI诊断| 文献速递--AI辅助的放射影像疾病诊断

Title 题目 Improving breast cancer diagnostics with deep learning for MRI 用深度学习改进乳腺癌MRI诊断 01 文献速递介绍 乳腺磁共振成像(MRI)是一种检测乳腺癌的高度敏感的方式,报告的敏感性超过80%。传统上,其在筛查…

教程系列4 | 趋动云『社区项目』极速体验 LivePortrait 人脸表情“移花接木”大法

LivePortrait LivePortrait 由快手可灵大模型团队开源,只需 1 张原图就能生成动态视频。 LivePortrait 的核心优势在于其卓越的表情"迁移"技术,能够令静态图像中的人物瞬间焕发活力,无论是眨眼、微笑还是转头,皆栩栩如…

spaCy语言模型下载

spaCy 是一个基于 Python 编写的开源自然语言处理(NLP)库,它提供了一系列的工具和功能,用于文本预处理、文本解析、命名实体识别、词性标注、句法分析和文本分类等任务。 spaCy支持多种语言模型对文本进行处理,包括中文…

JAVA基础 - 异常处理

目录 一. 简介 二. 受检异常 三. 非受检异常 四. 自定义异常类 一. 简介 异常处理是 Java 编程中的一个重要概念,它用于处理程序运行时可能出现的不正常情况。 在 Java 中,异常可以分为两类:受检异常(Checked Exception&…

一篇长文搭建AI大模型应用平台架构

在研究了6家知名公司如何部署生成式AI应用程序后,注意到它们的平台有很多相似之处。概述了生成式AI大模型应用平台的常见组件、它们的作用以及它们的实现方式。尽力保持架构的通用性,但某些应用程序可能会有所不同。 Generative AI大模型应用平台整体架…

【Vulnhub系列】Vulnhub_pipe 靶场渗透(原创)

【Vulnhub系列靶场】Vulnhub-pipe 靶场渗透 原文转载已经过授权 原文链接:Lusen的小窝 - 学无止尽,不进则退 (lusensec.github.io) 一、环境配置 1、解决IP扫描不到问题 2、打开虚拟机,并修改网络连接模式为【NAT】即可 二、信息收集 1…

树状机器学习模型综述(含python代码)

树状机器学习模型综述 树状模型是机器学习中一种非常重要的算法类别,因其直观的结构和良好的可解释性而广泛应用于分类和回归任务。本文将综述几种常见的树状模型,包括决策树、随机森林、LightGBM、XGBoost和CatBoost,讨论它们的原理、用途以…

自适应降噪与沉浸音效的结合,戴上QCY MeloBuds Pro,开启静谧音乐之旅

现在蓝牙耳机的选择真是太丰富了,其中性价比高的还是国产品牌,我之前用过几款QCY的耳机,感觉不管是设计,还是音质,以及佩戴的舒适度,都要比同价位的耳机更出色一些。最近我又新入手了一款 MeloBuds Pro&…

【QT 5-控件对比-小技巧-控件显示文字和更改文字-label控件-lineEdit控件-记录】

【QT 5-控件对比-小技巧-控件显示文字和更改文字-label控件-lineEdit控件-记录】 1、前言2、环境3、控件说明(1)QLabel(2)QLineEdit 4、控件代码说明(1)第一种控件 QLabel1-UI文件上编写2-代码控制3-完全代…

java实现加水印功能

1-Word加水印 实现原理&#xff1a; ● 通过页眉页脚生成文字水印或图片水印&#xff0c;然后设置页眉页脚的高度以及旋转角度来设置水印。 源代码&#xff1a; 1、引入pom依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml…

在linux编译JsonCpp 1.9.5

编译方法 mkdir jsoncpp-Sandbox ; cd jsoncpp-Sandbox git clone https://github.com/open-source-parsers/jsoncpp.git mkdir jsoncpp-build mkdir jsoncpp-install cd ./jsoncpp-build/ cmake ../jsoncpp/ -DCMAKE_INSTALL_PREFIX/home/vis/work/SourceCode/jsoncpp-Sandbo…

智能体一键生成个性化贺卡

文章目录 一、前言二、创建智能体编辑名称头像简介人物设定开场白引导示例高级配置调试发布 三、总结 一、前言 欢迎来到节日的温馨角落&#xff01;我是您的节日贺卡助手&#xff0c;专为您打造独一无二的节日祝福。无论是温馨的问候&#xff0c;还是创意的惊喜&#xff0c;我…

【Threejs进阶教程-着色器篇】5. 2D SDF(二)圆形波纹效果

2D SDF 圆形波纹效果 关于本Shader教程前四篇地址&#xff0c;请按顺序学习本博客使用模板代码中的Shader模板绘制第一圈波纹绘制多圈波纹fract函数 让光波动起来使用uniform控制最终效果追加uniform&#xff0c;以及lil.gui控制器修改片元着色器最终效果 完整源码 关于本Shad…

leetcode日记(63)颜色分类

感觉就是排序问题&#xff1f;我使用的是时间复杂度比较高的简单粗暴排序法&#xff0c;时间复杂度O&#xff08;n^2&#xff09;。 class Solution { public:void sortColors(vector<int>& nums) {int nnums.size();for(int i0;i<n;i){for(int ji1;j<n;j){if…

鸿蒙应用框架开发【选择并查看文档与媒体文件】 本地数据与文件

选择并查看文档与媒体文件 介绍 应用使用ohos.file.picker、ohos.file.fs等接口&#xff0c;实现了picker拉起文档编辑保存、拉起系统相册图片查看、拉起视频并播放的功能。 效果预览 使用说明&#xff1a; 在首页&#xff0c;应用显示查看最近打开文件功能的跳转按钮&…