• 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

  • 相关阅读:
    SQLServer 查询死锁
    SQLServer 查询当前的进程
    Python请求出现requests.exceptions.ConnectionError: HTTPSConnectionPool错误的解决方案。
    《C和指针》学习笔记[第一章 快速上手]
    sshkeygen
    ASM win64 abc
    Ways to Build
    call stack
    CALL and Linker
    CentOS 修改文件夹权限、所属用户和用户组
  • 原文地址:https://www.cnblogs.com/-xct/p/12030737.html
Copyright © 2020-2023  润新知