Http和Https的了解

http和https属于计算机网络的范畴,但是作为测试人员,我们也每天和这些请求打交道,所以掌握它们也是个必备的技能。

将会从以下几个方面进行阐述:

1、网络层结构

2、Http协议

3、Https协议/SSL协议

4、Tcp三次握手

5、http和https对比


1、网络层结构


网络结构有两种主流的分层方式:OSI七层模型和TCP/IP四层模型。

OSI是指Open System Interconnect,意为开放式系统互联。

TCP/IP是指传输控制协议/网间协议,是目前世界上应用最广的协议。

OSI层对应TCP/IP层OSI各层功能网络协议设备

应用层应用层应用程序(电子邮件,文件服务)用户接口HTTP,FTP,

TFTP,NFS

网关

表示层应用层数据的表示,压缩和加密(数据格式化,代码转化,数据加密)TELNET,SNMP网关

会话层应用层建立、管理和终止会话SMTP,DNS网关

传输层传输层提供端到端可靠报文和错误回复TCP,UDP网关

网络层网际互联层提供数据包从源到宿的传递和网际交互IP,ICMP,ARP,RARP,UUCP路由器

链路层网络接口层将比特组装成帧和点到点传递FDDI,SLIP,

PPP,PDN

交换机

物理层网络接口层传输比特流,以二进制数据形式在物理媒体上传输数据ISO2110,

IEEE802,

IEEE802.2

集线器,

中继器’

两种模型的区别:


1.OSI采用七层模型,TCP/IP协议的是四层模型

2.TCP/IP网络接口层没有真正的定义,知识概念性的描述。OSI把他分为2层,每一层功能详尽、

3.在协议开发之前,就有了OSI模型,所以OIS模型具有共通性,而TCP/IP是基于协议建立的模型,不适用于非TCP/IP的网络。

4.实际意义中,OIS模型是理论上的模型,没有成熟的产品,而TCP/IP已经成为国际标准。



2、HTTP协议


http协议是基于TCP/IP协议的应用程序协议,不包括数据包的传输,主要规定了客户端和服务器的通信格式,默认使用80端口。


http协议的发展史


1. 1991年发布http/0.9版本,只有get命令,而且服务器只返回HTML格式字符串,服务器响应完毕就关闭tcp连接。 

2. 1996年发布Http/1.0版本,

优点:可以发送任何格式内容,包括文字、图像、视频、二进制。也丰富了命令Get,Post,Head。请求和响应的格式加入头信息。

缺点:每个TCP连接只能发送一个请求,而新建TCP连接的成本很高,导致Http/1.0新能很差。

3. 1997发布Http/1.1版本,完善了Http协议,直至20年后的今天仍是最流行的版本。

优点:

a. 引入持久连接,TCP默认不关闭,可被多个请求复用,对于一个域名,多数浏览器允许同时建立6个持久连接。

b. 引入管道机制,即在同一个TCP连接中,可以同时发送多个请求,不过服务器还是按顺序响应。

c. 在头部加入Content-Length字段,一个TCP可以同时传送多个响应,所以就需要该字段来区分哪些内容属于哪个响应。

d. 分块传输编码,对于耗时的动态操作,用流模式取代缓存模式,即产生一块数据,就发送一块数据。

e. 增加了许多命令,头信息增加Host来指定服务器域名,可以访问一台服务器上的不同网站。

缺点:TCP连接中的响应有顺序,服务器处理完一个回应才能处理下一个回应,如果某个回应特别慢,后面的请求就会排队等着(对头堵塞)。

4. 2015年发布Http/2版本,它有几个特性:二进制协议、多工、数据流、头信息压缩、服务器推送。


Http请求和响应格式


Request格式:



Response格式:



下面解释下请求头和响应头的部分字段:

Host: 指定服务器域名,可用来区分访问一个服务器上的不同服务

Connection: keep-alive表示要求服务器不要关闭TCP连接,close表示明确要求关闭连接,默认值是keep-alive

Accept-Encoding: 说明自己可以接收的压缩方式

USer-Agent: 用户代理,是服务器能是被客户端的操作系统(Android、iOS、web)及相关的信息。作用是帮助服务器区分

      客户端,并且针对不同客户端让用户看到不同数据,做不同的操作

Content-Type:服务器告诉客户端数据的格式,常见的值有text/plain,image/jpeg,image/png,video/mp4,application/json,application/zip。这些数据类型总称为MIME TYPE。

Content-Encoding:服务器数据压缩方式

Transfer-Encoding:chunked表示采用分块传输编码,有该字段则无需使用Content-Length字段。

Content-Length:声明数据的长度,请求和回应头部都可以使用该字段。


3、Https协议/SSL协议


Https协议是以安全为目标的Http通道,简单来说就是Http的安全版。主要是在Http下加入SSL层(现在主流的是SLL/TLS),SSL是Https协议的安全基础。Https默认端口号为443。


窃听风险:Http采用明文传输数据,第三方可以获知通信内容

篡改风险:第三方可以修改通信内容

冒充风险:第三方可以冒充他人身份进行通信

SSL/TLS协议就是为了解决这些风险而设计,希望达到:

所有信息加密传输,三方窃听通信内容

具有校验机制,内容一旦被篡改,通信双发立刻会发现

配备身份证书,防止身份被冒充

4、Tcp三次握手

Http和Https协议请求都会通过Tcp三次握手建立Tcp连接。当时记得面试的时候自己看了好多次TCP相关的知识,因为面试很可能会问到这个问题。下面介绍具体的三次握手:

那么为什么一定要握手三次,一次两次难道不行么?重新回顾这个问题,认真的分析下为什么必须是三次握手。


第一次握手,A向B发送信息后,B收到信息。B可确认A的发信息能力和B的收信息能力

第二次握手,B向A发送消息,A收到消息。A可确认A的发信息能力和收信息能力,A也可以确认B的收信息能能力和B的发信息能力

第三次握手,A向B发送消息,B收到消息。B可确认A的收信息能力和B的发信息能力


通过三次握手,A和B都能确认自己和对方的收发信息能力,相当于建立了互相的信任,就可以开始通信了。


下面看一下三次握手具体发送的内容,用一张图描述如下:


首先,介绍一下几个概念:

ACK:响应标识,1表示响应,连接建立成功之后,所有报文段ACK的值都为1

SYN:连接标识,1表示建立连接,连接请求和连接接受报文段SYN=1,其他情况都是0

FIN:关闭连接标识,1标识关闭连接,关闭请求和关闭接受报文段FIN=1,其他情况都是0,跟SYN类似

seq number:序号,一个随机数X,请求报文段中会有该字段,响应报文段没有

ack number:应答号,值为请求seq+1,即X+1,除了连接请求和连接接受响应报文段没有该字段,其他的报文段都有该字段

知道了上面几个概念后,看一下三次握手的具体流程:

第一次握手:建立连接请求。客户端发送连接请求报文段,将SYN置为1,seq为随机数x。然后,客户端进入SYN_SEND状态,等待服务器确认。

第二次握手:确认连接请求。服务器收到客户端的SYN报文段,需要对该请求进行确认,设置ack=x+1(即客户端seq+1)。同时自己也要发送SYN请求信息,即SYN置为1,seq=y。服务器将SYN和ACK信息放在一个报文段中,一并发送给客户端,服务器进入SYN_RECV状态。

第三次握手:客户端收到SYN+ACK报文段,将ack设置为y+1,向服务器发送ACK报文段,这个报文段发送完毕,客户端和服务券进入ESTABLISHED状态,完成Tcp三次握手。

从图中可以看出,建立连接经历了三次握手,当数据传输完毕,需要断开连接,而断开连接经历了四次挥手:

第一次挥手:主机1(可以是客户端或服务器),设置seq和ack向主机2发送一个FIN报文段,此时主机1进入FIN_WAIT_1状态,表示没有数据要发送给主机2了

第二次挥手:主机2收到主机1的FIN报文段,向主机1回应一个ACK报文段,表示同意关闭请求,主机1进入FIN_WAIT_2状态。

第三次挥手:主机2向主机1发送FIN报文段,请求关闭连接,主机2进入LAST_ACK状态。

第四次挥手:主机1收到主机2的FIN报文段,想主机2回应ACK报文段,然后主机1进入TIME_WAIT状态;主机2收到主机1的ACK报文段后,关闭连接。此时主机1等待主机2一段时间后,没有收到回复,证明主机2已经正常关闭,主机1页关闭连接。


下面是Tcp报文段首部格式图,对于理解Tcp协议很重要:


5、Http协议和Https协议的对比

Http和Https的区别如下:

https协议需要到CA申请证书,大多数情况下需要一定费用

Http是超文本传输协议,信息采用明文传输,Https则是具有安全性SSL加密传输协议

Http和Https端口号不一样,Http是80端口,Https是443端口

Http连接是无状态的,而Https采用Http+SSL构建可进行加密传输、身份认证的网络协议,更安全。

Http协议建立连接的过程比Https协议快。因为Https除了Tcp三次握手,还要经过SSL握手。连接建立之后数据传输速度,二者无明显区别。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342