关于HTTP的笔记
网上看了一篇关于HTTP的博客,觉得还不错,这里就记下来了。
参考:https://www.cnblogs.com/guguli/p/4758937.html
一、主要特点
1.支持客户/服务器模式
2.简单快速:客户向服务器请求服务时,只需请求方法和路径。(常用请求方法有GET HEAD POST)
3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-type加以标记
4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户机的应答后,即断开连接。采用这种方式可以节省传输时间。
5.无状态:指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样有可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就很快
HTTP协议对于用户来讲其实是透明的,HTTP的报文并非是直接交互给用户去看的。最常见的场合是HTTP协议将超文本交付给浏览器或其他超文本解析的软件来进行处理。
超文本可以使用任意标签语言。如html xsl xml xhtml
1)静态超文本
客户端直接通过URL请求道服务器相对应的资源。服务端直接将部署在数据库或者文件系统中的标签语言文件发送回客户端。
2)动态超文本
需要通过软件技术来实现创建和处理动态文本。如CGI JavaServlet等技术,将URL中的’?’ 之后的动态部分做解析并生成动态文档。
并且可以嵌入脚本语言交付给浏览器中的解析引擎来提高动态文档效率,使文档中不必要的重复的部分独立解析完成,甚至可以实现活动文档,直接在文档上运行字节码形成的Java程序或JavaScript脚本
二、HTTP运行事务
报文分组
如下图是通用的HTTP请求和响应报文模型
1.请求报文
如下图:
1)请求行的主要内容:
请求行主要的方法:
GET:请求服务器的文档
HEAD:请求关于文档的信息,但不是这个文档本身
POST:从客户机向服务器发送一些信息
PUT:从服务器向客户发送文档
TRACE:把到达的请求回送
CONNECT:保留
DELETE:删除web网页
OPTIONS:询问关于可用的选项
URL:统一资源定位符,是在因特网上知名任何类的信息的标准。URL定义的是四样东西:
协议://主机:端口号/路径
接下来是版本:目前HTTP的最新版本是1.1,就版本还有1.0
2)接下来的请求头,也叫首部头
是客户向服务器发送信息时的附加信息,数量为0到多个。
格式,每个首部行有一个首部名,一个冒号,一个空格,和一个首部值。
有很多首部,这里不做具体介绍。
2.响应报文
格式如下
1)状态行的介绍
版本同上:
状态码:1-199(指定客户端相应的某些动作)、200-299(请求成功)、300-399(已经移动的文件并且包含在定位头中指定的新的地址信息)、400-499(指出客户端的错误)、500-599(用于支持服务器错误)
短语:和状态码相对应的,如常见的404对应not found。403对应Forbidden
2)首部行:同之前
3.两个实例
利用抓包工具抓了两包数据来看看。
GET请求
这里是回应
三、连接模型
如图

服务端使用了80端口作为TCP连接的接收端,http本身是个无状态的协议,服务端不会保留客户端的信息。
每次HTTP永远都是客户端发起请求,然后服务端回复响应
关于长连接和短连接:
长连接:HTTP1.1之后默认使用了长连接,长连接使数据传输完成之后保持TCP不断开,等待在同域名下继续使用这个通道传输数据。
短连接:对于每个请求/.响应都要建立一次TCP连接
HTTP1.0中使用的是HTTP首部Connection:keep=alive来进行长连接的实验性拓展。
长连接模式下,当客户端向服务器发送请求之后,客户端如何判断服务器的数据已经完成?
1)通过服务器关闭连接来被动的关闭HTTP的TCP连接
2)通过消息首部字段content-legnth来判断数据传输是否完毕
3)还可以用消息首部字段Transfer-Encoding来协助判断
四、关于HTTP中的Cookie
Cookie的实质就是一个键值对。
当client向server发送请求时,浏览器先查找cookie目录中是否有那个服务器发送的cookie,如果有的话就把相应的cookie包含在请求头之中。
当这个cookie包含在请求之中的时候服务器就知道这个客户是个老客户了,cookie的使用者和消费者都是服务器。
在HTTP报文分组中,与其功能相关的首部是cookie首部和set-cookie首部。
五、关于HTTP的安全
HTTP本身并不提供安全,然而通过在传输层和应用层中使用安全套接层(SSL)可以使HTTP运行在安全的环境下,即HTTPS。
HTTPS可以提供保密性,客户和服务器鉴别以及数据的完整性。
SSL的设计时是为了给应用层生成的数据提供安全以及压缩服务,一版来说SSL能接收来自任何应用层协议的数据,但最多情况下这个应用层的协议就是HTTP。
SSL对应用层传来的数据提供多种服务:
1)分片:SSL把数据划分成长度小于或等于2的14次方字节的数据分片
2)压缩:数据分片通过使用一种由客户端和服务器协商好的无损压缩方式进行压缩,这个服务是可选的。
3)报文完整性:为了保护数据的完整性,SSL使用密钥散列函数来创建MAC
4)保密:为了提供保密性,原始的数据和MAC一起用对称密钥加密技术来加密。
5)组帧:先在被加密的有效荷载上添加一个首部,然后再把这个有效载荷传递给可靠的运输层协议。
关于HTTP的笔记的更多相关文章
- git-简单流程(学习笔记)
这是阅读廖雪峰的官方网站的笔记,用于自己以后回看 1.进入项目文件夹 初始化一个Git仓库,使用git init命令. 添加文件到Git仓库,分两步: 第一步,使用命令git add <file ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- SQL Server技术内幕笔记合集
SQL Server技术内幕笔记合集 发这一篇文章主要是方便大家找到我的笔记入口,方便大家o(∩_∩)o Microsoft SQL Server 6.5 技术内幕 笔记http://www.cnbl ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- NET Core-学习笔记(三)
这里将要和大家分享的是学习总结第三篇:首先感慨一下这周跟随netcore官网学习是遇到的一些问题: a.官网的英文版教程使用的部分nuget包和我当时安装的最新包版本不一致,所以没法按照教材上给出的列 ...
- springMVC学习笔记--知识点总结1
以下是学习springmvc框架时的笔记整理: 结果跳转方式 1.设置ModelAndView,根据view的名称,和视图渲染器跳转到指定的页面. 比如jsp的视图渲染器是如下配置的: <!-- ...
- 读书笔记汇总 - SQL必知必会(第4版)
本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
随机推荐
- 题解 P4512 【【模板】多项式除法】
题目地址 前言 原理有大佬写了 所以蒟蒻只讲下本题的代码细节 我看懂的大佬博客:博客地址 因为可能知道了大致的步骤还有很多细的地方不理解导致写的时候要花很久并且看到大佬们好像都是用递归写的希望能有帮助 ...
- POJ-3436 ACM Computer Factory(网络流EK)
As you know, all the computers used for ACM contests must be identical, so the participants compete ...
- centos7/RHEL7最小化系统安装gnome图形界面
应用场景:对于比较熟悉linux系统的用户来说,全命令行系统可能来的比较简单明了高效,也存在某些情况下需要有像winodws下弹出对话框的情形需求,或者对于初识linux习惯windows界面的用户来 ...
- Python3 与 C# 面向对象之~继承与多态
2.继承¶ 代码裤子:https://github.com/lotapp/BaseCode 在线编程:https://mybinder.org/v2/gh/lotapp/BaseCode/mast ...
- CAS与ABA问题产生和解决
乐观锁和悲观锁 Synchronized属于悲观锁,悲观地认为程序中的并发情况严重,所以严防死守.CAS属于乐观锁,乐观地认为程序中的并发情况不那么严重,所以让线程不断去尝试更新. 性能对比: Syn ...
- 用table绘制 等宽等间距的单元
css: .test1 { empty-cells: show;/*show:指定当表格的单元格无内容时,显示该单元格的边框.*/ border-spacing: 10px 10px;/*用长度值来定 ...
- HDU/HDOJ 4699 Editor
对顶栈算法. 此题充分说明了cin的不中以及scanf的优越性. 我TM用cin超时了!!!换成scanf就A了!!! #include <cstdio> #include <cst ...
- 【洛谷P3275】糖果
题目大意:维护 M 个差分约束关系,问是否可以满足所有约束,如果满足输出一组解.\(N<=1e5\) 题解:差分约束模型可以通过构建一张有向图来求解.是否满足所有约束可以利用 spfa 进行判断 ...
- C# winform TreeView中关于checkbox选择的完美类[转]
http://www.cnblogs.com/kingangWang/archive/2011/08/15/2139119.html public static class TreeViewCheck ...
- Day28--Python--网络通信协议 tcp与udp下的socket
昨日内容回顾: 1. CS架构 服务端客户端架构 软件CS架构: 京东,淘宝,QQ,微信,暴风影音,快播 硬件CS架构: 打印机 服务端: 提供服务的 客户端: 享受服务的 BS架构: 浏览器和服务端 ...