博客园

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:用户登录 输入用户名和密码之后 提交到服务端做身份校验

url: 统一资源定位符(网址)

posted @ 2021-03-04 17:57  小刘学python  阅读(174)  评论(0编辑  收藏  举报