HTTP协议(1)—HTTP的连接

一、TCP连接
        过程:
                a.浏览器解析出主机名
                b.浏览器查询出这个主机名的IP地址
                c.浏览器获得端口号
                d.浏览器发起到ip:port的连接(TCP连接)
                e.浏览器向服务器发送一条HTTP报文
                f.浏览器从服务器读取HTTP响应报文
                g.浏览器关闭连接

        1.TCP的可靠数据管道
            从TCP连接一端填入的字节会从另一端以原有的顺序、正确地传送出来

        2.TCP流是分段的,由IP分组传送
            HTTP会以流的形式将报文数据的内容通过一条打开的TCP连接按序传输,TCP收到数据流之后会把数据流砍成被称作段的小数据块,并将段分装在IP分组中,通过因特网进行传输

        3.保持TCP连接的正确运行
            通过端口号来保持连接的正确运行
            TCP连接的识别:
                    <源IP地址、源端口号、目标IP地址、目标端口号>

二、对TCP性能的考虑
        1.HTTP事务的时延
            主要原因:
                    a.DNS查询
                    b.TCP连接请求
                    c.服务器处理http报文
                    d.服务器回送http响应

        3.性能聚焦区域
            a.TCP连接的握手延时
                i.请求新的连接时,客户端向服务器端发送一个TCP分组,设置SYN标记
                ii.服务器接收连接,会对一些连接参数进行计算,并回送一个TCP分组,包含SYN+ACK标记
                iii.最后客户端向服务器端回送一条确认信息ACK,通知服务器连接已建立
        
            b.延迟确认
                TCP可以将确认信息和输出的数据分组一起发送出去,TCP现将确认信息存放在缓冲区中,利用延迟算法等待输出的数据分组

            c.TCP慢启动
                起初会限制连接的最大速度,然后数据成功传输,随着时间的推移会提高传输的速度

            d.Nagle算法与TCP_NODELAY
                .应用程序可以将任意大小的数据放入TCP栈中,但如果TCP将大量小数据放入TCP栈中会严重影响网络性能
                .Nagle算法试图在发送数据之前将大量TCP数据绑定在一起
                .只有其他分组都确认以后,Nagle算法才会发送非全尺寸的分组
                .小的http报文无法填满一个分组,Nagel算法会进行等待那些永远不会到来的额外数据而产生延迟,影响性能
                .Nagle算法会阻止数据的发送,直到有数据分组为止
                .HTTP应用程序会设置TCP_NODELAY来禁用Nagle算法
                
            e.TIME_WAIT累积与端口耗尽
                .TCP会在内存中维护一个小的控制块并且存储最近所关闭的IP地址和端口号,这类信息会维持2秒钟(2MSL),以处理连接关闭4步中的任一步
                 丢失的情况
                .客户端每次连接上服务器时都会获得一个新的源端口,以实现连接的唯一性

三、HTTP连接的处理
        1.常被误解的Connection首部
            a.Connection首部可以承载3种不同类型的标签
                .HTTP首部字段名,列出了只与此连接有关的首部
                .任意标签值,用于描述此连接的非标准选项
                .值close,说明完成此操作之后需关闭这条持久连接

            b.HTTP应用程序收到带有Connection首部的请求时,接收端会解析发送的请求,在转发给下一跳之前删除Connection首部

        2.串行事务处理延时
            a.并行连接
                通过多条TCP连接发起并发的HTTP请求
        
            b.持久连接
                重用TCP连接,以消除连接及关闭的延时

            c.管道化连接
                通过共享的TCP连接发起并发的HTTP请求

            d.复用的连接
                交替传送请求和响应

四、并发连接
            HTTP允许客户端打开多条连接,并行的执行多个HTTP连接(可以在多台服务器上进行连接)
    
            1.并行连接可能会提高页面的加载速度
        
            2.并行连接不一定快
                .客户端网络带宽不足
                .打开大量连接会消耗很多内存资源,从而引发自身的性能问题
                .浏览器会将并发连接数限制为一个较小的值

五、持久连接
            .应用程序发起同一台服务器的多次连接
            .HTTP11允许HTTP设备在事务处理结束之后仍然保持正在打开的状态

            1.持久以及并行连接
                a.并行连接缺点
                        .每个事务都会打开/关闭一条新的连接,会耗费时间和带宽
                        .由于TCP慢启动的存在,每条新连接的性能都会降低
                        .可打开的并行连接数量实际上是有限的

                b.持久连接的两种类型
                    HTTP/1.0 + keep-Alive连接
                    HTTP/1.1 + persistent连接

            2. HTTP/1.0 + keep-Alive连接
                
            3.Keep-Alive操作
                客户端包含Connection:Keep-Alive首部,如果服务器愿意为下一条连接请求保持打开状态,就在响应中包含相同的首部,如果没有,客户端
                会在发送响应报文后关闭连接

            4.Keep-Alive选项
                .timeout
                        服务器希望将连接保持在活跃状态的时间
                .max
                        服务器还希望为多少个事务保持此连接的活跃状态

            5.持久连接
                HTTP1.1默认支持持久连接
                要在事务完成后关闭连接可以在首部加入Connection-Close
    
            6.持久连接的限制和规则
                .发送了Connection-Close首部后,客户端就无法在那条连接上发送更多请求了
                .只有当实体部分的长度和相应的Content-Length一致,或者用分块传输编码连接才能保
                 持持久连接
                .HTTP1.1的代理能够分别管理与客户端和服务器的持久连接,每个持久连接只适合于一
                 跳传输
                .HTTP1.1设备可以在任意时刻关闭连接
                .HTTP1.1应用程序必须能够从异步关闭中恢复过来

六、管道化连接
        将多条请求放入队列,当第一条请求发送时,第二、三条请求跟着发送
        
七、关闭连接的奥秘
        1.正常关闭连接
            a.完全关闭与半关闭
                完全关闭:关闭TCP连接的输入输出(close())
                半关闭:关闭输入或输出的一边(shutdown)

            b.TCP关闭及重置错误
                关闭连接的输出信道总是安全的
                关闭连接的输入信道不安全,当另一端向其发送数据时,会产生TCP连接重置,并会清空操
                作系统缓冲区

            c.正常关闭
                
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章