软件开发架构
程序员在编写软件的时候应该遵循的架构设计
1. C/S架构
C:client(客户端) 淘宝app 微信 qq
S:server(服务端)
2. B/S架构
B:browser(浏览器) 淘宝网页版 视频网站
S:server(服务器)
'''B/S架构本质也是C/S架构
由浏览器来充当客户端'''
C/S架构:
优势:针对客户端可以高度定制 个性化能力强
劣势:需要下载客户端才能使用 系统更新不仅需要更新服务端 也需更新客户端
B/S架构:
优势:无需下载客户端 打开浏览器即可使用 系统更新只需更新服务端 不需要更新浏览器
劣势:无法高度定制 个性化能力弱
网络编程简介
网络编程的研究前提就是基于互联网 网络编程就是基于互联网编写代码
学习完网络编程之后就可以开发C/S架构的软件(掌握原理 使用框架)
该技术源于美国军方>>>:很多先进的技术都是由军事发明后续转为民用
实际应用:
军方想要实现不同计算机之间数据交互
没有网络编程技术的时候只能拿U盘拷贝并携带
为了跨区域交互数据所以发明了网络编程
1.座机电话
彼此打电话需要电话线
2.大屁股电脑
数据交互需要插网线
3.智能手机
数据交互需要无限网卡
'''
电话线 网线 无限网卡
远程通信的前提是必须具备一个物理链接介质
'''
不同计算机之间要想实现无障碍交互
除了需要有物理链接介质之外还需要一套公有的标准
'''
思考为什么不同厂家的手机零部件几乎是一样的
'''
这个标准是>>>:互联网协议(OSI七层协议)
OSI七层协议简介
OSI七层的本质其实就是规定了数据要想基于网络发送出去必须在计算机上经历一些固定的流程
"""
所有的计算机在生产过程中必须有相同的部分和相同的功能
应、表、会、传、网、数、物
"""
1.应用层
2.表示层
3.会话层
4.传输层
5.网络层
6.数据链路层
7.物理链接层
1.应用层(三层)
2.传输层
3.网络层
4.数据链路层
5.物理链接层
物理链接层
建立、维护、断开物理连接。
物理链接介质,传递电信号
数据链路层
"""
基于物理链接层接收到一串二进制数 如何切分才能正常解析?
"""
1.规定了二进制数据的分组方式
2.规定了'以太网协议'
但凡能够接入互联网的计算机都必须有一块网卡
每块网卡在出厂的时候都会被烧制一个全世界独一无二的编号
该编号是由12位16进制数组成
前六位是产商编号
后六位是流水线号
这个独一无二的编号也有一个称呼>>>:'mac地址'(类似于身份证号)
ps:基于mac地址就可以实现计算机之间的数据通信了!!!
网络知识补充
将计算机彼此链接在一起的介质
基于互联网做数据交互
基于网线去访问其他计算机上面的资源
专业设施名词
交换机
让接入交互机的多台计算机之间彼此互联
局域网
由交换机组成的网络称之为局域网(一个区域)
广播与单播
广播:在交换机中群发
单播:定向回复消息(记录mac地址)
路由器
将局域网彼此链接起来并支持数据交互
互联网其实可以看成是由多个局域网链接在一起
"""
在局域网中可以直接基于mac地址实现数据交互
但是可能会产生广播风暴:交换机中同一时间出现太多广播操作
mac地址只能用于局域网交互数据 不能跨局域网传输
"""


网络层
规定了每台接入互联网的计算机都必须有一个IP地址(取决于网线)
'IP地址可以唯一标识地球上独一无二的一台接入互联网的计算机'
IPV4:点分十进制
最小:0.0.0.0
最大:255.255.255.255
IPV6:十六进制
公网IP是可以直接被浏览器访问到的 但是私网IP是不可以的
我们所有人的电脑默认使用的都是私网IP
公网IP需要花钱购买并且需要实名认证并备案
很多非法网站都是在国外注册备案
传输层
提供可靠和不可靠的传输机制,TCP、UDP
端口表示计算机上的程序进程
端口号范围:0~65535
0~1024:系统经常使用的端口号
1024~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
"""
TCP与UDP协议
TCP协议
基于TCP协议进行数据交互之前需要做一系列复杂的操作>>>:三次握手四次挥手
'''
三次握手建立链接
四次挥手断开链接
洪水攻击:服务端接收到了大量的syn请求 处于rcvd状态
控制很多台计算机同一时刻去访问服务端 造成服务端瞬间过载瘫痪
'''


UDP协议
不需要建立双向通道 数据的传输速度快 但是可能会丢失
qq使用的就是UDP协议 所以有时候会产生数据丢失现象
但是我们可以在UDP协议的基础之上做很多额外的扩展来保证数据的安全
TCP 与 UDP对比
需连接、较稳定
需要三次握手四次挥手 效率低
不连接、不稳定
不需要建立双向通道 数据的传输速度快
不管有没有准备好,都可以发送,不能保证一定接收到
应用层
HTTP协议 HTTPS协议 FTP协议 自定义协议
面试题
描述的不够精确 不对!!!
TCP协议一定要先建立双向链接 发送消息后会有反馈机制
基于TCP发送的消息会在本地先保存该消息 如果地方确认收到才会删除
没有收到反馈就会一直重发直到确认或超时为止
UDP消息发送后不验证是否到达 会立刻删除内存数据 不会保留
域名解析
域名解析是把域名指向网站空间IP,让人们通过注册的域名可以方便的访问到网站的一种服务
IP地址是网络上标识站点的数字地址,为了方便记忆,采用域名来代替IP地址标识站点地址。域名解析就是域名到IP地址的转换过程。
互联网中的地址就是数字的IP地址,域名解析的作用主要就是为了便于记忆
DNS服务器
DNS是进行域名和与之相对应的IP地址转换的服务器、
DNS中保存了一张域名和和与之相对应的IP地址的表,
以解析消息的域名。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?