zoukankan      html  css  js  c++  java
  • 网络基础 + 简易服务端和客户端

    网络架构及其演变过程

    单机架构

    - 就只有一个客户端,不需要和服务器交换数据
    

    CS架构

    - 客户端(Client)--- 服务端(Server)
    - - 客户端:用户安装软件
    - - 服务端:统一管理数据库的主机中的软件就叫做服务端,再后来服务端不只是管理数据,外加处理业务逻辑
    

    CS架构要求

    - 要求操作系统安装客户端;产商操作系统部署服务端
    - 每个用户需要独立安装软件、服务端升级也要每个用户升级
    

    面试题:数据放在服务端和客户端的利与弊?

    数据如果放在服务端处理安全性,稳定性而且升级很容易,但是对于服务器的负荷比较大
    数据如果放在客户端处理,安全性、稳定性会降低,并且升级需要每个客户端都去升级,不利于节约网络资源
    

    BS架构

    - 浏览器(Browser) --- 服务端(Server)
    - 统一客户端即默认安装用户电脑中的资源,访问同种类的网站,具体业务的处理根据相应的协议和标砖提供的服务器程序,在服务器中处理
    
    - 原理上来说BS架构其实就是CS架构,就现在来说BS架构与OS架构的区别:
    在技术架构,核心技术,在线预订等层面上来说BS架构其实是优于CS架构的,但在原理上来说BS架构其实也是一个cs架构,因为BS的浏览器端,其实也可以说成是客户端
    

    互联网的组成

    互联网的组成(教材)

    互联网的拓扑结构非常复杂,并且在地理位置上覆盖了全球,从工作方式上看,可以划分为两大块:
    - 1.边缘结构:这部分由所有连接在互联网上的主机组成,这部分是用户直接使用的,用来进行通信和资源共享
    - 2.核心部分:由大量网络和连接这些网络的路由器组成,这部分用来为边缘结构提供服务.
    以上是教材中所划分的:

    互联网的组成(科普):

    说道互联网大家都不陌生,利用互联网打开手机或者电脑看新闻,刷淘宝,看抖音,现在的互联网已然成为了人们生活的一部分

    区块链号称是下一代互联网

    互联网的基础设施非常庞大,包含硬件,软件两部分.下面我们先来看一下当你打开你的浏览器没输入一个网址,这样一个简单的动作,有计算机实现的过程:
    - 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()
    
  • 相关阅读:
    【从零开始学Spring笔记】Spring的JDBC模板的使用
    自定义实现HashMap的put、get方法
    ArrayList和LinkedList在中间开始插入的快慢比较
    intellij IDEA导入java源码
    IntelliJ IDEA 创建Spring+SpringMVC+hibernate+maven项目
    IntelliJ IDEA 创建maven管理的webapp项目
    IntelliJ IDEA 创建Spring+SpringMVC+mybatis+maven项目
    线程--实现Runnable接口
    线程--继承Thread
    比较两个List是否相等,长度和内容都相等
  • 原文地址:https://www.cnblogs.com/xiongchao0823/p/11468977.html
Copyright © 2011-2022 走看看