• 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
    content-type: text/html; charset=utf-8
    
    ')
        #响应头
        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

  • 相关阅读:
    Leetcode 811. Subdomain Visit Count
    Leetcode 70. Climbing Stairs
    Leetcode 509. Fibonacci Number
    Leetcode 771. Jewels and Stones
    Leetcode 217. Contains Duplicate
    MYSQL安装第三步报错
    .net 开发WEB程序
    JDK版本问题
    打开ECLIPSE 报failed to load the jni shared library
    ANSI_NULLS SQL语句
  • 原文地址:https://www.cnblogs.com/-xct/p/12030737.html
Copyright © 2020-2023  润新知