第三周:网络应用(上)

news2025/1/11 18:38:33

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

我们已经知道,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)非持久性连接

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

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

相关文章

Redis 缓存中间件

目录 概念 安装redis redis基本命令 给redis添加密码 基础数据类型 string类型 list列表类型 set创建(一个键对应一个值) set 创建数据 get 获取数据 keys * 展示所有的键 exists 判断键值是否存在 type 查看数据的类型 del 删除键 rename…

期刊评价指标及其查询方法

1、期刊评价体系一 科睿唯安《期刊引证报告》(Journal Citation Reports, JCR) 科睿唯安每年发布的《期刊引证报告》(Journal Citation Reports, JCR)是一个独特的多学科期刊评价工具。JCR数据库提供基于引文数据的统计信息的期…

数字信号||快速傅里叶变换(FFT)(4)

实验四 快速傅里叶变换(FFT) 一、实验目的 (1)加深对快速傅里叶变换(FFT)基本理论的理解。 (2)了解使用快速傅里叶变换(FFT)计算有限长序列和无限长序列信号频谱的方法。 (3)掌握用MATLAB语言进行快速傅里叶变换时常用的子函数。 二、实验涉及的MATLAB子函数 1.fft 功能&am…

鸟哥的Linux私房菜(三)之环境开发工具篇

文章目录 Linux软件包管理器 - yumLinux下安装软件的方式认识yum查找软件包安装软件如何实现本地机器和云服务器之间的文件互传及其云服务器之间互传卸载软件 Linux编辑器 - vimvim的基本概念vim下各模式的切换vim命令模式各命令汇总vim底行模式各命令汇总vim替换模式各命令汇总…

快速幂的求解方法(位运算)

需要求解幂运算的解法,可以将需要运算的内容进行判别,众所周知,幂就是指数,就是将底数乘以自身完成n次自相乘,那么就可以幻化为他的幂的简化计算; 以二进制为例,你要求,即可以看作是…

win10系统通过docker部署pytorch的GPU环境

命名实体有关文章参考这篇文章 中文地址命名实体识别训练和预测 win10系统安装cuda环境参考这篇文章 搭建Pytorch的GPU环境超详细 文件结构 准备环境 (1)、安装cuda环境 (2)、安装docker 1、创建基础镜像,安装pytorch和python dockerfile # 使用适当的基础镜像 FROM…

安全防护软件的必要性:从微软蓝屏事件谈起

最近微软遭遇了的大规模蓝屏事件,让全球很多用户措手不及。这次事件告诉我们,保护我们的电脑和数据,安全防护软件是多么重要。 微软蓝屏事件源于网络安全公司CrowdStrike的技术更新错误,导致全球范围内大量Windows用户系统崩溃&a…

一元二次方程编程求解过程+题目

输入 输入的第一行包含两个正整数 T,M,分别表示方程数和系数的绝对值上限。 接下来 T 行,每行包含三个整数 a,b,c。 输出 输出 T 行,每行包含一个字符串,表示对应询问的答案,格式如题面所述。 每行输出的字符串中…

【netty系列-06】深入理解select、poll和epoll多路复用的区别

Netty系列整体栏目 内容链接地址【一】深入理解网络通信基本原理和tcp/ip协议https://zhenghuisheng.blog.csdn.net/article/details/136359640【二】深入理解Socket本质和BIOhttps://zhenghuisheng.blog.csdn.net/article/details/136549478【三】深入理解NIO的基本原理和底层…

分布式架构网络通信(RPC,RMI) 03

文章目录 1. 基本原理2. RPC 远程过程调用3. RMI 远程方法调用4. RMI代码实现4. BIO、NIO、AIO4.1 同步和异步4.2 阻塞和非阻塞4.3 BIO4.4 NIO4.5 AIO 1. 基本原理 要实现网络机器间的通讯,首先得来看看计算机系统网络通信的基本原理,在底层层面去看&am…

WSL桥接网络配置

仅做记录与分享,平台版本等不同无法指导更多。 一、需求 ubuntu虚拟机(WSL)桥接win11并且能联通外网(百度之类) 二、环境: 版本 Windows 11 专业版 版本号 23H2 安装日期 ‎2024/‎6/‎20 操作系统版本…

Mysql 集群搭建 05

文章目录 1. Mysql主从复制集群搭建1.1 主库配置1.2 从库配置 2. 分库分表2.1 拆分策略2.2 实现技术2.2.1 MyCat概述2.2.2 MyCat入门2.2.3 配置 schema.xml 3. 双主双从4. 双主双从读写分离 1. Mysql主从复制集群搭建 主从复制是指将主数据库的 DDL 和 DML 操作通过二进制日志…

有什么开放式耳机比较好用?耳机选购指南附赠五款开放式耳机推荐!

现在的耳机市场真的越来越多元了,最近的开放式耳机也是越来越火了,很多小伙伴都在后台开始问我,到底要怎么样才能选到一款比较合适自己的开放式耳机呢?开放式耳机现在这么多品牌,这么多的型号,真的很难选择…

如何评估自动化测试的效益

目录 自动化测试实施成本 自动化前期开发成本包括: 后期维护成本包括: 自动化测试执行次数 自动化测试实施成本比 其中“自动化测试收益”可能包括: “自动化测试成本”包括但不限于: 测试稳定性 可扩展性和可维护性 自动…

java拼接字符串的四种方法StringBuilder、StringBuffer、StringJoiner、String.join(x,x )

1.直接复制以下代码运行查看运行结果 import java.util.ArrayList; import java.util.List; import java.util.StringJoiner;public class Test {public static void main(String[] args) throws Exception {List<String> strs new ArrayList<>();strs.add("…

“等保测评:如何进行有效的安全漏洞管理与网络安全法规遵从“

随着网络环境的复杂性增加&#xff0c;安全漏洞管理成为企业信息安全管理体系中的关键环节。等保测评要求企业具备发现、评估、修复和监控安全漏洞的能力&#xff0c;以保障信息系统的安全稳定运行。本文将围绕“等保测评&#xff1a;如何进行有效的安全漏洞管理”这一主题&…

qrcode生成二维码并下载【带logo图标】【带文字描述】

qrcode官网地址&#xff1a;http://jeromeetienne.github.io/jquery-qrcode/ 结果图&#xff1a; 不带文字 带文字 遇到问题&#xff1a; 1、中文乱码&#xff1a;需要先将中文字体转码。 2、qrcode.js生成的二维码是没有白边的&#xff0c;需要重新绘制边框logo文字 3、将生成…

IoTDB 入门教程 实战篇④——C#示例(开源)

文章目录 一、前文二、新建C#项目三、NuGet安装四、示例源码五、查询数据六、参考 一、前文 IoTDB入门教程——导读 本文详细阐述了如何通过一个C#项目成功连接到IoTDB时序数据库&#xff0c;进而展示了如何向该数据库高效地写入数据以及执行精确的数据查询操作。 此示例旨在为…

ImportError: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20‘ 报错解决办法

1.查找 libstdc.so.6* find / -name libstdc.so.6*2.copy一个libstdc.so.6.0.19到/usr/lib64/下 cp /usr/lib64/libstdc.so.6 /usr/lib64/3.创建软连接 ln -sf /usr/lib64/libstdc.so.6.0.31 /usr/lib64/libstdc.so.6完毕&#xff01;

RISC-V (四)内存管理

本章目的&#xff1a; 对内存进一步的管理&#xff0c;实现动态的分配和释放。 实现page级别的内存分配和释放。 内存管理分类 -自动管理内存-栈&#xff08;stack&#xff09; -静态内存-全局变量/静态变量。放在数据段里面。 -动态管理内存-堆&#xff08;heap&#xff09;…