今日内容概要
温馨提示:今日内容全部理论没有一行代码,只需要听懂即可,很简单!!!
- 软件开发结构
- 网络编程简介
- OSI七层协议简介
- OSI七层协议01
- 网络知识补充
- 专业设施名词
- OSI七层协议02
- TCP与UDP协议
再次强调:有些天课程内容简单一定要查缺补漏不能松懈!!!
今日内容详细
一、软件开发结构
我们了解的涉及到两个程序之间通讯的应用大致可以分为两种:
第一种是应用类:qq、微信、网盘、优酷这一类是属于需要安装的桌面应用
第二种是web类:比如百度、知乎、博客园等使用浏览器访问就可以直接使用的应用
这些应用的本质其实都是两个程序之间的通讯。而这两个分类又对应了两个软件开发的架构
1. 什么是软件开发结构?
就是程序员在编写软件的时候应该遵循的架构设计,类似于我们写ATM和选课系统所采用的三层架构
2. 软件开发结构的分类
1)C/S架构
- C:client(客户端)(客户端相当于是需要体验服务的客人)
- S:server(服务端)(服务端相当于是对外提供服务的店面)
- 这里的客户端一般泛指客户端应用程序EXE,程序需要先安装后,才能运行在用户的电脑上,对用户的电脑操作系统环境依赖较大
- C/S架构也就是客户端与服务器端架构,这种架构也是从用户层面(也可以是物理层面)来划分的
2)B/S架构 - B:browser(浏览器)
- S:server(服务器)
- B/S架构本质也是C/S架构,也是浏览器端与服务器端架构,这种架构也是从用户层面来划分的,只不过无需下载相应的客户端
- Browser浏览器,其实也是一种Client客户端,只是这个客户端不需要大家去安装什么应用程序,只需在浏览器上通过HTTP请求服务器端相关的资源(网页资源),客户端Browser浏览器就能进行增删改查
以上两种结构优缺点的对比:
# 两种架构的优缺点
C/S架构:
优势:针对客户端可以高度定制
劣势:需要用户去下载才能使用
B/S架构:
优势:无需下载 急速体验
劣势:无法做到高度定制 体验效果较差
'''
目前的趋势其实更加偏向于B/S架构
微信小程序
只需要下载一个微信就可以通过微信去访问很多服务端
支付宝诸多应用
只需要下载一个支付宝就可以通过支付宝体验很多服务
统一提供接口服务>>>:获取大量用户及数据 中途还可以提供广告服务
'''
二、网络编程简介
1. 什么是网络编程?
- 网络编程的研究前提就是基于互联网 网络编程就是基于互联网编写代码
2. 学习网络编程的目的/结果
- 学习完网络编程之后就可以开发C/S架构的软件(掌握原理 使用框架)
3. 网络编程发展史
-
该技术源于美国军方>>>:很多先进的技术都是由军事发明后续转为民用
-
实际应用:
军方想要实现不同计算机之间数据交互
在当时,没有网络编程技术的时候只能拿U盘拷贝并携带
为了跨区域交互数据所以发明了网络编程
3.早期远程通信
1)座机电话
彼此打电话需要电话线
2)大屁股电脑(大肚子)
数据交互需要插网线
3)智能手机
数据交互需要无限网卡
'''
电话线 网线 无限网卡
远程通信的前提是必须具备一个物理链接介质
'''
4. 互联网协议
- 不同计算机之间要想实现无障碍交互
- 除了需要有物理链接介质之外还需要一套公有的标准,这个标准就是>>>:互联网协议(也就是OSI七层协议)
三、 OSI七层协议简介
"""
所有的计算机在生产过程中必须有相同的部分和相同的功能
应、表、会、传、网、数、物
"""
1.应用层
2.表示层
3.会话层
4.传输层
5.网络层
6.数据链路层
7.物理链接层
# 上述的七层也有很多人总结为五层
1.应用层(三层)
2.传输层
3.网络层
4.数据链路层
5.物理链接层
逻辑层级图如下:
四、 OSI七层协议01
- OSI七层的本质其实就是规定了数据要想基于网络发送出去必须在计算机上经历一些固定的流程
- 物理链接层
物理链接介质,传递电信号 - 数据链路层
也就是负责相邻设备之间数据传输
然后老师又拓展了一下:
"""
基于物理链接层接收到一串二进制数 如何切分才能正常解析?
"""
1.规定了二进制数据的分组方式
2.规定了'以太网协议'
但凡能够接入互联网的计算机都必须有一块网卡
每块网卡在出厂的时候都会被烧制一个全世界独一无二的编号
该编号是由12位16进制数组成
前六位是产商编号
后六位是流水线号
这个独一无二的编号也有一个称呼>>>:'mac地址'(类似于身份证号)
ps:基于mac地址就可以实现计算机之间的数据通信了!!!
五、网络知识补充
- 什么是互联网?
将计算机彼此链接到一起的介质 - 互联网建立的目的?
基于互联网做数据交互 - 上网的本质
基于网线去访问其他计算机上面的资源
"""其实我们的计算机也可以称之为是服务器/服务端(专门对外提供服务)"""
六、 专业设施名词
- 交换机
让接入交互机的多台计算机之间彼此互联 - 局域网
由交换机组成的网络称之为局域网(一个区域) - 广播与单播
广播:在交换机中群发
单播:定向回复消息(记录mac地址) - 路由器
将局域网彼此链接起来并支持数据交互
互联网其实可以看成是由多个局域网链接在一起
"""
在局域网中可以直接基于mac地址实现数据交互
但是可能会产生广播风暴:交换机中同一时间出现太多广播操作
mac地址只能用于局域网交互数据 不能跨局域网传输
"""
七、 OSI七层协议02
1. 网络层
1)先说下IP协议
规定了每台接入互联网的计算机都必须有一个IP地址(取决于网线)
2)IP地址目前有两个版本
IPV4 : 点分十进制
最小:0.0.0.0
最大:255.255.255.255
IPV6 : 十六进制
可以精确到每一台计算机
话说“IPV6可以表示出地球上每一粒沙子”
随着社会的进步 计算机的使用越来越普遍 IPV4地址不够用
"""
IP地址分为公网IP和私网IP
公网IP是可以直接被浏览器访问到的 但是私网IP是不可以的
我们所有人的电脑默认使用的都是私网IP
公网IP需要花钱购买并且需要实名认证并备案
很多非法网站都是在国外注册备案
"""
2. 传输层
1)PORT协议(端口协议)
用于标识一台计算机上面正在运行的应用程序(端口号类似于手牌号)
2)端口
一台拥有IP地址的主机可以提供许多服务,比如Web服务、FTP服务、SMTP服务等,这些服务完全可以通过1个IP地址来实现。要想主机是区分不同的网络服务,显然不能只靠IP地址,因为IP 地址与网络服务的关系是一对多的关系。实际上是通过“IP地址+端口号”来区分不同的服务的。
3)端口号的范围是:0~65535
0~1024:系统经常使用的端口号
1024~8000:常用软件端口号
我们以后在写项目的时候推荐使用8000之后的端口
需要注意的是:
1.同一时间同一台计算机上面端口号不能冲突
2.端口号是动态分配的
eg:打开微信随机分配一个没有被使用的端口号8888
关闭微信重新打开那么会随机分配可能还是8888也可能是其他
小总结:
"""
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协议(都属于传输层)
1. TCP协议
三握手
TCP是因特网中的传输层协议,使用三次握手协议建立连接,三次握手完成,TCP客户端和服务器端成功地建立连接,可以开始传输数据了。
四挥手
建立一个连接需要三次握手,而终止一个连接要经过四次握手,这是由TCP的半关闭(half-close)造成的
"""
洪水攻击:服务端接收到了大量的syn请求 处于rcvd状态
控制很多台计算机同一时刻去访问服务端 造成服务端瞬间过载瘫痪
"""
2. UDP协议
当应用程序希望通过UDP与一个应用程序通信时,传输数据之前源端和终端不建立连接
当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上
不需要建立双下通道 数据的传输速度快 但是可能会丢失,例如qq使用的就是UDP协议 所以有时候会产生数据丢失现象
但是我们可以在UDP协议的基础之上做很多额外的扩展来保证数据的安全
3. TCP 与 UDP 对比
- TCP—传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。
- UDP—用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,所以传输速度很快