软件开发架构

1.什么是软件开发架构

编写项目之前需要遵循的代码层面上的规范

2.软件开发架构

c/s架构:
c:client 客服端(程序需要先安装后,才能运行在用户的电脑上,对用户的电脑的操作系统环境依赖较大)
s:server 服务端 ps:计算机上下载的各个互联网公司的app本质其实都是客户端
下载一个个客户端的目的说白了就是为了体验对应服务端的服务
客户端可以看作是即将去消费的客人
服务端可以看作是给你推荐服务的店
服务端具备的特征:
1.24小时不间断提供服务
2.固定的地址
3.可以同一时间服务很多人
b/s架构:
b:broswer 浏览器(其实也是一种客户端,它不需要安装应用程序,只需要在浏览器上通过HTTP请求服务器端相关的资源)
s:server 服务器
ps:b/s架构本质也是c/s架构
通过浏览器来充当各个服务器的客户端,用于想要体验服务不需要下载指定的客户端

3.架构优劣势

cs架构:
优势:下载对应的客户端,可以在客户端软件内高度制定相关服务
劣势:使用必须先下载客户端比较麻烦
bs架构:
优势:不需要下载客户端 能够快速体验服务
劣势:制定花里胡哨的功能

4.架构发展趋势

发展趋势:统一接口原则
微信:里面有许多小程序 可以直接体验其他服务
支付宝:里面有许多小程序 可以直接体验其他服务
后期就是cs与bs交错使用,互补各自劣势
ps:可以方便用户使用,更重要的是可以给自己圈用户便于后期收割

网络编程简介

1.如何理解网络编程

基于互联网编写代码,程序可以实现远程数据交互

2.网络编程的目的

网络编程的本质是为了解决计算机之间远程数据交互

3.网络编程的意义

学习网络编程之后,我们就可以编写一个c/s架构的软件

4.网络编程的起源

网络编程最早由美国军方开发
没有网络编程的时候,如果俩台计算机之间要交互数据,只能使用硬盘拷贝

5.网络编程的要求

1.早期的电话线,必须要有电话线
2.大屁股电脑,必须要有网线
3.笔记本电脑,必须要有网卡
计算机之间想要实现远程数据交互,俩者之间必须要有物理连接介质

OSI七层协议

1.了解知识

规定了计算机涉及到数据远程交互的时候,必须要经过的部件/流程
或者说就是所有的计算机在涉及到网络传输这块必须要有相同的零部件 这七层协议只争对网络协议

应用层、表示层、会话层、传输层、网络层、数据链路层、物理连接层
'''也可以合并成五层:'''
应用层、传输层、网络层、数据链路层、物理连接层
'''也可以合并成四层:'''
应用层、传输层、网络层、网络接口层
ps:记忆小技巧:记开头,,应、表、会、传、网、数、物

2. 各层特征

'''
各层特征:
数据发送出去的时候,是从上往下走
数据该收回来的时候,是从下往上走 '''
1.物理连接层
保证物理连接介质的条件,传递电信号(主要研究插网线情况)
2.数据链路层
1.规定了电信号的分组方式
2.规定每台计算机都必须有一块网卡
网卡上必须有一串记录,可以看作是它的身份证号-->以太网地址\mac地址
以太网地址\mac地址:前6位是生产编号,后6位是生产流水线
ps:有了太网地址\mac地址,我们就可以根据该地址查找计算机(基于mac地址实现数据交互)
3.网络层
IP协议:规定了任何接入互联网的计算机都必须有一个IP地址(身份的标识)
IP地址的特性:
IPV4:点分十进制,最小是0.0.0.0,最大是255.255.255.255
随着社会的发展,同时上网的人越来越多
IPV6:百度了解
IP特征:每个IP都自带定位
扩展知识:IP代理:隐藏自己的地址,但是还是可以找得到的
4.传输层
PORT协议(端口协议):规定了一台计算机上的每一个应用程序都必须有一个端口号
端口号相当于是计算机用来管理多个应用程序的标记
端口号的特征
1.端口号范围:0-65535
2.端口号是动态分配
3.同一时间同一台计算机端口号不能冲突,同一时间一个端口号只能给一个计算机使用
4.固定的使用范围:
0-1024范围是操作系统内部使用的
1024-8000范围是常见的软件已经使用了
我们以后写代码使用8000以后的端口号
扩展知识:
IP+PORT:表示全世界任意一台接入互联网的计算机上的某个具体的应用程序
什么是网址(URL):统一资源定位符,本质:IP+PORT

网络相关设施

1.交换机

能够让接入交换机的多台计算机实现彼此互联

2.以太网通信(mac通信)

原理:有了交换机之后,根据电脑的mac地址就可以实现数据交互
广播:在交换机中喊,所有接入交换机的设备都可以听到
单播:被喊得设备给与回应
缺陷:
mac地址通信仅限于局域网
接入设备过多的时候,会造成广播风暴

3.局域网

有某个固定区域组成的网络
广域网可以看作是一个更大区域的局域网

4.路由器

局域网与局域网直接不能直接跨着访问
路由器作用(功能):将多个局域网连接到一起,不同的局域网可以相互访问

网络编程、OSI七层协议的更多相关文章

  1. Day09: socket网络编程-OSI七层协议,tcp/udp套接字,tcp粘包问题,socketserver

    今日内容:socket网络编程    1.OSI七层协议    2.基于tcp协议的套接字通信    3.模拟ssh远程执行命令    4.tcp的粘包问题及解决方案    5.基于udp协议的套接字 ...

  2. 8.6 day27 网络编程 osi七层协议 Time模块补充知识 TCP协议

    Time模块补充知识 date和datetime区别是什么? date 就是年月日 datetime就是年月时时分秒 以下代码为什么会报错? import json from datetime imp ...

  3. Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手)

    Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手) 一丶CS/BS 架构 C/S: 客户端/服务器    定义:       ...

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

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

  5. 网络之OSI七层协议模型、TCP/IP四层模型

    13.OSI七层模型各层分别有哪些协议及它们的功能 在互联网中实际使用的是TCP/IP参考模型.实际存在的协议主要包括在:物理层.数据链路层.网络层.传输层和应用层.各协议也分别对应这5个层次而已. ...

  6. 网络编程-osi七层

    一.操作系统基础 操作系统:(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才 ...

  7. python网络编程-OSI七层模型详解

    OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯,因此其最主要的功能就是帮助不同类型的主机实现数据传输 . 完成中继功能的节点通常称为中继系统.在OSI七层模型中,处于 ...

  8. Java网络编程:OSI七层模型和TCP/IP模型介绍

    OSI(Open System Interconnection),开放式系统互联参考模型 .是一个逻辑上的定义,一个规范,它把网络协议从逻辑上分为了7层.每一层都有相关.相对应的物理设备,比如常规的路 ...

  9. CSIC_716_20191204【网络编程 OSI 七层结构】

     软件开发架构 C/S架构: Client: 客户端 Server: 服务端 比如: 微信客户端.QQ客户端等... 优点: - 软件的使用稳定 - 节省网络资源 缺点: - 安装麻烦,用户体验差 - ...

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

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

随机推荐

  1. 认识并安装WSL

    认识并安装WSL(基于Windows的Linux子系统) 什么是WSL WSL(Windows Subsystem for Linux),这是在windows平台运行的linux子系统.也就是说可是不 ...

  2. 记一次Tomcat卡死在 Deploying web application 步骤的问题

    公司有一个历史的遗留项目是传统的MVC架构的前后不分离的项目,一开始使用JDK1.7写的,后来前一阵老板说想在这个远古项目上加点功能,顺带换换皮,于是乎一帮程序员们就用JDK1.8重新翻新了一遍项目顺 ...

  3. Java泛型知识总结

    泛型 前言 在没有泛型之前,程序员必须使用Object编写适用于多种类型的代码.很繁琐,也不安全. 泛型的引入使Java有了一个很强的类型系统,允许设计者详细地描述变量和方法的类型要如何变化. 在普通 ...

  4. Educational Codeforces Round 129 (Rated for Div. 2) A-D

    Educational Codeforces Round 129 (Rated for Div. 2) A-D A 题目 https://codeforces.com/contest/1681/pro ...

  5. NC202492 仓库选址

    NC202492 仓库选址 题目 题目描述 牛能在某小城有了固定的需求,为了节省送货的费用,他决定在小城里建一个仓库,但是他不知道选在哪里,可以使得花费最小. 给出一个 \(m \times n\) ...

  6. tauri+vue开发小巧的跨OS桌面应用-股票体检

    最近打算写一个用于股票体检的软件,比如股权质押比过高的股票不合格,ROE小于10的股票不合格,PE大于80的股票不合格等等等等,就像给人做体检一样给股票做个体检.也实现了一些按照技术指标.基本面自动选 ...

  7. 『现学现忘』Git后悔药 — 29、版本回退git reset --mixed命令说明

    git reset --mixed commit-id命令:回退到指定版本.(mixed:混合的,即:中等回退.) 该命令不仅修改了分支中HEAD指针的位置,还将暂存区中数据也回退到了指定版本. 但是 ...

  8. 链表设计与Java实现,手写LinkedList这也太清楚了吧!!!

    链表设计与实现 在谈链表之前,我们先谈谈我们平常编程会遇到的很常见的一个问题.如果在编程的时候,某个变量在后续编程中仍需使用,我们可以用一个局部变量来保存该值,除此之外一个更加常用的方法就是使用容器了 ...

  9. MySQL查询为什么没走索引?这篇文章带你全面解析

    工作中,经常遇到这样的问题,我明明在MySQL表上面加了索引,为什么执行SQL查询的时候却没有用到索引? 同一条SQL有时候查询用到了索引,有时候却没用到索引,这是咋回事? 原因可能是索引失效了,失效 ...

  10. 【一知半解】AQS

    什么是AbstractQueuedSynchronizer(AQS) 字面意思是抽象队列同步器,使用一个voliate修饰的int类型的同步状态,通过一个FIFO队列完成资源获取的排队工作,把每个参与 ...