网络编程
软件开发架构
# 什么是软件开发架构
程序员在编写软件的时候应该遵循的架构设计,类似于我们编写ATM选课系统所采用的三层架构
# 软件开发架构分类
1.C/S架构
C: clietn(客户端)
S:server(服务端)
'''
客户端相当于要体验服务的客人
服务端相当于是对外面提供服务的店面
我们手机上狭隘的各种app其实就是各大厂家的客户端
打开app使用功能的时候其实就是相当于基于网路去到厂家店内接收服务
'''
2.B/S架构
B: browser(浏览器)
S: server(服务器)
'''
B/S架构本质也是C/S架构
让浏览器充当各个厂家的客户端 用户无需下载想对应客户端
'''
# 两种架构的优缺点
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七层协议1
OSI七层的本质就是规定了数据想要基于网络发送出去,必须在计算机上经理一些固定的流程
# 物理链接层
物理链接介质,传递电信号
# 数据链接层
'''
基于物理链接层接收到一串二进制数
如何切分才能正常解析?
'''
1.规定了二进制数据分组方式
2.规定了'以太网协议'
但凡能够接入互联网的计算机都必须有一块网卡
每块网卡在出厂的时候都会被烧制一个全世界独一无二的编号,改编号由12位16进制数组组成
前六位是产生编号
后六位是流水线号
这个独一无二的编号也有一个称号:mac地址(类似于身份号)
ps:基于mac地址就可以实现计算机之间的数据通信
网络知识补充
# 1.什么是互联网
将计算机彼此链接到一起的介质
# 2.互联网建立的目的
基于互联网做数据交互
# 3.上网的本质
基于网线去访问其他计算机上面的资源
'''其实我们的计算机也可以称之为服务器/服务端(专门对外提供服务)'''
专业设施名词
1.交换机
让接入交互机的多台计算机之间彼此互联
2.局域网
由交换机组成的网络称之为局域网(一个区域)
3.广播与单播
广播:在交换机中群发
单播:定向回复消息(记录mac地址)
4.路由器
将局域网彼此链接起来并支持数据交互
互联网其实可以看成是由多个局域网链接在一起
'''
在局域网中可以直接基于mac地址实现数据交互
单数可能会产生广播风暴:交换机中间同一时间出现太多广播操作
mac地址只能用于局域网交互数据不能跨区域网传输
'''



OSI七层协议2
# 网络层
IP协议
规定每台接入互联网的计算机都必须有一个IP地址(取决于网线)
IP地址目前由两个版本
IPV4:点分十进制
最小:0.0.0.0
最大:255.255.255.255
# 随着社会进步,计算机使用越来越普遍 IPV4地址不够用
IPV6:十六进制
'''IPV6可以表示出地球上每一粒沙子'''
ps:IP地址可以唯一标识地球上独一无二的一台接入互联网的计算机
'''
IP地址可以分为公网IP和私网IP,公网IP是可以之间被浏览器访问到的 但是私网IP是不可以的
我们所有人的电脑默认都是使用私网IP
公网IP需要花钱购买,并且需要实名认证并备案,很多非法网站都是在国外注册备案
'''
# 传输层
PORT协议(端口协议)
'''
一台计算机丧命可以运行很多数据交互软件,比如微信、qq、钉钉
他们都是从内存中获取数据,之所以不会错乱,就是因为端口协议的存在
'''
用于标识一台计算机上面正在运行的应用程序(端口号类似于身份证)
端口号范围:0~65535
0~1024:系统经常使用的端号
1024~8000:常用软件端口号
1024~8000:常用软件端口号
以后再写项目的时候推荐使用8000以后的端口
1.同一时间同一台计算机上面的端口号不能冲突
2.端口号是动态分配的
eg:打开微信随机分配一个没有被使用的端口号8808
关闭微信重新打开呢吗随机分配的可能还是8888也可能是其他的端口
'''
IP地址:用于标识全世界独一无二的一台接入互联网的计算机
PORT号:用于标识一台计算机上面的某一个应用程序
IP+PORT:能够标识全世界独一无二的一台计算机上的某一个正在运行的程序
我们日常生活使用浏览器访问的各个地址其实就是IP+PORT
www.baidu.com 好记
IP+PORT
14.215.177.29:80 难记
很多常见的服务端都不需要指定端口 只需要访问了ip地址内部,就会自动映射
域名解析
将好几的地址解析成真正的地址
www.baidu.com 解析
202.18.22.5:80
'''
# 应用层
这里完全可以取决于程序员自己,HTTP协议、HTTPS协议、FTP协议、自定义协议
TCP与UDP协议
TCP协议
#都属于传输层
#TCP协议
流式协议、可靠协议
基于TCp协议进行数据交互只需需要一系列复杂的操作:三次握手四次挥手
'''
三次握手建立链接
eg:彼此挖通道
四次回收断开链接
eg:彼此切断通道
洪水攻击:服务端接收到了大量的syn请求 处于rcvd状态
控制多台计算机同一时刻去访问服务端 造成服务端孙坚过载瘫痪
'''
三次握手

四次挥手

UDP协议
丢包协议、不可靠协议
不需要建立双向通道,数据传输速度快但是可能会丢失
qq使用的就是UDP协议 所以有时候会产生数据丢失的现象
但是我们可以在UDP西元一的基础之上做很多额外的拓展来保证数据的安全
'''
TCP协议类似于打电话:你一句我一句
UDP协议类似发短信:发了之后不断你看不看 值要发了就行
'''
面试题
# TCP协议之所以比UDP协议可靠 就是因为由双向通道对不对?
描述的不够精确 不对
TCP协议之所以比UDP协议可靠原因在于TCP协议发送消息有反馈机制
基于Tcp发送的消息会在本地先保存该消息 如果地方确认收到才会删除
否则在一定的时间内会频繁的多次发送直到确认或者超时位置
UDP协议发送数据之后会立刻删除内存数据 不会保留
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人