UNIX网络编程笔记(1):TCP简介
1、簡介
TCP(Transmission Control Protocol),即傳輸控制協議,是一種面向連接的、可靠的、基于字節流的傳輸層通信協議。TCP協議有以下幾個特點:
2、TCP連接的建立
TCP建立連接就是大家熟知的三次握手:
通常發生以下幾個步驟:
也就是說,對于客戶和服務器來說,每個人都有一個初始序列號SYN,每個人對對端的確認都是在對端SYN的基礎上加1。比如:客戶發送SYN為j,那么服務器發送的對客戶SYN的ACK就是j+1;同理,如果服務器給客戶的SYN是k,那么客戶發送給服務器的ACK就是k+1。下圖展示了TCP的三次握手的具體過程:
由圖可知,ACK中的確認號就是發送這個ACK的一端所期待的下一個序列號。
3、TCP連接的終止
終止一個TCP連接需要四個分節,因為這里涉及到數據的傳輸。
下面是TCP連接終止的步驟:
連接的兩端每一端都需要一個FIN和ACK,因此需要四個分節。不過也有可能不是四個。比如,執行主動關閉的一端的FIN可以隨數據一起發送,還有,執行被動關閉的一端的ACK和自己的FIN有可能一起發送。下圖展示了關閉連接的過程:
和TCP建立連接一樣,這里的ACK是FIN+1。
圖中給出的是客戶端執行主動關閉,不過可以由服務器端執行主動關閉。
4、TCP狀態轉換圖
由于TCP連接的建立涉及到三次握手,終止連接需要四次握手,因此TCP連接的狀態在一次完整的連接與終止中可能達到多個。實際上,一個TCP連接的狀態可以有11種,這些狀態可以由具體的操作連接起來,形成一個狀態轉換圖。
下圖就是TCP狀態轉換圖,圖中用粗實線表示通常的客戶狀態轉換,用粗虛線表示通常的服務器狀態轉換:
5、一個完整的TCP連接
下圖展示了一個完整的TCP連接,包括建立連接、數據傳輸與連接終止三個過程:
6、套接字對
一個TCP連接的套接字對(socket pair)是一個定義該連接的兩個端點的四元組:本地IP地址、本地TCP端口號。外地IP地址、外地TCP端口號。套接字對唯一標識一個網絡上的每個TCP連接。
標識每個端點的兩個值(IP地址和端口號)通常稱為一個套接字。
總結
以上是生活随笔為你收集整理的UNIX网络编程笔记(1):TCP简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 成都欢乐谷垂直过山车有多高
- 下一篇: 明天我要和班上同学solo 我用阿卡丽他