一、为什么学习Http协议

      首先明白我们为什么学习HTTP协议,也就是说明白HTTP协议的作用。HTTP协议是用于客户端与服务器之间的通讯。明白了HTTP协议的作用也就知道了为什么要学习HTTP协议了。因为我们做WEB的都是在服务器端访问资源,浏览器就是我们的客户端,我们所呈现的界面还是资源都是访问服务器而展示出来的,所以说要学好WEB就要了解清楚HTTP协议有哪些作用及其功能,本篇还是大体上介绍HTTP协议,之后系列会详细来描述各个功能。

二、简单的Http协议

     我们现在知道HTTP协议是用于客户端与服务器之间的通讯的,那么他是怎么通讯的那?我们想象这样一个场景就会明白他是怎么通讯的,想访问百度的时候,就是在文本框内输入百度域名,这样就能访问百度了,这个写百度的域名就是一个请求,而展现出来的页面就是响应的结果,这就是HTTP协议的进行通讯的方式。明白这个以后我们就来看一下HTTP协议的请求和响应的内容。

HTTP协议请求报文我们先来看个例子:

以上二张图片可以看出请求报文文的基本内容包括请求方法,请求URL,协议版本,请求首部字段和内容实体。什么是请求报文的首部字段和内容实体我们在后面会具体先说明的这里先卖个官子,接下来我们看一下响应报文。

这个就是响应报文的基本内容,在状态我说一下200 OK这个是响应处理的结果的状态码和解释状态码的原因短语。消息头就是响应首部字段,响应正文就是实体主体。这块就简单的说到这里,剩下的还是在下面具体说说。

、HTTP协议的特点

1. HTTP协议是不保存状态的协议,即无状态协议,什么是无状态的协议尼,每一次的发送请求,就会有对应的新的响应产生,协议不能保存之前请求的报文信息,这就是无状态协议,可以你又会想到当在淘宝购物的时候他就可以保持登录的状态或者购物车呀,没错这里面引入了Cookie的技术,稍后我们在下面讲述。

2.持久连接指的是建立一次TCP连接后可以进行多次请求和响应的交互,这样做的好处就是减少了重复和断开的额外开销,减轻了服务器的压力,提升Web访问速度。

3.管线化这个说白一点就是多线程。

、HTTP协议请求的方法

      Get:获取资源

Get方法用来请求访问被URL识别的的资源。指定资源经过服务器解析后返回响应的内容。

POST:传输实体主体

POST方法主要用来传输实体的主体。

Put:传输文件

Put方法主要用来传输文件,要求在请求报文的主体中包含文件的内容,然后保存到请求URL指定的位置上。

Head:获取报文首部

Head方法和Get方法一样,只是不返回报文主体部分,用于确认URI的有效性及资源更新的日期。

Delete:删除文件

Delete用来删除文件,是与Put方法相反,用来请求删除URI删除的指定资源。

Options:询问支持的方法

Options方法用来查询针对请求URI指定的资源支持的方法(Put,Get)。

Trace:追踪路径

Trace方法是让Web服务器端将之前请求的还回给客户端的方法。----这个知道下就可以

Connect:要求用隧道协议连接代理

Conne方法要求在与代理服务器通讯时建立隧道,使用隧道协议进行TCP通信。主要使用SSL(安全套接层)和TLS(传输安全层)协议把通讯内容加密后经过网络隧道传输。---这些协议在下一篇进行讲解。

、HTTP协议使用Cookie进行状态管理

      Cookie会根据从服务端发送的请求报文头内的一个Set-Cookie的首部字段信息,通知客户端保存Cookie,当下次客户端在往服务器发送请求的时候,会自动在客户端请求报文的值加入Cookie的值发送过去,这时候服务器接收到客户端请求过来的Cookie后,会去检查从那个客户端发送出来的请求连接,然后会去服务器上对比记录,最后得到之前的状态信息。

、HTTP协议报文

     用于HTTP请求协议交互的信息被称为HTTP报文,客户端HTTP报文叫做请求报文,服务器端的HTTP报文叫做响应报文。下面是请求报文和响应报文的结构。

                                                          

名词解释报文:是HTTP通讯中的基本单位,由8位字节流构成,通过HTTP通信传输。

实体:是由实体首部和实体主体组成。

、返回结果的状态码

    在响应报文的内容中会包含状态行,状态行包括状态码和状态码的简单描述,大致可以分为下面几类,我们最好在脑袋里面形成反射,看到那个数字就能确定他的范围。

接下来我们开始对每个内容进行详解,我做了一个思维导图东西大家可以看一下,这个基本属于就是记忆的东西。

HTTP协议系列(1)的更多相关文章

  1. 深入NAS协议系列: 召唤SMB2 OpLock/Lease

    这是从事存储行业十年以来我写的第一篇博客,希望借此开始把自己这些年所积累的一些干货借这个平台做分享. 虽然NAS协议众多,但核心的就那个几个:NFS,SMB/CIFS, FTP/SFTP, 其中SMB ...

  2. 安全协议系列(五)---- IKE 与 IPSec(中)

    在上一篇中,搭建好了实验环境.完整运行一次 IKE/IPSec 协议,收集相关的输出及抓包,就可以进行协议分析.分析过程中,我们将使用 IKE 进程的屏幕输出和 Wireshark 抓包,结合相关 R ...

  3. 安全协议系列(五)---- IKE 与 IPSec(上)

    IKE/IPSec 属于网络层安全协议,保护 IP 及上层的协议安全.自上个世纪末面世以来,关于这两个协议的研究.应用,已经非常成熟.协议本身,也在不断地进化.仅以 IKE 为例,其对应的 RFC 编 ...

  4. 安全协议系列(四)----SSL与TLS

    当今社会,电子商务大行其道,作为网络安全 infrastructure 之一的 -- SSL/TLS 协议的重要性已不用多说.OpenSSL 则是基于该协议的目前应用最广泛的开源实现,其影响之大,以至 ...

  5. 安全协议系列(三)----CCMP与WPA-PSK

    本节讨论 CCM 在 WiFi 中的实际应用 -- CCMP 协议 根据 RFC 3610,完成 CCMP 报文的加解密,需要提供:分组密钥(K).随机数(Nonce).附加认证数据(AAD),这三个 ...

  6. 安全协议系列(二)----CCM与CCMP

    CCMP(CTR with CBC-MAC Protocol) 是 IEEE 802.11i 中推出使用基于 AES 的 CCM 模式的安全加密协议.与原来脆弱的 WEP 算法及临时补救措施 TKIP ...

  7. 协议系列之HTTP协议

    什么是HTTP\HTTPS HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写.HTTP协议用于从WWWserver传输超文本到本地浏览器的传输协议,它能使浏览 ...

  8. 应用层协议系列(两)——HTTPserver之http协议分析

    上一篇文章<抄nginx Httpserver设计与实现(一)--多进程和多通道IO现>中实现了一个仿照nginx的支持高并发的server.但仅仅是实现了port监听和数据接收.并没有实 ...

  9. 协议系列UDP协议

    所述上部TCP虽然该协议提供了一个可靠的传输,但也有一个缺点.发送速度慢.是否有协议它可以以高速传送?这部分是将要讨论UDP协议,它提供了更加快了传输速度.而且在可靠性为代价,这是一个无连接的传输协议 ...

随机推荐

  1. ExtJS 4.2 评分组件

    上一文章是扩展ExtJS自带的Date组件.在这里将创建一个评分组件. 目录 1. 介绍 2. 示例 3. 资源下载 1. 介绍 代码参考的是 Sencha Touch 2上的一个RatingStar ...

  2. JavaScript 字符串实用常操纪要

    JavaScript 字符串用于存储和处理文本.因此在编写 JS 代码之时她总如影随形,在你处理用户的输入数据的时候,在读取或设置 DOM 对象的属性时,在操作 Cookie 时,在转换各种不同 Da ...

  3. PowerDesigner-VBSrcipt-自动设置主键,外键名等(SQL Server)

    在PowerDesigner中的设计SQL Server 数据表时,要求通过vbScript脚本实现下面的功能: 主键:pk_TableName 外键:fk_TableName_ForeignKeyC ...

  4. 【开源毕设】一款精美的家校互动APP分享——爱吖校推 [你关注的,我们才推](持续开源更新3)附高效动态压缩Bitmap

    一.写在前面 爱吖校推如同它的名字一样,是一款校园类信息推送交流平台,这么多的家校互动类软件,你选择了我,这是我的幸运.从第一次在博客园上写博客到现在,我一次一次地提高博文的质量和代码的可读性,都是为 ...

  5. UVA-146 ID Codes

    It is 2084 and the year of Big Brother has finally arrived, albeit a century late. In order to exerc ...

  6. 学习C的笔记

    [unsigned] 16位系统中一个int能存储的数据的范围为-32768~32767,而unsigned能存储的数据范围则是0~65535.由于在计算机中,整数是以补码形式存放的.根据最高位的不同 ...

  7. Xamarin.Android快速入门

    一.准备工作 1.创建一个空的解决方案,并命名为Phoneword 2.右击解决方案 新建->新建项目 并命名为Phoneword_Droid 二.界面 1.打开Resources文件夹-> ...

  8. Linux上运行NET

    今天尝试了下Ubuntu上运行NET程序,按照 https://github.com/aspnet/Home 的指引,一步一步来: 1.安装DNVM(原名KVM) Linux控制台下输入 curl - ...

  9. SurfaceView 绘制分形图

    之前一直做的是应用类,这次抽时间,参考网上资料实践了下SurfaceView.目标是在页面上画一个科赫曲线的分形图. 代码如下: package com.example.fredric.demo02; ...

  10. 说说DOM的那些事儿

    引子 先来一颗栗子: <img src="/sub/123.jpg" alt="test" /> <script type="tex ...