TCP

1.1TCP/IP
    IP因特網協議:聯網主機的路由選擇和尋址
    TCP傳輸控制協議:在不可靠的傳輸信道上提供可靠的抽象層
    TCP嚮應用層隱藏了大多數網絡通信的複雜細節
    比如丟包重發、按序發送、擁塞控制及避免、數據完整等
    爲精確傳送做了優化,所有字節準確被接收,到達客戶端順序一致性
2.1三次握手
    建立連接必須經過三次握手,這是爲了確保接收端和發送端的接受和發送都是完好的
    這一過程中涉及了分組和序列號的傳輸
    SYN:客戶端選擇一個隨機序列號x,併發送一個SYN分組,還包含其他TCP標誌和選項
    SYN ACK:服務器給x加1,選擇自己的隨機序列號,追加自己的標誌和選項
    ACK:客戶端給x和y加1併發送握手期間的最後一個ACK分組
    客戶端在發送ACK分組後可以立即發送數據
    服務端要等到接收到ACK分組纔可以發送數據
    握手帶來的延遲給創建一個TCP連接都要付出巨大的代價,而且連接不是想重用就能夠重用的
2.2擁塞預防及控制
    網絡擁塞是指在分組交換網絡中傳送分組的數目太多時,由於存儲轉發節點的資源有限而造成網絡傳輸性能下降的情況
    往返時間超過了所有主機的最大中斷間隔,相應主機在網絡中製造越來越多的數據報副本
    交換節點的緩衝區被填滿,多出來的分組要被刪除,每個分組的某個副本會到達目標
    這就是擁塞崩潰,TCP加入了一系列機制來控制雙向發送數據的速度
2.2.1流量控制
    預防發送端過多的向接收端發送數據,否則數據過多而無法處理,比如忙碌、負載重或緩衝區既定
    TCP連接的每一方都需要事先通告自己的接收窗口(rwnd),包含了緩衝區的信息
2.2.2慢啓動
    但是建立初期,誰也不知道可用帶寬是多少,因此需要一個估算機制,根據網絡動態變化
    舉個例子,你在家中看視頻,服務器會盡最大努力給你提供數據
    這個時候,你家人開始用網了,供視頻的帶寬一下就少了,這個時候服務器必須調整發送速度
    否則,由於接收端不能立即處理這些數據,這些數據必定在中間某個過程中堆積,最終分組被刪除
    新算法:慢啓動、擁塞預防、快速重發、快速恢復
    擁塞窗口大小(cwnd):發送端對客戶端接收確認(ACK)之前可以發送數據量的限制
    慢啓動以保守的窗口初始化連接,隨後每次往返都會成倍的提高傳輸的數據量
2.2.3擁塞預防
    擁塞預防算法將丟包作爲網絡擁塞的標誌,也就是某個連接發生擁堵了,必須採取刪包措施
    所以通過調整窗口大小,避免造成過多的包丟失
2.3帶寬延遲積BDP
    數據鏈路的容量與端到端延遲的乘積,就是任意時刻處於在途未確認狀態的最大數據量
2.4隊首阻塞
    有時候這種按序交付和可靠交付並不太重要,反而會導致額外的延遲
    TCP分組都會帶着一個唯一的序列號被髮出,而且需要按順序到達接收端
    如果中間有一個分組沒能到達,那麼後續分組就要保存在TCP緩衝區,等待丟失的分組重發併到達接收端
    這一切都在TCP層,應用程序一無所知,必須等待分組全部到達才能訪問數據
    應用程序只能通過套接字讀數據時感覺到延遲交付,這就是隊首阻塞
2.5應用程序行爲調優
    調節TCP性能可以讓服務端和客戶端之間達到最大的吞吐量和最小延遲
    再快也快不過什麼都不用發送,能少發就少發
    數據傳輸不能更快,但我們可以減少他們傳輸的距離
    重用TCP連接是提升性能的關鍵

    大多數情況之下,TCP的瓶頸都是延遲而不是帶寬

 

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