一、为什么学习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. 【原】FMDB源码阅读(三)

    [原]FMDB源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 FMDB比较优秀的地方就在于对多线程的处理.所以这一篇主要是研究FMDB的多线程处理的实现.而 ...

  2. java基础_集合List与Set接口

    List接口继承了Collection的方法  当然也有自己特有的方法向指定位置添加元素   add(索引,添加的元素); 移除指定索引的元素   remove(索引) 修改指定索引的元素   set ...

  3. ABP文档 - 导航

    文档目录 本节内容: 创建菜单 注册导航供应器 显示菜单 每个web应用都有一些菜单用来在页面/屏幕之间导航,ABP提供了一个通用的基础框架创建并显示菜单给用户. 创建菜单 一个应用可能由不同模块组成 ...

  4. 用html5的canvas和JavaScript创建一个绘图程序

    本文将引导你使用canvas和JavaScript创建一个简单的绘图程序. 创建canvas元素 首先准备容器Canvas元素,接下来所有的事情都会在JavaScript里面. <canvas ...

  5. Webpack 配置摘要

    open-browser-webpack-plugin 自动打开浏览器 html-webpack-plugin 通过 JS 生成 HTML webpack.optimize.UglifyJsPlugi ...

  6. docker for mac 学习记录

    docker基本命令 docker run -d -p 80:80 --name webserver nginx 运行容器并起别名 docker ps 展示目前启动的容器 docker ps -a 展 ...

  7. Spring中Bean的作用域、生命周期

                                   Bean的作用域.生命周期 Bean的作用域 Spring 3中为Bean定义了5中作用域,分别为singleton(单例).protot ...

  8. 【HTML】Html页面跳转的5种方式

    目录结构: // contents structure [-] html实现 javascript方式实现 结合了倒数的javascript实现(IE) 解决Firefox不支持innerText的问 ...

  9. Linux监控工具介绍系列——vmstat

      说来惭愧,玩Linux这么久了,居然没有玩转vmstat这个命令,对很多指标的具体意义都有点模糊不清,花了点时间好好学习.整理一下这个命令的相关资料.因为这个命令确实比较重要,而且频繁用到. 命令 ...

  10. [原创]Macbook Pro Retina 15吋安装Windows 7和Windows 8.1方法

    前言 本以为有Bootcamp神器在手,Macbook装Win系统应该是不在话下,没想到着实折腾了一番.期间因为误操作导致OSX也挂掉进不去只得磁盘全部抹掉网络恢复安装.为了让大家少走弯路,提供个人安 ...