面试之http和https

序言

这篇文章会根据http和https,捋清楚所有相关的知识,可以在面试的时候清晰的说出来。有七层模型,http和https,tcp和udp…

OSi七层模型

【物联网叔会使用】

  1. 应用层 : 为计算机用户提供服务。

HTTP(HyperText Transfer Protocol)、FTP(File Transfer Protocol)、SMTP(Simple Mail Transfer Protocol)、DNS(Domain Name System)、Https等,用于实现文件传输、电子邮件、Web浏览、域名解析等应用。应用层还负责处理用户界面、数据格式化和应用程序的交互。

  1. 表示层: 数据处理(编码,解码,加密解密,压缩解压缩)

确保数据在发送端和接收端之间的表示方式一致,使数据能够被正确理解和处理。表示层还负责数据的语法和语义转换,以确保不同系统之间数据的兼容性。

  • 会话层: 管理(建立,维护,重连)应用程序之间的会话(两个或多个应用之间的通信会话)
  • 传输层:为两台主机进程之间的通讯提供通用的数据传输服务(数据的分段和重组,提供端到端的数据服务,可靠与不可靠,tcp和udp)
  • 网络层: 路由和寻址(决定数据在网络的游走路径)
  • 数据链路层: 把数据封装成帧;并且对帧编码的误差纠正控制。

数据链路层位于物理层之上,主要负责在物理层提供的比特流上建立、维护和终止数据链路,确保数据的无差错传输。

  • 物理层: 传输比特流

关注的是网络通信的物理方面,包括传输介质(如电缆、光纤等)、信号类型(如电压、光脉冲)以及接口类型。物理层的任务是将数据转换成信号,通过物理介质传输这些信号,以及接收信号并将其转换回数据。物理层的协议和标准包括Ethernet、Token Ring等。

OSi七层模型和TCP/IP的四层模型

在这里插入图片描述
在这里插入图片描述

http和http所在层次关系

请添加图片描述
可以看出https和http的区别是,https多了ssl/tls协议,
在传输层 有tcp和udp两种协议,他们的区别是什么呢?

TCP和UDP的区别

TCP(Transmission Control Protocol):

面向连接的协议,建立连接前需要三次握手
提供可靠的数据传输,通过序列号和确认应答来保证数据的正确顺序和完整性。
使用流量控制和拥塞控制机制防止数据丢失。
网页浏览(通过HTTP/HTTPS协议)、邮件传输(SMTP或POP协议)、文件传输(FTP)‌
较慢,因为有额外的开销,如确认和重新传输机制。

UDP(User Datagram Protocol):

无连接的协议,发送数据之前不需要建立连接。
不保证数据的可靠性和顺序,适合实时应用,如语音和视频流。
开销较小,因为没有TCP的额外控制机制。
快速,适用于对延迟敏感的应用程序。

TCP和UDP分别在应用层有哪些协议?

TCP

  • http
  • https
  • 文件传输ftp
  • smtp电子邮件传输
  • telnet互联网远程协议

UDP

  • DNS域名解析
  • dhcp动态分配ip地址
  • tftp轻便的文件传输没有鉴权和连接,支持大多数内核引导加载程序和其他小下载文件
  • snmp监管网络设备

什么是三次握手,四次挥手?

三次握手

  1. 客户端发送一个SYN(Synchronize)数据包给服务器,请求连接。
  2. 服务器回应一个SYN+ACK(Acknowledgement)数据包,确认客户端的请求并发起自己的请求。
  3. 客户端再发送一个ACK数据包给服务器,确认收到服务器的SYN+ACK,连接建立。

为什么有第三次握手?
为了确保双方都具备发送和接收数据的能力
第一次握手是为了服务器端准备接收客户端请求的数据,
第二次握手是为了客户端确认服务器端是否有接收请求的能力,
第三次握手是为了服务器端确认客户端的接收能力。
通过三次握手,可以建立可靠的双向数据传输通道。

四次挥手

  1. 任一端发送一个FIN(Finish)数据包给对方,请求关闭连接。
  2. 接收方回应一个ACK数据包,确认收到FIN数据包。
  3. 当接收方也准备好关闭连接时,它发送自己的FIN数据包。
  4. 发送方回应一个ACK数据包,确认接收到对方的FIN数据包,连接断开。

Http和Https的区别

http: 超文本传输协议,以明文的方式发生内容,不提供数据加密
https: 安全超文本传输协议,是http的一个安全版 是http加入了ssl安全协议HTTPS 的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。SSL 依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密
HTTP(HyperText Transfer Protocol)与HTTPS(HyperText Transfer Protocol Secure)是两种用于在Web上交换数据的协议,它们的主要区别在于安全性和数据传输的方式。以下是HTTP与HTTPS之间的详细区别:

  1. 加密
    HTTP:数据在传输过程中是以明文形式发送的,这意味着任何能够监听网络的人都可以看到传输的内容。
    HTTPS:使用SSL(Secure Sockets Layer)或TLS(Transport Layer Security)加密数据,确保数据在客户端和服务器之间的传输是安全的。数据在发送前被加密,在接收端解密,这增加了数据的保密性和完整性。
  2. 证书认证
    HTTP:没有证书认证过程,无法验证服务器的真实身份。
    HTTPS:服务器会向客户端发送数字证书,证书中包含了服务器的公钥和其它相关信息。客户端可以使用证书颁发机构(CA)的公钥来验证服务器证书的有效性,确保与之通信的服务器是可信的。
  3. 端口号
    HTTP:默认使用TCP端口80。
    HTTPS:默认使用TCP端口443。
  4. 安全性
    HTTP:不提供数据加密,容易遭受中间人攻击和数据窃听。
    HTTPS:通过加密和认证机制提供更强的安全性,保护用户数据免受窃听和篡改。
  5. 可信性
    HTTP:无法验证网站的真实性,容易遭受钓鱼网站攻击。
    HTTPS:通过证书验证网站身份,增加用户信任,防止用户误入假冒网站。
  6. SEO影响
    HTTP:没有直接的SEO优势。
    HTTPS:Google和其他搜索引擎已经将HTTPS作为排名因素之一,使用HTTPS的网站可能会在搜索结果中获得更高的排名。
  7. 用户体验
    HTTP:用户在访问网站时可能担心数据安全问题,尤其是在提交敏感信息时。
    HTTPS:用户可以更加放心地使用网站,浏览器会显示安全指示符(如绿色锁图标),增加用户的信心。
  8. 技术层面
    HTTP:仅在应用层运作,数据传输不经过加密。
    HTTPS:结合了应用层的HTTP协议和传输层的SSL/TLS协议,实现了加密传输和身份认证。
  9. 成本
    HTTP:无需额外成本。
    HTTPS:需要购买和维护SSL/TLS证书,这可能涉及到一定的成本,尤其是对于高级别的证书。
    总的来说,HTTPS提供了比HTTP更安全的网络通信环境,保护了用户和网站的数据安全,同时也提高了网站的信誉度和搜索引擎排名。随着网络安全意识的增强,越来越多的网站选择采用HTTPS协议。
    http比https快 因为https需要解密之类的会花费很多时间

Http的请求流程

DNS域名解析 –> 发起TCP的三次握手 –> 建立TCP连接后发起http请求 –> 服务器响应http请求,浏览器得到html代码 –> 浏览器解析html代码,并请求html代码中的资源(如javascript、css、图片等) –> 浏览器对页面进行渲染呈现给用户

举个例子在浏览器中输入www.baidu.com后执行的全部过程:
(1) 浏览器获取输入的域名www.baidu.com
(2) 浏览器向DNS请求解析www.baidu.com的IP地址
(3) 域名系统DNS解析出百度服务器的IP地址
(4) 浏览器与该服务器建立TCP连接(默认端口号80)
(5) 浏览器发出HTTP请求,请求百度首页
(6) 服务器通过HTTP响应把首页文件发送给浏览器
(7) TCP连接释放
(8) 浏览器将首页文件进行解析,并将Web页显示给用户。

Https的工作流程

在这里插入图片描述

  1. 用户在浏览器里输入一个 https 网址,然后连接到到 server 443 端口。
  2. 服务器必须要有一套数字证书,可以自己制作,也可以向组织申请,区别就是自己颁发的证书需要客户端验证通过。这套证书其实就是一对公钥和私钥。
  3. 服务器将自己的数字证书(含有公钥)发送给客户端。
  4. 客户端收到服务器端的数字证书之后,会对其进行检查,如果不通过,则弹出警告框。如果证书没问题,则生成一个密钥(对称加密),用证书的公钥对它加密。
  5. 客户端会发起 HTTPS 中的第二个 HTTP 请求,将加密之后✁客户端密钥发送给服务器
  6. 服务器接收到客户端发来的密文之后,会用自己的私钥对其进行非对称解密,解密之后得到客户端密钥,然后用客户端密钥对返回数据进行对称加密,这样数据就变成了密文。
  7. 服务器将加密后的密文返回给客户端。
  8. 客户端收到服务器发返回的密文,用自己的密钥(客户端密钥)对其进行对称解密,得到服务器返回的数据。

什么是SSL

SSL 由 Netscape 公司于1994年创建,它旨在通过Web创建安全的Internet通信。它是一种标准协议,用于加密浏览器和服务器之间的通信。它允许通过Internet安全轻松地传输账号密码、银行卡、手机号等私密信息。
SSL证书就是遵守SSL协议,由受信任的CA机构颁发的数字证书。
SSL/TLS的工作原理:
需要理解SSL/TLS的工作原理,我们需要掌握加密算法。加密算法有两种:对称加密和非对称加密:
对称加密:通信双方使用相同的密钥进行加密。特点是加密速度快,但是缺点是需要保护好密钥,如果密钥泄露的话,那么加密就会被别人破解。常见的对称加密有AES,DES算法。
非对称加密:它需要生成两个密钥:公钥(Public Key)和私钥(Private Key)。
公钥顾名思义是公开的,任何人都可以获得,而私钥是私人保管的。相信大多程序员已经对这种算法很熟悉了:我们提交代码到github的时候,就可以使用SSH key:在本地生成私钥和公钥,私钥放在本地.ssh目录中,公钥放在github网站上,这样每次提交代码,不用麻烦的输入用户名和密码了,github会根据网站上存储的公钥来识别我们的身份。
公钥负责加密,私钥负责解密;或者,私钥负责加密,公钥负责解密。这种加密算法安全性更高,但是计算量相比对称加密大很多,加密和解密都很慢。常见的非对称算法有RSA。

SSL和TLS的区别

ssl: 安全套接字层
Tls: 传输层协议:
都有各自的记录协议和握手协议组成
1.报文鉴别码不同,mac算法和mac计算的范围不同,TLS使用RFC-2104定义的HMAC算法。SSLv3.0使用了相似的算法,两者差别在于SSLv3.0中,填充字节与密钥之间采用的是连接运算,而HMAC算法采用的异或运算。但是两者的安全程度是相同的。
2.伪随机函数:TLS使用了称为PRF的伪随机函数来将密钥扩展成数据块,是更安全的方式。
tls几乎支持ssl所有的报警代码,而且也补充了很多,像解密失败,拒绝访问,位置ca等。
tls比ssl增强了需对

最后:

指路一篇面试博客 http://t.csdnimg.cn/op7VI

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值