软件开发架构

C/S(Client / Server) 架构

概念:是一种软件系统体系结构。Client是客户端,Server是服务端。客户端需要安装专用的客户端软件。 比如:微信、QQ、王者荣耀等应用程序就是C/S结构。

优点:1)降低通信成本,节省网络资源;2)软件的使用相对稳定

缺点:1)维护升级相对困难;2)安装麻烦,用户体验差

B/S(Browser/Server)架构

概念:随着互联网的发展,web出现后兴起的一种网络结构模式。安装浏览器后,就可以通过web Server与服务器进行数据交互。比如:上百度搜索,浏览网页等就是使用“B/S”架构在进行数据交互。浏览器本质上也是一个客户端,B/S 是基于C/S 的基础上实现的

优点:1)维护和升级方式更便捷,只需维护升级服务器端即可;2)软件的使用方便

缺点:1)依赖于网络,网络不稳定,软件就不稳定(现在网络发达,可忽略)


网络编程

计算机之间通信的介质是互联网协议

互联网协议按照功能不同可分为OSI七层或TCP/IP五层或TCP/IP四层

OSI(Open System Interconnection):开放式系统互联,把网络通信的工作分为7层,分别是物理层,数据链路层,网络层,传输层,会话层,表示层,应用层

网络编程主要看TCP/IP五层

物理层:获取到目的计算机的电信号数据

数据链路层:识别数据并将数据传输给目的计算机

  • 以太网协议

    • 规定一套分组的方式:获取电信号真实数据。

      电信号是一个数据包,包含head和data。其中,head由18个字节组成,6位是发送者,6位是接收者,剩下6位是数据类型;data是电信号具体的数据

    • 工作方式:单播和广播

      • 缺点:1)广播风暴;2)只能在局域网内实现通信,无法跨局域实现通信
  • mac地址

    • 每一个计算机设备必须要有一个网卡,网卡有一串世界上独一无二的数字。由12位16进制的数字组成(前6位是产商号,后6位是流水号),称之为“mac地址”。
    • 作用:标识全世界上一台独一无二的计算机

网络层:实现全世界计算机之间的通信

  • IP地址(IP协议):点分十进制的数字组成

    • 范围:

      • 最小范围:0.0.0.0
      • 最大范围:255.255.255.255
    • 版本:IPV4,IPV6
    • 作用:识别全世界中某一台计算机的位置,局域网的位置

IP地址 + mac地址 可以标识全世界中某一个局域网内的某一台计算机。

传输层:主要是软件与软件之间进行通信

  • TCP和UDP协议都是基于“端口”实现通信的。

    • TCP协议:传输控制协议

      • 优点:可靠连接
      • 缺点:传输速度相对UDP慢
    • UDP协议:用户数据报协议
      • 优点:传输快,效率高
      • 缺点:不可靠
  • port端口,用于标识计算机中某个独一无二软件

标识的是全世界范围内某一个局域网内某一台计算机上的某一个软件

应用层:全世界遵循的一套网络规范

  • HTTP协议:用于从(WWW:World Wide Web,简万维网 )服务器传输超文本到本地浏览器的传送协议

    • HTTP协议是基于C/S架构进行通信的
    • 在B/S架构中, Web服务是基于TCP,Web服务器需要监听在80/TCP端口
  • FTP(File Transfer Protocol)协议: 文件传输协议 ,
    • FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上
    • 端口:使用TCP端口中的 20和21这两个端口,默认20用于传输数据,21用于传输控制信息。注意: FTP传输模式为主动模式,数据传输端口为20;如果是被动模式,最终使用那个端口由服务器端和客户端协商处理

python基础-网络编程part01的更多相关文章

  1. python 基础网络编程2

    python 基础网络编程2 前一篇讲了socketserver.py中BaseServer类, 下面介绍下TCPServer和UDPServer class TCPServer(BaseServer ...

  2. python 基础网络编程1

    python 基础网络编程1 Source code: Lib/socketserver.py lib的主目录下有一个sockserver.py文件, 里面是python基本的网络编程模型 共有一个b ...

  3. python基础网络编程--转

    python之网络编程 本地的进程间通信(IPC)有很多种方式,但可以总结为下面4类: 消息传递(管道.FIFO.消息队列) 同步(互斥量.条件变量.读写锁.文件和写记录锁.信号量) 共享内存(匿名的 ...

  4. python基础-网络编程part02

    TCP协议 TCP是传输控制协议,建立双向通道. 三次握手,建立连接 客户端向服务端发送建立连接的请求 服务端接收请求返回确认信息给客户端,并向客户端发送建立连接的请求 客户端接收请求返回确认信息给服 ...

  5. python基础-并发编程part01

    并发编程 操作系统发展史 穿孔卡片 读取数据速度特别慢,CPU利用率极低 单用户使用 批处理 读取数据速度特别慢,CPU利用率极低 联机使用 脱机批处理(现代操作系统的设计原理) 读取数据速度提高 C ...

  6. Python基础-网络编程request使用

    import requests#get请求 url = "http://127.0.0.1:8000/login" data={"username":" ...

  7. python之网络编程

    本地的进程间通信(IPC)有很多种方式,但可以总结为下面4类: 消息传递(管道.FIFO.消息队列) 同步(互斥量.条件变量.读写锁.文件和写记录锁.信号量) 共享内存(匿名的和具名的) 远程过程调用 ...

  8. Python高级网络编程系列之第一篇

    在上一篇中我们简单的说了一下Python中网络编程的基础知识(相关API就不解释了),其中还有什么细节的知识点没有进行说明,如什么是TCP/IP协议有几种状态,什么是TCP三次握手,什么是TCP四次握 ...

  9. python基础-函数式编程

    python基础-函数式编程  高阶函数:map , reduce ,filter,sorted 匿名函数:  lambda  1.1函数式编程 面向过程编程:我们通过把大段代码拆成函数,通过一层一层 ...

随机推荐

  1. AI Conference 2018人工智能大会 参会总结

    主 题:AI Conference 2018人工智能大会 时 间:2018.04.11-4.13 地 点:北京国际饭店会议中心 发起人:O'Reilly 和 Intel 参与部门:研发设计部 参会人员 ...

  2. Mycat分布式数据库架构解决方案--Mycat实现读写分离

    echo编辑整理,欢迎转载,转载请声明文章来源.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!!! 安装完 ...

  3. Android H5混合开发(4):构建Cordova Jar包

    前言 上一节,介绍了原生项目如何嵌入Cordova,我们对Cordova的依赖使用的是CordovaLib Module,这也是安卓项目常用的方式. 但是,也有项目希望以Jar包的方式依赖Cordov ...

  4. Flask:对项目文件进行拆分

    在工作中,我们不可能将ORM的配置,ORM的操作,ORM的使用以及视图放到同一个文件里,大多数时候Flask都是按照MVC的设计理念进行部署的 1.MVC和MTV (1)MVC(Model-View- ...

  5. JDK JRE JVM的区别与关系

    JDK JAVA开发工具包    他包含了JRE   JAVA运行环境   JVM JAVA虚拟机他是跨平台的核心主件   他将Java源文件编译成 .class结尾字节码文件交由不同计算机执行    ...

  6. 视口viewport与单位rem的本质

    结论: 视口viewport的设置是为了让字的显示在不同的屏幕下保持一致. 单位rem的使用是为了让页面中的布局元素的比例在不同的屏幕下显示的比例保持一致. 现象: 我们看电脑时候的网页的时候的字体大 ...

  7. Pandas分类(category)数据处理

    分类(Category)数据:直白来说,就是取值为有限的,或者说是固定数量的可能值.例如:性别.血型 指定数据类型构建分类数据 dtype="category" 以血型为例,创建一 ...

  8. 在vue中如何使用axios

    1.前言 在Vue1.0的时候有一个官方推荐的 ajax 插件 vue-resource,但是自从 Vue 更新到 2.0 之后,官方就不再更新 vue-resource. 关于为什么放弃推荐? -& ...

  9. 6.1Hadoop属性Configuration配置API

    6.1  Hadoop属性配置API Hadoop需要添加一些自定义的属性值,可以通过Configuration类的实例来加载xml配置文件中的属性值. (1)   xml配置文件的格式 <?x ...

  10. python基础-闭包函数和装饰器

    闭包函数和装饰器 闭包函数 概念:在函数中(嵌套)定义另一个函数时,内部函数引用了外层函数的名字. 特性 闭包函数必须在函数内部定义 闭包函数可引用外层函数的名字 闭包函数是函数嵌套.函数对象.名称空 ...