贵州十一选五前三直开奖号 | 財經 | 資源 | 理財 | 考研 | 職場 | 論文 | 資格 | 股票學院 |

股票學院: 股票入門 - 股票知識 - 股票術語 - 炒股技巧 - 選股技巧 - 跟莊技巧 - 炒股經驗 - 投資策略 - K線圖 - 均線 - 分時圖 - 成交量 - 波浪理論 - 基本面分析 - 心理分析 - 漲停研究 - 趨勢線 - 江恩理論 - MACD - KDJ - 技術指標 - 財經股票書籍在線閱讀 - 金融類書籍下載 - 銀行學院 - 保險學院 - 外匯學院 - 債券學院 - 股票學院 - 基金學院 - 港股學院 - 黃金學院

當前位置:贵州十一选五前三直开奖号 > 金融云 > 文章正文

贵州十一选五开奖及走势图:一文讀懂客戶端請求是如何到達服務器的

時間:2019-09-21 06:49:33來源:今日頭條作者:佚名

    贵州十一选五前三直开奖号 www.grzfr.com 互聯網是人類歷史上最偉大的發明創造之一,而構成互聯網架構的核心在于TCP/IP協議。那么TCP/IP是如何工作的呢,我們先從數據包開始講起。

    一文讀懂客戶端請求是如何到達服務器的

    1、數據包

    一、HTTP請求和響應步驟

    一文讀懂客戶端請求是如何到達服務器的(干貨)

    http請求全過程

    一文讀懂客戶端請求是如何到達服務器的(干貨)

    請求

    一文讀懂客戶端請求是如何到達服務器的(干貨)

    響應

    以上完整表示了HTTP請求和響應的7個步驟,下面從TCP/IP協議模型的角度來理解HTTP請求和響應如何傳遞的。

    2、TCP/IP概述

    我們以RFC 1180中的圖作為參考

    一文讀懂客戶端請求是如何到達服務器的(干貨)

    上圖展示了四層TCP/IP協議圖,其中network applications是應用程序,屬于應用層;TCP和UDP主要是傳輸數據,屬于傳輸層,TCP確保端對端的可靠傳輸并盡量確保網絡健康運行,而UDP是簡單不可靠傳輸;IP主要解決路由問題,屬于網絡層;ARP是網絡地址轉換,主要用來轉換IP地址和MAC地址,介于數據鏈路層和網絡層之間,可以看成2.5層;ENET在這里是數據鏈路層,網卡驅動屬于這一層,主要做具體的介質傳輸,前面示例中的廣告請求抓包就是在數據鏈路層抓取。

    值得注意的是,ARP在linux系統里屬于網絡層,而在RFC里是介于數據鏈路層和網絡層之間。在《TCP/IP詳解》一書里,ARP被放到了數據鏈路層。當解決實際問題的時候,我們應該把ARP放到網絡層。

    一文讀懂客戶端請求是如何到達服務器的(干貨)

    上圖給出使用TCPCopy在不同層發包的使用方法。如果TCPCopy從數據鏈路層發包,由于沒有享受到ARP服務,用戶需要在使用TCPCopy的時候額外加上MAC地址;而如果TCPCopy從IP層發包,則無需指定MAC地址。

    本課程主要講述TCP相關案例,沒有特殊說明的話,TCP特指傳輸層的TCP。

    3、什么是TCP

    TCP即傳輸控制協議,是一種面向連接的、可靠的、基于字節流的通信協議。TCP的主要工作是定義端口標識應用程序的身份,實現端對端的可靠通信,并進行擁塞控制,防止互聯網崩塌。

    TCP有如下關鍵特性:

    一文讀懂客戶端請求是如何到達服務器的(干貨)

    由于TCP是面向連接的協議,所以是一種有狀態的協議,而有狀態的協議往往比較復雜,因此TCP學習起來也比較困難。

    通過狀態圖來查看一下TCP狀態的復雜性:

    一文讀懂客戶端請求是如何到達服務器的(干貨)

    上圖展示了錯綜復雜的TCP狀態圖,然而現實更加復雜。

    現實中的TCP狀態圖其實是這樣的:

    一文讀懂客戶端請求是如何到達服務器的(干貨)

    圖中,不僅SYN_RCVD狀態能夠收到reset數據包(圖中RST,reset數據包是重置連接的數據包,可以使TCP狀態瞬間變為CLOSED狀態,而CLOSED狀態是無法追蹤的),而且FIN_WAIT1、FIN_WAIT2、ESTABLISHED、SYN_SENT和CLOSE_WAIT都能被reset數據包打回到CLOSED狀態。不僅如此,TCP狀態還受到超時的影響。例如Linux系統,一旦連接處于FIN_WAIT_2,在60秒內(默認)如果沒有接收到對端的FIN數據包,系統會把此連接狀態FIN_WAIT_2直接變到CLOSED狀態。雖然Linux這樣做是為了防止攻擊,但這種超時就干掉連接狀態的做法,很可能誤殺了很多正常連接,從而使問題更加捉摸不定。

    在互聯網領域,很多詭異的問題跟TCP狀態有關系,課程后續會有較多案例來講述這些靈異問題。

    4、端口

    當我們去連接服務器程序時,需要指明服務器端口。為什么需要端口呢?因為系統是通過端口來區分不同應用程序,TCP通過端口找到上層應用。

    需要注意的是,端口號是有限的,端口號最大為65535,能夠利用的端口數量隨配置而定。例如在壓力測試過程中,一臺機器可以利用的TCP端口是有限的,能夠利用的連接(客戶端端口,客戶端IP,服務器應用端口,服務器IP地址)是有限的。為了解決這個問題,可以配置多IP地址來擴大可用連接數量。系統支持同一個端口,不同的IP地址來綁定不同的應用。Linux高版本系統下,在綁定同一個IP地址的情況下,我們還可以利用REUSEPORT機制使不同應用程序共享同一個監聽端口,這對高性能服務器開發是非常有用的。我們開發的數據庫中間件cetus就利用這個機制來解決短鏈接風暴的問題。

    5、IP

    網絡層的主要工作是定義網絡地址,區分網段,子網內MAC尋址,對不同子網的數據包進行路由。IP的主要作用就是在復雜的網絡環境中將數據包發給最終的目標地址。

    IP是面向無連接的,是無狀態的協議。IP為什么被設計成無狀態呢?

    1. 無狀態協議處理簡單

    2. 通信之前無需建立連接

    3. TCP已經面向連接服務了,IP層可以委托TCP來解決面向連接的問題

    4. 由于不帶有狀態,互聯網路由起來更加自由,容錯性也更強

    相關閱讀

    焦點圖文

    關于我們 | 廣告服務 | 商務合作 | 網站地圖

    版權所有 Copyright(C)2018-2020 蘇州騏云躍網絡科技有限公司,未經授權禁止復制或建立鏡像,否則將依法追究法律責任!
    聲明:我們不做任何形式的代客理財及投資指導,凡是以天下金融網名義做股票推薦的行為均屬違法!
    廣告商的言論與行為均與天下金融網無關!股市有風險,投資需謹慎。
    蘇公網安備 32050502000166號
    蘇ICP備14018528號
    商務合作:贵州十一选五前三直开奖号

    天下金融網版權所有