python(网络编程,OSI七层协议)
今日内容概要
- 软件开发架构
- 架构发展趋势
- 网络编程简介
- OSI七层协议
软件开发架构
什么是软件开发架构:
规定程序的请求逻辑、功能分块
专业:软件架构为软件系统提供了一个结构、行为和属性的高级抽象,由构件的描述、构件的相互作用、指导构件集成的模式以及这些模式的约束组成
软件架构是一种思想,一个系统蓝图,是对软件结构组成的规划和职责设定。一个软件里有处理数据存储的处理业务逻辑的、处理页面交互的、处理安全的等许多可逻辑划分出来的部分。
我们了解的涉及到两个程序之间通讯的应用大致可以分为两种:
第一种是应用类:qq、微信、网盘、优酷这一类是属于需要安装的桌面应用
第二种是web类:比如百度、知乎、博客园等使用浏览器访问就可以直接使用的应用
这些应用的本质其实都是两个程序之间的通讯。而这两个分类又对应了两个软件开发的架构~
软件开发结构有:
1.c/s架构
2.B/s架构
c/s架构
Client:客户端
Server:服务端
本质:
一般我们使用计算机下载的一个个APP的本质就是个大互联网公司的客户端软件
通过这些客户端软件我们就可以体验到各个互联网公司给我们提供的服务
eg:下载淘宝客户端 打开 体验淘宝服务端提供的购物服务
下载抖音客户端 打开 体验到抖音服务端提供的视频服务
PS:一般情况下客户端与服务端交互是需要互联网的,但是也有写不需要(因为客户端和服务端都是在一台计算机上)
eg:pychram 他就是客户端和服务端都在一台计算机上
"""
客户端:就是即将要去消费的客人
服务端:给客人提供服务的地方
"""
作为服务端必须要必备的多个条件
1.24小时不间断的提供服务
2.固定的地址
3.能够服务多个客人(也就是所谓的高并发)
B/s架构
Browser:浏览器
Server:服务器/端
浏览器可以充当所有服务端的客户端
PS:B/s架构本质还是C/s架构
两者的优劣:
C/s架构
优势:不同公司的客户端有不同的互联网公司独立开发的,所以能够高度定制客户端功能
劣势:需要下载才能使用
B/s架构
优势:不需要下载,直接在浏览器访问
劣势:无法高度定制化,并且需要遵守浏览器的很多规则
架构发展趋势
ATM:三层架构
选课系统:三层架构
本质也属于软件开发架构的范畴
浏览器统一充当各个服务端的客户端
本质:bs架构本质上也是cs架构
软件设计的大方向:
统一:各大互联网巨头正在做的事情
eg:
微信小程序(微信提供开发微信小程序的软件)
支付宝小程序(各大程序接口)
网络编程简介
1.什么是网络编程?
基于网络来进行编写代码,能够实现数据的远程交互
2.学习网络编程是的目的?
能够开发cs架构的软件
3.网络编程的起源
基于远程传输数据的技术最早诞生于美国军方(前沿技术通常都是由军事产生)
想要实现计算机之间数据的交互
因为最早的时候只能用硬盘拷贝来进行数据的传输
之后就发明了网络编程
4.网络编程必备的条件
数据之间的远程交互
1.最早期的电话
交互方式:电话线
2.早期的大屁股电脑
交互方式:网线
3.后来的笔记本、移动电话
交互方式:网卡
PS:实现数据的远程交互必备的基础条件就是物理介质的链接
OSI七层协议
OSI(Open System Interconnect),即开放式系统互联。 这个开放
式系统互联,是ISO(国际标准化组织)在1985年研究的网络模型。
ISO为了更好的使网络应用更为普及,推出了OSI参考模型。其含义就是
推荐所有公司使用这个规范来控制网络。这样所有公司都有相同的规范,就能互联。
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
OSI七层协议之物理连接层
主要用于确保计算机之间的物理连接介质 接收数据(bytes类型、二进制)
OSI七层协议之数据链路层
物理层接收到一长串010101如何切分取值,这个事数据链路层的里面的以太网协议
1.它规定了0101的二进制电信号的分组方式
2.但凡接入互联网的机器,必须有一块网卡
网卡(用来唯一标识全世界独一无二的一台计算机)每块网卡出厂时都会被烧制上一个全世界唯一的编号,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线号)
这个唯一表示计算机独一无二的地址就叫mac地址
该数字也称为:以太网地址/MAC地址
基于以太网协议的通信方式
上面如果仅仅是两台电脑之间通信是不是已经开业完成了,但是如果是多台呢?如何去精准找到对方?
这里需要知道,在同一个局域网内通信基本靠吼!广播,单播
弊端:广播风暴,无法跨局域网通信
关于网络的专业名词
交换机
交换机:能够使接入该机器的所有计算机之间彼此互联
交换机看目标 MAC 地址(bb-bb-bb-bb-bb-bb)在地址表中并没有映射关系,于是将此
包发给了所有端口,也即发给了所有机器。
之后,只有机器 B 收到了确实是发给自己的包,于是做出了响应,响应数据从端口 1 进
入交换机,于是交换机此时在地址表中更新了第二条数据:
广播
主机之间“一对所有”的通讯模式,网络对其中每一台主机发出的信号都进行无条件复制并
转发,所有主机都可以接收到所有信息(不管你是否需要),由于其不用路径选择,所以其
网络成本可以很低廉。有线电视网就是典型的广播型网络,我们的电视机实际上是接受到所
有频道的信号,但只将一个频道的信号还原成画面。在数据网络中也允许广播的存在,但其
被限制在二层交换机的局域网范围内,禁止广播数据穿过路由器,防止广播数据影响大面积
的主机。
其实就是: 查找接入同一个交换机的其他计算机 需要朝交换机里面吼一嗓子
局域网:
可以简单的理解为有交换机组成的网络
在局域网内可以直接使用Mac地址通信
广域网:
可以简单的理解为范围更大的局域网
互联网:
可以简单的理解为是多个局域网之间彼此互联
单播:
首次查找的计算机回应查找它的计算机,并附带上自己的Mac地址
广播风暴:
接入同一台的交换机的多台计算机同时发广播
路由器:
能够连接多个局域网并实现局域网之间的数据传输
路由器
路由器(Router),是连接因特网中各局域网、广域网的设备,它会根据信道的情况自
动选择和设定路由,以最佳路径,按前后顺序发送信号。 路由器是互联网络的枢纽,"交
通警察"。目前路由器已经广泛应用于各行各业,各种不同档次的产品已成为实现各种骨
干网内部连接、骨干网间互联和骨干网与互联网互联互通业务的主力军。路由和交换机之
间的主要区别就是交换机发生在OSI参考模型第二层(数据链路层),而路由发生在第三
层,即网络层。这一区别决定了路由和交换机在移动信息的过程中需使用不同的控制信
息,所以说两者实现各自功能的方式是不同的。
路由器(Router)又称网关设备(Gateway)是用于连接多个逻辑上分开的网络,所
谓逻辑网络是代表一个单独的网络或者一个子网。当数据从一个子网传输到另一个子网
时,可通过路由器的路由功能来完成。因此,路由器具有判断网络地址和选择IP路径的
功能,它能在多网络互联环境中,建立灵活的连接,可用完全不同的数据分组和介质访
问方法连接各种子网,路由器只接受源站或其他路由器的信息,属网络层的一种互联设
备。
OSI七层协议之网络层
IP协议:规定了接入互联网的计算机都必须有一个IP地址用于唯一标识 (类似于身份证号)
mac地址是物理地址可以看成永远无法修改
IP地址是动态分配的 不同的场所IP是不同的
IPV4版本
最小 0.0.0.0
最大 255.255.255.255
IPV6版本
能够表示出地球上每一粒沙子都可以分到一个IP地址
IP地址能够唯一标识接入互联网的一台独一无二的计算机
IP协议可以跨局域网传输并且ip地址能够唯一标识互联网中独一无二的一台机器!
**公网IP与私网IP**
公网IP需要花钱购买并申请
私网IP自带的但是无法直接基于互联网访问
OSI七层协议之传输层
TCP协议 UDP协议
端口协议
范围:0~65535
特性:动态分配
eg:第一次运行微信 系统随机取一个端口号2022
然后关闭微信重新启动 系统随机取一个端口号
端口号基本使用
0~1024系统默认需要使用的端口号
1024~8000常见软件端口号
以后我们开发的软件最后使用8000之后的端口号
端口号(port):能够唯一标识一台计算机上面正在运行的一款应用程序
IP+PORT:能够定位全世界独一无二的一台计算机上面的某一个应用程序
端口号在同一台计算机同一时刻是不能重复的
端口
我们知道,一台拥有IP地址的主机可以提供许多服务,比如Web服务、FTP服务、SMTP
服务等,这些服务完全可以通过1个IP地址来实现。那么,主机是怎样区分不同的网络
服务呢?显然不能只靠IP地址,因为IP 地址与网络服务的关系是一对多的关系。实际
上是通过“IP地址+端口号”来区分不同的服务的。
我们之所以不直接使用IP+PORT的原因是太难记 所以发明了域名(网址)
总结
Ip+Port 127.0.0.1:8080(用冒号链接)
能够唯一标识世界上某一台接入互联网的计算机上面的某一个正在运行的应用程序