美文网首页
Http和Https的了解

Http和Https的了解

作者: 咸鱼飞起来啦 | 来源:发表于2020-10-16 11:07 被阅读0次

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握手。连接建立之后数据传输速度,二者无明显区别。

相关文章

  • Http和Https的了解

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

  • 了解HTTP/HTTPS

    一、 了解HTTP/HTTPS 1、 HTTP构建于TCP/IP协议之上,默认端口号是80 2、 HTTP主要特点...

  • 深入了解 Http 和 Https 的区别

    前言:我们都知道ssl (Secure Sockets Layer) 还没出市之前 我们网页使用的都是http:x...

  • HTTP和HTTPS

    1. HTTP和HTTPS的区别 超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP...

  • HTTP和HTTPS

    http协议运行在TCP之上,明文传输,客户端和服务端都无法验证对方的身份;Https是身披SSL(Secure ...

  • HTTP和HTTPS

    1、HTTP是什么? HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TC...

  • HTTP和HTTPS

    超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何...

  • http和https

  • HTTP和HTTPS

    超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提...

  • http和https

    http和https的概念 HTTP是客户端浏览器或其他程序与Web服务器之间的应用层通信协议。在Internet...

网友评论

      本文标题:Http和Https的了解

      本文链接:https://www.haomeiwen.com/subject/fdrfuktx.html