python网络编程之C/S架构介绍
标签(空格分隔): c/s架构介绍
什么是C/S架构
C指的是client(客户端软件),S指的是Server(服务端软件),后续我们可以试着写个c/s软件实现服务器软件与客户端软件基于网络通信;
计算机基础知识
基础知识:
- 作为应用开发程序员,我们开发的软件都是应用软件,而应用软件必须运行于操作系统之上,操作系统则运行于硬件之上,应用软件是无法直接操作硬件的,应用软件对硬件的操作必须调用操作系统的接口,由操作系统操控硬件。
- 比如客户端软件想要基于网络发送一条消息给服务端软件,流程是:
- 1、客户端软件产生数据,存放于客户端软件的内存中,然后调用接口将自己内存中的数据发送/拷贝给操作系统内存
2、客户端操作系统收到数据后,按照客户端软件指定的规则(即协议)、调用网卡发送数据
3、网络传输数据
4、服务端软件调用系统接口,想要将数据从操作系统内存拷贝到自己的内存中
5、服务端操作系统收到4的指令后,使用与客户端相同的规则(即协议)从网卡接收到数据,然后拷贝给服务端软件

什么是网络
- 硬件之上安装好操作系统,然后装上软件你就可以正常使用了,但此时你也只能自己使用,像下图这样,每个人都拥有一台自己的机器,然而彼此孤立

如何能大家一起玩耍,那就是联网了,即internet

- 然而internet为何物?举一个简单的例子: 如果把一个人与这个人的有线电话比喻为一台计算机,那么其实两台计算机之间通信与两个人打电话之间通信的原理是一样的。 两个人之间想要打电话首先一点必须是接电话线,这就好比是计算机之间的通信首先要有物理链接介质,比如网线,交换机,路由器等网络设备。 通信的线路建好之后,只是物理层面有了可以承载数据的介质,要想通信,还需要我们按照某种规则组织我们的数据,这样对方在接收到数据后就可以按照相同的规则去解析出数据,这里说的规则指的就是:中国有很多地区,不同的地区有不同的方言,为了全中国人都可以听懂,大家统一讲普通话

普通话属于中国国内人与人之间通信的标准,那如果是两个国家的人交流呢?

问题是,你不可能要求一个人/计算机掌握全世界的语言/标准,于是有了世界统一的通信标准:英语

- 英语成为世界上所有人通信的统一标准,计算机之间的通信也应该有一个像英语一样的通信标准,这个标准称之为互联网协议, 可以很明确地说:互联网协议就是计算机界的英语,网络就是物理链接介质+互联网协议。 我们需要做的是,让全世界的计算机都学会互联网协议,这样任意一台计算机在发消息时都严格按照协议规定的格式去组织数据,接收方就可以按照相同的协议解析出结果了,这就实现了全世界的计算机都能无障碍通信。 按照功能不同,人们将互联网协议分为osi七层或tcp/ip五层或tcp/ip四层(我们只需要掌握tcp/ip五层协议即可),这种分层就好比是学习英语的几个阶段,每个阶段应该掌握专门的技能或者说完成特定的任务,比如:1、学音标 2、学单词 3、学语法 4、写作文。。。
每层运行常见物理设备(了解)

什么是TCP/IP?
- Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础
TCP/IP的起源
20世纪50年代末,正处于冷战时期。当时美国军方为了自己的计算机网络在受到袭击时,即使部分网络被摧毁,其余部分仍能保持通信联系,便由美国国防部的高级研究计划局(ARPA)建设了一个军用网,叫做“阿帕网”(ARPAnet)。阿帕网于1969年正式启用,当时仅连接了4台计算机,供科学家们进行计算机联网实验用,这就是因特网的前身。
到70年代,ARPAnet已经有了好几十个计算机网络,但是每个网络只能在网络内部的计算机之间互联通信,不同计算机网络之间仍然不能互通。为此, ARPA又设立了新的研究项目,支持学术界和工业界进行有关的研究,研究的主要内容就是想用一种新的方法将不同的计算机局域网互联,形成“互联网”。研究人员称之为“internetwork”,简称“Internet”,这个名词就一直沿用到现在。
终于到1974年,TCP/IP诞生啦,TCP/IP有一个非常重要的特点,就是开放性,即TCP/IP的规范和Internet的技术都是公开的。目的就是使任何厂家生产的计算机都能相互通信,使Internet成为一个开放的系统,这正是后来Internet得到飞速发展的重要原因。
OSI七层模型
美国国防部在开发tcp/ip的同时,还有一些其它大厂商也开发出了自己的网络体系,实际上世界上第一个网络体系结构由IBM公司提出(也是74年,比TCP/IP略早,SNA),以后其他公司也相继提出自己的网络体系结构如:Digital公司的DNA,美国国防部的TCP/IP等,多种网络体系结构并存,其结果是若采用IBM的结构,只能选用IBM的产品,只能与同种结构的网络互联。
这就像中国人说中文,美国人说英语,日本人说日本话一样,同一国家的人沟通没问题,但不同国家之间的人没法通信。为了解决网络通信中这样不互通的问题,国际标准化组织ISO于1977年成立了一个委员会,在现有网络的基础上,提出了不基于具体机型、操作系统或公司的网络体系结构,称为开放系统互联模型。
- OSI/RM模型(Open System Interconnection / Reference Model)的设计目的是成为一个所有计算机厂商都能实现的开放网络模型,来克服使用众多私有网络模型所带来的困难和低效性。
python网络编程之C/S架构介绍的更多相关文章
- Python网络编程之TCP套接字简单用法示例
Python网络编程之TCP套接字简单用法示例 本文实例讲述了Python网络编程之TCP套接字简单用法.分享给大家供大家参考,具体如下: 上学期学的计算机网络,因为之前还未学习python,而jav ...
- Python网络编程之socket应用
1 引言 本篇主要对Python下网络编程中用到的socket模块进行初步总结.首先从网络基础理论出发,介绍了TCP协议和UDP协议:然后总结了socket中的常用函数:最后通过实际代码展示基本函数的 ...
- python 网络编程之socket开发和socketserver模块
一 客户端/服务器架构 1.硬件C/S架构(打印机) 2.软件C/S架构 互联网中处处是C/S架构 如黄色网站是服务端,你的浏览器是客户端(B/S架构也是C/S架构的一种) 腾讯作为服务端为你提供视频 ...
- python网络编程之socket
*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...
- Python网络编程之Socket的简单实现
一.引入 关于Python的网络编程,最基础莫过于socket了. socket,又称“套接字”,网络上的两个程序如果想要实现双向的数据通信,需要建立连接,这个连接的一端就称为一个socket. py ...
- Python网络编程之socket编程
什么是Socket? Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面 ...
- [Python] 网络编程之TCP编程
转自:TCP编程 - 廖雪峰的官方网站 Socket是网络编程的一个抽象概念.通常我们用一个Socket表示“打开了一个网络链接”,而打开一个Socket需要知道目标计算机的IP地址和端口号,再指定协 ...
- day25 网络编程之socket sc架构
1. 为什么要学习socket? socket就是网络通信的工具,任何一门语言都有socket,他不是任何一个语言的专有名词,而是大家通过自己的程序与其他电脑进行网络通信的时候都用它. 2. 客户 ...
- 网络编程之 TCP-UDP的详细介绍
一.TCP协议 1. TCP协议的特点 1.TCP是面向连接的运输层协议.这就意味着,在使用该协议之前,必须建立TCP连接.在传输数据完毕后,必须释放已经建立的TCP连接. 2.每一条TCP连接只能有 ...
随机推荐
- Mac技巧之苹果电脑Mac OS X系统自带的鼠标所在点颜色RGB值查看工具:数码测色计
转自http://www.mac52ipod.cn/post/show-mouse-point-rgb-color-by-apple-mac-os-x-tool.php
- greenplum
参考文章:在linux系统上安装Greenplum数据库 https://blog.csdn.net/mingli_a/article/details/78779189 Greenplum安装步骤 ...
- 09_组件三大属性(3)_refs和事件处理
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 跟我一起学Python-day1(条件语句以及初识变量)
通过练习题来学习条件语句 1,使用while循环输出1 2 3 4 5 6 8 9 10 n=1 while n<11: if n=7: pass else: print(n) n=n ...
- BlockingQueue之DelayQueue的学习使用
DelayQueue 是一中阻塞队列,需要实现接口Delayed定义的方法.做下使用记录和心得吧, @Datapublic class DelayQueueExample implements Del ...
- copyOnWriteArray 并发包下的不安全(数组)集合
copyOnWriteArray 记录一下 package java.util.concurrent;//你没有看错,是这个包 private transient volatile Object[] ...
- 使用SignalR实现页面即时刷新(服务端主动推送)
模块功能说明: 实现技术:sqlserver,MVC,WebAPI,ADO.NET,SignalR(服务器主动推送) 特殊车辆管理--->移动客户端采集数据存入数据库---->只要数据库数 ...
- wx小程序自定义组件与页面之间参数传递
在开发中,很多页面中会使用相同的组件,这时可以将具有相同信息的部分封装成一个组件,方便开发中调用.在调用中可能会涉及到数据的传递问题,例如页面与组件,组件与组件直接的数据传递. 首先看看页面与组件直接 ...
- Linux awk命令使用方法
awk是linux上非常好用的文本处理工具,常用于指定列的处理,包括获取指定列的内容.根据指定列匹配关系输出等文本处理.本文主要描述awk命令的基本语法.正则表达式与操作符的使用.常用内置变量的含义和 ...
- 利用官方的vue-cli脚手架来搭建Vue集成开发环境
在利用vue-cli脚手架搭建vue集成环境之前,我们需要先安装nodejs的环境.如果在cmd中输入node --version和npm --version出现如下的版本信息,就说明安装已经成功了. ...
