day04.14网络编程
软件开发架构
软件开发架构就是指程序员在编写程序软件的时候应该遵循的架构设计。
软件开发架构的分类:
C/S架构
C/S即: client与Server,中文意思:客户端与服务器端架构,这种架构也是从用户层面(也可以是物理层面)分的。 这种的客户端一般泛指客户端应用程序EXE,程序需要先安装后,才能运行在用户的电脑上,对用户的电脑操作环境依赖较大。
比如移动端下载的各种App就相当于客户端;使用这些App的功能的时候,就要基于网络去访问服务器端,然后由服务器端提供服务。
服务端需要具备的三大特征:
1.24小时不间断提供服务(24小时监听)
2.固定的地址(IP地址)
3.能够服务多个用户(高并发)
C/S架构的优劣:
优点:针对客户端可以高度定制
缺点:需要用户去下载才能使用
B/S架构
B/S即:browser与server,中文意思:浏览器端与服务器端架构。B/S架构本质其实也是C/S架构。这种架构是从用户层面来划分的。Browser浏览器,其实也是一种Client客户端,只是这个客户端不需要大家去安装什么应用程序,只需在浏览器过HTTP请求服务器端相关的资源(网页资源),客户端Browser浏览器就能进行增删改查的操作。
通俗的讲:这种客户端一般指的就是一些网页程序,一些不需要下载,直接基于网络就可以访问的程序。即>>>:让浏览器充当各个厂家的客户端,用户无需对应下载相应客户端就可以使用。
比如一些微信小程序,支付宝小程序,一些网页游戏,一些快速访问各种服务端的通道链接等等。本质就是浏览器统一充当各个服务端的客户端,能够为用户提供统一的接口服务。
B/S架构的优劣:
优点:无需下载,急速体验
缺点:无法做到高度定制,体验效果较差
网络编程
网络编程简介
网络编程其实研究的就是基于互联网的程序之间的数据通信。基于这个网络编程的方法,根据软件开发的架构就可以开发C/S架构的软件。
网络编程的发展简史
网络编程是为了实现不同计算机之间的数据交互而开发的网络编程方法。如果不使用网络编程时就需要使用U盘,硬盘等等数据存储硬件来进行不同计算机之间的数据交互,费时费力!!!
note:
要想实现远程数据交互的前提是必须要有物理连接介质>>>:电话线、网卡、无线网卡等等
除了有物理连接介质之外还应该有一些能够保证数据彼此无障碍交互的东西(标准)>>>:即互联网协议,又称OSI七层协议
OSI七层协议
OSI(Open System Interconnect),即开放式系统互联。这个开放式系统互联,是ISO(国际标准化组织)在1985年研究的网络模型。
OSI的本质其实就是规定了数据要想基于网络发送出去必须在计算机上经历一些固定的流程。
OSI七层协议分为以下七种:
- 应用层:为用户程序提供网路服务,使用的协议有
HTTP、TFTP, FTP, NFS, WAIS、SMTP。
- 表示层:对信息进行语法处理,可确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取,使用的协议有
Telnet, Rlogin, SNMP, Gopher。
- 会话层:通过传输层(端口号:传输端口与接收端口)建立不同的会话请求,主要是在系统之间里建立对话以及接收对话。使用的协议为
SMTP, DNS。
- 传输层:接受上一层的数据,将上层的数据进行分割操作,在当到达目的地址的时候再进行重组,常常把这个数据叫做段。使用的协议
TCP,UDP。
- 网络层:对在不同地理位置的网络中的两个主机系统提供连接和路径选择,使用的协议有
IP,IPv6, ICMP, ARP, RARP, AKP, UUCP。
- 数据链路层:定义了数据化格式化传输,如何控制对物理介质的访问,这层提供信息的检测和纠正,以确保数据的可靠性传输,使用的协议有
FDDI, Ethernet, Arpanet, PDN, SLIP, PPP。
- 物理连接层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后在转化为 1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特,使用的协议有
IEEE 802.1A, IEEE 802.2到IEEE 802.11。
物理连接层
提供一个物理连接接口(网线口、无线网卡),用来传递电信号。
数据链路层
基于物理连接层接收到一串二进制数,物理层接收到一长串010101如何切分取值,就是数据链路层的里面的以太网协议。
以太网协议:
它规定了0101的二进制电信号的分组方式;但凡接入互联网的机器,必须有一块网卡。
网卡(用来唯一标识全世界独一无二的一台计算机)每块网卡出厂时都会被烧制上一个全世界唯一的编号,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线号)。这个唯一表示计算机独一无二的编号就叫mac地址,是计算机的ID。
基于mac地址和以太网协议就可以实现计算机之间的数据通信了。
ps:
交换机:让接入交互机的多台计算机之间彼此互联
局域网:由交换机组成的网络称之为局域网(一个区域)
广播与单播:广播:在交换机中群发;单播:定向回复消息(记录mac地址)
路由器:将局域网彼此链接起来并支持数据交互;互联网其实可以看成是由多个局域网链接在一起
note:在局域网中可以直接基于mac地址实现数据交互,但是可能会产生广播风暴:即交换机中同一时间出现太多广播操作。mac地址只能用于局域网交互数据,不能跨局域网传输。
网络层
IP协议:规定了接入互联网的计算机都必须有一个IP地址用于唯一标识 IPV4版本:点分十进制 最小 0.0.0.0 最大 255.255.255.255 IPV6版本:十六进制 能够表示出地球上每一粒沙子 IP地址能够唯一标识接入互联网的一台独一无二的计算机 IP协议可以跨局域网传输并且ip地址能够唯一标识互联网中独一无二的一台机器! 公网IP与私网IP: 公网IP是可以直接被浏览器访问到的;需要花钱购买并申请 私网IP自带的但是无法直接基于互联网访问;我们所有人的电脑默认使用的都是私网IP
传输层
端口协议(PORT协议): 用于标识一台计算机上面正在运行的应用程序(端口号类似于手牌号) 范围:0~65535 特性: 1.动态分配; 2.同一时间同一台计算机上面端口号不能冲突 eg:第一次运行微信,系统随机取一个端口号2022 然后关闭微信重新启动,系统随机另取一个端口号 端口号基本使用: 0~1024系统默认需要使用的端口号 1024~8000常见软件端口号 以后我们开发的软件最后使用8000之后的端口号 IP地址:用于标识全世界独一无二的一台接入互联网的计算机 端口号(port):能够唯一标识一台计算机上面正在运行的一款应用程序 IP+PORT:能够标识全世界独一无二的一台计算机上面的某一个应用程序
ps:
我们日常生活使用浏览器访问的各个网址其实就是IP+PORT;
域名解析>>>:将好记的地址解析成真正的地址。
eg:www.baidu.com 解析>>> 202.108.22.5:80
UDP协议:
丢包协议、不可靠协议。
当应用程序希望通过UDP与一个应用程序通信时,传输数据之前源端和终端不建立连接。 当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。 数据发送没有通道的概念 发送出去了就不管了。
UDP特点:
无连接:通信不需要建立连接,只要知道对方地址就可以发送数据
不可靠:不能保证数据是否可以安全、有序的到达对端
优点:快,比 TCP 稍安全。
缺点:不可靠,不稳定。
应用层
这里完全可以取决于程序员自己;HTTP协议 HTTPS协议 FTP协议 自定义协议。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?