回覆列表
-
1 # a不會愛的小笨蛋
-
2 # 使用者4912889400776
TCP協議建立連線的過程:
在TCP/IP協議中,TCP協議提供可靠的連線服務,採用三次握手建立一個連線。
第一次握手:建立連線時,客戶端傳送syn包(syn=j)到伺服器,並進入SYN_SEND狀態,等待伺服器確認;
第二次握手:伺服器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也傳送一個SYN包(syn=k),即SYN+ACK包,此時伺服器進入SYN_RECV狀態;
第三次握手:客戶端收到伺服器的SYN+ACK包,向伺服器傳送確認包ACK(ack=k+1),此包傳送完畢,客戶端和伺服器進入ESTABLISHED狀態,完成三次握手。
完成三次握手,客戶端與伺服器開始傳送資料,在上述過程中,還有一些重要的概念:
未連線佇列:在三次握手協議中,伺服器維護一個未連線佇列,該佇列為每個客戶端的SYN包(syn=j)開設一個條目,該條目表明伺服器已收到SYN包,並向客戶發出確認,正在等待客戶的確認包。這些條目所標識的連線在伺服器處於Syn_RECV狀態,當伺服器收到客戶的確認包時,刪除該條目,伺服器進入ESTABLISHED狀態。
Backlog引數:表示未連線佇列的最大容納數目。
SYN-ACK 重傳次數 伺服器傳送完SYN-ACK包,如果未收到客戶確認包,伺服器進行首次重傳,等待一段時間仍未收到客戶確認包,進行第二次重傳,如果重傳次數超過系統規定的最大重傳次數,系統將該連線資訊從半連線佇列中刪除。注意,每次重傳等待的時間不一定相同。
半連線存活時間:是指半連線佇列的條目存活的最長時間,也即服務從收到SYN包到確認這個報文無效的最長時間,該時間值是所有重傳請求包的最長等待時間總和,有時也稱半連線存活時間為Timeout時間、SYN_RECV存活時間。
TCP/IP協議的工作流程如下:
1.在源主機上,應用層將一串應用資料流傳送給傳輸層。
2.傳輸層將應用層的資料流截成分組,並加上TCP報頭形成TCP段,送交網路層。
3.在網路層給TCP段加上包括源、目的主機IP地址的IP報頭,生成一個IP資料包,並將IP資料包送交鏈路層。
4.鏈路層在其MAC幀的資料部分裝上IP資料包,再加上源、目的主機的MAC地址和幀頭,並根據其目的MAC地址,將MAC幀發往目的主機或IP路由器。
5.在目的主機,鏈路層將MAC幀的幀頭去掉,並將IP資料包送交網路層。
6.網路層檢查IP報頭,如果報頭中校驗和與計算結果不一致,則丟棄該IP資料包;若校驗和與計算結果一致,則去掉IP報頭,將TCP段送交傳輸層。
7.傳輸層檢查順序號,判斷是否是正確的TCP分組,然後檢查TCP報頭資料。若正確,則向源主機發確認資訊;若不正確或丟包,則向源主機要求重發資訊。
8.在目的主機,傳輸層去掉TCP報頭,將排好順序的分組組成應用資料流送給應用程式。這樣目的主機接收到的來自源主機的位元組流,就像是直接接收來自源主機的位元組流一樣。