首页 > 其他分享 >软件开发架构

软件开发架构

时间:2023-10-13 21:57:36浏览次数:29  
标签:协议 架构 软件开发 TCP 地址 IP地址 服务端 客户端

软件开发架构

网络编程:我们要编写一款基于网络传输的软件,你现在写的项目都不是基于网络的,比如ATM

# 举个案例:
"""
	我们现在以ATM为例,你现在写的ATM别人是不能够访问的,只能你自己用,但是,这不是目的,目的是我们要写一款ATM,然后让所有人都能够访问.
	
	如果想让别人下载使用我们的软件,我们需要开发一款客户端,然后让用户在自己的电脑上下载这个客户端就能用了,还需要有一个服务端,比如,以ATM为例,用户下载客户端之后,用户需要输入用户名和密码登录,然后把用户名和密码提交到服务端做校验,提交到的地方就是服务端
"""
client																server
客户端--------------------------网络传输-----------------------------------服务端
我们通常称为这种架构为C/S架构

客户端服务端是存在一定的问题的:
	# 当我们需要下载大量的软件的时候,会占用大量的资源,其次,就是使用起来不方便,因此,这个时候,就有人站出来开发了浏览器,那么,这个浏览器其实也是一个客户端,浏览器它是一个万能客户端,超级客户端

browser																server
浏览器(客户端)-----------------------网络传输-------------------------------服务端
我们通常称为这种架构为B/S架构
"""本质上B/S架构也是C/S架构!!!"""

# 当下我们使用的软件架构模式是二者兼有!
"""很多的公司开发的软件都是小程序(微信), 为了转换更加容易一些"""

# 扩展一个知识点
服务端的特征:
	1. 24小时不间断对外提供服务
    2. 服务端要有一个公网IP(服务器部署、它就是另外一台计算机,系统:Linux系统, centos、乌班图等)
    3. 常见的服务器:阿里云、腾讯云、百度云、华为云等

osi七层协议

1. 什么是网络? 什么是上网?
	# 上网其实就是上传和下载数据的过程
    背景:
    	在早期的时候,其实世界范围内的计算机是不能够互相通信的,当时的计算只是在'局域网'中通信,后来呢,世界范围内的计算机也通信了,在广域网中通信,这就是互联网.
    
	网络的组成:物理链接设备(路由器、交换器、网线等) + 计算机界的英语(互联网通信协议)
    
2. 互联网通信协议(osi七层协议)
	# 互联网的本质就是一系列的网络协议,这个协议就叫OSI协议(一系列协议),按照功能不同,分工不同,人为的分层七层。实际上这个七层是不存在的。没有这七层的概念,只是人为的划分而已。区分出来的目的只是让你明白哪一层是干什么用的。
    
   """协议是干什么的,协议就是标准。"""
七层划分为:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。
五层划分为:应用层、传输层、网络层、数据链路层、物理层。
四层划分为:应用层、传输层、网络层、网络接口层

"""物理层"""
	它是专门用来发送高低电频的,其实就是01二进制 (0101010)101010101111010(1010)0101(01)
    # 物理层单纯的发送电频是没有任何的意义的,因为不知道发送的电频什么意思,所以,需要对发送的电频进行分组,但是呢,物理层做不了分组
"""数据链路层"""
	它就是专门用来对物理层发送过来的数据进行分组的,该层使用的以太网协议ethernet
    一组电信号构成一个数据报,叫做帧,或者叫数据帧,数据帧的组成:报头head和数据data两部分
    ● head包含:(固定18个字节)
      ○ 发送者/源地址,6个字节
      ○ 接收者/目标地址,6个字节
      ○ 数据类型,6个字节
    # 数据报的具体内容:head长度+data长度=最短64字节,最长1518字节,超过最大限制就分片发送
   

	Mac地址:
    	以太网协议规定,每一个接入互联网的设备都必须要有一个网卡,发送端和接收端的地址便是指网卡的地址,即Mac地址
        
        Mac地址:每块网卡出厂时都被烧制上一个世界唯一的Mac地址,长度为48位2进制,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线号。
    # 通过一个Mac地址能不能确定局域网中得唯一一台计算机? 能确定
    
"""网络层"""
	该层使用的是IP协议,规定每一个接入互联网的计算机都必须要有一个IP地址,网络层中的数据我们称为是数据包,IP地址的组成格式
    分类:IPv4、IPv6, 目前大多数用的都是IPv4,由于IPv4地址即将耗尽,所以,其他场景开始使用IPv6了
    IPv4:
    0.0.0.0------------------------------------->255.255.255.255
00000000.00000000.00000000.00000000    ---------->    11111111.11111111.11111111.11111111
	
    192.168开头的地址基本上都是局域网中得ip地址
    公网ip:需要购买的,阿里云、腾讯云的,人家或给你一个公网ip地址,固定的,不会变。172.0.1.200
    内网ip:192.168开头的地址基本上都是局域网中得ip地址
    
	IPv6:十六进制表示法
    """
    	如何查看自己的IP地址:
    		windows: cmd----->ipconfig
    		linux(macOS): ifconfig
    """
    # 其实通过一个IP地址它是可以定位唯一一个局域网
    """IP+Mac地址确定世界范围内的唯一一台计算机? 是的"""
    但是我们知道,现在只需要一个IP地址就能够确定唯一一台计算机,那是因为:arp协议的玩意儿,它能够通过你的IP地址计算出Mac地址,归根结底还是:IP+Mac地址
    
    记忆:本地回环地址:127.0.0.1(你自己的电脑)
    192.168.1.252 127.0.0.1  localhost (这两个有时候会有区别)
 

"""传输层"""
	该层使用的是TCP协议或者是UDP协议,暂且忽略. 它也称之为是端口协议,一个端口可以代码一个应用程序
端口的范围:0-65535
     """
     	1. 0-1024之间的端口号都是系统自己使用的
     	2. 1024-8000之间的端口号一般是常用软件的端口号
     		MySQL:3306
     		Django:8000
     		flask:5000
     		...
    	3. 我们自己开发的软件,端口一般选择8000之后的到65535
     """
同一个端口号只能够表示一个正在运行的应用程序,端口号不能够冲突,但是,软件一旦关闭,就会释放出来占用的端口号,别的应用程序就能够使用了.
	
    常用软件的端口号:
    	应用程序	FTP	 TFTP	TELNET	SMTP   DNS	   HTTP		SSH			MYSQL
		熟知端口	21,20 69	23		25	   53	  80	   22		    3306
		传输层协议	TCP	UDP	    TCP		TCP		UDP	  TCP	  TCP			TCP
        
"""应用层"""
Application App
    该层就是离用户最近的一层,比如,微信、QQ、腾讯会议、pycharm等都是一个一个的应用,他们都在应用层
    
    1. 客户端:你想使用什么协议都行,自己开发的软件,协议你自己选择
    2. 浏览器:你就不能够随便使用了,就要安装浏览器规定的协议使用,而浏览器使用的协议恰好事HTTP协议
    3. Https协议
    	HTTP协议 HTTPS协议
        https://www.baidu.com/
        协议://域名/v1/v2?参数
        https://www.baidu.com/s?wd=%E7%BE%8E%E5%A5%B3
        
        """
        	HTTP协议
        		1. 是明文传输数据
        		2. 不安全
       		HTTPS协议
       			1. 是密文传输数据
       			2. 安全
       		https = http + ssl证书(它是需要申请的,国际机构,公钥、私钥等)
       		nginx服务器:配置文件,需要在配置文件中配置一些东西,就能够把你的http改成https
        """
   域名解析:
		DNS服务器它就是用来解析域名的,域名的本质其实就是IP地址,域名比IP地址好记,最终还是需要把域名解析成IP地址
         baidu.com				110.242.68.66
   域名的解析过程:
		1. 首先会先从本地开始解析hosts文件
    	2. 会去对应平台的域名关系表中取查询

TCP协议和UDP协议

客户端    服务端
"""客户端要想给服务端发送消息,肯定需要建立链接"""
tcp协议它也称为是可靠协议(三次握手), 流式协议(发送数据可以分多次发送 100M数据  10M 10次)
三次握手--------------------> 建立链接


四次挥手---------------------> 断开链接
"""一定是客户端先给服务端发送消息,然后,服务端给客户端做返回信息"""
# 有个个例,服务端可以先给客户端发送消息,需要使用websocket协议,一般用在即时通信软件
客服系统、微信、QQ等都是

客户端可以是多个的,服务端(饭店)只有一个

面试题:
	1. TCP协议的可靠性,是因为建立了双向通道?
    		不是。是因为TCP协议的反馈机制
    2. 四次挥手能不能省略为三次挥手?
  
UDP协议:
	它不可靠、是因为它不建立链接,没有三次握手、四次挥手
     速度快
远程控制

标签:协议,架构,软件开发,TCP,地址,IP地址,服务端,客户端
From: https://www.cnblogs.com/zhangfanshixiaobai/p/17763330.html

相关文章

  • C#软件架构设计原则
    软件架构设计原则学习设计原则是学习设计模式的基础。在实际的开发过程中,并不是一定要求所有的代码都遵循设计原则,而是要综合考虑人力、成本、时间、质量,不刻意追求完美,要在适当的场景遵循设计原则。这体现的是一种平衡取舍,可以帮助我们设计出更加优雅的代码结构。分别用一句话......
  • 接各种软件开发项目
    包括但不限如下种类开发业务:网站。官网,商城微信。微信公众号,微信小程序物联网。thingsboard,mqtt,modbus,opc-ua等协议设备对接人工智能。视觉模型算法,图像分类,目标检测接各种软件开发项目,12年工作经验全栈工程师开发品质有保障,价格优惠,寻求长期合作客户,如有需要,可以添加个人v......
  • Openstack架构介绍
    一、Openstack介绍OpenStack是一系列开源工具(或开源项目)的组合,主要使用池化虚拟资源来构建和管理私有云及公共云。其中的六个项目主要负责处理核心云计算服务,包括计算、网络、存储、身份和镜像服务。还有另外十多个可选项目,用户可把它们捆绑打包,用来创建独特、可部署的云架构。二......
  • 计算器软件开发
    用Java实现计算器软件设计Java编写个人计算器软件一、所需要实现的功能1.该计算器需要实现加、减、乘、除、开平方功能。2.需要有一个运行的UI界面,可以和电脑自带的计算器相比较。该界面要有一个文本输入框,用来显示输入的表达式;若干个按钮,用来用来显示数字以及操作符;当点击......
  • 第八章、web前端架构师
    目录十六、编辑器服务端基础API开发1、技术方案设计和基本功能开发2、技术方案设计3、接口设计4、RestfulAPIvsGraphQL5、数据库设计6、server架构设计7、技术方案设计8、基本功能开发9、登录功能10、用户信息接口11、作品管理接口12、模板接口十七、编辑器服务端调用第三方服......
  • 计算器软件开发
    用Java实现计算器软件设计Java编写个人计算器软件一、所需要实现的功能1.该计算器需要实现加、减、乘、除、开平方功能。2.需要有一个运行的UI界面,可以和电脑自带的计算器相比较。该界面要有一个文本输入框,用来显示输入的表达式;若干个按钮,用来用来显示数字以及操作符;当点击......
  • 如何基于three.js(webgl)引擎架构,研发一套通过配置就能自动生成的3D机房系统
    序:这几年观察下来,大部分做物联网三维可视化解决方案的企业或个人,基本都绕不开3D机房。包括前面也讲过这样的案例《使用webgl(three.js)创建自动化抽象化3D机房,3D机房模块详细介绍(抽象版一)》 《 使用webgl(three.js)创建科技版3D机房,3D机房微模块详细介绍(升级版三)——......
  • 聊聊企业级消息推送的架构设计(001)
    最近有小伙伴拿到了一线互联网企业如阿里、网易、有赞、希音、百度、网易、滴滴的面试资格,遇到一几个很重要的面试题:企业级消息通知系统有哪些需求?如何满足?企业级消息通知系统,该如何做架构设计?所以,这里今天给大家做一下系统化、体系化的梳理,使得大家可以充分展示一下大家雄厚......
  • 软件开发人员 Kubernetes 入门指南|Part 2
    在第1部分中,我们讲解了Kubernetes的核心组件,Kubernetes是一种开源容器编排器,用于在分布式环境中部署和扩展应用程序;我们还讲解了如何在集群中部署一个简单的应用程序,然后更改其副本数量以扩大或缩小其规模。 在本文中,我们将为您深入讲解Kubernetes提供的网络和监控功能,......
  • cerbos 参考部署架构
    cerbos官方提供了几种部署模式,很值得学习参考,这样才能保证我们业务系统的可靠稳定参考部署模式集中式模式此模式结合负载均衡器,可以部署多cerbos示例,然后共享策略定义,应用通过lb提供的地址进行连接 sidecar模式比较适合容器运行的场景,每个业务pod会有一个独立运行......