web原理

web复习

五层

应用层

传输层

网络层

数据链路层

物理层

socket 套接字 位于应用层和网络传输层之间的虚拟层 一组接口

c/s-->b/s

工作原理

在浏览器地址栏键入URL,按下回车之后会经历以下流程:

  1. 浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;
  2. 解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接;
  3. 浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器;
  4. 服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器;
  5. 释放 TCP连接;
  6. 浏览器将该 html 文本并显示内容;

请求和响应的格式。

请求

浏览器给服务器发送的消息(request)

请求方法

路径 HTTP/1.1

k1: v1

k2: v2

请求体

响应服务器给浏览器发送的消息(response)

‘HTTP/1.1 状态码 状态码描述

k1: v1

k2: v2

请求方法 8种 GET POST PUT DELETE TARCE OPTIONS HEAD CONNECT

GET 获取页面

POST 提交数据

HTTP状态码

所有HTTP响应的第一行都是状态行,依次是当前HTTP版本号,3位数字组成的状态代码,以及描述状态的短语,彼此由空格分隔。

状态代码的第一个数字代表当前响应的类型:

  • 1xx消息——请求已被服务器接收,继续处理
  • 2xx成功——请求已成功被服务器接收、理解、并接受
  • 3xx重定向——需要后续操作才能完成这一请求
  • 4xx请求错误——请求含有词法错误或者无法被执行
  • 5xx服务器错误——服务器在处理某个正确请求时发生错误

虽然 RFC 2616 中已经推荐了描述状态的短语,例如"200 OK","404 Not Found",但是WEB开发者仍然能够自行决定采用何种短语,用以显示本地化的状态描述或者自定义信息。

https://www.cnblogs.com/maple-shaw/articles/9060408.html

响应头和体

import socket

sk = socket.socket()

sk.bind(('127.0.0.1', 8000))

sk.listen()

while True:
    conn, addr = sk.accept()
    data = conn.recv(1024)

    conn.send(b'HTTP/1.1 200 ok\r\ncontent-type: text/html; charset=utf-8\r\n\r\n')
    #响应头
    conn.send(b'<h1>ok</h1>')	 #响应体
    conn.close()

URL

http https

域名 ——》 ip

端口 http 80 https 443

路径

查询参数 ?k1=v1&k2=v2

web框架

本质:socket服务端

功能

1. socket收发消息 (wsgiref  、uwsgi)
2. 根据不同的路径返回不同的内容
3. 返回动态页面(字符串的替换 ——》 模板渲染    jinja2)

原理

1.百度 socket 服务端

2.socket服务端启动

3.绑定ip和端口

4.监听等待连接

8.接受数据

9.返回数据

12断开连接

浏览器socket客户端

5.socket服务端启动

6.连接(ip和端口)

7.发送数据

10.接受数据

11.断开连接

web框架本质--> socket服务端

超文本

双工通信

分类

diango:2 3

flask:2

tornado:1 2 3

其他的分类:

Django

其他: flask tornado

posted @ 2019-12-12 17:56  谢国宏  阅读(196)  评论(0编辑  收藏  举报