当面试被问到HTTP以后

1 篇文章 0 订阅

遇见问题不要慌,首先回答HTTP是什么有什么特点,然后针对它的特点进行解释当然这是被虐以后的感悟。

1、HTTP是什么。
2、HTTP分为两段,客户端和服务器端。
3、请求和相应的报文格式。
4、HTTP底层采用TCP协议进行传输的。
5、HTTP1.1以后是长连接。
6、HTTP是无状态的。
7、使用cookie来进行状态管理。
8、请求步骤。
9、HTTP和HTTPS。
1、HTTP是什么。
1.1 HTTP概念。

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。
HTTP是基于TCP/IP协议族上应用层的实现,在应用层上实现的协议还有FTP(用于文件的传输),DNS(用于解析域名)等。

1.2 HTTP特点。

简单快速:客户端向服务器端传递请求只需要传入请求方式和路径就可以了。

灵活:可以传输任意类型对象,传输的类型可以用Content-Type来标识。

无连接:一次请求即返回一个资源,但是在HTTP1.1默认为长连接,就是一次请求之后不会理解关闭连接通道。

无状态:对事物没有记忆功能后面会详细讲解。

2、HTTP分为两段,客户端和服务器端。

HTTP协议分为两端,客户端和服务器端。服务器端需要一直保持着正常运行等待客户端的请求,针对客户端的请求回应相应的响应数据。

3、请求和相应的报文格式。

这里解释的是HTTP的第一个特点,简单。简单主要体现在报文格式。快速是因为HTTP协议简单,是的HTTP服务的程序规模小,所以速度快。

3.1 HTTP的请求报文


报文格式简单明了,来看一个实际的请求。

3.2 HTTP的响应报文

在这里插入图片描述
不管是请求的报文还是响应的报文都是用空行来标识请求头结束,来区分请求头和请求体。HTTP可以传输任意类型的数据,通过Content-type来做标识,体现出它的灵活性。

4、HTTP底层采用TCP协议进行传输的。

HTTP底层是通过TCP进行传输的,所以传输信息是可靠的。有机会会进一步分析一下TCP和UDP的区别,以及TCP三次握手机制。

5、HTTP1.1以后是长连接。

在以前的HTTP协议每一次请求只能请求到一个资源然后就关闭连接了,在HTTP1.1之后就采用了长连接形式,请求到资源以后并不会马上关闭连接,可以接着发起请求。

6、HTTP是无状态的。

HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

7、使用cookie来进行状态管理。

在很多页面上都有登录功能,HTTP这种无状态会导致我们每一次进入都要重新登录,给用户的体验很差,此时可以用cookie对状态进行管理,可以在客户端设置cookie,请求的时候把cookie传递给服务器端,服务器拿到这个cookie就能找到对应的用户。

8、请求步骤。

第一步 根据主机和端口建立一个TCP链接。
第二步 将封装好的请求行、请求头、和请求体的报文通过TCP发送给服务器。
第三步 服务器将响应行、响应头和响应体通过TCP发送给客户端。
第四步 释放链接 如果connection模式为close的话则会关闭这个TCP链接,如果connection是keep-alive则这个链接会保存一段时间。

9、HTTP和HTTPS的区别。

HTTPS其实就是 HTTP + SSL。
1、HTTPS需要CA证书。
2、HTTPS是加密传输的。
3、加密双方需要SSL加密认证的。
4、HTTPS的端口号是443。
那么HTTPS是如何做到传输的安全性呢?
主要用到 对称加密(AES、DES)、非对称加密(RES、DSE)、hash散列算法(MD5 SHA1 SHA256)和CA证书。

1、存在问题如何确保从服务器获取的公钥没有篡改。
2、客户端和服务器端如何商定对称加密的key。

如何保证服务器公钥的准确性
服务端首先会将自己的公钥通过CA机构进行加密得到一个license,客户端请求的时候会将这个license发送给客户端,此时客户端通过本地的证书解密合法就可以获得到这个公钥说明这个公钥没有被修改。

客户端和服务器端如何商定对称加密的key
第一步 客户端将自己的 SSL版本、非对称算法、随机数1 发送个服务器端。
第二步 服务器端确定好SSL版本 对称算法 随机数2 证书等发送给客户端。
第三步 客户端校验证书,如果合格进行下一步。
第四步 客户端产生随机数3 并将第一步 第二步的信息做hash算法值传递到服务器端。
第五步 服务器端 拿到随机数,也将第一步和第二步的数据进行摘要得到hash值,判断两者是否一致(一致说明数据没有篡改),并那随机数1、2、3生成一个key作为对称加密的key。
第六步 将第一步、第二步、第四步的值进行进行摘要生成值传递给客户端。
第七步 客户端收到服务器端的值,并且将第一步、第二步、第四步的数据进行摘要,比较值是否一致,如果一致也那随机数1、随机数2、随机数3生成对称加密的key。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值