tcp 協議概述
1.tcp提供一種面向連線的、可靠的位元組流服務。
2.兩個應用程式通過tcp連線交換8bit位元組構成的位元組流。
3.每個tcp首部都包含源端和目的端的埠號,用於尋找發端和收端應用程序。這兩個值加上ip首部中的源端ip位址和目的端ip位址唯一確定乙個tcp連線。
4.乙個ip位址和乙個埠號也稱為乙個插口(socket),出現在最早的tcp規範(rfc793)
tcp 保證可靠性:
1.應用資料被分割成 tcp 認為最適合傳送的資料塊
2.當 tcp 發出乙個段後,它啟動乙個定時器,等待目的端確認收到這個報文段,超時重發
3.當 tcp 收到發自 tcp 連線另一端的資料,它將傳送乙個確認
4.tcp 將保持它首部和資料的檢驗和
5.如果必要, tcp 將對收到的資料進行重新排序
6.tcp 還能提供流量控制
tcp是乙個面向連線的協議。
1.使用telnet與tcpdump互相配合進行測試
seq:sequence number(順序號碼)
ack:acknowledge number(確認號碼)
syn:syn(synchronous建立聯機)
主機a:115.159.28.111 主機b:10.141.14.117.http
第一次握手:a傳送syn=1, 產生隨機seq=1784777886
第二次握手:b傳送 隨機產生seq=1181145550,ack=接收到的seq+1 1784777887
第三次握手:a傳送 ack=1,
tcp首部標誌位:
s syn 同步序號
f fin 完成傳送
r rst 復位
p pst 推送
. 置為0
結束連線:
tcp 有乙個特別的概念叫做 half-close,這個概念是說,tcp 的連線是全雙工(可以同時傳送和接收)連線,因此在關閉 連線的時候,必須關閉傳和送兩個方向上的連線。客戶機給伺服器乙個 fin 為1的 tcp 報文,然後伺服器返回給客戶端乙個確認 ack 報文, 並且傳送乙個 fin 報文,當客戶機回覆 ack 報文後(四次握手),連線就結束了。
客戶端狀態遷移:
closed->syn_sent->established->fin_wait_1->fin_wait_2->time_wait->closed
服務端狀態遷移:
closed->listen->syn 收到->established->close_wait->last_ack->closed
長連線:指在乙個連線上可以連續傳送多個資料報,在連線保持期間,如果沒有資料報傳送,需要雙方發鏈路檢測包。
短連線:是指通訊雙方有資料互動時,就建立乙個連線,資料傳送完成後,則斷開此連線,即每次連線只完成一項業務的傳送。
ulimit -a
ulimit -n用於限制程序能夠開啟的檔案描述符的最大數目。因為任何裝置在linux下都是檔案,通訊的介面也有專門的介面檔案負責,所以linux下程序tcp鏈結的最大併發量也受限於該值
TCP協議概述
傳輸控制協議 tcp,transmission control protocol 是一種面向連線的 可靠的 基於位元組流的傳輸層通訊協議 tcp旨在適應支援多網路應用的分層協議層次結構。連線到不同但互連的計算機通訊網路的主計算機中的成對程序之間依靠tcp提供可靠的通訊服務。tcp假設它可以從較低階別...
傳輸控制協議TCP概述
tcp是tcp ip體系中非常複雜的乙個協議。下面介紹tcp最主要的特點。tcp是面向連線的運輸層協議。這就是說應用程式在使用tcp協議之前,必須先簡歷tcp連線。在傳送資料完畢後,必須釋放已經建立的tcp連線。每一條tcp連線只能有兩個端點,每一條tcp連線只能是 點對點 一對一 的 tcp提供可...
TCP程式設計步驟概述
tcp 程式設計的伺服器端一般步驟是 1 建立乙個socket,用函式socket 2 準備通訊位址 3 繫結ip位址 埠等資訊到socket上,用函式bind 4 開啟監聽,用函式listen 5 接收客戶端上來的連線,用函式accept 6 收發資料,用函式send 和recv 或者read 和...