《http权威指南》读书笔记3

时间:2023-03-09 01:14:27
《http权威指南》读书笔记3

概述

最近对http很感兴趣,于是开始看《http权威指南》。别人都说这本书有点老了,而且内容太多。我个人觉得这本书写的太好了,非常长知识,让你知道关于http的很多概念,不仅告诉你怎么做,还告诉你为什么这么做。于是我把学到的知识点记录下来,供以后开发时参考,相信对其他人也有用。

连接管理

1.TCP为HTTP提供了一条可靠的比特传输管道。从TCP连接一端填入的字节会从另一端以原有的顺序、正确的传送出来。TCP会按序,无差错地承载http数据。

2.安全版本https就是在http和tcp之间插入一个称为tls或ssl的密码加密层。

3.每个tcp段是由IP分组承载,从一个ip地址发送到另一个ip地址的。每个ip分组中包括:一个ip分组首部一个tcp段首部一个tcp数据块。ip首部包含了源和目的ip地址、长度和其它一些标记。tcp段的首部包含了tcp端口号、tcp控制标记,以及用于数据排序和完整性检查的一些数字值。

4.http紧挨着tcp,位于其上层,所以http事务的性能很大程度上取决于底层tcp通道的性能

5.http事务的时延有以下几种主要原因:

  • 需要个根据uri确定web服务器的ip地址和端口号,即dns查找
  • 客户端会向服务器发送一条tcp请求,并等待服务器返回一个响应。每条新的tcp连接都会有连接建立时延,这个值最多只有1-2秒钟,但是如果有很多个http事务的话,这个值会快速地叠加上去。
  • 一旦连接建立起来了,web服务器就会处理请求报文。请求报文的传输和处理也需要时间。
  • 最后web服务器也会发送响应,这也需要花费时间。

6.常见的tcp时延包括:

  • tcp连接建立握手
  • tcp慢启动拥塞控制
  • 数据聚集的Nagle算法
  • 用于捎带确认的tcp延迟确认算法
  • time_wait时延和端口耗尽

7.tcp连接握手需要经过以下几个步骤:

  1. 客户端向服务器发送一个SYN标记的tcp分组,说明这是一个连接请求
  2. 如果服务器接受了连接,就会向客户端回送一个tcp分组,这个分组中的syn和ack标记都被置位,说明连接请求已被接受
  3. 客户端向服务器回送一条确认信息,通知它连接已经成功建立

8.延迟确认:每个tcp段都有一个序列号和数据完整性校验和,每个段的接收者收到完好的段时,都会向发送者回送小的确认分组。由于确认报文很小,所以tcp允许在发往相同方向的输出数据分组中对其进行“捎带”。所以很多tcp栈都实现了一种延迟确认算法,它会在一个特定的窗口时间内(100-200毫秒)将确认报文放在缓冲区内,以寻找能够捎带它的数据分组。

9.TCP慢启动:TCP连接会随着时间进行自我“调谐”,起初会限制连接的最大速度,如果数据成功传输,会随着时间的推移提高传输的速度。这种调谐被称为TCP慢启动,用于防止因特网的突然过载和拥塞。

10.TIME_WAIT端口耗尽虽然较少出现,但是它是很严重的性能问题,会影响到性能基准。