標籤:管理 互連網絡 重要 建立 重設 strong 對話 資料報 決定
核心知識點:
1.三向交握:seq和ack number
2.四次揮手:FIN和隨機數
一、TCP/IP協議
TCP/IP協議(Transmission control protool/Internet protool)叫做傳輸控制/網際協議,又叫做網路通訊協議。
這個協議是Internet國際互連網絡的基礎,TCP/IP協議是網路中使用的基本的通行協議。
雖然從名字上看TCP/IP協議(傳輸控制通訊協定/網際協議),但是TCP/IP實際上是一組協議,
包括上百個各種功能的協議,如:遠程登入、檔案傳輸和電子郵件等,
而TCP協議和IP協議是保證資料完整性傳輸的兩個基本的重要協議。
通常說TCP/IP是協議簇,而不單單是TCP和IP,TCP協議使用範圍極廣,是目前異種網路通訊使用的唯一協議體系,
適用於串連各種機型,既可用於區域網路,也可用於廣域網路。
TCP/IP是很多不同的協議組成,TCP使用者資料報表協議,也稱做TCP傳輸控制通訊協定(Transport Control Protool可靠的主機到主機層協議),
傳輸控制通訊協定是OSI網路的第四層的叫法,TCP傳輸控制通訊協定是TCP/IP傳輸的6個基本協議的一種,
兩個TCP意思不相同,TCP是一種可靠的連線導向的傳輸服務,它在傳輸資料時是分段進行的,主機交換資料必須建立一個對話。
它用位元流通訊,即資料被作為無結構的位元組流,通過TCP傳輸的欄位指定順序號,以獲得可靠性,
是OSI參考模型的第四層,TCP是使用IP的網間互連網功能而提供可靠的資料轉送,
IP不停的把報文放到網路上,而TCP是負責確定報文到達,
在協同IP的操作中TCP負責:握手過程、報文管理、流量控制、錯誤偵測和處理(控制),
可以根據一定的編號順序對非正常順序的報文給予重新排列順序。
傳輸協議就只有兩種,一種是可靠傳輸協議(TCP),一種是不可靠傳輸協議(UDP)。
關於TCP協議可以查看:
http://www.cnblogs.com/yangmingxianshen/p/7900531.html
http://www.cnblogs.com/yangmingxianshen/p/7787281.html
二、三向交握和四次揮手
1.三向交握:建立串連
TCP是對主機層的傳輸控制通訊協定,提供可靠的串連服務,採用三向交握確認建立一個串連,位碼即tcp的標誌位。
部分名詞解釋:
- SYN:建立聯機,標識狀態
- ACK:確認,標識狀態
- PSH:傳送
- FIN:結束
- RST:重設
- URG:緊急
- Sequence number:順序號碼
- Acknowledge number:確認號碼
第一次握手:主機A發送位碼為SYN=1,隨機產生seq number=1(假設)的資料包到伺服器上,主機B由SYN=123456知道,主機A要求建立串連。
第二次握手:主機B收到請求後要確認聯機資訊,向A發送ack number=(主機A的seq+1),syn=1,ack=1,隨機產生seq number=654321的包。
第三向交握:主機A收到後檢查ack number是否正確,即第一次發送的seq number+1,以及位碼ck是否為1,若正確,主機A會再發送ack number=(主機B的seq+1),
ACK=1,主機B收到後,確認seq值與ACK=1,如果正確則串連成功,就可以開始傳送資料了。
三向交握的關鍵的在於seq和ack number上面,前兩次握手都會隨機產生一個seq隨機數,這個隨機數將決定下次確認的ack number=(seq+1),
而SYN和ACK可以看作是一種狀態,A到B需要發送請求,B到A也要發送請求,所以前兩次握手是有SYN的,
而第一次握手是發起狀態,所以之後後面兩次有確認資訊ACK,以及ack number。
2.四次揮手:中斷連線
上面已經闡述了TCP請求如何通過三向交握建立串連的過程,現在闡述TCP請求如何通過4次回收來中斷連線的,如何保證資料的完整性和安全性的。
由於TCP串連是全雙工系統,因此每個方向都必須單獨進行關閉,這個原則是當一方完成它的資料發送任務後就發送一個FIN來終結這方面的串連。
收到一個FIN意味著這一方向沒有資料流動,一個TCP串連在收到一個FIN後仍能發送資料,首先進行關閉的一方將執行主動關閉,而另一方執行被動關閉。
現假設A到B資料轉送完畢:
第一次揮手:A發送給B一個FIN,標誌資料已經傳輸完畢,用來關閉A到B的資料轉送,同時還發送一個隨機數M,類似於seq。
第二次揮手:B收到資訊後會返回一個ack=M+1給A,表示已經收到。
第三次揮手:當B的資料轉送也結束的時候,B也會給A發送一個FIN,通知A已經傳輸完畢,同時還發送一個隨機數N。
第四次揮手:A收到資訊後,返回一個確認資訊,ack=N+1給B,通知B自己已經收到了。至此雙方都中斷連線,標誌著整個TCP會話結束。
四次揮手其實是兩次單方面的中斷連線,為啥需要這樣,這樣可以保證資料的完整性。
為什是三向交握,四次揮手?
首先要說明的是中斷連線並不是連續的,為了保證資料的完整性必須是:請求+確認的模式,所以中斷連線就是4次,
而建立串連的過程是連續的,兩次請求+一次確認所以就是三次。
TCP協議的三向交握和四次揮手機制