• 《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端口耗尽虽然较少出现,但是它是很严重的性能问题,会影响到性能基准。

  • 相关阅读:
    2017-2018-1 20179226 《文献管理与信息分析》第1讲学习总结
    2017-2018-1 20179226《Linux内核原理与分析》第十一周作业
    2017-2018-1 20179226《Linux内核原理与分析》第十周作业
    2017-2018-1 20179226 《从问题到程序》第2周学习总结
    2017-2018-1 20179226 《构建之法》第1周学习总结
    掌握一种编辑器-Vim
    2017-2018-1 20179226 《深入理解计算机系统》第1周学习总结
    2017-2018-1 20179209《Linux内核原理与分析》第二周作业
    20179209《Linux内核原理与分析》第一周作业
    linux_cpu信息查询
  • 原文地址:https://www.cnblogs.com/yangzhou33/p/9219275.html
Copyright © 2020-2023  润新知