TCP編程

TCP:是一種面向連接的,可靠的基於字節流的傳輸層通信協議。

工作過程:

建立連接:通過三次握手建立連接:

第一次握手:建立連接時,客戶端發送SYN包(SEQ=x)到服務器,並進入SYN_SEND狀態,等待服務器確認;
第二次握手:服務器收到SYN包,必須確認客戶的SYN(ACK=x+1),同時自己也發送一個SYN包(SEQ=y),即SYN+ACK包,此時服務器進入SYN_RECV狀態;
第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ACK=y+1),此包發送完畢,客戶端和服務器進入Established狀態,完成三次握手。

傳輸數據:
  • 一旦通信雙方建立了TCP鏈接,連接中的任何一方都能向對方發送數據和接收對方發來的數據。TCP協議負責把用戶數據(字節流)按一定的格式和長度組成多個數據報進行發送,並在接收到數據報之後按分解順序重新組裝和恢復數據。
  • 利用TCP傳輸數據時,數據是以字節流的形式進行傳輸的。客戶端與服務器建立連接後,發送方需要先將發送的數據轉換爲字節流,然後將其發送給對方。發送數據時,程序員可以通過程序不斷地將數據流陸續寫入TCP的發送緩存中,然後TCP自動從發送緩存中取出一定量的數據,將其組成TCP報文段逐個發送給IP層,再通過IP層之下的網絡接口發送出去。接收端從IP層接收TCP報文段後,將其暫時保存在接受緩存中,這是程序員就可以通過程序依次讀取接受緩存中的數據,從而達到相互通信的目的。
終止連接:

建立一個連接需要三次握手,而終止一個連接需要經過四次握手,這是由於TCP的半關閉(half-close)造成的。
關閉TCP連接

TCP的主要特點:

1,TCP是面向連接的協議;
2,端到端的通信。每個TCP連接只能有兩個端點,而且只能一對一通信,不能一點對多點直接通信;
3,高可靠性。通過TCP連接傳送的數據,能夠保證數據無差錯,不丟失,不重複地準確到達接收方,並且保證數據到達的順序與其發出的順序相同;
4,全雙工方式傳輸;
5,數據以字節流的方式傳輸;
6,傳輸的數據無消息邊界。


20150305

發佈了35 篇原創文章 · 獲贊 12 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章