HTTP协议系列(1)
一、为什么学习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)的更多相关文章
- 深入NAS协议系列: 召唤SMB2 OpLock/Lease
这是从事存储行业十年以来我写的第一篇博客,希望借此开始把自己这些年所积累的一些干货借这个平台做分享. 虽然NAS协议众多,但核心的就那个几个:NFS,SMB/CIFS, FTP/SFTP, 其中SMB ...
- 安全协议系列(五)---- IKE 与 IPSec(中)
在上一篇中,搭建好了实验环境.完整运行一次 IKE/IPSec 协议,收集相关的输出及抓包,就可以进行协议分析.分析过程中,我们将使用 IKE 进程的屏幕输出和 Wireshark 抓包,结合相关 R ...
- 安全协议系列(五)---- IKE 与 IPSec(上)
IKE/IPSec 属于网络层安全协议,保护 IP 及上层的协议安全.自上个世纪末面世以来,关于这两个协议的研究.应用,已经非常成熟.协议本身,也在不断地进化.仅以 IKE 为例,其对应的 RFC 编 ...
- 安全协议系列(四)----SSL与TLS
当今社会,电子商务大行其道,作为网络安全 infrastructure 之一的 -- SSL/TLS 协议的重要性已不用多说.OpenSSL 则是基于该协议的目前应用最广泛的开源实现,其影响之大,以至 ...
- 安全协议系列(三)----CCMP与WPA-PSK
本节讨论 CCM 在 WiFi 中的实际应用 -- CCMP 协议 根据 RFC 3610,完成 CCMP 报文的加解密,需要提供:分组密钥(K).随机数(Nonce).附加认证数据(AAD),这三个 ...
- 安全协议系列(二)----CCM与CCMP
CCMP(CTR with CBC-MAC Protocol) 是 IEEE 802.11i 中推出使用基于 AES 的 CCM 模式的安全加密协议.与原来脆弱的 WEP 算法及临时补救措施 TKIP ...
- 协议系列之HTTP协议
什么是HTTP\HTTPS HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写.HTTP协议用于从WWWserver传输超文本到本地浏览器的传输协议,它能使浏览 ...
- 应用层协议系列(两)——HTTPserver之http协议分析
上一篇文章<抄nginx Httpserver设计与实现(一)--多进程和多通道IO现>中实现了一个仿照nginx的支持高并发的server.但仅仅是实现了port监听和数据接收.并没有实 ...
- 协议系列UDP协议
所述上部TCP虽然该协议提供了一个可靠的传输,但也有一个缺点.发送速度慢.是否有协议它可以以高速传送?这部分是将要讨论UDP协议,它提供了更加快了传输速度.而且在可靠性为代价,这是一个无连接的传输协议 ...
随机推荐
- 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新
[原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...
- java中文乱码解决之道(一)-----认识字符集
沉寂了许久(大概有三个多月了吧),LZ"按捺不住"开始写博了! java编码中的中文问题是一个老生常谈的问题了,每次遇到中文乱码LZ要么是按照以前的经验修改,要么则是baidu.c ...
- 高性能Javascript--脚本的无阻塞加载策略
Javascript在浏览器中的性能,可以说是前端开发者所要面对的最重要的可用性问题. 在Yahoo的Yslow23条规则当中,其中一条是将JS放在底部 .原因是,事实上,大多数浏览器使用单进程处理U ...
- SQL:指定名称查不到数据的衍伸~空格 换行符 回车符的批量处理
异常处理汇总-数据库系列 http://www.cnblogs.com/dunitian/p/4522990.html 先看看啥情况 复制查询到的数据,粘贴一下看看啥情况 那就批量处理一下~ 就这样 ...
- 【Win 10 应用开发】应用预启动
所谓预启动,其实你一看那名字就知道是啥意思了,这是直接译,也找不到比这个叫法更简练的词了.在系统资源允许的情况下(比如电池电量充足,有足够的内存空间),系统会把用户常用的应用程序在后台启动,但不会显示 ...
- PHP以接口方式实现多重继承(完全模拟)--学习笔记
1.UML类图: 2.PHP代码: <?php /** * Created by PhpStorm. * User: andy * Date: 16-11-23 * Time: 下午7:57 ...
- jQuery学习之路(3)- 事件
▓▓▓▓▓▓ 大致介绍 jQuery增加了并扩展了基本的事件处理机制,不但提供了更加优雅的事件处理语法,而且极大地增强了事件处理能力 ▓▓▓▓▓▓ jQuery中的事件 ▓▓▓▓▓▓ 加载DOM 在j ...
- 邮件中嵌入html中要注意的样式
工作中常会有需求向用户发送邮件,需要前端工程师来制作html格式的邮件,但是由于邮件客户端对样式的支持有限,要兼容很多种浏览器需要注意很多原则: 1.邮件使用table+css布局 2.邮件主要部分在 ...
- Spark踩坑记——初试
[TOC] Spark简介 整体认识 Apache Spark是一个围绕速度.易用性和复杂分析构建的大数据处理框架.最初在2009年由加州大学伯克利分校的AMPLab开发,并于2010年成为Apach ...
- 反应器(Reactor)和主动器(Proactor)
网络方面用的比较多的库是libevent和boost.asio,两者都是跨平台的.其中libevent是基于Reactor实现的,而boost.asio是基于Proactor实现的.Reactor和P ...