前端HTTP知识总结

395 阅读6分钟

这是我参与更文挑战的第3天,活动详情查看: 更文挑战

image.png

OSI将网络分为七层: 应用层、表示层、会话层、传输层、网络层、链路层、物理层。(开放系统互联网参考模型,所以只是个参考,实际用的是TCP/IP协议)

TCP/IP将网络分为五层: 应用层、传输层、网络层、链路层、物理层。(重点掌握)

为什么要分层?

为了简化网络的复杂度,如果修改或者替换某一层的软件,只要层与层之间的接口保持不变,就不会影响到其他层。

  • 应用层:应用程序之间以HTTP等协议进行通信。
  • 传输层:TCP三次握手。
  • 网络层:DNS服务器将域名解析成IP。
  • 链路层:比如用到的无线路由器中不同的接口(LAN、WAN、WLAN、VLAN)。
  • 物理层:要用到现实中的物理介质如光纤、电线等。

LAN、WAN、WLAN、VLAN

  • LAN:局域网(Local Area Network)
  • WAN:广域网(Wide Area Network)
  • WLAN:无线局域网(Wireless LAN)
  • VLAN:虚拟局域网(Virtual Local Area Network)

宽带路由器实际上是路由+交换机的一体结构,我们可以把宽带路由器当成是两台设备的一体机。WAN口用于接外部IP地址,转发来自LAN接口的IP数据包。LAN口用于接内部IP地址,LAN内部是交换机。我们可以不连接 WAN 口,把路由器当做普通交换机来使用,WIFI是实现WLAN的一种协议(实际上是握手协议)。

域名

  • jd.com(顶级域名)
  • www.jd.com m.jd.com study.jd.com(二级域名)
  • e.m.jd.com(三级域名) 随着网站服务类型增加,不同的二级或三级域名对应不同的业务,分配到多个服务器,所以不再需要使用www来标注主页,但还是会做DNS解析www,因为用户习惯了输入www来访问网站主页

一个域名对应一个IP地址,一个IP地址可对应多个域名

DNS服务器

  • 本地域名DNS服务器:三大运营商(电信、联通、移动)
  • 根域名DNS服务器:(美国、英国、瑞典、日本)
  • 顶级域名DNS服务器:为所有.com、.net ......后缀做域名解析的服务器

HTTP请求过程

  1. 输入www.baidu.com/
  2. 由于服务端和客户端之间通信是不认域名的,所以需要将域名解析成IP
  3. 首先看看浏览器有无该域名DNS缓存(缓存少部分域名IP的对应表),有缓存则直接拿到该域名IP地址
  4. 浏览器没有缓存就会去本地hosts文件看有没有配置这个域名对应的IP
  5. 本地hosts文件没有配置则会发起一个DNS请求,请求这个域名的IP地址
  6. 应用层(DNS请求)=>传输层(UDP协议)=>网络层(IP协议)=>链路层(WLAN)=>物理层(光纤、电线等)
  7. 到达下一个物理介质,物理层(路由器)=>链路层(WLAN)=>网络层(IP)
  8. 到达下一个物理介质,物理层(本地域名DNS服务器(电信、联通、移动))=>...网络层(IP)
  9. 到达下一个物理介质,物理层(根域名DNS服务器(美国、英国、瑞典、日本))=>...网络层(IP)
  10. 到达下一个物理介质,物理层(.com顶级域名DNS服务器)=>...网络层(IP)
  11. 到达下一个物理介质,物理层(baidu.com域DNS服务器)=>...网络层(IP)
  12. 拿到IP后原路返回
  13. 根据拿到IP后再发起HTTP请求
  14. 应用层(HTTP请求)=>传输层(TCP协议,三次握手,如果是HTTPS,还需要TLS握手)=>网络层(IP协议)=>链路层(WLAN)=>物理层(光纤、电线等)
  15. 到达下一个物理介质,物理层(路由器)=>链路层(WLAN)=>网络层(IP)
  16. 到达下一个物理介质,物理层(本地运营商服务器(电信、联通、移动))=>...网络层(IP)
  17. 到达下一个物理介质,物理层(请求IP服务器)=>...网络层(IP)
  18. 拿到数据后原路返回

image.png

TCP、IP、HTTP、UDP

  • IP:Internet Protocol Address(网际地址协议)

  • TCP:Transmission Control Protocol(传输控制协议)

    TCP协议面向连接,接收数据的双方,必须建立在可靠的连接(三次握手),但是这个三次握手的机制很容易被利用(DOS、DDOS攻击)。

    TCP协议依赖IP协议,所以出现了TCP/IP协议组,提供点对点的连接机制

  • HTTP:HyperText Transfer Protocol(超文本传输协议)

  • HTTPS:HyperText Transfer Protocol Secure(超文本传输安全协议)

  • UDP:UDP,User Datagram Protocol(用户数据报协议)

Https如何保证数据安全

  • 首先,既然传输过程数据容易被修改,那么客户端和服务端可以使用对称加密算法将数据加密,只有客户端(公钥)与服务端(密钥)知道,这样只要不公开秘钥就能保证数据不被修改。

  • 这样就会出现一个问题,所有人都能得到对称加密算法公钥,然后劫持传递的消息,那么客户端和服务端可以进行协商加密的过程,而协商加密的过程又如何保证安全呢?

  • 协商加密的过程采用非对称加密算法,进行对称加密算法协商过程。

    非对称加密算法特点:私钥加密后的密文,只要是公钥,都可以解密,但是公钥加密后的密文,只有私钥可以解密。私钥只有一个人有,而公钥可以发给所有的人。

  • 现在协商过程问题解决了,那么,我们又怎样来保证公钥的传输安全呢?

  • 采用第三方机构颁发数字证书对服务器交给第三方机构的公钥进行加密后,再传给客户端,客户端再使用第三方机构的公钥进行解密。

  • 但是第三方机构不可能只给你一家公司制作证书,有证书的都能使用第三方机构的公钥进行解密,所以需要数字签名,解决同一机构颁发的不同证书被篡改问题

首先,利用非对称加密进行协商秘钥,客户端利用公钥(第三方数字证书颁发)进行加密,服务器用私钥进行解密,交换由随机数产生的会话密钥,再私钥加密、公钥解密生成数字签名,后续只用到这个会话秘钥和数字签名进行对称加密数据交换。