大半年没更新了,一直忙,公司也没有外网,这次找些材料整理复习巩固一下。资料来源于网络。

这里写目录标题

  • 一、HTTP与HTTPS
    • 1.http和https基本概念
    • 2.http和https的区别
    • 3.https协议的工作原理
    • 4.http协议的优点
    • 5.http协议的缺点
    • 6.TCP三次握手、四次挥手
    • 7.TCP和UDP的区别
    • 8. 网络七层模型
    • 9.HTTP请求方式
    • 10. HTTP2.0
    • 11. 400和401、403状态码
    • 12.HTTP状态码
    • 13.http常用请求头
    • 14.强、协商缓存
    • 15.GET和POST的区别
    • 16.常见的HTTP头部

一、HTTP与HTTPS

1.http和https基本概念

http: 超文本传输协议,是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器请求和应答的标准(tcp),用于从WWW服务器传输超文本到浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。

https: 是以安全为目标的http通道,简单的讲是http的安全版,即http下加入ssl层,http的安全基础是ssl,因此加密的详细内容就需要ssl。

https协议的主要作用是:建立一个信息安全通道,来确保数组的传输,确保网站的真实性

2.http和https的区别

http传输的数据都是未加密的,也是明文的,网景公司设置了SSL协议来对http协议传输的数据进行加密处理,简单来说https协议是有http和ssl协议构建的可进行加密传输和身份认证的网络协议,比http协议的安全性更高。 区别:

  1. https协议需要ca证书,费用较高
  2. http是超文本传输协议,信息时明文传输,https则是具有安全性的ssl加密传输协议。
  3. 使用不同的链接方式,端口也不同分别是80和433
  4. http的连接简单,是无状态的;
  5. https协议是由ssl+http协议构建的,可进行加密传输、身份认证的网络协议,比http协议安全

3.https协议的工作原理

客户端在使用https方式与Web服务器通信时有以下几个步骤:

  1. 客户使用https url 访问服务器,则要求Web服务器建立ssl链接。
  2. web服务器接收到客户端的请求之后,会将网站的证书(包含了公钥),返回给客户端
  3. 客户端和web服务器开始协商ssl链接的安全等级,也就是加密等级
  4. 客户端浏览器通过双方协商一致的安全等级,建立会话密钥,然后通过网站的公钥来加密会话密钥,并传送给网站。
  5. web服务器通过自己的私钥解密出会话密钥。
  6. web服务器通过会话密钥与客户端之间的通信。

4.http协议的优点

使用https协议可认证用户和服务器,确保数据发送到正确的客户机和服务器。
https协议是由http+ssl协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全,可防止数据在传输的过程中不被窃取、改变,确保数据的完整性。
https是现行框架下最安全的解决方案,虽然不是绝对的安全,但它大幅增加了中间人攻击的成本。
比起同等http网站,采用https加密的网站在搜索中的排名将会更高。

5.http协议的缺点

https握手阶段比较费时,会使页面加载时间延长50%,增加费电。
https缓存不如http高效,会增加数据开销。
ssl证书也需要钱,功能越强大的证书费用更高。
ssl证书需要绑定ip,不能在同ip上绑定多个域名,ipv4资源支持不了这种消耗。

6.TCP三次握手、四次挥手

三次握手的本质是确认通信双方收发数据的能力:
首先,我让信使运输一份信件给对方,对方收到了,那么他就知道了我的发件能力和他的收件能力是可以的。
于是他给我回信,我若收到了,我便知我的发件能力和他的收件能力是可以的,并且他的发件能力和我的收件能力是可以。
然而此时他还不知道他的发件能力和我的收件能力到底可不可以,于是我最后回馈一次,他若收到了,他便清楚了他的发件能力和我的收件能力是可以的。

  • 第一次握手:客户端要向服务端发起连接请求,并发送报文;
  • 第二次握手:服务端收到客户端发过来的报文,并给客户端回复可以建立连接
  • 第三次握手:客户端收到服务端的回复后,知道了服务端同意了这次连接,然后客户端再回复一段报文给服务端建立连接;

四次挥手的目的是关闭一个连接

  • 第一次挥手:当客户端的数据都传输完成后,客户端向服务端发出连接释放报文
  • 第二次挥手:服务端收到客户端发的报文后给客户端回复确认报文,此时服务端处于关闭等待状态,因为服务端可能还有数据没发完
  • 第三次挥手:服务端将最后数据(比如50个字节)发送完毕后就向客户端发出连接释放报文
  • 第四次挥手:客户端收到服务端发的FIN报文后,向服务端发出确认报文,服务端收到确认报文释放连接。

注意客户端发出确认报文后不是立马释放TCP连接,而是要经过2MSL(最长报文段寿命的2倍时长)后才释放TCP连接。而服务端一旦收到客户端发出的确认报文就会立马释放TCP连接,所以服务端结束TCP连接的时间要比客户端早一些。

想了解更清楚请移步该文章:《卧槽!牛皮了,头一次见有大佬把TCP/IP三次握手四次挥手解释的这么明白》

7.TCP和UDP的区别

  1. tcp是面向连接的,udp是无连接的–即发送数据前不需要先建立链接;
  2. TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付;
  3. TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的;
    UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等);
  4. 每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信;
  5. TCP首部开销20字节;UDP的首部开销小,只有8个字节;
  6. TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道;

那HTTP和TCP之间又有什么样的关系?那我们先来了解一下网络七层模型(OSI):

8. 网络七层模型