Python网络编程
软件开发架构
什么是软件开发架构
程序员在编写软件的时候应该遵循的架构设计,类似于我们写ATM和选课系统所采用的三层架构。
软件开发架构的分类
-
C/S架构
C:client(客户端) 客户端相当于是需要体验服务的客人 S:server(服务端) 服务端相当于是对外提供服务的店面 我们手机上的APP就是各大厂家生产的客户端,我们打开APP使用里面的功能,就相当于基于网络去到厂家的店里让服务员提供服务。 -
B/S架构
B:browser(浏览器) S:server(服务器) 让浏览器充当各个厂家的客户端,用户无需对应下载相应客户端,直接在浏览器上使用功能体验服务。
两种架构的优缺点
C/S架构:
优势:针对客户端可以高度定制
劣势:需要用户去下载才能使用
B/S架构:
优势:无需下载 急速体验
劣势:无法做到高度定制,体验效果较差
目前的趋势其实更加偏向于B/S架构,像微信小程序,只需要下载一个微信就可以通过微信去访问很多服务端,统一提供接口服务,获取大量用户及数据,中途还可以提供广告服务等。

网络编程简介
什么是网络编程
网络编程的研究前提就是基于互联网,网络编程就是基于互联网编写代码。
该技术源于美国军方,军方想要实现不同计算机之间数据交互,除了带硬盘之类具有保存数据功能的硬件没有其他方法,为了跨区域交互数据所以发明了网络编程。
我们学习完网络编程之后有什么用呢?可以开发C/S架构的软件(掌握原理,使用框架)。
物理链接介质和互联网协议
早期远程通信的方法是座机电话,彼此之间打电话需要电话线,后来发展到了大屁股电脑,在电脑上实现远程通信也需要插入网线才能实现,现阶段可以利用智能手机实现远程通信,手机上数据交互则需要无限网卡。这说明远程通信的前提是必须具备一个物理链接介质。
那为什么不同厂家生成的手机零部件几乎是一样的呢?因为计算机或是手机要想实现无障碍交互 ,除了需要有物理链接介质之外还需要一套公有的标准---互联网协议(OSI七层协议),统一一些规定,就像历史秦始皇统一文字、货币、度量衡、车辙等,实现六国之间的交流沟通。

OSI七层协议
OSI七层协议简介
所有的计算机在生产过程中必须有相同的部分和相同的功能,主要分为七层,应用层,表示层,会话层,传输,网络层,数据链路层和物理链接层。也可以分为五层,1.应用层(三层),传输层,网络层,数据链路层和物理链接层。
OSI七层协议01
OSI七层的本质其实就是规定了数据要想基于网络发送出去,必须在计算机上经历一些固定的流程。
物理链接层
物理链接介质,传递电信号
数据链路层
基于物理链接层接收到一串二进制数。
1.规定了二进制数据的分组方式
2.规定了'以太网协议',但凡能够接入互联网的计算机都必须有一块网卡,每块网卡在出厂的时候都会被烧制一个全世界独一无二的编号(由12位16进制数组成)---mac地址。
PS:基于mac地址就可以实现计算机之间的数据通信了!!!
网络知识补充
互联网是讲计算机彼此链接到一起的介质,可以实现基于互联网的数据交互,上网的本质就是基于网线去访问其他计算机上的资源,我们的计算机可以称之为服务器或服务端(专门对外提供服务)。

专业设施名词
-
交换机
让接入交互机的多台计算机之间彼此互联
-
局域网
由交换机组成的网络称之为局域网(一个区域)

-
广播与单播
广播:在交换机中群发
单播:定向回复消息(记录mac地址) -
路由器
将局域网彼此链接起来并支持数据交互
互联网其实可以看成是由多个局域网链接在一起

OSI七层协议02
网络层:IP协议
规定了每台接入互联网的计算机都必须有一个IP地址(取决于网线)
IP地址目前有两个版本。
IPV4:点分十进制
最小:0.0.0.0
最大:255.255.255.255
随着社会的进步 计算机的使用越来越普遍 IPV4地址不够用
IPV6:十六进制
IPV6可以表示出地球上每一粒沙子
eg:fe80::4896:8940:85d6:70dc%18/64
IP地址可以唯一标识地球上独一无二的一台接入互联网的计算机。
IP地址分为公网IP和私网IP,公网IP是可以直接被浏览器访问到的 但是私网IP是不可以的,们所有人的电脑默认使用的都是私网IP,公网IP需要花钱购买并且需要实名认证并备案。
传输层:PORT协议(端口协议)
一台计算机上面可以运行很多数据交互软件,比如微信、qq、钉钉。它们都是从内存中获取数据,为什么不会错乱?因为端口协议的存在。
用于标识一台计算机上面正在运行的应用程序(端口号类似于手牌号),端口号的范围是:065535,01024:系统经常使用的端口号, 1024~8000:常用软件端口号。 我们以后在写项目的时候推荐使用8000之后的端口。
端口的特点:
1.同一时间同一台计算机上面端口号不能冲突。
2.端口号是动态分配的
由此我们可以知道,IP地址:用于标识全世界独一无二的一台接入互联网的计算机。PORT号:用于标识一台计算机上面的某一个应用程序。IP+PORT:能够标识全世界独一无二的一台计算机上面的某一个应用程序。

应用层
这里完全可以取决于程序员自己,可以是HTTP协议,HTTPS协议,FTP协议或者自定义协议。
TCP与UDP协议
TCP和UDP都属于传输层。
TCP协议
TCP(Transmission Control Protocol,传输控制协议)是面向连接的、可靠的字节流服务。流就是指不间断的数据结构,你可以把它想象成排水管中的水流。也就是说,在收发数据前,必须和对方建立可靠的连接。TCP协议类似于打电话:你一句我一句。
基于TCP协议进行数据交互之前需要做一系列复杂的操作:三次握手四次挥手。三次握手就是TCP的链接过程,四次挥手就是TCP的断开过程。
洪水攻击:服务端接收到了大量的syn请求,处于rcvd状态,控制很多台计算机同一时刻去访问服务端,造成服务端瞬间过载瘫痪。
UDP协议
UDP(User Datagram Protocol,用户数据报协议)是不可靠的、不需要建立双下通道,数据传输效率高,但是可能会丢失。UDP协议类似于发短信:发了之后不管你看不看,只要发了就行。
UDP作为一种最简单的传输层协议,基本上没有做什么的操作来帮助用户处理复杂的网络环境,所以UDP保留下来这种不可靠的特性。qq使用的就是UDP协议,所以有时候会产生数据丢失现象。但是我们可以在UDP协议的基础之上做很多额外的扩展来保证数据的安全。

面试题
问题: TCP协议之所以比UDP协议可靠 就是因为有双向通道 对不对?
不对,描述的不够准确,TCP协议之所以比UDP协议可靠,是因为TCP协议发送消息有反馈机制。基于TCP发送的消息会在本地先保存该消息,确认对方收到然后接收反馈信息才会删除,否则在一定的时间内会频繁的多次发送直到对方确认或者超时为止。UDP协议发送数据之后会立刻删除内存数据,不会保留。

浙公网安备 33010602011771号