• Web基础与HTTP协议


    DNS 域名解析

    域名结构

    • 根域
    • 顶级域
    • 二级域
    • 主机名
      在这里插入图片描述

    DNS 解析过程

    客户端 -> 本地缓存域名服务器 -> 根域服务器 -> 二级域服务器 -> 子域服务器 -> 根据主机名解析出IP (迭代、递归)

    网页的概念

    网页

    • 纯文本格式文件
    • 编写语言为HTML
    • 在用户的浏览器中被“翻译”成网页形式显示出来

    网站

    • 有一个一个页面构成的,是多个网页的结合体

    主页

    • 打开网站后的第一个网页称为网站主页或首页

    域名

    • 浏览网页时输入的网址

    HTTP

    • 用来传输网页的通信协议

    URL

    • 是一种万维网寻址系统

    HTML

    • 用来编写网页的超文本标记语言

    超链接

    • 超链接是将网站中不同网页链接起来的功能

    发布

    • 将制作好的网页上传到服务器供用户访问的过程
      在这里插入图片描述
      在这里插入图片描述

    HTML概述

    HTML叫做超文本标记语言,是一种规范,也是一种标准,它通过标记符号来标记要显示的网页中的各个部分。网页文件本身是一种文本文件,通过在文本文件中添加标记符,可以告诉浏览器如何显示其中的内容。
    HTML文件可以使用任何能够生成txt文件的文本编辑器来编辑,生成超文本标记语言文件,只用修改文件名后缀为”.html”或“.htm”即可。

    HTML文档的结构

    文件名以 .html 或 .htm 为后缀

    网页基本标签格式
    
    ....
    ....
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    头标签中常用标签:
    
    标签         描述 
                   定义了文档的标题
    <base>				定义了页面链接标签的默认链接地址
    <link>				定义了一个文档和外部资源之间的关系
    <meta>				定义了 HTML 文档中的元数据
    <script>			定义了客户端的脚本文件
    <style>				定义了 HTML 文档的样式文件
    <div class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}"></div></code><ul class="pre-numbering" style=""><li style="color: rgb(153, 153, 153);">1</li><li style="color: rgb(153, 153, 153);">2</li><li style="color: rgb(153, 153, 153);">3</li><li style="color: rgb(153, 153, 153);">4</li><li style="color: rgb(153, 153, 153);">5</li><li style="color: rgb(153, 153, 153);">6</li><li style="color: rgb(153, 153, 153);">7</li><li style="color: rgb(153, 153, 153);">8</li><li style="color: rgb(153, 153, 153);">9</li></ul></pre> 
    <pre data-index="2" class="set-code-show prettyprint"><code class="has-numbering" onclick="mdcp.signin(event)" style="position: unset;">内容标签中常用标签
    
    标签				描述
    <table>				定义一个表格
    <tr>				定义了表格中的一行
    <td>				定义了表格中某一行的一列
    <img>				定义了一个图像
    <a>					定义了一个超链接
    <p>					定义了一行
    <br>				定义了换行
    <font>				定义了字体
    <h1>				定义字体大小
    <div class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}"></div></code><ul class="pre-numbering" style=""><li style="color: rgb(153, 153, 153);">1</li><li style="color: rgb(153, 153, 153);">2</li><li style="color: rgb(153, 153, 153);">3</li><li style="color: rgb(153, 153, 153);">4</li><li style="color: rgb(153, 153, 153);">5</li><li style="color: rgb(153, 153, 153);">6</li><li style="color: rgb(153, 153, 153);">7</li><li style="color: rgb(153, 153, 153);">8</li><li style="color: rgb(153, 153, 153);">9</li><li style="color: rgb(153, 153, 153);">10</li><li style="color: rgb(153, 153, 153);">11</li><li style="color: rgb(153, 153, 153);">12</li></ul></pre> 
    <p><img src="https://1000bd.com/contentImg/2024/04/11/286346c58e79f2dd.png" alt="在这里插入图片描述"></p> 
    <p><img src="https://1000bd.com/contentImg/2024/04/11/a621345fd8c0599d.png" alt="在这里插入图片描述"></p> 
    <h2><a name="t16"></a><a id="_76"></a>静态网页与<a href="https://so.csdn.net/so/search?q=%E5%8A%A8%E6%80%81%E7%BD%91%E9%A1%B5&spm=1001.2101.3001.7020" target="_blank" class="hl hl-1" data-report-view="{"spm":"1001.2101.3001.7020","dest":"https://so.csdn.net/so/search?q=%E5%8A%A8%E6%80%81%E7%BD%91%E9%A1%B5&spm=1001.2101.3001.7020","extra":"{\"searchword\":\"动态网页\"}"}" data-report-click="{"spm":"1001.2101.3001.7020","dest":"https://so.csdn.net/so/search?q=%E5%8A%A8%E6%80%81%E7%BD%91%E9%A1%B5&spm=1001.2101.3001.7020","extra":"{\"searchword\":\"动态网页\"}"}" data-tit="动态网页" data-pretit="动态网页">动态网页</a></h2> 
    <ul><li> <p>静态网页<br> 在网站设计中,纯粹HTML格式的网页通常被称为“静态网页”,静态网页是标准的HTML文件,它的文件扩展名是.htm、.html。静态网页是网站建设的基础,早期的网站一般都是由静态网页制作的。静态网页也可以出现各种动态的效果,如.GIF格式的动画、FLASH、滚动字幕等。这些“动态效果”只是视觉上的,与下面将要介绍的动态网页是不同的概念。</p> </li><li> <p>动态网页<br> 所谓的动态网页,是指跟静态网页相对的一种网页编程技术。静态网页,随着HTML代码的生成,页面的内容和显示效果就基本上不会发生变化了——除非是修改页面代码。而动态网页则不然,页面代码虽然没有变,但是显示的内容却是可以随着时间、环境或者数据库操作的结果而发生改变的。动态网页URL的后缀不是.htm、.html、.shtml、.xml等静态网页的常见网页制作格式,而是以.aspx、.asp、.jsp、.php、.perl、.cgi等形式为后缀,并且在动态网页网址中有一个标志性的符号——“?”。<br> 动态网页是基本的html语法规范与Java、PHP、C#等高级程序设计语言、<a href="https://so.csdn.net/so/search?q=%E6%95%B0%E6%8D%AE%E5%BA%93%E7%BC%96%E7%A8%8B&spm=1001.2101.3001.7020" target="_blank" class="hl hl-1" data-report-view="{"spm":"1001.2101.3001.7020","dest":"https://so.csdn.net/so/search?q=%E6%95%B0%E6%8D%AE%E5%BA%93%E7%BC%96%E7%A8%8B&spm=1001.2101.3001.7020","extra":"{\"searchword\":\"数据库编程\"}"}" data-report-click="{"spm":"1001.2101.3001.7020","dest":"https://so.csdn.net/so/search?q=%E6%95%B0%E6%8D%AE%E5%BA%93%E7%BC%96%E7%A8%8B&spm=1001.2101.3001.7020","extra":"{\"searchword\":\"数据库编程\"}"}" data-tit="数据库编程" data-pretit="数据库编程">数据库编程</a>等多种技术的融合,以期实现对网站内容和风格的高效、动态和交互式的管理。因此,从这个意义上来讲,凡是结合了HTML以外的高级程序设计语言和数据库技术进行的网页编程技术生成的网页都是动态网页。</p> </li><li> <p>动态网页语言<br> 早期的动态网页主要采用通用网关接口 CGI(Common Gateway Interface)技术,虽然 CGI 技术已经发展成熟而且功能强大, 但由于编程困难、效率低下、修改复杂,所以有逐渐被新技术取代的趋势。</p> </li></ul> 
    <p>目前常用的动态网页编程语言如下:</p> 
    <ul><li> <p>PHP<br> 即 Hypertext Preprocessor(超文本预处理器),它是当今 Internet 上最为火热的脚本语言,其语法借鉴了 C、Java、PERL 等语言,但只需要很少的编程知识你就能使用 PHP 建立一个真正交互的 Web 站点。</p> </li><li> <p>JSP<br> 即 Java Server Pages(Java 服务器页面),它是由 Sun Microsystem 公司于 1999 年 6 月推出的新技术,是基于 Java Servlet 以及整个 Java 体系的 Web 开发技术。</p> </li><li> <p>Python<br> 是一种面向对象、跨平台的动态类计算机程序设计语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的大型项目开发。</p> </li><li> <p>Ruby<br> 是一种简单快捷的面向对象(面向对象程序设计)脚本语言,在 20 世纪 90年代由日本人松本行弘(Yukihiro Matsumoto) 开发,遵守GPL 协议和Ruby License。它的灵感与特性来自于 Perl、Smalltalk、Eiffel、Ada 以及 Lisp 语言。</p> </li></ul> 
    <h2><a name="t17"></a><a id="HTTP__101"></a>HTTP 协议概述</h2> 
    <p>HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URL、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。服务器以一个状态行作为响应,响应的内容包括消息协议的版本,成功或者错误编码加上服务器信息、实体元信息以及可能的实体内容。</p> 
    <p>HTTP 已经演化出了很多版本,它们中的大部分都是向下兼容的。</p> 
    <ol><li>HTTP/0.9:已过时。只接受 GET 一种请求方法,没有在通讯中指定版本号,且不支持请求头。由于该版本不支持 POST 方法,所以客户端无法向服务器传递太多信息。</li><li>HTTP/1.0:这是第一个在通讯中指定版本号的 HTTP 协议版本,至今仍被广泛采用,特别是在代理服务器中。</li><li>HTTP/1.1:引入了持久连接,即TCP连接默认不关闭,可以被多个请求复用,能很好地配合代理服务器工作。还支持管道方式机制,即在同一个TCP连接里面,客户端可以同时发送多个请求,以便降低线路负载,提高传输速度。</li><li>HTTP/2.0:完全多路复用,在一个连接里,客户端和浏览器都可以同时发送多个请求或回应,而且不用按照顺序一一对应。引入了头信息压缩机制,使用gzip或compress压缩后再发送。支持服务端推送,允许服务器未经请求,主动向客户端发送资源。</li></ol> 
    <h3><a name="t18"></a><a id="HTTP__109"></a>HTTP 方法</h3> 
    <p>HTTP 支持几种不同的请求命令,这些命令被称为 HTTP 方法(HTTP method)。每条 HTTP 请求报文都包含一个方法, 告诉服务器要执行什么动作,包括:获取一个页面,运行一个网关程序,删除一个文件等。最常用的获取资源的方法是 GET、POST、PUT。</p> 
    <pre data-index="3" class="set-code-show prettyprint"><code class="has-numbering" onclick="mdcp.signin(event)" style="position: unset;">HTTP 方法			描述
    GET					对服务器资源获取的简单请求
    PUT					向服务器提交数据,以修改数据
    DELETE				删除服务器上的某些资源
    POST				用于发送包含用户提交数据的请求
    HEAD				请求页面的首部,获取资源的元信息
    <div class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}"></div></code><ul class="pre-numbering" style=""><li style="color: rgb(153, 153, 153);">1</li><li style="color: rgb(153, 153, 153);">2</li><li style="color: rgb(153, 153, 153);">3</li><li style="color: rgb(153, 153, 153);">4</li><li style="color: rgb(153, 153, 153);">5</li><li style="color: rgb(153, 153, 153);">6</li></ul></pre> 
    <ul><li> <p>GET请求会向数据库发索取数据的请求,从而来获取信息,该请求就像数据库的select操作一样,只是用来查询一下数据,不会修改、增加数据,不会影响资源的内容,即该请求不会产生副作用。无论进行多少次操作,结果都是一样的。</p> </li><li> <p>与GET不同的是,PUT请求是向服务器端发送数据的,从而改变信息,该请求就像数据库的update操作一样,用来修改数据的内容,但是不会增加数据的种类等,也就是说无论进行多少次PUT操作,其结果并没有不同。</p> </li><li> <p>POST请求同PUT请求类似,都是向服务器端发送数据的,但是该请求会改变数据的种类等资源,就像数据库的insert操作一样,会创建新的内容。几乎目前所有的提交操作都是用POST请求的。</p> </li><li> <p>DELETE请求顾名思义,就是用来删除某一个资源的,该请求就像数据库的delete操作</p> </li></ul> 
    <h3><a name="t19"></a><a id="GET__POST__128"></a>GET 和 POST 比较</h3> 
    <p>GET 方法:从指定的服务器上获得数据<br> GET请求能被缓存<br> GET请求会保存在浏览器的浏览纪录里<br> GET请求有长度的限制<br> 主要用于获取数据<br> 查询的字符串会显示在URL后缀中,不安全,比如 http://www.test.com/a.php?Id=123</p> 
    <p>POST 方法:提交数据给指定服务器处理<br> POST请求不能被缓存<br> POST请求不会保存在浏览器的浏览纪录里<br> POST请求没有长度限制<br> 查询的字符串不会显示在URL中,比较安全</p> 
    <h3><a name="t20"></a><a id="HTTP__141"></a>HTTP 状态码</h3> 
    <p>HTTP 状态码(HTTP Status Code)是用以表示网页服务器 HTTP 响应状态的 3 位数字代码,当浏览器请求某一 URL 时, 服务器根据处理情况返回相应的处理状态。<br> 通常正常的状态码为2xx,3xx(如200),如果出现异常会返回4xx,5xx(如404)。</p> 
    <pre data-index="4" class="set-code-show prettyprint"><code class="has-numbering" onclick="mdcp.signin(event)" style="position: unset;">状态码首位			已定义范围			分类	
    1xx					100-101				信息提示
    2xx					200-206				成功
    3xx					300-305				重定向
    4xx					400-415				客户端错误
    5xx					500-505				服务器错误
    <div class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}"></div></code><ul class="pre-numbering" style=""><li style="color: rgb(153, 153, 153);">1</li><li style="color: rgb(153, 153, 153);">2</li><li style="color: rgb(153, 153, 153);">3</li><li style="color: rgb(153, 153, 153);">4</li><li style="color: rgb(153, 153, 153);">5</li><li style="color: rgb(153, 153, 153);">6</li></ul></pre> 
    <pre data-index="5" class="set-code-show prettyprint"><code class="has-numbering" onclick="mdcp.signin(event)" style="position: unset;">HTTP 常见状态码
    状态码		功能描述
    200			一切正常
    301			永久重定向
    302			临时重定向
    401			用户名或密码错误
    403			禁止访问(客户端IP地址被拒绝)
    404			请求的文件不存在
    414			请求URI头部过长
    500			服务器内部错误
    502			无效网关
    503			当前服务不可用
    504			网关请求超时
    <div class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}"></div></code><ul class="pre-numbering" style=""><li style="color: rgb(153, 153, 153);">1</li><li style="color: rgb(153, 153, 153);">2</li><li style="color: rgb(153, 153, 153);">3</li><li style="color: rgb(153, 153, 153);">4</li><li style="color: rgb(153, 153, 153);">5</li><li style="color: rgb(153, 153, 153);">6</li><li style="color: rgb(153, 153, 153);">7</li><li style="color: rgb(153, 153, 153);">8</li><li style="color: rgb(153, 153, 153);">9</li><li style="color: rgb(153, 153, 153);">10</li><li style="color: rgb(153, 153, 153);">11</li><li style="color: rgb(153, 153, 153);">12</li><li style="color: rgb(153, 153, 153);">13</li></ul></pre> 
    <h3><a name="t21"></a><a id="HTTP__168"></a>HTTP 请求流程分析</h3> 
    <p>用户在浏览器输入URL访问时,发起HTTP请求报文,请求中包括请求行、请求头、请求体,服务器收到请求后返回响应报文,包括状态行、响应头、响应体。</p> 
    <h4><a name="t22"></a><a id="_171"></a>请求报文</h4> 
    <p>请求行:请求行由请求方法、URL 以及协议版本三部分组成。<br> 请求头:请求头为请求报文添加了一些附加信息,由“名/值”对组成,每行一对,名和值之间使用冒号分隔。<br> 空行:请求头部的最后会有一个空行,表示请求头部结束,接下来为请求体,这一行非常重要,必不可少。<br> 请求体:请求体是请求提交的参数,GET 方法已经在 URL 中指明了参数,所以提交时没有数据。POST 方法提交的参数在请求体中。</p> 
    <p>常用的请求头:<br> 请求头 描述<br> Host 接受请求的服务器地址,可以是 IP:端口号,也可以是域名<br> User-Agent 发送请求的应用程序名称<br> Connection 指定与连接相关的属性,如 Connection:Keep-Alive<br> Accept-Charset 通知服务端可以发送的编码格式<br> Accept-Encoding 通知服务端可以发送的数据压缩格式<br> Accept-Language 通知服务端可以发送的语言</p> 
    <h4><a name="t23"></a><a id="_186"></a>响应报文</h4> 
    <p>状态行:状态行由协议版本,状态码,状态码描述三部分组成。<br> 响应头:响应头与请求头部类似,为响应报文添加了一些附加信息。<br> 空行:响应头部的最后会有一个空行,表示响应头部结束。<br> 响应体:服务器返回的相应 HTML 数据,浏览器对其解析后显示页面。</p> 
    <p>常见响应头:<br> 响应头 描述<br> Server 服务器应用程序软件的名称和版本<br> Content-Type 响应正文的类型(是图片还是二进制字符串)<br> Content-Length 响应正文长度<br> Content-Charset 响应正文使用的编码<br> Content-Encoding 响应正文使用的数据压缩格式<br> Content-Language 响应正文使用的语言</p>
                    </div>
                        </div>
                    </li>
    
                    <li class="list-group-item ul-li">
    
                        <b>相关阅读:</b><br>
                        <nobr>
    <a href="/Article/Index/1232797">小米面试题——不用加减乘除计算两数之和</a>                            <br />
    <a href="/Article/Index/887190">BOM之location对象</a>                            <br />
    <a href="/Article/Index/1660374">三、基于图像分类预训练编码及图神经网络的预测模型 【框图+源码】</a>                            <br />
    <a href="/Article/Index/1663796">多模态MLLM都是怎么实现的(9)-时序LLM是怎么个事儿?</a>                            <br />
    <a href="/Article/Index/877120">一次服务器被入侵的处理过程分享</a>                            <br />
    <a href="/Article/Index/787051">egg(二十):fs读取本地的txt文件</a>                            <br />
    <a href="/Article/Index/1360107">【2023年11月第四版教材】第23章《组织通用管理》(合集篇)</a>                            <br />
    <a href="/Article/Index/1673148">使用Python实现深度学习模型:序列到序列模型(Seq2Seq)</a>                            <br />
    <a href="/Article/Index/1327481">剖析华为云Astro Platform技术价值与使用体验</a>                            <br />
    <a href="/Article/Index/737644">堪称2022最强Java八股文面试题汇总</a>                            <br />
                        </nobr>
                    </li>
                    <li class="list-group-item from-a mb-2">
                        原文地址:https://blog.csdn.net/wanggg1997/article/details/130845464
                    </li>
    
                </ul>
            </div>
    
            <div class="col-lg-4 col-sm-12">
                <ul class="list-group" style="word-break:break-all;">
                    <li class="list-group-item ul-li-bg" aria-current="true">
                        最新文章
                    </li>
                    <li class="list-group-item ul-li">
                        <nobr>
    <a href="/Article/Index/1484446">攻防演习之三天拿下官网站群</a>                            <br />
    <a href="/Article/Index/1515268">数据安全治理学习——前期安全规划和安全管理体系建设</a>                            <br />
    <a href="/Article/Index/1759065">企业安全 | 企业内一次钓鱼演练准备过程</a>                            <br />
    <a href="/Article/Index/1485036">内网渗透测试 | Kerberos协议及其部分攻击手法</a>                            <br />
    <a href="/Article/Index/1877332">0day的产生 | 不懂代码的"代码审计"</a>                            <br />
    <a href="/Article/Index/1887576">安装scrcpy-client模块av模块异常,环境问题解决方案</a>                            <br />
    <a href="/Article/Index/1887578">leetcode hot100【LeetCode 279. 完全平方数】java实现</a>                            <br />
    <a href="/Article/Index/1887512">OpenWrt下安装Mosquitto</a>                            <br />
    <a href="/Article/Index/1887520">AnatoMask论文汇总</a>                            <br />
    <a href="/Article/Index/1887496">【AI日记】24.11.01 LangChain、openai api和github copilot</a>                            <br />
                        </nobr>
                    </li>
                </ul>
    
                <ul class="list-group pt-2" style="word-break:break-all;">
                    <li class="list-group-item ul-li-bg" aria-current="true">
                        热门文章
                    </li>
                    <li class="list-group-item ul-li">
                        <nobr>
    <a href="/Article/Index/888177">十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!</a>                            <br />
    <a href="/Article/Index/797680">奉劝各位学弟学妹们,该打造你的技术影响力了!</a>                            <br />
    <a href="/Article/Index/888183">五年了,我在 CSDN 的两个一百万。</a>                            <br />
    <a href="/Article/Index/888179">Java俄罗斯方块,老程序员花了一个周末,连接中学年代!</a>                            <br />
    <a href="/Article/Index/797730">面试官都震惊,你这网络基础可以啊!</a>                            <br />
    <a href="/Article/Index/797725">你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法</a>                            <br />
    <a href="/Article/Index/797702">心情不好的时候,用 Python 画棵樱花树送给自己吧</a>                            <br />
    <a href="/Article/Index/797709">通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!</a>                            <br />
    <a href="/Article/Index/797716">13 万字 C 语言从入门到精通保姆级教程2021 年版</a>                            <br />
    <a href="/Article/Index/888192">10行代码集2000张美女图,Python爬虫120例,再上征途</a>                            <br />
                        </nobr>
                    </li>
                </ul>
    
            </div>
        </div>
    </div>
    <!-- 主体 -->
    
    
        <!--body结束-->
        <!--这里是footer模板-->
        
        <!--footer-->
    <nav class="navbar navbar-inverse navbar-fixed-bottom">
        <div class="container">
            <div class="row">
                <div class="col-md-12">
                    <div class="text-muted center foot-height">
                        Copyright © 2022 侵权请联系<a href="mailto:2656653265@qq.com">2656653265@qq.com</a>   
                        <a href="https://beian.miit.gov.cn/" target="_blank">京ICP备2022015340号-1</a>
                    </div>
                    <div style="width:300px;margin:0 auto; padding:0px 5px;">
                        <a href="/regex.html">正则表达式工具</a>
                        <a href="/cron.html">cron表达式工具</a>
                        <a href="/pwdcreator.html">密码生成工具</a>
                    </div>
                    <div style="width:300px;margin:0 auto; padding:5px 0;">
                        <a target="_blank" href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=11010502049817" style="display:inline-block;text-decoration:none;height:20px;line-height:20px;">
                        <img src="" style="float:left;" /><p style="float:left;height:20px;line-height:20px;margin: 0px 0px 0px 5px; color:#939393;">京公网安备 11010502049817号</p></a>
                    </div>
                </div>
            </div>
        </div>
      
    </nav>
    <!--footer-->
    
        <!--footer模板结束-->
    
        <script src="/js/plugins/jquery/jquery.js"></script>
        <script src="/js/bootstrap.min.js"></script>
    
        <!--这里是scripts模板-->
        
    
        
     
    
    
        <!--scripts模板结束-->
    
    </body>
    </html>