网络编程!

网络编程

【1】网络开发架构

( 1 ) C / S 架构
C : client (客户端)

S: server (服务端)

APP - 就是服务端

C/S 架构通过客户端软件和服务器之间的交互,实现了前端界面和后端业务逻辑的分离,提供了一种稳定、可靠的架构模式。

( 2 ) B / S 架构
B : brower(网页端)

S: server (服务端)

打开QQ音乐----> 向QQ音乐发起请求

将资源在本地的浏览器进行渲染

B/S 架构通过浏览器和服务器之间的交互,实现了前端界面和后端业务逻辑的分离,提供了一种灵活、可扩展的架构模式。


( 3 ) B / S 架构 和 C / S机构 的优缺点


B / S 架构
维护和升级方式简单 : 我只需要更新服务器的资源就可以了

成本也比较低, 选择性也很多

服务数据太多了, 负载严重

C / S 架构
服务器压力有所减轻, 把一部分资源分跟客户端保存

数据的存储和管理比较透明,APP逆向

成本较高,维护费力

C / S 架构是主流趋势


【2】互联网协议


(1)什么是网络编程


网络编程的研究前提就是基于互联网

网络编程就是基于互联网写代码

(2)网络编程的媒介


网络编程的媒介是计算机网络。

而网络协议和网络编程框架和库则是实现网络编程的基础。

【3】OSI七层协议


网络通信协议标准
应用层:负责处理特定的应用程序协议,包括电子邮件、文件传输、远程登录。

表示层:负责数据的表示和编码,在不同系统中传输前将数据进行转换和压缩等操作。

会话层:负责建立、管理和终止会话,包括数据交换的同步和检查点的创建与恢复等功能。

传输层:负责端到端的数据传输,提供可靠数据传输服务,包括流量控制、拥塞控制、错误恢复和数据重传等功能。

网络层:负责实现不同计算机之间的数据包转发和路由器选择,并提供逻辑寻址和拥塞控制等功能。

数据链路层:通过帧来传输数据,负责数据的可靠传输。

物理层:负责在物理媒介上传输比特流,包括传输介质、物理接口和电气特征

优点:
易于理解和实现:由于OSI模型具有清晰的分层结构,因为易于理解和实现

可扩展性好:由于这个体系结构明确地定义了不同的层次和协议,因此它具有很好的可扩展性,可以随时添加新的协议和服务。

提高了协议的互操作性:由于OSI模型对不同协议提供了明确的指导,所以它可以促进不同厂商和供应商的设备之间的互操作性。

降低了复杂性:与其他体系结构相比,OSI模型具有更少的复杂性,因为每个层次的功能都是固定的。

缺点:


过于理论化:OSI模型过于理论化,导致它在实际实现中的使用受到限制。

缺乏灵活性:由于OSI模型在每一层都定义了特定的功能,因此缺乏灵活性,不能完全适应不同网络环境的要求。

太过繁琐:由于OSI模型分为7层,因此在实际应用中会导致协议的复杂性和资源消耗增加。

实现代价高:由于OSI模型需要使用大量的协议和设备来实现各个层次之间的通信,因此实现代价很高。

【4】TCP五层协议


应用层:负责处理网络应用程序之间的通信。

传输层:传输层协议提供端到端的同学协议,确保数据在网络上可靠传输。

网络层:处理数据在网络中的传输和路由。

数据链路层:在物理网络上提供了可靠的数据传输。它将数据包封装成帧,通过物理介质进行传输。

物理层:负责在物理媒介上传输比特流,包括传输介质、物理接口和电气特征

优点:
简单明了:TCP/IP五层协议简单明了,易于理解和实现。

开放性强:TCP/IP协议是一种开放式标准,具有很好的兼容性和可扩展性。

稳定可靠:TCP协议提供了可靠的数据传输服务,保证数据的完整性和可靠性。

灵活性高:TCP/IP协议支持多种不同的应用程序,如电子邮件、文件传输、网页浏览等。

安全性高:TCP/IP协议提供了一些安全机制,如IPSec、SSL等,保证数据的安全性和私密性。

缺点:


复杂性较高:TCP/IP协议的实现比较复杂,需要深入了解网络协议的原理和相关技术。

性能有限:TCP协议为了保证数据的可靠性,会引入一定的延迟和开销,对实时性要求较高的应用程序不太适合。

安全性不足:TCP/IP协议中的一些安全机制容易受到攻击,需要采取额外的措施来保证安全性。

可靠性有限:TCP/IP协议虽然提供了可靠的数据传输服务,但在网络拥塞时会出现丢包和延迟等问题,需要采取一些手段来解决。

不适合大规模部署:由于TCP/IP协议没有很好地考虑网络管理和维护的问题,因此在大规模的网络部署中可能会出现一些问题。

【5】以太网协议


规范了我们上网的标准

是一种广泛的有线局域网技术之一,用于在计算机网络中进行数据通信。

它定义了计算机之间的物理层和数据链路层的通信规则和格式。

以太网协议的特点
灵活性,高速性,简单性,可靠性,容错性,扩展性,可靠性

【6】IP协议


是一种网络通信协议

TCP/IP 协议是网络层协议,它负责将数据包将数据包从源地址传输到目的的地址

它定义了数据在互联网上如何传输和路由

IP协议的特点:无链接性,简单灵活,分组传输,路由选择,IP地址,版本号,协议类型

【7】Mac地址


网卡

它又称物理地址,是指网络设备(如计算机、路由器、交换机、网卡)在制造时分配的全球唯一的地址

查找名为“物理地址”或“MAC地址”的字段

【8】广播


同一个局域网内进行数据交互

【9】TCP协议


流式协议

可靠,基于一条通道进行传输的,只有符合规范才会允许建立通道

(1)三次握手


1.客户端向服务端发送连接请求(带着客户端的标识 aaa)

2.服务端接收到客户端的连接请求,向客户端回请求(带着服务端的标识和客户端的标识 bbb)

3.客户端和服务端进行建立连接

(2)四次挥手


1.客户端向服务端发送断开请求

2.服务端接受到客户端的请求,继续处理完没有完成的数据

3.向客户端发送断开请求

4.客户端接收到服务端的断开请求,断开连接

【10】UDP协议


报式协议

UDP协议是在传输层的协议

特点
无连接性:UDP在发送数据之前不需要建立连接。

简单快速:UDP的协议头部相对较小。通信开销夜宵,因此传输相对较快。

不可靠性:UDP不提供可靠性保证,数据包的传输顺序不被保证。

支持广播和多播:可以连接局域网的所有设备进行广播

适用于实时应用:

【11】socket协适用于实时应用议


如何建立TCP连接 / UDP连接

什么是socket:
Scoket是可以理解为一种抽象端点,它可以用来建立网络连接、发送和接收数据。

Scocket是一种用于实现网络通信的编程接口,它允许应用程序通过网络在不同的计算机之间进行数据传输和同学。

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

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

相关文章

华为HCIP Datacom H12-821 卷35

单选题 通过display bgp routing-table命令输出的内容如图所示,那么以下关于该内容的描述,正确的是哪一项? A、去往192.168. 1. 0/24网段的路由的MED值是100 B、去往192.168.1. 0/24网段的路由是通过AS200学到的 C、去往192.168.1.0/24网段的路由是通…

<数据集>水稻叶片病害识别数据集<目标检测>

数据集格式:VOCYOLO格式 图片数量:1448张 标注数量(xml文件个数):1448 标注数量(txt文件个数):1448 标注类别数:3 标注类别名称:[BrownSpot,RiceBlast,BacterialBlight] 序号类别名称图片数框数1Rice…

LLM代理应用实战:构建Plotly数据可视化代理

如果你尝试过像ChatGPT这样的LLM,就会知道它们几乎可以为任何语言或包生成代码。但是仅仅依靠LLM是有局限的。对于数据可视化的问题我们需要提供一下的内容 描述数据:模型本身并不知道数据集的细节,比如列名和行细节。手动提供这些信息可能很麻烦&#…

基于YOLOV8的数粒机-农业应用辣椒种子计数计重双标质量解决方案

一:辣椒种子行业背景调查 中国辣椒年产量稳居世界第一,食辣人口超5亿。中国辣椒全球闻名,小辣椒长成大产业,带动全球食品行业腾飞。 在中国,“辣”是不少地方餐桌上的一大特色。从四川的麻辣火锅到湖南的剁椒鱼头再到陕西的油泼辣子面,由南到北,总有食客对辣有着独一份偏…

Clean My Mac X破解版,让您的电脑跟新的一样好用

Clean My Mac X破解版是一款专门为所有的苹果电脑用户而准备的系统优化工具,这款软件可以支持多种不同版本的Mac系统。我们可以通过Clean My Mac X免激活码破解版来将电脑系统里的各种垃圾文件和垃圾程序进行清理,从而确保系统能够快速运行。 Clean My …

47、lvs之DR

1、DR模式: 1.1、lvs三种模式: nat 地址转换 DR 直接路由模式 tun 隧道模式 1.2、DR模式的特点: 调度器在整个lvs集群当中是最重要的,在nat模式下,即负载接收请求,同时根据负载均衡的算法转发流量&…

未来工业革命:区块链在工业4.0中的角色与应用

随着科技的迅猛发展,人类社会正在逐步迈向工业4.0时代。在这一新时代的背景下,区块链技术作为一种创新性的分布式账本技术,正逐步在工业领域展示其独特的价值和潜力。本文将深入探讨区块链在工业4.0中的角色与应用,分析其对工业生…

Linux C语言基础 day9

目录 思维导图 学习目标: 学习内容: 1. 值传递与地址传递(非常重要) 1.1 值传递 1.2 地址传递 2. 递归函数 2.1 递归的概念 2.2 递归条件 2.3 递归思想 3. 指针 3.1 指针相关概念 3.2 指针变量的定义 3.2.1. 定义格…

5G/4G加密边缘计算电力网关,开启智慧电力新篇章

计讯物联TG452,一款面向电力行业应用的工业级物联网网关,持电力协议及规约标准,支持采集、存储、算力、通信组网 、协议转换、控制等多功能。    电力应用   计讯物联电力网关TG452支持电力IEC101、IEC104、IEC61850、DL/T645等协议标准…

教育与人的发展

个体身心发展的一般规律 个体身心发展的动因 影响人身心发展的因素

Gentec-eo高功率测量仪激光功率HP60HP100系列软件驱动使用说明

Gentec-eo高功率测量仪激光功率HP60HP100系列软件驱动使用说明

LLM基础模型系列:Fine-Tuning总览

由于对大型语言模型,人工智能从业者经常被问到这样的问题:如何训练自己的数据?回答这个问题远非易事。生成式人工智能的最新进展是由具有许多参数的大规模模型驱动的,而训练这样的模型LLM需要昂贵的硬件(即许多具有大量…

百日筑基第十八天-一头扎进消息队列1

百日筑基第十八天-一头扎进消息队列1 先对业界消息队列有个宏观的认识 消息队列的现状 当前开源社区用的较多的消息队列主要有 RabbitMQ、RocketMQ、Kafka 和Pulsar 四款。 国内大厂也一直在自研消息队列,比如阿里的 RocketMQ、腾讯的 CMQ 和 TubeMQ、京东的 JM…

Docassemble interview 未授权任意文件读取漏洞复现(CVE-2024-27292)

0x01 产品简介 Docassemble是一款强大的开源工具,主要用于自动化生成和定制复杂文档,特别是在法律文档处理领域表现出色。由Jonathan Pyle个人开发者开发,是一个免费的开源专家系统,用于指导访谈和文档组装。Docassemble基于Python编写,充分利用了Python的灵活性和广泛的…

Axure-黑马

Axure-黑马 编辑时间2024/7/12 来源:B站黑马程序员 需求其他根据:visio,墨刀 Axure介绍 Axure RP是美国Axure Software Solution给公司出品的一款快速原型大的软件,一般来说使用者会称他为Axure 应用场景 拉投资使用 给项目团…

Proteus + Keil单片机仿真教程(六)多位LED数码管的动态显示

上一节我们通过锁存器和八个八位数码管实现了多个数码管的静态显示,这节主要讲解多位数码管的动态显示,所谓的动态显示就是对两个锁存器的控制。考虑一个问题,现在给WS位锁存器增加一个循环,让它从1111 1110到0111 1111会发生什么事情?话不多说,先上代码: #include<…

充气膜游泳馆安全吗—轻空间

充气膜游泳馆&#xff0c;作为一种新型的游泳场馆&#xff0c;以其独特的结构和众多优点&#xff0c;逐渐受到各地体育设施建设者的青睐。然而&#xff0c;关于充气膜游泳馆的安全性&#xff0c;一些人仍然心存疑虑。那么&#xff0c;充气膜游泳馆到底安全吗&#xff1f;轻空间…

Struts 2.0.0 至 2.1.8.1 远程命令执行漏洞(CVE-2010-1870)

前言 CVE-2010-1870 是一个存在于 Apache Struts 2 中的漏洞&#xff0c;特别是在 Struts 2 动作框架中。这个安全缺陷允许远程攻击者通过操纵动态方法调用&#xff08;DMI&#xff09;功能在服务器上执行任意代码。当 DMI 功能启用时&#xff0c;框架可以接受和处理来自用户输…

Java中HashMap详解:hash原理、扩容机制、线程不安全及源码分析

前言 HashMap 是 Java 中常用的数据结构之一&#xff0c;用于存储键值对。在 HashMap 中&#xff0c;每个键都映射到一个唯一的值&#xff0c;可以通过键来快速访问对应的值&#xff0c;算法时间复杂度可以达到 O(1)。 HashMap 的实现原理是基于哈希表的&#xff0c;它的底层是…

[Godot3.3.3] - 过渡动画

过渡动画 ScreenTransitionAnimation 项目结构 添加场景&#xff0c;根节点为 CanvasLayer2D 并重命名为 ScreenTransition: 添加子节点 ColorRect 和 AnimationPlayer&#xff0c;在 ColorRect 中将颜色(Color)设置为黑色&#xff1a; 找到 Material&#xff0c;新建 Shader…