c++教程 求高人指點(diǎn):SSL握手、tcp三步建立連接、https之間的關(guān)系?
求高人指點(diǎn):SSL握手、tcp三步建立連接、https之間的關(guān)系?1. SSL高于TCP/IP,所以它必須是2。是的,3號端口完全一樣。如果不同,webserver將無法解析CP消息的前20個(gè)字節(jié)是固
求高人指點(diǎn):SSL握手、tcp三步建立連接、https之間的關(guān)系?
1. SSL高于TCP/IP,所以它必須是2。是的,3號端口完全一樣。如果不同,webserver將無法解析
CP消息的前20個(gè)字節(jié)是固定的,最后4個(gè)字節(jié)是根據(jù)需要添加的。所以TCP的頭至少是20個(gè)字節(jié)。所以我們需要用長度來標(biāo)記它。保留的6位現(xiàn)在不使用。將來,可能會使用緊急指針。當(dāng)urg=1時(shí),緊急字段有效。它告訴系統(tǒng)這個(gè)報(bào)文段有緊急數(shù)據(jù)
TCP協(xié)議建立連接的過程:
在TCP/IP協(xié)議中,TCP協(xié)議提供可靠的連接服務(wù),通過三次握手建立連接。
第一次握手:建立連接時(shí),客戶端向服務(wù)器發(fā)送一個(gè)syn數(shù)據(jù)包(syn=J),并進(jìn)入syn發(fā)送狀態(tài),等待服務(wù)器確認(rèn);
第二次握手:服務(wù)器收到syn數(shù)據(jù)包時(shí),必須確認(rèn)客戶端的syn(ACK=J 1),同時(shí)還發(fā)送一個(gè)syn數(shù)據(jù)包(syn=k),即是,syn ACK數(shù)據(jù)包。此時(shí),服務(wù)器進(jìn)入syn_uv狀態(tài);
第三次握手:客戶端接收服務(wù)器的syn+ACK數(shù)據(jù)包并將ACK發(fā)送到服務(wù)器(ACK=k1)。數(shù)據(jù)包發(fā)送后,客戶機(jī)和服務(wù)器進(jìn)入建立狀態(tài)并完成三次握手。
三次握手后,客戶端和服務(wù)器開始傳輸數(shù)據(jù)
未連接隊(duì)列:在三次握手協(xié)議中,服務(wù)器維護(hù)一個(gè)未連接隊(duì)列,該隊(duì)列為每個(gè)客戶端的syn數(shù)據(jù)包(syn=J)設(shè)置一個(gè)條目。該條目表示服務(wù)器已經(jīng)接收到syn數(shù)據(jù)包,向客戶機(jī)發(fā)送了確認(rèn)信息,并且正在等待客戶機(jī)的確認(rèn)信息包。這些條目標(biāo)識的連接處于服務(wù)器接收狀態(tài)的syn中。當(dāng)服務(wù)器從客戶端接收到確認(rèn)包時(shí),它將刪除條目,服務(wù)器將進(jìn)入已建立狀態(tài)。
Backlog參數(shù):表示未連接隊(duì)列的最大數(shù)量。
服務(wù)器發(fā)送syn ack數(shù)據(jù)包的syn ack重傳次數(shù)。如果它沒有收到客戶機(jī)的確認(rèn)數(shù)據(jù)包,服務(wù)器將第一次重新傳輸它。如果它在一段時(shí)間內(nèi)沒有收到客戶機(jī)的確認(rèn)數(shù)據(jù)包,它將第二次重新傳輸它。如果重傳次數(shù)超過系統(tǒng)指定的最大重傳次數(shù),系統(tǒng)將從半連接隊(duì)列中刪除連接信息。注意,每次重傳的等待時(shí)間不一定相同。
半連接生存期:它是指半連接隊(duì)列中條目的最大生存期,即從接收syn數(shù)據(jù)包到確認(rèn)消息無效的服務(wù)的最大生存期。此時(shí)間值是所有重傳請求數(shù)據(jù)包的最大等待時(shí)間之和。有時(shí)也稱為超時(shí)時(shí)間和syn生存時(shí)間 recv的生存時(shí)間。