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.正常關閉
                
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章