当前位置: 首页 > news >正文

http协议、全站https

一、http协议

 1、为何要学http协议?
    用户用浏览器访问网页,默认走的都是http协议,所以要深入研究web层,必须掌握http协议
        
2、什么是http协议
    1、全称Hyper Text Transfer Protocol(超文本传输协议)

             ###   一个请求得到一个响应包
        
        普通文本:文件内存放的是一些人类认识的文字符号(汉字、英语、阿拉伯数字)
        超级文本:除了普通文本内容之外,还有视频、图片、语音、超链接
            超文本包含:html文件、css、js、图片、视频、语音

            http协议都能传输上述内容,所以说http协议是专用于传输超文本的协议
            
    2、http主要用于B/S架构
    
    3、http是基tcp协议
        强调:基于http协议发包之前,必须先建立tcp协议的双向通路

            


http协议的发展史

 
    网景浏览器(万能客户端)------》各种各样的服务端
        
    http0.9
        请求方法:只支持GET方法
        请求头:不支持    
        响应信息:只支持纯文本,不支持图片   

    
        无连接/短连接/非持久连接:利用完tcp连接之后会立即回收,所以无连接指的不是说没有连接,而是说没有持久连接/长连接
               http协议通信,先建立tcp连接,然后客户端发请求包,服务端收到后发送响应包,服务端一旦发送完响应包之后,服务端会立即主动断开tcp连接,下次http通信还需要重新建立tcp连接
            
        无状态:(一个http协议的请求无法标识自己的身份)
                        http无法保存状态,比如登录状态----登录之后再次发送的请求无法识别身份
                                    
        总结:(0.9的时代,下面两个问题都不是问题)
            无连接/短连接/非持久连接---->引发的问题
                同一个用户在短期内访问多次服务端,那大量的时候都会消耗在重复创建tcp连接上       
               在高并发场景下,对服务端是非常大的消耗,客户端的访问速度也会非常的慢
                
            无状态:一个http协议的请求无法标识自己的身份---》引发的问题
                如果是登录状态的话,http协议无法保存,那意味着每次请求都需要重新输出一次账号                    密码来认证
     
    http1.0
        请求方法:支持GET(查)、POST(改)、DELETE(删)、PUT(增)
        请求头:支持                
        响应信息:支持超文本        
        支持缓存
                        
        无连接/短连接/非持久连接
            问题:
                同一个用户在短期内访问多次服务端,那大量的时候都会消耗在重复创建tcp连接上
                在高并发场景下,对服务端是非常大的消耗,客户端的访问速度也会非常的慢
            目标:
                同一个用户在短期内访问多次服务端,不要重复建立tcp连接,而是能够共用一个tcp链接
            
            解决方案:支持持久连接/长连接 keep-alive
                前提:
                    发送完http响应包之后,服务端立即断tcp连接,这是服务端的默认行为
                    要改变这种默认行为,要客户端通知服务端才行           
                实现:
                    客户端在发送http的请求时,需要再请求头里带上connection: keep-alive这个参数
                    服务端的keepalive_timeout设置要大于0                    
                    服务端收到后读取该参数,服务端会保持与这一个客户端tcp连接一段时间,响应时也会响应头里放connection: keep-alive这个参数                                        
                    该tcp会保持一段时间 直到达到服务端设置的keepalive_timeout时间
            
            补充:
                在http1.0协议例还需要你发请求时你自己加上connection: keep-alive这个参数
                在http1.1协议里所有的请求都会自动加上connection: keep-alive,也就是说在http1.1客户端默认就开启了长连接支持
                配套的服务端也要开启(服务端的keepalive_timeout设置要大于0,等于0相当于关掉)

                                                     ----如果用的是nginx  修改/etc/nginx/nginx.conf 

 http1.1(主要)
        1、默认所有请求都启用长连接,对应服务端需要设置keepalive_timeout大于0
        
        2、Pipelining(请求流水线化/管道化)-----可以连续发送多个请求,但响应也必须按照顺序来
                
        3、分块传输编码chunked----不使用分块传输:先告知规定大小,当数据包大小到达指定值后就能知道到这里一个包的内容就结束了

                                                      使用分块传输:允许服务器在不知道全部响应大小的情况,(比如由数据库动态产生的数据)通过多个小"块"的形式逐步发送HTTP响应给客户端的技术。除非使用了分块编码Transfer-Encoding: chunked,否则响应头首部必须使用Content-Length首部
    
    http2.0(未来)

http协议的格式

 
储备知识:什么是URI、URL
    URI:统一资源标识符         

             # Web上可用的每种资源如HTML文档、图像、视频片段、程序等都是一个来URI来定位的
    
    URL:统一资源定位服务,是uri的一种具体实现
        http://192.168.71.10:8080/a/b/1.txt?x=1&y=2&page=10#_label5
                
        所有部分:
            http://                         协议部分
                不写协议,默认http协议
            192.168.71.10:8080  ip+port部分
                不写端口默认服务端的端口是80            
            /a/b/1.txt                    路径部分
                不写路径,默认加一个/结尾            
            ?x=1&y=2&page=10 请求参数部分      通常用于get请求                            
            #_label5                    锚  直接跳转到页面的某个部分
                                
        一个url地址的路径部分也称之为uri路径
                            
    URN:也是uri的一种具体实现          例如:mailto:java-net@java.sun.com。

请求request
    包含四部分:
        请求首行
            GET /a.txt HTTP/1.1
            请求方法   请求的路径部分及后续部分  使用http协议版本     


http://www.mrgr.cn/news/100026.html

相关文章:

  • 2025第十六届蓝桥杯python B组满分题解(详细)
  • 每天学一个 Linux 命令(30):cut
  • 【华为】防火墙双击热备-之-主备模式-单外网线路-分享
  • 第9章 多模态大语言模型
  • 阿里云99机器总是宕机,实测还是磁盘性能差
  • 常用第三方库:cached_network_image图片加载优化
  • 自动化标注软件解析
  • 【农气项目】基于适宜度的产量预报
  • Linux 服务器运维常用命令大全
  • CMCC RAX3000M CH EC 算力版刷机(中国移动 RAX3000M 算力版)刷机备份数据
  • 【Go】重难点知识汇总
  • 涂料油墨制造数字化转型的关键技术与挑战
  • QEMU源码全解析 —— 块设备虚拟化(21)
  • Maxscript调用Newtonsoft.Json解析Json
  • ibus输入法微软词库分享
  • 静电放电测试中垂直和水平耦合板的作用
  • Linux 系统监控大师:Glances 工具详解助力自动化
  • Unitest和pytest使用方法
  • 离散化区间和 java c++
  • HTTP状态码有哪些常见的类型?