一、网络编程
软件开发架构
C/S架构
C:客户端 想体验服务的时候才会去找服务端体验服务
S:服务端 24小时不间断的提供服务,即时监听,随时待命
B/S架构
B:浏览器 想体验服务的时候才会去找服务端体验服务
S:服务端 24小时不间断的提供服务,即时监听,随时待命
实际上B/S架构也是C/S架构的一种
两种事物要想相互通信最基本的方式是通过一个规定好的协议去执行,然后就能得到有效沟通(通信),比如不同国家的人要想互相通话就得有个全球的语言标准——英语,全世界基本语言就是英语,我们知道都懂英语,就能和全世界任何懂英语的人进行沟通交流了。
同样的,计算机要想与计算机沟通交流也得需要这么一个规范,也就是前提条件,所有计算机都执行这个前提条件后,就能互相愉快的传输信息了
这个规范就是:OSI七层协议(Open System Interconnection)
在python里面我们需要了解五层就可以了:
应用层
传输层
网络层
数据链路层
物理层
接下来从下至上分别说说各层的作用:
1、物理层:
实现计算机之间的物理连接,传输数据通过0101的二进制,0或1分别代表高电频和低电频
电信号工作原理:高低电频
2、数据链路层:
如果只是01010101010这种二进制高低电频的电信号之间传输是远远不够的,因为我们根本不知道他们的含义,或者说获取数据该怎么取正确读取,所以在物理层上面就规定了一个数据链路层,也就是我们听过的‘以太网协议’
协议规定:
1—二进制数据的分组方式
-
- 一组电信号构成一个数据包,叫做‘帧’
- 每一数据帧分成:报头head和数据data两部分
head | data |
2—只要是接入互联网的计算机,都必须有一块网卡!
网卡上面在出厂的时候就刻有世界唯一的编号,这个编号就叫 Mac地址
长度为48位2进制,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线号)
类似这种:C8-5B-76-D6-EE-F1
特别强调:其实有了物理层和数据链路层的话,就可以实现基本的网络通信了,即基于以太网协议通信,这种通信基本靠吼!!!
实现过程类似这样:比如电脑A要找电脑B通信,电脑就会把这个‘我要找mac地址为***的电脑,信息广播出给所有的电脑,所有已经连接的电脑就会听到,只有mac地址匹配的电脑B才会得到相应与电脑A通信。
弊端:广播风暴
这里还有一个事情需要去做,一台电脑和另外一台电脑通信可以连一根网线,那一台电脑和多态电脑通信呢,岂不是多台电脑都需要来一个网线插到那一台电脑上,这样的做肯定是不符合现实的。所以就有了交换机
交换机:如果没有交换机,你的电脑就变成了马蜂窝,有了交换机之后,所有的电脑只需要有一个网卡连接交换机
即可实现多台电脑之间物理连接
3、网络层:(IP协议)
通过交换机只能实现局域网中的电脑之间的通信,要想一个计算机与局域网以外的任何一个局域网里的电脑实现数据传输的话,就需要引入网络层了,也就是ip协议
IP协议规定:计算机必须有一个ip地址
ip地址的特点:点分十进制
有两个版本:ipv4和ipv6
最小0.0.0.0
最大255.255.255.255
ip协议可以跨局域网传输
ip地址能够唯一标识互联网中独一无二的一台机器
这里有个arp协议:根据ip地址解析mac地址
4、传输层(端口协议)
tcp,UDP基于端口的工作协议
计算机之间的通信本质上来说是计算机上面的应用程序之间的通信,我们知道了ip是电脑标识的唯一,那么电脑上我们实际上使用的是操作系统(本质上也是软件),应用程序来实现网络通信(数据传输)的话同时进行是否会打架呢?
这里就引出端口,端口就是唯一标识一台计算机上某个基于网络通信的通道
注意:一台计算机上同一时间一个端口号只能被一个应用程序占用
小结:
ip地址:唯一标识全世界接入互联网的独一无二的机器
port端口号:某一时间段,唯一标识一台计算机上的某一个应用程序
ip+port:能够唯一标识全世界上独一无二的一台计算机上的某个应用程序
TCP协议:(流式协议,可靠协议)
三次握手四次挥手
三次握手:建立连接
四次挥手:断开连接
TCP协议是一种安全的协议:变现在:建立连接后才可以传输数据,数据传输完成后才能断开连接。