浅谈我对HTTP协议的认识

前言:在纷繁复杂的计算机网络的世界中,各种协议、各种新技术可谓是层出不穷。但是,正所谓,基础不牢,地动山摇,经典的HTTP协议仍然是值得每一个初学者对其花费心思,理解其设计的方式和意义。

映入眼帘

刚学计网的我们,大多数人最开始接触到的协议,应该都是HTTP协议。在对计算机网络有一个系统全面的认识之前,我们不免发出一连串的疑问:

  1. 什么是HTTP协议?

    • HTTP是一串英文短语的简称,它的全名叫做超文本传输协议(HyperText Transfer Protocol)。

    • 什么是超文本?

      • 中文的超本文是直接英译单词HyperText的,超文本指的是,其内容不仅仅是文字,还包含HTML文件、JPEG图像、视频以及最重要的是对其他内容的引用(跳转链接,超链接(HyperLink))。

      • HTML是最常见的超本文了。如果我们去看HTML语言的编码格式,你就能够理解为什么说超文本语言是对图像、语音、视频的引用了。

        <html>
            <head>
                <title></title>
                <meta>
                <link>
                <style></style>
            </head>
            <body></body>
        </html>
        

        以上这些链接啊,文字啊信息,最后通过浏览器的解释和渲染,就是我们今天在电脑上看到的网页的形式了。

    • HTTP协议其实是对HTTP报文的结构形式、客户端和服务端进行报文交换的方式的一个定义。更通俗一点来说,HTTP协议定义了计算机网络中两点之间传输超文本数据的规范。

  2. 生活中,有哪些地方可以看到HTTP协议?

    • 各大门户网站(百度、谷歌、163等)、在线购物网站(淘宝、京东等)、SNS(Social Networking Service社交网络服务,推特、脸书等)、各种手机APP、企业或组织内部的管理工具等等
    • 当然,像今天的网站,淘宝啊,在HTTP的基础上,还使用了很多其他的组件,让其Web的功能更多样化。
  3. 我怎么才能使用HTTP协议?

    1. 对于新手的我们,我们不会去自己动手编写HTTP的报文内容。更多的呢,是理解HTTP协议工作的过程以及发生的场景。例如,通过使用抓包软件WireSharks对浏览器的网络链接进行抓取,读取其中的HTTP协议报文内容,能够理解HTTP报文的内容,就算是很OK的啦。

渐入佳境

对HTTP协议有了基本的了解后,自然而然的,我们会想要进行深层次的学习,例如:HTTP协议的工作流程、HTTP协议各种状态码对应的含义、HTTP协议的优缺点等

  1. HTTP协议的工作流程是怎么样的?

    我们以网页访问举一个例子。假如说,你在你浏览器的地址栏,输入里这串地址:http://gaia.cs.umass.edu/wireshark-labs/alice.txt,打开网址后,你的浏览器会返给你一串爱丽丝梦游仙境小说的文字。我们以这个访问过程,描述一下HTTP协议在其中发挥的作用

    1. 首先,HTTP协议是一个请求/应答协议。意思是,我们电脑上的浏览器作为客户端,向umass大学的保存有这个文本的服务器发出请求,请求的内容是我想要看爱丽丝小说;服务器接收到请求,返回给我们浏览器一段文字。这就是请求/应答协议。在经典的HTTP/1.1协议中,只有客户端向服务器发送请求,服务器才能返回响应给客户端(为了满足网页消息推送等功能需求等,在HTTP/2.0协议中允许服务器主动发送响应给客户端

    2. 上文中提到了HTTP的请求/响应报文,是采用HTTP协议通信双方传递信息的方式。对于报文的格式,HTTP协议有作很详细的规范。HTTP/1.1协议的报文内容是ASCII明文,对于程序员来说,很轻松的能够理解传输的内容信息,清晰明了(但是不安全)。可以分成三个部分:一是请求行、二是首部行、三是实体行:

      • 请求行:请求行的最大的作用是指明请求的方法、请求的方法关键字有:GET\POST\PUT\HEAD\DELETE\OPTIONS\TRANCE\CONNECT,需要记住的是常用的GETPOST
        • GET和POST的差别
          • 请求含义完全不同:GET是获取服务器的资源(浏览网页,下载图片等),POST是向服务器上传资源(网站留言等)
          • 安全性不同:所谓的完全是指请求的方法不会破坏服务器上的资源。GET方法是下载资源,对服务器上的资源没有影响,所以是安全的;但是POST方法是往服务器上传资源,所以是不安全的。
          • 幂等性不同:所谓的「幂等」,意思是多次执⾏相同的操作,结果都是「相同」的。 GET方法是幂等的,但POST方法不是,多次POST提交数据就会创建多个资源。
      • 首部行:首部行中内容是客户端和服务器分别处理请求和响应提供所需的信息。比如说支持的语言啊、编码的格式啊、修改时间啊等等各种信息。一般来说,首部行可以分为通用首部字段(请求和响应报文都具有的)、请求首部字段、响应首部字段、实体首部字段。请求行和首部行一起组成了HTTP报文的首部(头部)。
        • 通用首部字段:Connection、Cache-Control、Date、Pragma、Trailer、Transfer-Encoding、Upgrade、Via、Warning
        • 请求首部字段:Accept、Accept-Encoding、Accept-language、Host、If-Modified-Since、Accept-Charset、Authorization、Expect、From、If-Match、If-None-Match、If-Range、If-Unmodified-Since、Max-Forwards、Proxy-Authorization、Range、Referer、TE、User-Agent
        • 响应首部字段:Accept-Ranges、Age、ETag、Location、Proxy-Authenticate、Retry-After、Server、Vary、WWW-Authenticate
        • 实体首部字段:Content-Type、Content-Encoding、Content-Length、Allow、Content-Encoding、Content-Location、Content-MD5、Content-Range、Expires、Last-Modified
      • 实体行:传输的内容。一般采用Base 64进行内容编码
    3. 当我们的浏览器,按照第2点所描述的HTTP报文规范,发送了正确的报文后,服务器会根据自身实际情况,给予我们反馈。这个反馈,我们叫状态码,是写在HTTP响应报文的首部里的。不过,我们在日常生活生活中已经见过了他们的身影:404 Not Found

      状态码总共是分为5大种,分别是(如图):
      在这里插入图片描述

      常见的有:200(成功)、302(重定向了)、401(HTTP要求验证身份)、404(找不到资源)、503(服务器忙)

      如果状态码为200,那就意味着服务器接收到客户端的请求并找到了对应的资源。服务器会返回请求的资源,再由浏览器进行渲染,就浏览器上就出现了相应的画面。整个过程发生的时间非常短,但是在背后有着一个分工明确、秩序凌然的庞大体系作支持(详情请搜索,在浏览器中输入一个URL,到底发生了什么)。

  2. HTTP协议的优缺点

    • 优点:

      • 协议简单。作为一种请求/响应协议,传输的报文其格式首部+实体,一方请求、另一方响应,整个过程非常简单吗,因此在计算机网络中得到大量的应用。
      • 可拓展性强。HTTP协议是处于最高层的一个协议,下层可以随意变化。况且含有各种首部字段,方便进行编写。此外,将HTTP协议和其他协议组合使用,可以实现不同的功能:HTTP+Cookie实现了状态保存,HTTP+SSL实现了安全性等等。
      • 应用广泛和跨平台。互联⽹发展⾄今, HTTP 的应⽤范围⾮常的⼴泛,从台式机的浏览器到⼿机上的各种 APP,从看新闻、刷贴吧到购物、理财、吃鸡, HTTP 的应⽤⽚地开花,同时天然具有跨平台的优越性。
    • 缺点:

      单独的HTTP协议,由于太简单了,其实功能很不完善,具有以下缺点:

      • 无状态。HTTP协议是无状态协议,通信的双方并不会记住彼此,每次通信都是一次重新认识对方的过程。无状态的优点是占用资源少,让协议变得简单起来。缺点就是让用户体验差,就像你进入一个网页,每次点开都要登录一次用户,非常麻烦。不过好在Cookie协议的出现,解决了这个问题。
      • 不安全。明文传输,如果想窃听的话,是一件很简单的事情(使用抓包软件,很轻松的能够获取请求/响应报文)。所以,对安全性有要求的网页,例如要输入密码的啊(淘宝为代表)是不能使用HTTP协议进行Web网页开发的。不过HTTP+SSL组合形成的HTTPS协议,是一个很安全的协议,能够满足安全性的要求。

おすすめ

転載: blog.csdn.net/qq_42518941/article/details/118416703