• Web基础与Http协议


    一、HTML及相关知识概述

    HTML超文本标记语言,也是我们最常见的网页格式,既是一种规范,也是一种标准,通过标记符号来标记要显示的网页中的各个部分。网页文件本身是一种文本文件,通过在文本文件中添加标记符,可以告诉浏览器如何显示其中的内容。

    网页:纯文本格式的文件,语言HTML,浏览器来翻译html语言形成网页

    网站:是由多个网页组成,是网页的结合体,我们打开网站之后出现的第一个页面就是我们所说的网站首页或者主页

    域名:域名需要注册,访问网站时输入的网址就是我们所说的域名

    传输方式:http或者https

                      http:超文本传输协议

                      https:加密的超文本传输协议,靠ssl整数进行认证,网页的传输通信协议

    URL:万维网的寻址系统(唯一标识)

    URI:是用来唯一标识和定位资源的一种字符串格式

    超链接:通过超链接把网站当中的不同内容连接起来

    web:world wide web,全球广域网,也就是万维网,是一种分布式的图形信息系统

               web1.0:查看网页

               web2.0:用户可以与网页进行交互

    二、静态页面和动态页面

    静态页面:

    只是文本文件,可以修改,一般以.html或者.htm保存的文本文件,是网站的基础。静态页面和后台数据库没有任何交互,不包含请求程序,更新比较复杂,一般适用于更新比较少的展示型的网站,一般都是网站的主页,静态页面的URL是固定的。

    动态页面:

    • 1、URL不是固定的,能通过后台和用户交互
    • 2、动态页面的URL当中一般有个"?"
    • 3、动态页面的语言一般有:PHP、JSP、Python等
    • 4、动态页面可以自动更新
    • 5、访问的时间,访问的内容会发生变化

    三、HTTP协议介绍

    3.1 http协议

    • http是超文本传输协议,基于tcp协议的应用层传输协议,简单来说就是客户端和服务端之间进行数据传输(请求和响应网页)的一种规则。
    • http协议的建立连接是“三次握手”,断开连接是“四次挥手”,建立连接之后,客户端与服务端之间请求和接收,响应都是通过socket接口来调用tcp协议实现。是端口到端口的通信。
    • http协议是一种无状态的协议,协议本身不会对发送的请求和响应进行任何处理,能够处理大量的事务,提高效率。

    http各版本介绍:

    • http0.9:已淘汰
    • http1.0:基本淘汰,没有会话保持的功能
    • http1.1:加入了长连接,是目前最常用的,即https,也包括http(提供了加密和安全传输的端口,端口:443)
    • http2.0:新一代的加密协议,传输速度比http1.1的速度更快

    缓存:cookie记录用户状态,跟踪统计用户访问该网站的习惯,识别用户身份,保存客户信息。可以驻留在我们的计算机上,是一个很小的文件,保存特定的客户端和网络之间的信息数据

    失效性:30天后保存的信息就会失效

    客户端的ip地址验证:安全验证

    3.2 HTTP的工作流程

    客户端和服务端通信过程:请求/响应的模型

    1、建立连接:tcp/ip协议与服务器建立连接(三次握手),客户端向服务器的80端口发送连接请求

    2、发送请求:一旦连接建立之后,客户端向服务端发送http请求

         http请求:由一个请求行和多个头部字段组成

         请求方式:get、post

    3、服务端处理请求:根据请求的内容进行处理。服务端会读取请求头的字段,解析参数,处理数据等等

    4、服务端返回响应:形成一个http响应,响应由一个响应行,包含多个字段。相应内容包含重要的内容状态码,用于表示服务端对于请求的处理结果

    3.3 HTTP的请求过程

    用户在浏览器输入URL访问时,发起HTTP请求报文,请求中包括请求行、请求头、请求体,服务器收到请求后返回响应报文,包括状态行、响应头、响应体。

    1、请求报文
    请求行:请求行由请求方法、URL 以及协议版本三部分组成。
    请求头:请求头为请求报文添加了一些附加信息,由“名/值”对组成,每行一对,名和值之间使用冒号分隔。
    空行:请求头部的最后会有一个空行,表示请求头部结束,接下来为请求体,这一行非常重要,必不可少。
    请求体:请求体是请求提交的参数,GET 方法已经在 URL 中指明了参数,所以提交时没有数据。POST 方法提交的参数在请求体中。

    常用请求头:
    Host:                    表示请求的ip和端口号,也可以请求的主机名
    User-Agent:         客户端请求使用的浏览器信息
    Connection:         连接的处理方式,一般都是会话保持
    (Accept:客户端可以接收的数据类型)
    Accept-Encoding: 客户端可以接收的编码格式,以及数据是否需要压缩
    Accept-Language:客户端可以接受的语言类型
    Cache-Control:     数据在本地缓存的时间

    2、响应报文
    状态行:状态行由协议版本,状态码,状态码描述三部分组成。
    响应头:响应头与请求头部类似,为响应报文添加了一些附加信息。
    空行:响应头部的最后会有一个空行,表示响应头部结束。
    响应体:服务器返回的相应 HTML 数据,浏览器对其解析后显示页面。

    常见响应头:
    Server:                      服务器应用程序软件的名称和版本
    Content-Type:           响应正文的类型(是图片还是二进制字符串)
    Content-Length:        响应正文长度
    Content-Charset:      响应正文使用的编码
    Content-Encoding:    响应正文使用的数据压缩格式
    Content-Language:   响应正文使用的语言
     

    3.4 GET和POST的区别

    GET方法:

    • 从指定的服务器上获得数据
    • GET请求能被缓存
    • GET请求会保存在浏览器的浏览纪录里
    • GET请求有长度的限制
    • 主要用于获取数据
    • 查询的字符串会显示在URL后缀中,不安全

    POST方法: 

    • 提交数据给指定服务器处理
    • POST请求不能被缓存
    • POST请求不会保存在浏览器的浏览纪录里
    • POST请求没有长度限制
    • 查询的字符串不会显示在URL中,比较安全

    3.5 HTTP状态码

    HTTP 状态码(HTTP Status Code)是用以表示网页服务器 HTTP 响应状态的 3 位数字代码,当浏览器请求某一 URL 时, 服务器根据处理情况返回相应的处理状态

    1. 1xx:信息提示,没有实际作用
    2. 2xx:请求结果成功
    3. 3xx:重定向
    4. 4xx:客户端错误
    5. 5xx:服务端错误

    生产当中常见的HTTP状态码

    1. 200:请求结果成功
    2. 301:永久重定向
    3. 302:临时重定向
    4. 304:请求访问的是本地缓存
    5. 403 Forbidden:禁止客户端访问该页面
    6. 404 NOT FOUND:服务器无法找到被请求的页面
    7. 500 inetnal server error:内部服务器错误
    8. 502 BAD getway:网关失效(服务端的网关失效)
    9. 503 server UNavailable:服务器不可用(网站维护)
    10. 504 GATEWAY timeout:网关请求超时(服务端处于维护或者路由器故障)

    四、总结

    数据传输:一旦服务器生成了http响应,会通过之前建立的连接将响应返回给客户端,响应当中包含了请求的资源(网页内容)以及其他的需要传输的数据(一般是自定义)。

    关闭连接:相应发送完成,服务端就会进入连接关闭,http1.1 time_wait,双方还在建立连接,双方之间不再有数据传输。一点有新的请求,连接可以继续使用。(160秒会话保持或者长连接)。

    http1.1会一次性获取页面的全部资源,然后发起四次挥手,只是不再传输数据,但是连接并没有断开

  • 相关阅读:
    Spring中自动注入的两种方式
    测试基础09:缺陷(bug)生命周期、定位方式和管理规范
    STM32的命名含义
    In-Place操作及onnx导出
    Vue2023 面试归纳及复习(2)
    MyBatis指定查询类容、多表查询
    A1142 Maximal Clique(25分)PAT 甲级(Advanced Level) Practice(C++)满分题解【图+极大团】
    ADAU1860调试心得(5)ADC-DAC直通程序
    Tomcat 异步组件 —— Nio2Endpoint
    每日一题·AC
  • 原文地址:https://blog.csdn.net/pupcarrot/article/details/133745724