1、套接字服务端及HTTP协议
1、套接字服务端
1、浏览器朝服务端发送请求
2、服务端接收请求
3、服务端返回相应的响应
4、浏览器接收响应 根据特定的规则渲染页面展示给用户看
如何做到浏览器能够跟多个不同客户端之间进行数据交互
1、浏览器很牛逼 能够自动识别不同服务端做不同处理
2、制定一个统一标准 HTTP协议----超文本传输协议
规定服务器和浏览器之间的数据交互格式
import socket
server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
server.bind(('127.0.0.1',8080))
server.listen(5)
while True:
conn,addr = server.accept()
data = conn.recv(1024)
print(data) # 二进制数据 bytes类型
# 构造出符合HTTP协议格式的数据 无需掌握
conn.send(b'HTTP/1.1 200 OK\r\n\r\n')
# conn.send('好好学习、天天向上'.encode('gbk'))
with open('第一个HTML文件.html','rb') as f:
conn.send(f.read())
conn.close()
2、HTTP超文本传输协议
HTTP 超文本传输协议---
四大特性;******
1、基于请求响应
2、基于TCP/IP 作用于应用层之上的协议
3、无状态
不保存用户登录等信息
eg:python虐我千百遍 我待python如初见
由于 HTTP 协议是无状态的所以出现了一些专门用来记录状态的
cookie、session、token....
4、无/短链接
请求来一次我响应一次 之后旧没有任何链接关系了
补丁: 长链接----双方建立连接之后默认不断开-websocket
请求数据格式
请求首行(标识HTTP协议版本,当前请求方式)
请求头(一大堆K,V键值对)
\r\n # 这里的\r\n不能省略
请求体(并不是所有的请求方式都有 get没有 post有 存放的是post请求提交的敏感数据)
响应数据格式
响应首行(标识HTTP协议版本,响应状态码)
响应头(一大堆K,V键值对)
响应体(返回浏览器展示给用户看的数据)
响应状态码
用一串简单的数字来表示一些复杂的状态或者描述性信息 404:请求资源不存在
1XX:服务端已经成功的接收到了你的数据,你可以继续提交额外的数据
2XX:服务端成功的响应了你想要的数据(200 OK请求成功)
3XX:重定相(访问例如需要登录才能看到的页面,会自动跳转到登录页面)
4XX:请求错误
404:请求资源不存在
403:当前请求不合法或者不符合访问资源条件
5XX:服务器内部错误(500 机房爆炸等)
请求方式 requset
1、get请求
朝服务端要数据
eg:输入网址获取对应的内容
2、post请求
朝服务端提交数据
eg:用户登录 输入用户名和密码之后 提交到服务端做身份校验