IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> django学习1:web框架的内部原理——http请求的生命周期 -> 正文阅读

[网络协议]django学习1:web框架的内部原理——http请求的生命周期

内容摘要

1. 自己开发web框架

(1)tcpip、socket、http

	 tcpip是协议,是约定好的规范,位于网络5层模型的传输层。tcpip表示的是一系列协议。
    规定好的协议总要操作系统实现了才能使用,而socket就是操作系统实现的,tcpip协议族的接口,用于创建一个套接字,可以理解为,通过网络读写的文件描述符,socket、bind、listen、accept、connect一系列都是操作系统提供的接口用于实现tcp协议相关的功能。
  tcp协议可以让两个进程通过三次握手建立稳定的通信信道,发送字节流,而http协议建立在tcp协议之上,也就是说tcp协议可以让两个程序说话,而http协议定义了说话的规则。
  
总结:http连接=以http协议为通信协议的tcp连接http短连接=以http协议为通信协议的,请求一次就断开的tcp连接http长连接=以http协议为通信协议的,请求多次才断开的tcp连接(这个是为了通过减少建立tcp连接的次数达到节省两端资源的目的)

(2) socket通讯实践

服务端:
1、创建socket对象
2、bing 绑定ip及端口
3、对该端口进行监听
4、消息阻塞(等待客户端消息)

客户端:
1、创建socket对象
2、连接服务ip及端口
3、发送消息到服务器ip

python 的socket通信,要使用socket内置包:
服务端代码:

#*_*coding:utf-8*_*

import socket

addr_ip = ('127.0.0.1',8005)
sk = socket.socket()
sk.bind(addr_ip)
sk.listen(5)
print('Service waiting.....')
conn,addr = sk.accept()
while True:

    client_msg =conn.recv(1024)
    print(str(client_msg))
    send_msg = raw_input('发送消息:')
    if send_msg !='exit':
        conn.sendall('服务小强:'+send_msg)
    else:
        break


conn.close()

客户端代码:

#*_*coding:utf-8*_*
import socket

addr_ip = ('127.0.0.1',8005)
sk = socket.socket()
sk.connect(addr_ip)

while True:

    send_msg = raw_input('发送消息:')
    if send_msg!='exit':
        sk.sendall('客户小强:'+send_msg)
        server_rev = sk.recv(1024)
        print(str(server_rev))
    else:
        break
sk.close()

或者客户端使用浏览器代替。只需要编写服务端代码。

(2) HTML知识

如果用http请求的话,可以看到socket给回复的http请求是有固定格式的,叫http格式,分为head和body。
请求有请求头和请求体,如下所示:

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Connection: keep-alive
Cookie: BAIDUID=DDD39E6ED8BF5EC7AA901AEE453F3DCA:FG=1; PSTM=1626776433; BIDUPSID=B1CCC86FDCF9A94035AE6286A7AF3496; COOKIE_SESSION=113_0_1_2_13_1_0_0_1_1_0_0_92_0_10_0_1626777030_0_1626777020%7C2%230_0_1626777020%7C1; __yjs_duid=1_055e63905e8f03baae63733c7fb9b7a61626777591872; BAIDUID_BFESS=8AC53B89312FB662003EC68D19BE9505:FG=1
Host: www.baidu.com
sec-ch-ua: " Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"
sec-ch-ua-mobile: ?0
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.164 Safari/537.36

响应也有响应头和响应体:
其中响应头如下:
响应体则为html显示的内容,本质为字符串。是浏览器认识字符串的格式,所以翻译成了浏览器显示的样子。
响应头和响应体之间用\r\n\r\n分割

accept-ranges: bytes
access-control-allow-origin: *
age: 162355
content-length: 7456
content-type: image/webp
date: Fri, 10 Sep 2021 03:08:48 GMT
etag: 9aa9cc8baa06417d516126122dae4b19
expires: Wed, 06 Oct 2021 11:48:31 GMT
last-modified: Thu, 01 Jan 1970 00:00:00 GMT
ohc-cache-hit: tj3un64 [4], czix227 [4]
ohc-file-size: 7456
server: JSP3/2.0.14
timing-allow-origin: *

(3)数据库(pymysql、SQLAlchemy)

2. Django框架

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-09-11 19:10:26  更:2021-09-11 19:11:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年6日历 -2024/6/27 1:43:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码