按照陳老師的建議,先要把實驗5.5搞懂。服務器
寫寫實驗5.5 TCP通訊實驗的原理,其實書上寫的有。敲一遍,瞭解一下。函數
TCP協議全稱是傳輸控制協議。TCP是基於IP數據幀的傳輸,提供可靠的數據傳輸服務。TCP有如下特色:spa
面向鏈接:TCP協議規定,在進行數據傳輸以前,兩個節點必須使用TCP鏈接的創建過程進行鏈接,創建鏈接成功後,再進行數據傳輸。終止鏈接也要使用TCP鏈接中斷過程關閉鏈接。接口
雙向傳輸:在TCP協議中,每個鏈接都有2個邏輯管道,一收一發。數據能夠同時進行收和發,TCP報頭包含傳出數據和確認數據的序列號。it
可靠傳輸:TCP協議規定,在傳輸數據時,要按順序發送數據,並要獲得接收方的確認,沒有獲得確認的數據將重發,接收方接收到重複包將丟棄,失序包將被還原爲正確的序列。TCP校驗字提供比特級的完整性校驗。原理
數據字節流:在TCP的輸入和輸出邏輯管道上傳輸的數據被認爲是連續的字節流,TCP報頭的序列號和確認號都是以字節爲單位肯定的。TCP不知道所傳輸的字節流的內容是什麼,以及在哪裏起始,在哪裏結束,對字節流數據的分析只能經過應用層的協議進行分析。服務器端
流控制:TCP協議中還規定了數據傳輸的流量控制,防止堵塞。在數據傳輸的雙方都有接收緩衝區,若是一方接收緩衝區滿了,另外一方將再也不發送,直到緩衝區有空餘的空間。而雙方的接收緩衝區都是獨立的,永遠也不會溢出。im
應用層數據分段:TCP創建鏈接時,雙方都交換可接收的最大段,若是接收到ICMP的「路徑最大傳輸單位」MTU消息,能自動調整TCP最大短的大小。通信
一對一傳輸:TCP協議實現一對一通訊服務。數據
SOCKET接口函數是TCP/IP的API,SOCKET API函數從使用的方式來分有三種
通用函數,就是TCP和UDP通訊都使用的函數;
TCP專用函數,就是隻是在TCP通訊中使用的函數;
UDP專用函數,就是隻在UDP通訊中使用的函數。
編寫TCP通訊的任務時分爲服務器方式和客戶機方式兩種。服務器方式是須要接聽鏈接,只有在與客戶機創建鏈接後才能進行數據處理。客戶機方式是主動鏈接服務器,它也是在鏈接成功後才能進行數據處理。下面是TCP通訊時服務器端和客戶機端通訊的函數應用流程圖。
服務器端與 客戶機端