? Web开发框架是用于Web开发的成套软件架构。Web服务本质上是由socket(一种通信机制,通过绑定IP地址和端口产生一个)通信链,实现计算机间的通信)服务端向socket客户端提供HTTP响应,而浏览器就是一个socket客户端,它向Web发出请求。Django本身就是一个Web开发框架,它连接socket两端进行数据交换,这种交换按照指定的协议进行,即HTTP协议。
? 网络中不同计算机间进行通信必须经过IP地址和端口。为了降低网络通信开发的复杂度,人们在TCP/IP 4层结构中的应用层与传输层之间加了一层socket层。它把复杂的TCP/IP进行了封装,并提供了一组服务的接口。
? 网络中服务器主机会提供一种或多种服务,每一种服务打开一个socket并绑定到一个端口上,也就是说不同的端口对应于不同的服务(如Web服务一般用到80端口),客户端向那个端口发送请求就会得到相应的响应。
? Web服务器本质上是一个socket服务端,浏览器本质上是一个socket客户端。以下用代码简单说明web开发框架的运行方式:
# 导入socket模块
import socket
# 建立socket服务
sk = socket.socket()
# 绑定IP与端口号,这是绑定本机端口
sk.bind((‘127.0.0.1‘, 8000))
# 进行监听
sk.listen()
print(‘socket服务开始运行......‘)
while True:
# 接收socket客户端连接
conn, addr = sk.accept()
# 接收socket客户端数据
data = conn.recv(1024)
print(data)
# 向客户端发送消息,字符串前加字母b表示以字节形式传递
conn.send(b"HTTP/1.1 200 OK\r\n\r\n")
# 向客户端发送消息,bytes()函数把字符串转换为字节形式
conn.send(bytes("我是socket服务端,我已收到你的请求。", encoding=‘utf-8‘))
以上代码主要实现如下过程:
在浏览器输入地址即可收到响应。
是浏览器(客户端)与Web服务器交流的语言,HTTP消息格式有请求和响应两种,请求和响应都包含Header和Body两部分,其中Body是可选的。
HTTP请求(Request)消息包含请求头(Header)和请求体(Body)。请求头每行以"\r\n"结尾,请求头第一行以空格分隔的字符串分别代表请求方法、路径、HTTP等信息。第二个字符串就是路径,是一个较为重要的字符串,由此可推知浏览器地址栏中的URL。请求体从第二行开始都是"头字段名:值\r\n"的形式。请求头和请求体之间以\r\n分隔,请求体可有可无。

HTTP响应(Response)消息包含响应头(Header)和响应正文(Body)。响应头每行以"\r\n"结尾,响应头第一行包含代表HTTP、状态码、状态描述等信息的3个字符串,这3个字符串以空格作为分隔符。响应头从第二行开始都是"头字段名:值\r\n"的形式。响应头和响应体之间以\r\n分隔,响应正文就是显示在浏览器的HTML格式的内容。

web开发框架的本质就是用HTTP实现socket服务端与浏览器的通信功能。主要有3步:
原文:https://www.cnblogs.com/zzdshidashuaige/p/14928274.html