乐趣区

关于http:笔记Http的基础介绍

网络分层构造

计算机网络体系大抵分为三种,OSI 七层模型、TCP/IP 四层模型和五层模型。

OSI 七层模型

OSI 七层模型:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。

TCP/IP 五层模型

TCP/IP 五层模型:应用层、传输层、网络层、数据链路层、物理层。

  • 应用层:为应用程序提供交互服务。在互联网中的应用层协定很多,如域名零碎 DNS、HTTP 协定、SMTP 协定等。
  • 传输层:负责向两台主机过程之间的通信提供数据传输服务。传输层的协定次要有传输控制协议 TCP 和用户数据协定 UDP。
  • 网络层:抉择适合的路由和替换结点,确保数据及时传送。次要包含 IP 协定。
  • 数据链路层 :在两个相邻节点之间传送数据时, 数据链路层将网络层交下来的 IP 数据报组装成帧,在两个相邻节点间的链路上传送帧。
  • 物理层:实现相邻节点间比特流的通明传输,尽可能屏蔽传输介质和物理设施的差别。
TCP/IP 四层模型

TCP/IP 五层模型:应用层、传输层、网络层、数据链路层

  • 应用层:为应用程序提供交互服务。在互联网中的应用层协定很多,如域名零碎 DNS、HTTP 协定、SMTP 协定等。
  • 传输层:负责向两台主机过程之间的通信提供数据传输服务。传输层的协定次要有传输控制协议 TCP 和用户数据协定 UDP。
  • 网络层:抉择适合的路由和替换结点,确保数据及时传送。次要包含 IP 协定。
  • 数据链路层 :在两个相邻节点之间传送数据时, 数据链路层将网络层交下来的 IP 数据报组装成帧,在两个相邻节点间的链路上传送帧。

htttp 连贯

三次握手

  1. 第一次握手:客户端向服务端发动建设连贯申请,客户端会随机生成一个起始序列号 x,客户端向服务端发送的字段中蕴含标记位SYN=1,序列号seq=x。第一次握手前客户端的状态为CLOSE,第一次握手后客户端的状态为SYN-SENT。此时服务端的状态为LISTEN
  2. 第二次握手:服务端在收到客户端发来的报文后,会随机生成一个服务端的起始序列号 y,而后给客户端回复一段报文,其中包含标记位 SYN=1ACK=1,序列号seq=y,确认号ack=x+1。第二次握手前服务端的状态为LISTEN,第二次握手后服务端的状态为SYN-RCVD,此时客户端的状态为SYN-SENT。(其中SYN=1 示意要和客户端建设一个连贯,ACK=1示意确认序号无效)
  3. 第三次握手:客户端收到服务端发来的报文后,会再向服务端发送报文,其中蕴含标记位 ACK=1,序列号seq=x+1,确认号ack=y+1。第三次握手前客户端的状态为SYN-SENT,第三次握手后客户端和服务端的状态都为ESTABLISHED 此时连贯建设实现。

两次握手能够吗?

第三次握手次要为了 避免已生效的连贯申请报文段 忽然又传输到了服务端,导致产生问题。

  • 比方客户端 A 收回连贯申请,可能因为网络阻塞起因,A 没有收到确认报文,于是 A 再重传一次连贯申请。
  • 连贯胜利,期待数据传输结束后,就开释了连贯。
  • 而后 A 收回的第一个连贯申请等到连贯开释当前的某个工夫才达到服务端 B,此时 B 误认为 A 又收回一次新的连贯申请,于是就向 A 收回确认报文段。
  • 如果不采纳三次握手,只有 B 收回确认,就建设新的连贯了,此时 A 不会响应 B 的确认且不发送数据,则 B 始终期待 A 发送数据,浪费资源。

四次挥手

  1. A 的利用过程先向其 TCP 收回连贯开释报文段(FIN=1,seq=u),并进行再发送数据,被动敞开 TCP 连贯,进入FIN-WAIT-1(终止期待 1)状态,期待 B 的确认。
  2. B 收到连贯开释报文段后即收回确认报文段(ACK=1,ack=u+1,seq=v),B 进入CLOSE-WAIT(敞开期待)状态,此时的 TCP 处于半敞开状态,A 到 B 的连贯开释。
  3. A 收到 B 的确认后,进入FIN-WAIT-2(终止期待 2)状态,期待 B 收回的连贯开释报文段。
  4. B 发送完数据,就会收回连贯开释报文段(FIN=1,ACK=1,seq=w,ack=u+1),B 进入LAST-ACK(最初确认)状态,期待 A 的确认。
  5. A 收到 B 的连贯开释报文段后,对此收回确认报文段(ACK=1,seq=u+1,ack=w+1),A 进入 TIME-WAIT(工夫期待)状态。此时 TCP 未开释掉,须要通过工夫期待计时器设置的工夫2MSL(最大报文段生存工夫)后,A 才进入CLOSED 状态。B 收到 A 收回的确认报文段后敞开连贯,若没收到 A 收回的确认报文段,B 就会重传连贯开释报文段。

第四次挥手为什么要期待 2MSL?

  • 保障 A 发送的最初一个 ACK 报文段可能达到 B 。这个 ACK 报文段有可能失落,B 收不到这个确认报文,就会超时重传连贯开释报文段,而后 A 能够在 2MSL 工夫内收到这个重传的连贯开释报文段,接着 A 重传一次确认,重新启动 2MSL 计时器,最初 A 和 B 都进入到 CLOSED 状态,若 A 在 TIME-WAIT 状态不期待一段时间,而是发送完 ACK 报文段后立刻开释连贯,则无奈收到 B 重传的连贯开释报文段,所以不会再发送一次确认报文段,B 就无奈失常进入到 CLOSED 状态。
  • 避免已生效的连贯申请报文段呈现在本连贯中 。A 在发送完最初一个ACK 报文段后,再通过 2MSL(2MSL 是两倍的 MSL(Maximum Segment Lifetime)。MSL 指一个片段在网络中最大的存活工夫,2MSL 就是一个发送和一个回复所需的最大工夫。),就能够使这个连贯所产生的所有报文段都从网络中隐没,使下一个新的连贯中不会呈现旧的连贯申请报文段。

为什么是四次挥手?

因为当服务器端收到客户端的 SYN 连贯申请报文后,能够间接发送 SYN+ACK 报文。然而在敞开连贯时,当服务器端收到客户端收回的连贯开释报文时,很可能并不会立刻敞开 SOCKET,所以服务器端先回复一个 ACK 报文,通知客户端我收到你的连贯开释报文了。只有等到服务器端所有的报文都发送完了,这时服务器端能力发送连贯开释报文,之后两边才会真正的断开连接。故须要四次挥手。

https

  • https 协定之所以是平安的是因为 https 协定会对传输的数据进行加密,而加密过程是应用了非对称加密实现。但其实,https 在内容传输的加密上应用的是对称加密,非对称加密只作用在证书验证阶段
  • https = https+ 加密 + 身份认证 + 完整性爱护
  • https 的整体过程分为 证书验证 数据传输 阶段,具体的交互过程如下:

    证书验证阶段
    1. 浏览器发动 HTTPS 申请
    2. 服务端返回 HTTPS 证书
    3. 客户端验证证书是否非法,如果不非法则提醒告警
    数据传输阶段
    1. 当证书验证非法后,在本地生成随机数
    2. 通过公钥加密随机数,并把加密后的随机数传输到服务端
    3. 服务端通过私钥对随机数进行解密
    4. 服务端通过客户端传入的随机数结构对称加密算法,对返回后果内容进行加密后传输

非对称加密与对称加密

对称加密
  • 对称加密 :对称加密又叫做私钥加密,即信息的发送方和接管方应用 同一个密钥 去加密和解密数据。对称加密的特点是算法公开、加密和解密速度快,适宜于对大数据量进行加密,常见的对称加密算法有 DES、3DES、TDEA、Blowfish、RC5 和 IDEA。
    其加密过程如下:明文 + 加密算法 + 私钥 => 密文
    解密过程如下:密文 + 解密算法 + 私钥 => 明文
  • 对称加密的毛病是密钥平安治理艰难: 因为对称加密的算法是公开的,所以一旦私钥被泄露,那么密文就很容易被破解
非对称加密
  • 非对称加密:非对称加密也叫做公钥加密。非对称加密与对称加密相比,其安全性更好。对称加密的通信单方应用雷同的密钥,如果一方的密钥遭泄露,那么整个通信就会被破解。而非对称加密应用一对密钥,即公钥和私钥,且二者成对呈现。私钥被本人保留,不能对外泄露。公钥指的是公共的密钥,任何人都能够取得该密钥。用公钥或私钥中的任何一个进行加密,用另一个进行解密。
  • 被公钥加密过的密文只能被私钥解密,过程如下:

    明文 + 加密算法 + 公钥 => 密文,密文 + 解密算法 + 私钥 => 明文
    被私钥加密过的密文只能被公钥解密,过程如下:
    明文 + 加密算法 + 私钥 => 密文,密文 + 解密算法 + 公钥 => 明文

  • 非对称加密的毛病是加密和解密破费工夫长、速度慢,只适宜对大量数据进行加密。
  • 在非对称加密中应用的次要算法有:RSA

中间人攻打

  • http 协定被认为不平安是因为传输过程容易被监听者勾线监听、伪造服务器,而 https 协定次要解决的便是网络传输的安全性问题。
  • 首先咱们假如不存在认证机构,任何人都能够制作证书,这带来的平安危险便是经典的 “中间人攻打” 问题。“中间人攻打”的具体过程如下:

    1. 本地申请被劫持(如 DNS 劫持等),所有申请均发送到中间人的服务器
    2. 中间人服务器返回中间人本人的证书
    3. 客户端创立随机数,通过中间人证书的公钥对随机数加密后传送给中间人,而后凭随机数结构对称加密对传输内容进行加密传输
    4. 中间人因为领有客户端的随机数,能够通过对称加密算法进行内容解密
    5. 中间人以客户端的申请内容再向正规网站发动申请
    6. 因为中间人与服务器的通信过程是非法的,正规网站通过建设的平安通道返回加密后的数据
    7. 中间人凭借与正规网站建设的对称加密算法对内容进行解密
    8. 中间人通过与客户端建设的对称加密算法对正规内容返回的数据进行加密传输
    9. 客户端通过与中间人建设的对称加密算法对返回后果数据进行解密

    因为短少对证书的验证,所以客户端尽管发动的是 HTTPS 申请,但客户端齐全不晓得本人的网络已被拦挡,传输内容被中间人全副窃取

https 协定变更

http1.0 和 http1.1 的区别?

  • 长连贯 :http1.0 默认应用短连贯,每次申请都须要建设新的 TCP 连贯,连贯不能复用。http1.1 反对长连贯,复用 TCP 连贯,容许客户端通过同一连贯发送多个申请。不过,这个优化策略也存在问题,当一个队头的申请不能收到响应的资源时,它将会阻塞前面的申请。这就是“ 队头阻塞”问题。
  • 断点续传 :http1.0 不反对断点续传 。http1.1 新增了 range 字段,用来指定数据字节地位, 反对断点续传
  • 谬误状态响应码 :在 http1.1 中新增了 24 个谬误状态响应码,如409(Conflict) 示意申请的资源与资源的以后状态发生冲突、410(Gone)示意服务器上的某个资源被永久性的删除。
  • Host 头解决:在 http1.0 中认为每台服务器都绑定一个惟一的 IP 地址,因而,申请音讯中的 URL 并没有传递主机名。到了 http1.1 时代,虚拟主机技术倒退迅速,在一台物理服务器上能够存在多个虚拟主机,并且它们共享一个 IP 地址,故 http1.1 减少了 HOST 信息。

http1.1 和 http2.0 的区别?

  • 新的二进制格局: http1.1 基于文本格式传输数据;http2.0 采纳二进制格局传输数据,解析更高效。
  • 多路复用 :在一个连贯里,容许同时发送多个申请或响应, 并且这些申请或响应可能并行的传输而不被阻塞,防止 http1.1 呈现的”队头梗塞”问题。
  • 头部压缩 ,http1.1 的 header 带有大量信息,而且每次都要反复发送;http2.0 把 header 从数据中拆散,并封装成头帧和数据帧, 应用特定算法压缩头帧 ,无效缩小头信息大小。并且 http2.0 在客户端和服务器端记录了之前发送的键值对,对于雷同的数据,不会反复发送。比方申请 a 发送了所有的头信息字段,申请 b 则 只须要发送差别数据,这样能够缩小冗余数据,升高开销。
  • 服务端推送:http2.0 容许服务器向客户端推送资源,无需客户端发送申请到服务器获取。

https 与 http 的区别?

  1. http 是超文本传输协定,信息是 明文传输 ;https 则是具备 安全性 的 ssl 加密传输协定。
  2. http 和 https 用的端口不一样,http 端口是 80,https 是 443。
  3. https 协定 须要到 CA 机构申请证书,个别须要肯定的费用。
  4. http 运行在 TCP 协定之上;https 运行在 SSL 协定之上,SSL 运行在 TCP 协定之上。
退出移动版