软件开发架构
1.软件开发架构
程序员在编写代码的时候应该遵循的架构设计
类似于我们写的ATM和选课系统的三层架构
2.软件开发的分类
# C/S架构
C:client(客户端)
S:server(服务端)
我们手机下载的各种app就是客户端,主要服务于我们
上网就是我们去享受服务,体验效果就是服务端
# B/S架构
B:browser(浏览器)
S:server(服务端)
让浏览器当作客户端 用户不需要下载客户端
# 两种的对比优势
C/S架构
优势:针对客户端可以高度制定
劣势:需要下载客户端才可以使用
B/S架构
优势:无需下载就可以极速体验
劣势:无法高度定制 体验效果差
前景:目前我们主要发展更向于B/S架构 小程序通过一个就微信支付宝可以体验很多功能
掌握了就相当于掌握了大数据 获得流量 更好赚钱
![]()
网络编程简介
# 网络编程
网络编程的研究前提就是基于互联网 网络编程就是基于互联网编写代码
# 学习网络编程的目的
学习完网络编程之后就可以开发C/S架构的软件(掌握原理 使用框架)
# 网络编程发展史
该技术源于美国军方:很多先进的技术都是由于户发明后续转为民用
没有网络编程技术的时候只能拿U盘拷贝携带
为了跨数据传输就发明了网络编程
# 早期远程通信
1.座机电话
电话线
2.大屁股电脑
数据线需要网线
3.智能手机
数据交互需要无线网卡
# 互联网协议
不同计算之间要想实现无障碍交互
除了需要有物理连接介质还需要有一套共有的标准
OSI七层协议
OSI七层协议简介
"""
所有的计算机在生产过程中必须有相同的部分和相同的功能
应、表、会、传、网、数、物
"""
1.应用层
2.表示层
3.会话层
4.传输层
5.网络层
6.数据链路层
7.物理链接层
# 上述的七层也有很多人总结为五层
1.应用层(三层)
2.传输层
3.网络层
4.数据链路层
5.物理链接层
![]()
OSI七层协议
OSI七层的本质其实就是规定了数据要想基于网络发送出去必须在计算机上经历一些固定的流程
# 物理链接层
物理链接介质,传递电信号
# 数据链路层
"""
基于物理链接层接收到一串二进制数
"""
1.规定了二进制数据的分组方式
2.规定了'以太网协议'
但凡能够接入互联网的计算机都必须有一块网卡
每块网卡在出厂的时候都会被烧制一个全世界独一无二的编号
该编号是由12位16进制数组成
前六位是产商编号
后六位是流水线号
这个独一无二的编号也有一个称呼>>>:'mac地址'(类似于身份
# 网络层
IP协议
规定了每台接入互联网的计算机都必须有一个IP地址(取决于网线)
IP地址目前有两个版本
IPV4:点分十进制
最小:0.0.0.0
最大:255.255.255.255
# 随着社会的进步 计算机的使用越来越普遍 IPV4地址不够用
IPV6:十六进制
'''IPV6可以表示出地球上每一粒沙子'''
ps:IP地址可以唯一标识地球上独一无二的一台接入互联网的计算机
ip地址分为公网ip和私网
公网ip是可以直接被浏览器访问的 但是私网ip
我们的电脑都是私网, 公网是要花钱买 基本是在国外注册备案
# 传输层
PORT协议(端口协议)
用于表示一台计算机上面正在运行的应用程序
端口号的范围是:0~65535
0~1024:系统经常使用的端口号
1024~8000:常用的软件端口号
写的项目之后推荐8000之后的
1.同一时间同一计算机上面端口不能冲突
2.端口号是动态分配的
"""
IP地址:用于标识全世界独一无二的一台接入互联网的计算机
PORT号:用于标识一台计算机上面的某一个应用程序
IP+PORT:能够标识全世界独一无二的一台计算机上面的某一个应用程序
我们日常生活使用浏览器访问的各个网址其实就是IP+PORT
www.baidu.com 好记
14.215.177.29:80 难记
ip:port
很多常见的服务端都不需要指定端口 只要访问了ip地址内部去会自动映射
域名解析
将好记的地址解析成真正的地址
www.baidu.com 解析 202.108.22.5:80
"""
# 应用层
这里完全可以取决于程序员自己的
HTTP协议 HTTPS协议 FTP协议 自定义协议
TCP与UDP协议
# TPC协议
流式协议、可靠协议
基于TPC协议进行数据交互之前要做一系列操作
三次握手四次挥手
三次握手建立链接
四次挥手断开连接
洪水攻击:服务端接收到了大量的syn请求 处于rcvd状态
控制很多台计算机同一时刻去访问服务端 造成服务端瞬间过载瘫痪
# UDP协议
丢包协议、不可靠协议
不需要建立双下通道 数据的传输速度快 但是可能会丢失
qq使用的就是UDP协议 所以有时候会产生数据丢失现象
但是我们可以在UDP协议的基础之上做很多额外的扩展来保证数据的安全
"""
TCP协议类似于打电话:你一句我一句 你侬我侬
UDP协议类似于发短信:发了之后不管你看不看 只要发了就行
"""
![]()
![]()
面试题
# TCP协议之所以比UDP协议可靠 就是因为有双向通道 对不对?
描述的不够精确 不对!!!
TCP协议之所以比UDP协议可靠 原因在于TCP协议发送消息有反馈机制
基于TCP发送的消息会在本地先保存该消息 如果地方确认收到才会删除
否则在一定的时间内会频繁的多次发送知道确认或者超时为止
UDP协议发送数据之后会立刻删除内存数据 不会保留