一、软件开发架构

1.什么是软件开发架构

  • 编写项目之前需要遵循的代码层面上的规范(代码运行的流程 环节 步骤)
  • eg:回想ATM三层架构 选课系统三层架构

2.软件开发架构

架构方式一:c/s架构

c:client 客户端

s:server 服务端

  • 计算机上下载的各个互联网公司的app软件,本质其实是客户端。

  • 而我们下载一个个不同的客户端就是为了体验不同服务端提供的服务。

eg:

下载淘宝就是为了体验淘宝服务端提供的购物服务

下载抖音就是为了体验抖音服务端提供的视频服务

ps:一般情况下客户端与服务端交互需要互联网 但是有些不需要(因为客户端和服务端都在一台计算机上,比如我们玩的一些单机游戏)

类比:

  • 客户端可以看成是即将去消费的客人
  • 服务端可以看成是给你提供服务的店

作为服务端必备的多个条件

1.24小时不间断提供服务

2.固定的地址

3.能够服务多个客人(高并发)

架构方式二:b/s架构

b:broswer 浏览器

s:server 服务器

b/s架构本质也是c/s架构

通过浏览器来充当各个服务端的客户端,想要体验服务时不需要下载指定的客户端

架构优劣势

cs架构

  • 优势:不同公司的客户端由不同公司独立开发,可以高度定制化客户端功能
  • 劣势:使用必须先下载客户端,比较繁琐

bs架构

  • 优势:不需要下载客户端,能够快速体验服务
  • 劣势:无法高度定制化,并且需要遵守很多规则

架构发展趋势

二、架构总结

再次申明: 上述架构与我们之前所学的三层架构其实一样

当我们实际使用的时候跟面向对象和面向过程一样。c/s和b/s是交替使用,互相穿插的

发展趋势:统一接口原则

微信

  • 当我们使用微信的时候需要下载微信客户端,但是在微信中有很多的小程序,可以让我们体验其他软件(客户端)才有的服务和功能,这些小程序的编写的时候采用的就是统一接口,这样都可以加入到微信的小程序中供人使用。

支付宝

里面同样也有很多的小程序,可以使用其他功能

后续就是cs和bs交错使用 避免各自的劣势!!!

ps:可以方便用户使用 更重要的是可以给自己圈用户便于后期收割

三、网络编程前戏

1.什么是网络编程

  • 基于网络编写代码 能够实现数据的远程交互

2.学习网络编程的目的

​ 能够开发cs架构的软件

3.网络编程的起源

任何先进的技术一般都来源于军事,淘汰后才进去民用领域

网络编程是由美国军方开发的,没有网络编程的时候,如果两台计算机之间要交互数据,只能使用硬盘拷贝。如果一个人在中国一个人在非洲,那就拿着硬盘坐飞机去拷贝数据。

4.网络编程的要求

数据的远程交互

1.早期的电话

必须要有电话线

2.大屁股电脑

必须要有网线

3.笔记本电脑

必须要有网卡

通过上面的例子我们得知计算机之间要想实现远程数据交互,首要条件就是要有物理连接介质

四、OSI七层协议简介

OSI七层协议:规定了所有的计算机在远程数据交互的时候必须经过相同的处理流程、在制造过程中必须拥有相同的功能硬件

具体名称如下:

应用层

表示层

会话层

传输层

网络层

数据链路层

物理连接层

ps:应、表、会、传、网、数、物(记忆方法)

'''通过整合之后可以变成五层或者四层'''

五层:

应用层(应用层、表示层、会话层整合在一起)

传输层

网络层

数据链路层

物理连接层

四层:

应用层

传输层

网络层

网络接口层(数据链路层、物理连接层)

ps:

接收网络消息 数据由下往上传递

发送网络消息 数据由上往下传递

五、OSI协议之物理连接层

在网络变成前戏中我们提到了数据的远程交互必须要有物理介质,在OSI七层协议中就指的是物理连接层,同时我们也要知道数据在传输的时候全是二进制、bytes类型。

六、OSI七层协议之数据链路层

作用:

1.规定了电信号的分组方式

2.规定了每台计算机都必须有一块网卡

同时网卡上必须有一串记录>>>:电脑的以太网地址(身份证号) 也叫mac地址

以太网地址\mac地址:由12位16进制数组成的

前6位:产商编号

后6位:生产流水线号

ps:既然mac地址相当于电脑的身份证号 也就意味着可以根据该地址查找计算机(可以基于mac地址实现数据交互)

七、网络相关专业名词

计算机之间要想实现数据交互必须要'连接'到一起

1.交换机

在最早的时候,直接使用网线连接,进行数据交互

当服务器多了之后导致了连接变得麻烦,因此有了交换机

  • 能够将所有接入交换机的计算机彼此互联起来

2.广播

原理

有了交换机之后,根据电脑的mac地址就可以实现数据交互

广播:

先在交换机中吼,所有接入交换机的设备都能收到

单播:

只有被查找设备 才会回复相应信息

也就是向当前交换机连接的所有服务器发送请求,然后只有被查找的对象才会对查找对象进行单独的回应(也可以看成在群聊里找人,被找的人通过私聊联系查找的人),这里需要注意,只有第一次查找的时候需要广播,后面就可以根据mac地址直接访问对方

缺陷

1.mac地址通信仅限于局域网

2.接入交换机的设备过多 可能会造成广播风暴

广播风暴:类似于所有人同时吼!!!

3.单播

​ 首次被查找的计算机回应查找它的计算机 并附带自己的mac地址

4.广播风暴

接入同一台交换机的多台计算机同时发广播,广播数据充斥网络无法处理,并占用大量网络带宽,导致正常业务不能运行,甚至彻底瘫痪,这就发生了“广播风暴”。

5.局域网

局域网的覆盖范围一般是方圆几千米之内,其具备的安装便捷、成本节约、扩展方便等特点。  

可以简单的理解为由单个交换机组成的网络(交换机也分大型和小型)

在局域网内可以直接使用mac地址通信

6.广域网

广域网又称广域网、外网、公网。是连接不同地区局域网或城域网计算机通信的远程网。通常跨接很大的物理范围,所覆盖的范围从几十公里到几千公里,它能连接多个地区、城市和国家,或横跨几个洲并能提供远距离通信,形成国际性的远程网络。广域网并不等同于互联网。可以简单的理解为范围更大的局域网

ps:所谓的广域网跟局域网其实是相对的,比如中国是一个很大的局域网,这时候因为中国这个局域网很大,我们也可以说他是广域网

7.互联网

由所有的局域网、广域网连接到一起形成的网络

8.路由器

不同的局域网计算机之间是无法直接实现数据交互的 需要路由器连接

八、OSI七层协议之网络层

IP协议:规定了所有接入互联网的计算机都必须有一个IP地址 类似于身份证号

mac地址是物理地址可以看成永远无法修改

IP地址是动态分配的,不同的场所IP是不同的

IPV4(32位二进制)编址方式:点分十进制法(0、1组成)

IPV6(128位二进制)编址方式:冒分十六进制法

完整IP地址:IP地址+子网掩码

IP地址:网络位+主机位

地址分类:(转二进制看位数 )

A类地址:第一位固定为0

0XXX XXXX---0-127(1-126),子网掩码默认为255.0.0.0

B类地址:第一位固定为10

10XX XXXX---128-191,子网掩码默认为255.255.0.0

C类地址:第一位固定为110

110X XXXX---192-223,子网掩码默认为255.255.255.0

D类地址:第一位固定为1110

1110 XXXX---224-239,子网掩码默认为255.255.255.255

E类地址:第一位固定为1111

1111 XXXX---240-255,科研地址

特殊地址:

1、0.X.X.X 无效地址(保留地址),0.0.0.0无效地址,用于占位

2、127.0.0.1 回路地址,用于本地测试

3、网络号,主机位全为0,用于描述一个网段

4、255.255.255.255为受限广播地址

5、主机位全为1,定向广播地址

6、本地链路地址:link-local (169.254.0.0 255.255.00)

公有地址:具有全球唯一性标识地址

私有地址:不具唯一标识地址

10.0.0.0 255.255.0.0

172.[16,31].0.0 255.255.0.0

192.168.X(0,255).0 255.255.0.0

ps:IP地址可以跨局域网传输,因此IP地址可以用来标识全世界独一无二的一台计算机

九、OSI七层协议之传输层

PORT协议(端口协议)

端口的作用:用来标识一台计算机上面的某一个应用程序

范围:0-65535

特征:动态分配(洗浴中心号码牌)

也就是说你需要用到的时候,我就临时给你分配,使用结束就回收这个端口号。

建议:

0-1024 系统默认需要使用

1024-8000 常见软件的端口号

8000之后的 通常我们使用的都是8000之后的

常见端口号(<256):

21端口号:FTP 文件传输服务

22端口号:SSH 远程登录(安全性较高 加密认证)- TCP

23端口:Telnet 远程登录服务 TCP

25端口:SMTP 简单邮件传输服务

53端口:DNS 域名解析服务 TCP和UDP

80端口:HTTP 超文本传输协议 TCP

110端口:POP3 “邮局协议版本”使用的端口

443端口:HTTPS 加密的超文本传输协议 TCP

520端口:RIP UDP

URL:统一资源定位符(网址)

​ 网址本质是有IP和PORT组成的!!!

IP+PORT:能够定位全世界独一无二的一台计算机上面的某一个应用程序

DNS域名解析:

将网址解析成IP+PORT(域名,也就是网址,是由IP+端口号组成的)

我们之所以不直接使用IP+PORT的原因是太难记 所以发明了域名(网址)

www.baidu.com # 好记

14.215.177.39:80 # 难记

IP:PORT 实际使用冒号连接

114.55.205.139:80

11月15日内容总结——软件开发架构、网络编程介绍和OSI七层协议介绍的更多相关文章

  1. 软件开发架构,网络编程简介,OSI七层协议,TCP和UDP协议

    软件开发架构 什么是软件开发架构 1.软件架构是一个系统的草图. 2.软件架构描述的对象是直接构成系统的抽象组件. 3.各个组件之间的连接则明确和相对细致地描述组件之间的通讯. 4.在实现阶段,这些抽 ...

  2. 2016年11月15日 星期二 --出埃及记 Exodus 20:6

    2016年11月15日 星期二 --出埃及记 Exodus 20:6 but showing love to a thousand of those who love me and keep my c ...

  3. 本周MySQL官方verified/open的bug列表(11月15日至11月21日)

    本周MySQL verified的bug列表(11月15日至11月21日) 1. Bug #70923    Replication failure on multi-statement INSERT ...

  4. 北京Uber优步司机奖励政策(11月9日~11月15日)

    用户组:人民优步“关羽组”(适用于11月9日-11月15日)奖励政策: 滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月 ...

  5. 软件开发架构与网络之OSI七层协议(五层)

    本期内容概要 python回顾 软件开发架构 网络理论前瞻 osi七层协议(五层) 以太网协议 IP协议 port协议 交换机 路由器 局域网 广域网 TCP协议 三次握手 四次挥手 UDP协议 内容 ...

  6. 1、网络并发编程--简介、软件开发架构、OSI七层协议

    python复习 变量与常量 基本数据类型 内置方法 字符编码.文件操作 函数 函数参数.闭包函数.装饰器 面向对象 封装.继承.多态 """ 什么是对象 数据与功能的结 ...

  7. 软件开发架构介绍||OSI七层协议之物理层、数据链路层、网络层、传输层(mac地址、ip协议、断开协议、tcp协议之三次握手四次挥手)

    一.网络编程 软件开发架构 C/S架构 C:客户端 想体验服务的时候才会去找服务端体验服务 S:服务端   24小时不间断的提供服务,即时监听,随时待命 B/S架构 B:浏览器    想体验服务的时候 ...

  8. python网络编程-Json序列化功能扩展-软件开发架构-OSI七层协议-TCP-01

    面向对象补充知识点(面向对象的应用) 扩展json序列化所支持的数据类型(分析源码) import json from datetime import datetime, date # ------- ...

  9. 开发架构+osi七层协议+socket(day26)

    目录 软件开发架构 C/S架构 B/S架构 网络编程 互联网协议/OSI七层协议 传输层 网络层 数据链路层 物理连接层 socket 什么是socket 为什么用socket 如何使用 软件开发架构 ...

  10. 软件开发架构、网络基础知识、osi七层模型

    一.软件开发的架构 涉及到两个程序之间通讯的应用大致可以分为两种: 第一种是应用类:qq.微信.网盘.优酷这一类是属于需要安装的桌面应用 第二种是web类:比如百度.知乎.博客园等使用浏览器访问就可以 ...

随机推荐

  1. redis的缓存穿透、击穿、雪崩以及实用解决方案

    今天来聊聊redis的缓存穿透.击穿.雪崩以及解决方案,其中解决方案包括类似于布隆过滤器这种网上一搜一大片但是实际生产部署有一定复杂度的,也有基于spring注解通过一行代码就能解决的,其中各有优劣, ...

  2. Apache ShenYu 集成 RocketMQ 实时采集海量日志的实践

    本文作者:胡泰室, 快手Java开发工程师. ​ 认识Apache ShenYu(神禹) 网关最重要的是流量治理,而流量治理与大禹治水有很多相似的地方,因此,网关的流量治理项目被命名为神禹. Shen ...

  3. 视频服务HDR Vivid 还原色彩,让所见成“真”

    如今,视频正在以一种前所未有的方式渗入日常生活,是当下人们记录生活最热门的方式.所以,用户对视频的画质要求越来越高,App想要吸引更多的用户,拥有视频画质新技术的强力支撑很关键. HDR(High-D ...

  4. Web浏览器Linux Shell(shellinabox解决通用区服务器Linux Shell访问很麻烦的问题)

    问题背景 通用区服务器的Linux Shell访问,比较麻烦 需要动态密码(手机上装Token)连跳板机,再用跳板机上的终端工具连Linux Shell 改进方法 使用shellinabox,就能直接 ...

  5. 【云原生 · Kubernetes】Kubernetes Node的隔离与恢复

    个人名片: 因为云计算成为了监控工程师‍ 个人博客:念舒_C.ying CSDN主页️:念舒_C.ying Kubernetes Node的隔离与恢复 在硬件升级.硬件维护等情况下,我们需要将某些No ...

  6. [排序算法] 堆排序 (C++)

    堆排序解释 什么是堆 堆 heap 是一种近似完全二叉树的数据结构,其满足一下两个性质 1. 堆中某个结点的值总是不大于(或不小于)其父结点的值: 2. 堆总是一棵完全二叉树 将根结点最大的堆叫做大根 ...

  7. element-ui 对话框dialog里使用echarts,报错'dom没有获取到'?

    给el-dialog添加@open="open()" 在刚进入页面的时候对话框是关闭的,echarts不进行获取dom,当点击对话框出来的时候,有个opened事件,在这个事件里边 ...

  8. Java外包程序员的技术出路

    学习的两个目的: 应付面试 应付工作(解决问题) 首先要明白学习的目的,不同阶段,不同技术的学习目的是不一样的. 有些技术,仅仅是应用级别的,有些技术是原理级别的(主要还是应试).所以不同技术.不同时 ...

  9. 【每日一题】【将cur的next尾插到pre后面,尾插k-1次】25. K 个一组翻转链表-211115&220120

    给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表. k 是一个正整数,它的值小于或等于链表的长度. 如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序. 进阶: 你可以设 ...

  10. 当我们说大数据Hadoop,究竟在说什么?

    前言 提到大数据,大抵逃不过两个问题,一个是海量的数据该如何存储,另外一个就是那么多数据该如何进行查询计算呢.好在这些问题前人都有了解决方案,而Hadoop就是其中的佼佼者,是目前市面上最流行的一个大 ...