Http相关内容

http相关内容

http基础概念和依赖协议

http,超文本传输协议,一种无状态连接协议,处于TCP/IP协议族中的应用层,和Http同处于一层的协议有DNS协议(主要负责域名解析的协议),http协议还依赖TCP(传输层),依赖IP协议(网络层)和物理设备和驱动(链路层)。

一个常见http请求的执行流程,比如浏览器输入 www.baidu.com 整个执行流程

  1. 首先通过DNS协议查询 www.baidu.com 地址的IP地址
  2. 浏览器根据 www.baidu.com ,IP地址,GET请求方式,还有一些请求头信息
  3. 将http封装的请求数据包,通过TCP协议发送数据包,TCP通过三次握手获取客户端-服务器连接,整个数据包有可能不是一次性发送到服务器端,可能切分成很多合适的大小的数据包进行发送,每发送一个数据包,发送方都需要接收方返回一个确认码来确保这个数据包是到达接收方的,如果在发送某一个数据包没有接收到确认码的话,会进行重发,直到断开超时断开
  4. 每一个TCP切分好数据包,在通过IP协议,在进行包装;主要作用是确保数据包到达目标服务器
  5. 服务器接收到所有IP数据包,然后拆包成TCP数据包,然后根据TCP数据包拆包解析成http数据包,然后发现客户端GET请求,获取 www.baidu.com 资源,然后将该url对应的资源进行封装成数据包,再通过TCP协议,IP协议封装然后到达客户端
  6. 最后客户端获取到http请求返回数据包解析成指定的文件,然后对这些文件进行渲染样式之后就变成请求的页面了
u=1483676830,597547372&fm=27&gp=0.jpg

http两个重要特性

无状态

无状态指的是http每一个请求都是独立的,没有任何关联,也是因为这个特性所以http协议推出了cookie的技术来进行会话管理的实现

单向性

单向性是指的是,请求只能是客户端主动发起请求,然后服务器端进行响应,http请求无法从服务器端直接发起,客户端进行响应,也是因为这个原因所以后来才有的WebSocket的技术来补充http协议的不足

http请求方式

请求方式 描述
GET 请求指定的页面信息,并返回实体主体
HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改
PUT 从客户端向服务器传送的数据取代指定的文档的内容
DELETE 请求服务器删除指定的页面
CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器
OPTIONS 允许客户端查看服务器的性能
TRACE 回显服务器收到的请求,主要用于测试或诊断

http常见请求头标签

请求头 描述
Accept 通知服务器,目前客户端可以接受的数据类型
Accept-Language 客户端,目前可以接受的字符集类型
Accept-Encoding 客户端,可以接受的压缩方式
host 用来区分同一IP下的,不同应用
Upgrade-Insecure-Requests 指的是浏览器可以支持,http 相关的请求自动升级成 https
Connection http1.1之后,这个标签的值通过是keep-alive,意思多个http请求,公用一个TCP连接通道
Cache-Control 缓存控制,max-age=0的时候,意思就是不缓存
Cookie 服务器提供用来记录会话,或者存储一下简单数据的键值对
User-Agent 客户端目前所处环境信息,比如系统信息,浏览器信息等等之类
Referer 查看请求发起源

http常见响应头标签

响应头 描述
Cache-Control 控制缓存
Connection 和请求头里是一样的
Content-Encoding 响应报文压缩方式
Content-Type 响应文件类型
Date 响应报文创建时间
Server 服务器类型
Transfer-Encoding: chunked 分块传输标识

常见响应码

响应码 描述
2xx 成功
3xx 重定向
4xx 客户端错误
5xx 服务器错误

有一个比较特殊的响应码304响应码,该状态码表示客户端发送附带条件的请求时,服务器端允许请求访问资源,但未满足条件的情况;附带条件就比如说,GET请求的时候,请求中包含了If-Match, If-Modified-Since, If-None-Match等等是If开头的请求体的时候,然后服务器又不满足条件的时候,就返回304

Cookie与会话管理

cookie指的是服务器发送给客户端的一个键值对的数据;cookie主要有以下几个属性,有一点必须说明一下,一旦cookie被服务器发送给客户端,那么只能是客户端进行管理,服务器端是服务管理客户端的cookie内容的,唯一的办法就是通过发送相同的cookie来进行原来的cookie进行替换,来达到删除的效果

  1. key-value,cookie主要内容
  2. expires属性,设置cookie有效期时间,如果不设置的话,那么默认一般来说,就是最大生命周期是关闭浏览器的时间
  3. path属性,用来限制cookie发送的文件目录
  4. domain属性,通常来说,可以不用设置,默认就是当前域名;但是如果要达到多域名共享会话的时候,那可能需要手动设置了,比如deal.isuwang.com和personal.isuwang.com需要共享会话的,那么cookie的domain就需要设置成 .isuwang.com
  5. secure属性,用来限制cookie只在是https安全连接下才发送cookie,这样做的好处,就是防止cookie劫持的情况出现
  6. HttpOnly属性,用来限制客户端恶意修改cookie的内容,有这个属性的cookie,就无法在js中修改,只能由服务器重新进行设置值;但是实际上这样的cookie还是可以修改的,chrome的客户端有一些cookie相关的插件也是可以修改这样的cookie

会话管理指的是,记录客户端-服务器之间的通信的状态,但是由于http是一种没有没有连接状态的一种通信协议,每一次http请求都是一个全新的请求,所以两次http请求无法共享一个上下文来记录会话,但是大部分服务器都是通过cookie来进行会话管理的,比如说Tomcat是采用一个JSESSIONID的cookie来进行会话控制的,每一个浏览器在访问是Tomcat的时候,Tomcat都会给客户端提供一个JESSIONID的cookie,这个cookie每一个客户端是不会重复的,那么服务器端,可以根据JESSIONID来创建一块单属于特定客户端的内存区域,来存放客户端-服务器之间会话内容

http与https

由于http,明文传输,通信通道没有加密,等等因素,导致http是一个不安全的协议,于是就有了https

https = http + 加密通道(SSL)+ 不对称加密/解密方式 + 证书

SSL加密通道

SSL:介于http协议和TCP协议之间一个协议,是一个安全的传输协议

不对称加密/加密方式

在Https中不对称加密的做法是,通过证书中的公钥进行加密,私钥只有服务器端才有持有,也就说只有服务器端才能解密客户端的请求

证书

证书的主要内容包括三部分:1. 服务器公钥; 2. 服务器的相关信息(比如IP地址,比如认证信息等等); 3. 证书颁发机构数字签名

公钥的作用:用来加密请求信息
服务器相关信息作用:用来验证服务器信息
数字签名作用:用来验证证书的有效期

总的来说,证书的作用就是,用来建立SSL加密通道,验证服务器相关信息,加密客户端的请求

https请求流程

https主要是http中http请求,和建立TCP连接通道之间额外加上了SSL通道;主要是多了一下几个步骤

  1. 从服务器获取上证书
  2. 通过证书上的数字签名找到第三方认证机构校验证书的真实性
  3. 校验通过后,通过借助证书建立SSL连接通道,对需要发送的http请求进行加密

Http2.0

作为http2.0的时代,首先第一点需要说明,http2.0不兼容http1.x版本;改版之后的新特性有

  1. http2.0首部压缩;比如说访问 www.baidu.com 需要加载大量的资源,比如目标页面,页面样式,页面js等等,还有一些的图片;在http2.0下这些资源的加载可以复用请求头,从而达到请求头压缩的效果,减少头部数据的传输
  2. 所有http2.0请求都在一个TCP链接上,这样做的好处,减少服务器创建连接开销;TCP链接使用效率提高
  3. http2.0请求优先级设定,可以让客户端首先加载重要的资源
  4. http2.0服务器主动推送,由于是http1.x时代,所有的请求只能是由客户端发起,然后服务器再进行响应,这样导致在协议层面就限制了http1.x无法实现服务器主动推送数据的动作
  5. 等等新特性。。。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 210,914评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 89,935评论 2 383
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,531评论 0 345
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,309评论 1 282
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,381评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,730评论 1 289
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,882评论 3 404
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,643评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,095评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,448评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,566评论 1 339
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,253评论 4 328
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,829评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,715评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,945评论 1 264
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,248评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,440评论 2 348

推荐阅读更多精彩内容