# 1、软件开发架构含义 程序员在编写软件的时候应该遵循的架构设计——相当于之前写的ATM和选课系统所采用的的三层架构 # 2、软件开发架构的分类 2.1、C/S架构 C:client(客户端) S:server(服务端) """ 客户端相当于需要体验软件的使用者 服务端相当于对外服务的服务场所 我们在手机上下载的各种APP就是他们的客户端,打开APP时就相当于我们基于网络到了场所里面 """
2.2 B/S架构 B: browser(浏览器) S: server(服务器) """ 本质和c/s架构一样,只是我们在浏览器上当做客户端,没有专属的APP,通过浏览器页面去享受服务 """
# 两种架构的优缺点 C/S架构: 优势: 针对客户端可以高度定制 劣势: 需要用户去下载才能使用 B/S架构: 优势: 不需要下载,就可以体验 劣势: 无法做到高度定制, 所以体验感就没那么好 """ 目前软件开发趋势主要是B/S架构 eg: 微信小程序 只需要在微信里面就可以去访问各个小程序服务端 支付宝小程序 在支付宝软件里面去访问其他服务小程序 统一提供接口服务>>>获取大量的用户和数据,使用期间还可以提供广告服务 """
# 1.网络编程的含义 网络编程的研究前提就是基于互联网, 所以网络编程就是基于互联网来编写代码 # 2.网络编程的学习目的 可以开发C/S架构的软件,掌握其中原理,使用框架 # 3.网络编程发展史 始于美国军方>>>: 很多先进的技术都是有军事发明后转为名用 实际应用: 军方想要实现不同计算机之间的数据交互,在当时没有网络编程技术的时候,只能拿U盘拷贝并携带 # 4.早起远程通信 1.座机电话 —— 连接时需要电话线 2.大屁股电脑 —— 数据交互需要插网线 3.智能手机 —— 数据交互无限网卡 """ 电话线、网线、无限网卡 —— 远程通行的前提就是必须具备一个物理链接介质 """ # 5.互联网协议 不同计算机之间如果想要实现无障碍交互,除了需要有物理链接介质之外还需要一套公有的标准 标准 >>>: 互联网协议(OSI七层协议)
""" 所有的计算机在生产过程过程中必须有相同的部分和相同的功能 —— 应、表、会、传、网、数、物 """ 1.应用层 2.表示层 3.会话层 4.传输层 5.网络层 6.数据链路层 7.物理链接层 # 很多人把它们总结成五层 1.应用层(包含了表示层和会话层) 2.传输层 3.网络层 4.数据链路层 5.物理链接层
OSI的本质其实就是规定了数据想要基于网络发送出去必须要在计算机上经历一些固定的流程 # 物理链接层 物理链接介质, 传递电信号 # 数据链路层 基于物理链接层收到一串二进制数, 那么如何正常解析 1.规定了二进制数据的分组方式 2.规定了'以太网协议' 规定想要接入互联网的计算机都必须有一块网卡 每块网卡在出厂的时候都会被赋予一个人全世界唯一 的编号,用来记录,这个编号由12位16进制数组成 前六位是产商编号, 后面六位是流水线号 我们给这个独一无二的编号称之为 —— "mac地址" 小知识: 基于Mac地址可以实现计算机之间的数据通信
# 互联网含义 将计算机彼此链接到一起的介质 # 互联网建立的目的 基于互联网做数据交互 # 上网的本质 基于网线去访问其他计算机上面的资源 "我们也可以把计算机称之为服务器或者服务端(专门对外提供服务)"
# 网络层 规定了一个协议 —— IP协议 规定了每台接入互联网的计算机都必须有一个IP地址(取决于网线,是可变的) 'IP地址有两个版本————IPV4和IPV6' IPV4: 十进制 最小: 0.0.0.0 最大: 255.255.255.255 # 但是用的IP地址多了,不够用了,所以又创了一个新的 IPV6: 十六进制 """ IPV6 可以表示出地球上每一粒沙子 """ ip地址可以唯一标识出地球上独一无二的一台接入互联网的计算机 """ IP地址分为公网IP和私网IP 公网可以直接被浏览器访问到,但是私网不可以 公网需要花钱购买并且需要实名认证并且备案————很多非法的网站都是在国外注册备案 """
PORT协议(端口协议) """ 一台计算机上面可以运行很多数据的交互软件,比如:微信、视频软件、音乐软件 为什么他们从内存中获取数据不会错乱,也就是因为端口协议的存在 """ 端口协议: 目的就是用于识别一台计算机上面正在运行的应用程序(端口号相当于我们消费的手牌) 端口号的范围是:0 ~ 65535(也就是一台计算机可以一起运行65535个应用程序) 0 ~ 1024: 系统经常使用的端口号 1024 ~ 8000:常用的软件端口号 所以我们在写项目的时候,推荐使用8000之后的端口 # 注意事项 1、同一时间同一台计算机上面的端口号不能重合 2、端口号是动态分配的, 就比如这次打开QQ的端口号是8118,使用完关了,再重新打开的时候可能是8118,也有可能是8888,或者其他数字 """ IP地址:用来标识全世界独一无二的一台接入互联网的计算机 PORT号:用来标识一台计算机上面的某一个应用程序 那么IP + PORT :就是标识全世界独一无二的计算机上面的某一个应用程序 所以我们在日常中使用的网址就是 IP + PORT 很多常见的服务端都不需要指定端口 ,只要访问了ip地址内部去会自动映射 """
程序员自己决定——HTTP协议 HTTPS协议 FTP协议 自定义协议
让接入交互机的多态计算机之间的彼此互联
由交换机组成的网络称之为局域网(一个区域)
广播:在交换机中群发 单播: 定向回复消息(记录mac地址)
将局域网彼此链接起来并支持数据交互 互联网其实可以看成是由多个局域网链接在一起
这两个协议都属于传输层 # TCP协议 流式协议、可靠协议 基于TCP协议进行数据交互之前需要做一些系列复杂的操作 >>>: 三次握手四次挥手 三次握手建立连接: 彼此挖通道,单向的挖 四次挥手断开连接:彼此切断通道 """ 洪水攻击:服务端接收到了大量的syn请求,处于rcvd状态 控制很多台计算机同一时刻去访问服务端,从而造成服务端瞬间过载瘫痪 """
三次握手
四次挥手
丢包协议、不可靠协议 不需要建立双下通道,数据的传输的速度快,但是传输的数据可能会发生丢失 QQ使用的就是UDP协议,所以就存在产生数据的丢失情况,但如果在UDP协议的基础上做扩展来保证数据的安全
# TCP协议之所以比UDP协议可靠 ,就是因为有双向通道 对不对? 不对 TCP协议之所以比UDP协议可靠 原因在于TCP协议发送消息有反馈机制 基于TCP发送的消息会在本地先保存该消息 如果地方确认收到才会删除 否则在一定的时间内会频繁的多次发送知道确认或者超时为止 UDP协议发送数据之后会立刻删除内存数据 不会保留