本文介绍: HTTP/0.9:功能简陋,只支持GET方法,只能发送HTML格式字符串。HTTP/1.0:支持多种数据格式,增加POST、HEAD等方法,增加头信息,每次只能发送一个请求(无持久连接)HTTP/1.1:默认持久连接请求管道化、增加缓存处理、增加Host字段支持断点传输分块传输等。HTTP/2.0:二进制分帧、多路复用头部压缩服务器推送

web应用

什么web通过web访问web应用程序,很方便,用户需要一个浏览器即可。是典型的浏览器/服务器端架构的产物

cs架构bs架构

应用程序有C/S B/S两种模式b/s 本质还是c/s

mysql属于c/s架构,只是我们服务端浏览器同一个电脑连接

b/s 浏览器服务器端应用程序

  1. 优点:很方便只需要浏览器即可占用很少的资源节省资源更新只需服务器更新即可
  2. 缺点:不能离线使用,缺少灵活性,安全隐私问题
网络协议

互联网通讯的七层协议

  1. 应用层:与其他计算机进行通讯的一个应用对应应用程序通讯服务
  2. 表示层定义数据格式加密,FTP允许你选择二进制或ASCII格式传输。如果选择二进制,那么发送方和接收方不改变文件内容
  3. 会话层:定义如何开始,控制结束一个会话,包括对多个双向消息的控制和管理可以在接受一部分消息就进行通知
  4. 传输层是否选择差错恢复协议还是无差错恢复协议,或在同一主机上对不同数据流输入进行复用,包括收到顺序不对的数据包重新排序
  5. 网络层:端到端的包传输进行定义,定义了能够标识所有的节点逻辑地址定义了路由实现方式学习方式
  6. 数据链路层:定义了在单个链路如何传输数据,这些协议与被讨论的各种介质有关
  7. OSI的物理层规范是有关传输介质的特这些规范通常也参考了其他组织制定的标准连接头、帧、帧的使用电流编码及光调制等都属于各种物理层规范中的内容
如何时别人访问我们Django
  1. 首先在settings文件中设置一下配置文件
ALLOWED_HOSTS = ['*']

host改为:0.0.0.0

当别人访问时:直接输入http://自己ip:8000/加上后面的 参数即可

基于socket编写web应用
import socket
import time


def run():
    server = socket.socket()
    server.bind(('127.0.0.1', 8000))
    server.listen(3)
    while True:
        sock, addr = server.accept()
        data = sock.recv(1024)
        print(data)
        now = time.strftime("%Y-%m-%d-%X", time.localtime())
        print(now)
        with open('index.html', 'r', encoding='utf-8') as f:
            data = f.read()
        data = data.replace('@', now)
        sock.send(('HTTP/1.1 200 okrnrn%s' % data).encode('utf-8'))

        sock.close()
    server.close()


if __name__ == '__main__':
    run()
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8"&gt;
    <title&gt;Title</title&gt;
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"&gt;</script>
    <link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.css" rel="stylesheet">
    <script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap3.3.7/js/bootstrap.js"></script>
  </head>
  <body>
    <div class="container">
      <div class="row">
        <p>
          当前时间<input type="text" value="@">
        </p>
      </div>
    </div>
  </body>
</html>

HTTP各个版本区别

HTTP发展至今一共有四个版本

0.9版本:只接受GET一种请求方式,不支持POST请求没有在通讯中指定版本号,不支持请求头,客户端无法向服务端传输太多的信息

1.0版本:这是第一个在通讯中指定版本的版本,不仅支持post请求还支HEAD请求信息中的 Content-Type 属性可以支持多种数据格式,这使得互联网不仅仅可以用来传输文字,还可以传输图像音频视频二进制文件

1,1版本:默认采用持续连接(Connection: keepalive能够很好的配合代理服务器工作,还支持管道式的发送方式,通知发送多个请求,降低线路负载提高传输速度

2.0版本:

HTTP 1.1 版的头信息肯定是文本(ASCII 编码),数据体可以是文本,也可以是二进制

HTTP 2.0 则是一个彻底的二进制协议,头信息数据体都是二进制,并且统称为“帧”(frame):头信息帧和数据帧。

总结

HTTP/0.9:功能简陋,只支持GET方法,只能发送HTML格式字符串

HTTP/1.0:支持多种数据格式,增加POST、HEAD等方法,增加头信息,每次只能发送一个请求(无持久连接

HTTP/1.1:默认持久连接、请求管道化、增加缓存处理、增加Host字段、支持断点传输分块传输等。

HTTP/2.0:二进制分帧、多路复用头部压缩服务器推送

常用的请求头和响应

请求头

1.Accept
2.Accept-Encoding

Accept-Encoding: gzip, deflate 浏览器申明自己接收编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方法(gzipdeflate),(注意:这不是只字符编码)。

3.Accept-Language

Accept-Language:zh-CN,zh;q=0.9 浏览器申明自己接收语言

4.Connection
5.Host(发送请求时,该报头域是必需的)

Host:www.baidu.com 请求报头域主要用于指定被请求资源的Internet主机端口号,它通常从HTTP URL中提取出来的。

6.Referer

Referer:https://www.baidu.com/?tn=62095104_8_oem_dg浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理

7.User-Agent

User-Agent:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36 告诉HTTP服务器, 客户使用操作系统浏览器的名称和版本。

8.Cookie

Cookie用来存储一些用户信息以便服务器辨别用户身份的(大多数需要登录网站上面会比较常见),比如cookie存储一些用户用户名密码,当用户登录后就会在客户端产生一个cookie存储相关信息,这样浏览通过读取cookie的信息去服务器上验证通过后会判定你是合法用户,从而允许查看相应网页。当然cookie里面数据不仅仅是上述范围,还有很多信息可以存储是cookie里面比如sessionid等。

9.Range(用于断点续传)

Range:bytes=0-5 指定第一个字节位置最后一个字节位置。用于告诉服务自己想取对象的哪部分

响应

2.Content-Type

Content-Type:text/html;charset=UTF-8 告诉客户端,资源文件类型,还有字符编码客户通过utf-8对资源进行解码然后资源进行html解析。通常我们看到有些网站是乱码的,往往就是服务器端没有返回正确编码

3.Content-Encoding

Content-Encoding:gzip 告诉客户端,服务端发送的资源采用gzip编码的,客户端看到这个信息后,应该采用gzip资源进行解码

4.Date

Date: Tue, 03 Apr 2018 03:52:28 GMT 这个服务端发送资源时的服务器时间,GMT是格林尼治所在地的标准时间。http协议中发送的时间都是GMT的,这主要是解决互联网上,不同时区在相互请求资源时候,时间混乱问题

5.Server

Server:Tengine/1.4.6 这个是服务器和相对应的版本,只是告诉客户端服务器信息。

常用响应状态

http中的响应状态码有五大类:

  1. 1xx消息状态
  2. 2xx:成功状态
  3. 3xx重定向状态
  4. 4.xx:客户端错误状态
  5. 5xx服务端错误状态

这五大类中包含了具体的信息

1xx
  • 100:Continue 继续。客户端应继续其请求。
  • 101:Switching Protocols 切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到 HTTP 的新版本协议。
2xx

3xx

4xx

5xx

原文地址:https://blog.csdn.net/weixin_49210718/article/details/134648369

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_39130.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注