软件开发架构、构架趋势、OSI七层协议
阅读原文时间:2023年07月08日阅读:1

目录

规定了程序的请求逻辑、功能分块

C/S架构

Client: 客户端 我们使用计算机下载下来的一个个app本质是个大互联网公司的客户端软件

Server: 服务端 通过这些客户端软件我们就可以体验到各个互联网公司给我们提供的服务

eg:

​ 下载淘宝客户端 打开 体验淘宝服务端提供的购物服务

​ 下载抖音客户端 打开 体验抖音服务端提供的视频服务

ps: 一般情况下客户端与服务端交互需要互联网 但是有些不需要(因为客户端和服务端都在一台计算机上)

客户端:即将要去消费的客人

服务端:给客人提供服务的店

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

  1. 24小时不间断提供服务

  2. 固定的地址

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

B/S架构

Browser:浏览器

Server:服务器/端

浏览器可以从当所有服务端的客户端

ps:B/S架构本质还是C/S架构

C/S架构

优势:不同公司的客户端由不同的公司独立开发 可以高度定制化客户端功能

劣势:需要下载才能使用

B/S架构

优势:不用下载直接访问

劣势:无法高度定制化 并且需要遵守很多的规则

​ ATM:三层构架

​ 选课系统:三层架构

​ 本质也属于软件开发架构的范畴

​ 软件设计的大小方向>>>: 统一的接口

​ 微信小程序

​ 支付宝小程序

  1. 什么是网络编程

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

  2. 学习网络编程的目的

    能够开发CS架构的软件

  3. 网络编程的起源

    最早起源于美国军事领域、想实现计算机之间的数据的交互、最早的时候只能用硬盘拷贝、之后发明了网络编程

  4. 网络编程必备条件

    数据的远程交互

    ps: 实现数据的远程交互必备的基础条件是物理连接介质

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           OSI七层协议规定:规定了所有的计算机在远程数据交互的时候必须经过相同的处理流程、在制造过程中必须拥有相同的功能硬件
    应用层
    表示层
    会话层
    传输层
    网络层
    数据链路层
    物理连接层

    ps: 应、表、会、传、网、数、物

    常见的是整合之后五层或者四层
    五层:
    应用层
    传输层
    网络层
    数据链路层
    物理连接层
    四层:
    应用层
    传输层
    网络层
    网络接口层
    '''
    接收网络消息 数据由下往上传递
    发送网络消息 数据由上往下传递
    '''

​ 只要用于确保计算机之间的物理连接介质 接收数据(bytes类型、二进制)

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

  2. 以太网协议

    规定了计算机在出厂的时候都必须有一块网卡、网卡上有一串数字

    该数字相当于是计算机的身份证号码是独一无二的

    该数字的特征:12位16进制数据 前6位产商编号 后6位流水线号

    该数字也称为:以太网地址/MAC地址

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

两台计算机通过mac地址插一根网线就可以连接了,但是如果要与更多的计算机交互呢?

为了解决一台计算机连接多台计算机 难道一台计算机插几百根网线吗?

所以出现了交换机:

交换机:

  1. 能够将所有接入交换机的计算机彼此互联起来
  2. 由交换机组成的网络叫局域网(一个区域)

广播:

  • 首次查找接入同一个交换机的其他计算机 需要朝交换机里面吼一嗓子

    在交换机里所有的计算机都可以接受到这个信息!

单播:

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

    比如:只有服务器1听到之后才会回复 诶我在这 我的mac地址(恰个w)传给你 你就不用再吼了!

广播风暴:

  • 接入同一台交换机的多台计算机同时发广播

    大家都在吼!谁都听不见,都晕了!交换机同一时间出现太多广播操作,导致交换机瘫痪

网络层

局域网:可以简单的理解为有单个交换机组成的网络 在局域网内可以直接使用mac地址通信

广域网:可以简单的理解为范围更大的局域网

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

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

手机的4G 5G 也是连接路由器(基站) 访问别的局域网计算机

IP协议:

规定了所有'''接入互联网'''的计算机都必须有一个IP地址 类似于身份证号
mac地址是物理地址可以看成永远无法修改
IP地址是'''动态分配'''的 不同的场所IP是不同的
可以取决于所接的网线,你换跟根网线IP地址就变了。

IP地址特征:

IPV4:点分十进制
    0.0.0.0
  255.255.255.255
IPV6:能够给地球上每一粒沙分一个IP地址
 IP地址可以跨局域网传输

IP地址分为公网IP和私网IP:

公网IP是需要花钱购买的!并且需要实名认证并备案
小网站 非法网站在国外注册备案

arp协议:

处于数据链路层 可以把IP协议转成mac地址 所以说最终两台计算机联系还是要有一个唯一的物理地址

ps: IP地址可以用来标识全世界独一无二的一台计算机


'''PORT协议(端口协议):'''
    一台计算机上面可以运行很多数据交互软件 比如微信、qq、钉钉
    不同的软件 都是从内存中获取数据 为什么不会错乱 比如你微信收到QQ发来的信息!
    是因为端口协议的存在!!!
    规定了某一个应用程序必须有一个固定的号码。
    把内存划分出很多小的区域供使用 一个应用程序就在一个小的内存区域中存取数据。
    用于标识一台计算机上面正在运行的应用程序(端口号类似于手牌号)

'''端口号的范围、端口号动态分配(重要)'''
    # 端口号的范围
    0-65535
    一台计算机最多同时运行 65536 个应用程序(理论上)
    0-1024:系统经常使用的端口号
    1024-8000:常用软件端口号
    我们写项目用 8000 之后的!
    # 动态分配
    1.同一时间同一计算机上面端口号只能给一个应用程序用
    2.端口号是动态分配的
    隐喻:去洗浴中心,端口号是一个箱子,里面装了很多手牌,来了就拿一个手牌,走了手牌要归还。
    # 举例
    软件启动的时候 是可以指定端口号的 没有指定端口号就动态分配
    微信关了再打开,可能分配的就是另外一个端口号
    多QQ号登录 是两个端口 肯定不一样 一样就数据冲突了

'''URL的本质'''
    # URL
    网址的本质是IP和PORT组成的!!!
    1. IP+PORT (重要)
    IP地址:用于标识全世界独一无二的一台接入互联网的计算机
    PORT号:用于表示一台计算机上面的某一个应用程序
    IP+PORT 能够标识全世界独一无二的一台计算机上面的某一应用程序
    访问网址 其实就是访问某一台计算机上的某个应用程序
    我们日常生活使用浏览器访问的各个网址其实就是IP+PORT
    比如:14.215.177.39:80
    遵循格式:ip:port
    2. 无需指定端口
    很多常见的服务端都不需要指定端口 比如百度!
    只要访问了ip地址 内部会自动映射 不需要指定端口了
    eg:或者服务端只开放了一个80端口

'''DNS域名解析'''
    我们通过IP地址就可以访问网站了!但是为什么网址长这样:
    www.baidu.com # 好记
    14.215.177.39:80 # 难记
    我们之所以不直接使用IP+PORT的原因是太难记 所以发明了域名(网址)
    域名解析:将网址解析成IP+PORT