學習筆記19-TCP創建和釋放鏈接的過程

TCP/IP協議

在世界上,各類各樣的電腦運行着各自不一樣的操做系統,就像世界各地的人們說着不一樣的語言,他們不能直接溝通交流,因此須要制定一系列的規則來幫助他們互相理解交流,而後才能將世界鏈接起來。
一樣,要創建一個計算機網絡,也須要這樣一系列的規則,這就是TCP/IP協議。
計算機網絡模型
其中傳輸層主要有兩個協議:
TCP(Transmission Control Protocol 傳輸控制協議)和UDP(User Data Protocol 用戶數據報協議)
TCP是面向鏈接的協議。
也就是說,在數據傳輸前,雙方必須創建一個可靠的鏈接。
UDP是非鏈接的協議。
傳輸數據以前,源端和終端不創建鏈接。
UDP協議,當源端想要傳送數據時,就簡單地去抓取應用程序的數據,而後儘量快地把它扔到網絡上。也就是說傳送數據僅僅受應用程序生成數據的速度,計算機的能力和傳輸帶寬的限制。
在終端,UDP把每一個消息段放到隊列中,應用程序本身去讀消息隊列。web

常見的基於TCP的應用層協議有:
Telnet(Teletype over the Network) 遠程登陸
FTP(File Transfer Protocol) 文件傳輸協議
SMTP(Simple Mail Transfer Protocol) 簡單郵件傳輸協議 用來發送電子郵件
POP3(Post Office Protocol 3)郵件讀取協議 用來接收電子郵件
HTTP(Hyper Text Transfer Protocol)超文本傳輸協議
HTTPS(Hyper Text Transfer Protocol Secure)安全超文本傳輸協議安全

常見的基於UDP的應用層協議有:
NFS(Network File System)網絡文件系統
TFTP(Trivial File Transfer Protocol)簡單文件傳輸協議
SNMP(Simple Network Management Protocol) 簡單網絡管理協議 用於網絡信息的收集和網絡管理
DHCP(Dynamic Host Configuration Protocol)動態主機配置協議
NTP(Network Time Protocol) 網絡時間協議 用於網絡同步
BOOTP(Boot Protocol)啓動協議 用於無盤設備服務器

常見的基於TCP和UDP的有:
DNS(Domain Name Service) 域名服務 用於完成地址查找,郵件轉發等工做
ECHO(Echo Protocol) 迴繞協議 用於查錯及測量應答時間網絡

關於比較常見的HTTP協議,有兩種:長鏈接和短鏈接
短鏈接:指通訊雙方有數據交互時,就創建一個鏈接,數據發送完,則斷開鏈接
長鏈接:指每次操做完以後不斷開鏈接,下次就能夠直接發送數據包了,不用再創建鏈接。
固然長鏈接不能無限期的維持,會有一個超時時間,超過這個時間,服務器會告訴客戶端鏈接過時。tcp

TCP

其中TCP爲應用進程提供可靠交付的,全雙工的通訊,也就是保證通訊的數據不會丟失或者錯亂,且通訊雙方能夠發送和接收數據。
TCP
從圖中能夠看到,發送方給要發送的數據加上了一個TCP首部,構成一個完整的TCP報文,這個首部的格式以下:
TCP報文
其中有幾個關鍵位置比較重要,首先是ACK位,只有當ACK=1時確認號字段纔有效,表示響應請求。而後是SYN位,當SYN=1時表示這是一個鏈接創建請求或者鏈接接受報文。最後是FIN位,當FIN=1時表示發送完畢,要求釋放鏈接。
下面進入正題:svg

TCP的三次握手和四次揮手

TCP創建鏈接的過程能夠歸納爲三次握手:
第一次握手:主機A發送位碼爲SYN=1,隨機產生seq number=1234567的數據包到服務器,主機B由SYN=1知道,A要求創建聯機;
第二次握手:主機B收到請求後要確認聯機信息,向A發送ack number=(主機A的seq+1),SYN=1,ACK=1,隨機產生seq=7654321的包;
第三次握手:主機A收到後檢查ack number是否正確,即第一次發送的seq number+1,以及位碼ACK是否爲1,若正確,主機A會再發送ack number=(主機B的seq+1),ACK=1,主機B收到後確認seq值與ack=1則鏈接創建成功。
完成三次握手,主機A與主機B開始傳送數據。
TCP釋放鏈接的過程能夠歸納爲四次揮手:
(1)客戶端C發送一個FIN,用來關閉客戶A到服務器B的數據傳送。
(2)服務器S收到這個FIN,它發回一個ACK,確認序號爲收到的序號加1。而後服務器S向上一層確認是否能夠關閉鏈接。
(3)服務器S跟上層確認關閉與客戶端C的鏈接後,發送一個FIN給客戶端C。
(4)客戶端C發回ACK報文確認,確認序號設置爲收到的序號加1。
TCP創建和釋放鏈接操作系統