网络架构及其演变过程
单机架构
- 就只有一个客户端,不须要和服务器交换数据
CS架构
- 客户端(Client)--- 服务端(Server) - - 客户端:用户安装软件 - - 服务端:统一管理数据库的主机中的软件就叫作服务端,再后来服务端不仅是管理数据,外加处理业务逻辑
CS架构要求
- 要求操做系统安装客户端;产商操做系统部署服务端 - 每一个用户须要独立安装软件、服务端升级也要每一个用户升级
面试题:数据放在服务端和客户端的利与弊?
数据若是放在服务端处理安全性,稳定性并且升级很容易,可是对于服务器的负荷比较大 数据若是放在客户端处理,安全性、稳定性会下降,而且升级须要每一个客户端都去升级,不利于节约网络资源
BS架构
- 浏览器(Browser) --- 服务端(Server) - 统一客户端即默认安装用户电脑中的资源,访问同种类的网站,具体业务的处理根据相应的协议和标砖提供的服务器程序,在服务器中处理 - 原理上来讲BS架构其实就是CS架构,就如今来讲BS架构与OS架构的区别: 在技术架构,核心技术,在线预订等层面上来讲BS架构实际上是优于CS架构的,但在原理上来讲BS架构其实也是一个cs架构,由于BS的浏览器端,其实也能够说成是客户端
互联网的组成
互联网的组成(教材)
互联网的拓扑结构很是复杂,而且在地理位置上覆盖了全球,从工做方式上看,能够划分为两大块: - 1.边缘结构:这部分由全部链接在互联网上的主机组成,这部分是用户直接使用的,用来进行通讯和资源共享 - 2.核心部分:由大量网络和链接这些网络的路由器组成,这部分用来为边缘结构提供服务. 以上是教材中所划分的:css
互联网的组成(科普):
说道互联网你们都不陌生,利用互联网打开手机或者电脑看新闻,刷淘宝,看抖音,如今的互联网已然成为了人们生活的一部分python
区块链号称是下一代互联网面试
互联网的基础设施很是庞大,包含硬件,软件两部分.下面咱们先来看一下当你打开你的浏览器没输入一个网址,这样一个简单的动做,有计算机实现的过程: - 1.浏览器检查是否有缓存过域名对应ip地址 - 2.若是没有缓存的域名对应的ip,请求域名服务器解析成对应的ip地址 - 3.浏览器创建Scoket链接,根据http协议组装get类型的http header,经过tcp/ip发送报文. - 4.tcp/ip协议会经过网络层网卡(wifi或者网线)发射信号到家庭的路由器,家里面的路由器发送信号到电讯厂商的交换机中, 找到目标服务器,服务器也许托管在IDC机房,也许在阿里云VPS,也许在国外 - 5.机房里面有不少大型的交换机,机柜,专业的精密空调,你要访问的那台ip的服务器就在某个机柜中 - 6.在服务器接收到信号后,会根据tcp/ip协议解出http的协议头,根据get的请求决定须要返回的数据 - 7.在服务器端实际上根据业务还有很复杂的逻辑,服务器后面还有不少台服务器,到底指定那一台服务器来处理请求,须要负载均衡设备来完成 - 8.要返回的数据是在缓存里面,仍是在静态文件中,仍是在数据库中. - 9 .根据浏览器返回的数据,发现一些静态资源(css,js等)时又从新发起新的http请求,而这些静态资源文件可能在CDN网络中,请求静态资源的整个过程须要从第一步再走一遍.而且极可能中间通过的交互机,路由的过程是不同的数据库
互联网的硬件组成
- 1.终端设备 - 2.网络设备 - 3.主机设备
互联网的软件组成
- 1.网路协议类 - 2.操做系统类 - 3.平台中间插件类 - 4.应用类
OSI七层协议
互联网的本质其实就是一些列的网络协议,这个协议就叫作OSI协议,是人为划分的,主要是区别每一层的做用,方便理解 七层:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层 五层:应用层,传输层,网络层,数据链路层,物理层 四层:应用层,传输层,网络层,网络接口层 以上这三张划分方式其实意义是同样的,只是人记得不一样而已浏览器
1.物理层:接收高低压电平 2.数据链路层:解释高低压电平,将一电信号划分为一个一个的数据包,数据帧(由报头和数据组成) -head包含(固定18个字节) - 发送者/源地址 6个字节 - 接收者/目标地址 6个字节 - 数据类型 6个字节 -data包含:(最短46个本身,最长1500个字节) 3.网络层:引入一套新的地址用来区分不一样的广播域/子网,这套地址即网络地址 - 规定网络地址的协议叫作IP协议,定义的地址叫作IP地址缓存
- 子网掩码就是表示网络特征的一个参数,他在形式上等同于一个ip地址 - IP协议的做用主要是,为每一台计算机分配ip地址和肯定那些地址在同一个网络 - 有了MAC地址+IP地址,咱们就能够肯定世界上独一无二的一台计算机了 - APR协议:获取对方的MAC地址(经过广播的形式),由于每台计算机的IP地址是已知的,因此只须要获取MAC地址,就能够肯定计算机了
4.传输层:创建端口到端口的通讯 - 找到肯定了的计算机上的应用,就须要经过端口,端口是应用程序与网卡关联的编号 - TCP协议: 可靠传输(须要创建链接,三次握手,四次挥手) - UDP协议: 不可靠传输(不须要创建链接,数据容易丢失,就是玩lol丢包) 5.应用层:规定应用层的数据格式 - TCP协议能够为各类各样的程序传递数据,因此就有了为各类应用程序规定数据格式的协议存在.就构成了应用层 - TCP协议就是一个老好人协议,谁都能来安全
使用socket创建简易的服务端和客户端
服务端服务器
#导入一个socket模块 import socket #想象成买手机打电话:socket.SOCK_STREAM 表示创建tcp链接 ,udp链接socket.SOCK_DGRAM #买了个手机 soc=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #插电话卡:绑定ip地址 传元组:(ip,端口号) soc.bind(('192.168.11.146',8080)) #若是写本机ip,局域网外部能够访问 # soc.bind(('127.0.0.1',8080)) #若是写127.0.0.1,只能本身访问 #开机,监听,这个5 是半链接池的大小 soc.listen(5) #等待别人给我打电话 print('xxxx') conn,addr=soc.accept() print('yyyy') print(addr) # conn 就是通路 #接收1024个字节 data=conn.recv(1024) print('我收到客户端发的',data) #conn.send 发送数据,数据必须是bytes格式 conn.send(b'xxxxx') #挂断电话 conn.close() #销毁手机 soc.close()
客户端网络
import socket #建立一个socket对象 soc=socket.socket() #链接服务端 soc.connect(('192.168.11.146',8080)) #发送消息 soc.send(b'xxx') data=soc.recv(1024) print('我收到服务端回的',data) #关闭链接 soc.close()