文章目录
前言
在用python编写网站或其他网络程序之前,需要学习基本的网络概念,以便更好地理解Python主流网络框架地原理以及运用。
网络基础
TCP/IP网络
目前较为主流地网络体系结构是ISO/OSI参考模型和TCP/IP协议簇。TCP/IP翻译为传输控制协议/互联网络协议(其中TCP是Transmission Control Protocol,传输控制协议;IP是Internet Protocol Address,互联网协议地址)。TCP/IP是Internet的基础协议,TCP/IP将网络分为应用层、传输层、网络层、链路层【还有一种五层的分法】
对TCP/IP从上到下说明
- 应用层:为用户的进程直接提供服务,应用层负责发送、接收、解释、呈现、加密数据,网络应用程序开发者重点打交道对象。
- 传输层:为两个主机的不同端口之间的通信提供服务。传输层的发送方与接收方无须相邻。
- 网络层:为两个主机之间提供通信服务,网络层定义数据如何被封装为传送包,并且,并且定义了不同主机之间的寻址方式。主要由IP组成
- 接口层:处理物理细节,开发者无须关心。
应用层协议:应用层的协议,其直接与最终用户交互,定义了运行在不同终端系统上的应用程序进程如何相互传递报文。下面是几种常见的应用层协议
1、远程登录协议(Telnet)
2、文件传输协议(FTP)
3、超文本传输协议(HTTP)
4、域名服务协议(DNS)
5、简单邮件传输协议(SMTP)
6、邮局协议(POP3)
其中,从网络上下载文件时使用的是FTP协议,上网游览网页时使用的是HTTP协议;在网络上访问一台主机时,通常不直接输入IP地址,而是输入域名,用的是DNS服务协议,它会将域名解析为IP地址;通过FoxMail发送电子邮件时,使用SMTP协议,接收电子邮件时就使用POP3协议。
传输层协议:TCP/IP的传输层包括两种协议传输控制协议TCP、用户数据报协议UDP。
TCP协议:面向连接的可靠传输协议。利用TCP进行通信时,首先要通过三步握手,以建立通信双方的连接。TCP提供了数据的确认和数据重传的机制,保证发送的数据一定能到达通信的对方。
第一次握手:客户端尝试连接服务器,向服务器发送 syn 包【(同步序列编号Synchronize Sequence Numbers),syn=j,】客户端进入 SYN_SEND 状态等待服务器确认。
第二次握手:服务器接收客户端syn包并确认(ack=j+1),同时向客户端发送一个 SYN包(syn=k),即 SYN+ACK 包,此时服务器进入 SYN_RECV 状态。
第三次握手:第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
UDP协议
UDP协议是无连接的,不可靠的传输协议。采用UDP进行通信时不用建立连接,可以直接向一个IP地址发送数据,但是不能保证对方是否能收到。UDP的信息包的标题很短只有8个字节开销小因此UDP能提供更快速、轻量级的传输层控制。
C/S架构和B/S架构
C/S
C/S架构是第一种比较早的软件架构,主要用于局域网内。也叫 客户机/服务器模式。
它可以分为客户机和服务器两层:
第一层: 在客户机系统上结合了界面显示与业务逻辑;
第二层: 通过网络结合了数据库服务器。
简单的说就是第一层是用户表示层,第二层是数据库层。
如python网络框架中Twisted就是主要面向C/S架构
1、C/S架构的优点:
1 C/S架构的界面和操作可以很丰富。(客户端操作界面可以随意排列,满足客户的需要)
2 安全性能可以很容易保证。(因为只有两层的传输,而不是中间有很多层。
3 由于只有一层交互,因此响应速度较快。(直接相连,中间没有什么阻隔或岔路,比如QQ,每天那么多人在线,也不觉得慢)
2、C/S架构的缺点:
1 适用面窄,通常用于局域网中。
2 用户群固定。由于程序需要安装才可使用,因此不适合面向一些不可知的用户。
3 维护成本高,发生一次升级,则所有客户端的程序都需要改变。
B/S
B/S架构的全称为Browser/Server,即浏览器/服务器结构。Browser指的是Web浏览器,
B/S是Web兴起后的一种网络结构模式。B/S使用Web浏览器作为客户端的应用软件,所以B/S可以看作C/S的一种特殊情况。python网络框架中Django、Flask就是主要面向B/S架构。主要特点
1, 跨平台、对客户端要求低:因为极少数事务逻辑在前端实现,但主要事务逻辑在服务器端实现,B/S架构的系统无须特别安装,只有Web浏览器即可。
2, 对安全性要求较高
3, 便于部署、维护、与升级
总而言之:B/C就是网站,C/S就是电脑上常用的客户端。
IP
IP运行于网络体系结构的网络层,是网络互联的重要基础,IP地址主要用来标识网络上的主机,在公开网络上或同一个局域网内部,每一台主机都必须使用不同的IP。IP地址与端口号共同来标识网络上特定主机上的特定应用进程,俗称Socket。特殊的IP地址:127.0.0.1(本地回环地址、保留地址,点分十进制)。
Socket编程
Socket通常被称作套接字,是Windows、Mac等操作系统所共同遵守的网络编程标准,可以用来实现不同计算机之间的通信,当然也可以实现相同主机内的不同进程间通信。
TCP原语
Socket的方法socket.socket(family, type)建立Socket对象