HTTP 整理

1. http与https区别

  • HTTP 的URL 以http:// 开头,而HTTPS 的URL 以https:// 开头
  • HTTP 是不安全的,而 HTTPS 是安全的
  • HTTP 标准端口是80 ,而 HTTPS 的标准端口是443
  • 在OSI 网络模型中,HTTP工作于应用层,而HTTPS 的安全传输机制工作在传输层
  • HTTP 无法加密,而HTTPS 对传输的数据进行加密
  • HTTP无需证书,而HTTPS 需要CA机构wosign的颁发的SSL证书

2. 什么是Http协议无状态协议?怎么解决Http协议无状态协议?

  • 无状态协议:前后两次访问,服务端无法判断是同一人
  • 用cookie解决

3. URI和URL区别

  • URI:uniform resource identifier,统一资源标识符,用来唯一的标识一个资源
  • URL:uniform resource locator,统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源

4. 常用HTTP方法

  • GET: 用于请求访问已经被URI(统一资源标识符)识别的资源,可以通过URL传参给服务器
  • POST:用于传输信息给服务器,主要功能与GET方法类似,但一般推荐使用POST方式。
  • PUT: 传输文件,报文主体中包含文件内容,保存到对应URI位置。
  • HEAD: 获得报文首部,与GET方法类似,只是不返回报文主体,一般用于验证URI是否有效。
  • DELETE:删除文件,与PUT方法相反,删除对应URI位置的文件。
  • OPTIONS:查询相应URI支持的HTTP方法。

5. 长链接

HTTP 协议的初始版本中,每进行一个 HTTP 通信都要断开一次 TCP 连接。比如使用浏览器浏览一个包含多张图片的 HTML 页面时,在发送请求访问 HTML 页面资源的同时,也会请求该 HTML 页面里包含的其他资源。因此,每次的请求都会造成无畏的 TCP 连接建立和断开,增加通信量的开销。
为了解决上述 TCP 连接的问题,HTTP/1.1 和部分 HTTP/1.0 想出了持久连接的方法。其特点是,只要任意一端没有明确提出断开连接,则保持 TCP 连接状态。旨在建立一次 TCP 连接后进行多次请求和响应的交互。在 HTTP/1.1 中,所有的连接默认都是持久连接。

作者:涤生_Woo
链接:https://www.jianshu.com/p/6e9e4156ece3
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

6. session和cookie

  • cookie:cookie技术是客户端的解决方案,cookie就是有服务器给客户端的特殊信息,而这些信息以文本文件的方式存放在客户端,然后客户端每次向服务器发送请求的时候都会带上这些特殊的信息
  • session:session是另一种记录客户状态的机制,不同的是cookie保存在客户端浏览器中,而session保存在服务器上,客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上
  • 区别
    • 存放位置不同
    • 存放方式不同 (session能保存任何内容,cookie 字符串)
    • 安全性不同,session更安全
    • 有效期不同 ,cookie比较长,session如果设置为-1关闭浏览器后就会失去
    • 对服务器压力不同

7. OSI七层模型

  • 应用层
  • 表示层
  • 会话层
  • 传输层
  • 网络层
  • 数据链路层
  • 物理层

8. TCP/IP四层模型

  • 应用层:决定了向用户提供应用服务时通信的活动。eg. DNS、FTP、HTTP
  • 传输层:传输层对上层应用层,提供处于网络连接中的两台计算机之间的数据传输。eg. UDP、TCP
  • 网络层:网络层用来处理在网络上流动的数据包。数据包是网络传输的最小数据单位。该层规定了通过怎样的路径到达对方计算机,并把数据包传给对方。
  • 链路层:用来处理连接网络的硬件部分。包括控制操作系统、硬件的设备驱动、NIC及光纤等物理可见部分。
    在这里插入图片描述

8. IP协议

  • 位于传网络层
  • 把各种数据包传送给对象

9. TCP协议

  • 位于传输层

  • 提供可靠的字节流服务,确保数据已送达到对方

  • 为了准确无误的将数据送达到目的地,TCP采用了三次握手的策略.握手过程使用TCP的标志(flag)-SYN(synchronize)和ACK(acknownledgement)

  • 三次握手

  • 为什么不能两次握手

    • 确认双方的接收能力
      • 第一次握手:确定了客户端发送能力和服务端的接收能力正常
      • 第二次握手:确定了服务端的发送能力和客户端的接收能力正常,不过服务端不确定客户端接收能力正常
      • 第三次握手:确定了客户端发送接收能力和服务端的发送接收能力
    • 序列号可靠同步
      • 如果两次握手就开始交换数据,服务端无法确定客户端是否已经接收到了自己发送的初始序列号
      • 如果第二次握手报文丢失,那么客户端就无法知道服务端的初始序列号,就是不可靠的链接了
    • 阻止历史链接
      • 客户端由于某种原因发送了两个不同序号的 SYN 包,我们知道网络环境是复杂的,旧的数据包有可能先到达服务器。如果是两次握手,服务器收到旧的 SYN 就会立刻建立连接,那么会造成网络异常。
      • 如果是三次握手,服务器需要回复 SYN+ACK 包,客户端会对比应答的序号,如果发现是旧的报文,就会给服务器发 RST 报文,直到正常的 SYN 到达服务器后才正常建立连接。
  • 每次握手可以携带数据?

    • 第一二次握手如果携带数据,遭遇攻击的话,服务器会频繁处于处理握手报文的状态
    • 第三次握手,此时客户端已经处于连接状态,他已经知道服务器的接收、发送能力是正常的了,所以可以携带数据是情理之中
      在这里插入图片描述- 四次挥手:四次挥手即TCP连接的释放(解除)。连接的释放必须是一方主动释放,另一方被动释放
  • 为什么TIME_WAIT 状态需要经过 2MSL 才能返回到 CLOSE 状态?

    • MSL 指的是报文在网络中最大生存时间。在客户端发送对服务器端的 FIN 的确认包 ACK 后,这个 ACK 包是有可能不可达的,服务器端如果收不到 ACK 的话需要重新发送 FIN 包。
    • 所以客户端发送 ACK 后需要留出 2MSL 时间(ACK 到达服务器 + 服务器发送 FIN 重传包,一来一回)等待确认服务器端确实收到了 ACK 包。
    • 也就是说客户端如果等待 2MSL 时间也没有收到服务器端的重传包 FIN,说明可以确认服务器已经收到客户端发送的 ACK
      在这里插入图片描述

10. UDP协议

  • UDP 不提供复杂的控制机制,利用 IP 提供面向无连接的通信服务。
  • 并且它是将应用程序发来的数据在收到的那一刻,立即按照原样发送到网络上的一种机制。即使是出现网络拥堵的情况,UDP 也无法进行流量控制等避免网络拥塞行为。
  • 此外,传输途中出现丢包,UDP 也不负责重发。
  • 甚至当包的到达顺序出现乱序时也没有纠正的功能。
  • 如果需要以上的细节控制,不得不交由采用 UDP 的应用程序去处理。
  • UDP 常用于一下几个方面:1.包总量较少的通信(DNS、SNMP等);2.视频、音频等多媒体通信(即时通信);3.限定于 LAN 等特定网络中的应用通信;4.广播通信(广播、多播)

11. HTTP传送过程

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值