(1)三次握手是怎麼個意思?
三次握手的是為了是建立可靠的通訊通道,簡單來說就是資料的傳送與接收,而三次握手最主要的目的就是雙方確認自己與對方的傳送與接收機能正常。
這個三次握手只能是客戶端去發起,伺服器端接收確認的。正常來說伺服器是一直在監聽的,客戶端上線後去請求伺服器端,然後通過tcp協議進行連線。沒見過哪個伺服器一直不停地去詢問客戶端:你上線沒?你上線沒?要不要建立連線~~
第一次握手:client什麼都不能確認;server確認了對方傳送正常(因為client不確定自己是否真的發出去了,只能是我發了,希望你能收到。service端接收到資訊後表示,client傳送是沒有問題的)
第二次握手:client確認了:自己傳送、接收正常,對方傳送、接收正常;server確認了:自己接收正常,對方傳送正常(這時候server還不確定是否自己傳送正常,也不能確定對面接收正常,所以就需要繼續握手了)
第三次握手:client確認了:自己傳送、接收正常,對方傳送、接收正常;server確認了:自己傳送、接收正常,對方傳送接收正常。
然後大家都正常了,三次握手就完畢了,接下來就開始傳送資料了。
上面這個圖就是具體的要求了,值得說的一點就是兩邊用的協議就是tcp協議。伺服器端一開始不知道對面用的什麼協議,沒準是客戶端亂髮的什麼東西,然後通過三次握手,就知道對方是不是tcp協議了。(類似的就是你跟乙個人說話,你我不喜歡吃魚翅,對方如果回:吃那幹啥,再卡住嗓子了,那就是他壓根跟你不乙個頻道。)
四次揮手:
首先進行關閉的一方將執行主動關閉,而另一方則執行被動關閉,這裡客戶端、伺服器端都可以發起。 這裡用客戶端發起的例子說明。
(1)第一次揮手:client傳送乙個fin,用來關閉client到server的資料傳送,client進入fin_wait_1狀態。(意思是:客戶端除了確認資訊以外不給伺服器端傳送別的資料了)
(2)第二次揮手:server收到fin後,傳送乙個ack給client,確認序號為收到序號+1(與syn相同,乙個fin占用乙個序號),server進入close_wait狀態。(意思是,伺服器知道了,伺服器也不接收客戶端除了確認資訊以外的東西了)
(3)第三次揮手:server傳送乙個fin,用來關閉server到client的資料傳送,server進入last_ack狀態。(意思是伺服器也沒什麼要發給客戶端了了。伺服器除了接收確認資訊別的都不幹了,這裡要
注意:客戶端接收到這條資訊後會進入time_wait狀態,這是為了防止自己傳送的確認資訊丟失,伺服器端會再重新傳送一次剛剛的資訊。這個2msl(最大報文段生存時間)保證了伺服器端重發的資料到客戶端,如果這個時間過去了,還沒接到伺服器重發的確認資訊,那麼就是說伺服器端已經收到了自己傳送的資料,客戶端就可以關了
)。(4)第四次揮手:client收到fin後,client進入time_wait狀態,接著傳送乙個ack給server,確認序號為收到序號+1,server進入closed狀態,完成四次揮手。(伺服器接收到後就關了,不會再確認了)
為啥握手需要3次,揮手就要4次?
說白了就是:握手的時候伺服器端二次握手的時候其實是確認了兩項:伺服器既能收到,又能傳送,而揮手的時候就是要拆開說了。
由於tcp連線時全雙工的,因此,每個方向都必須要單獨進行關閉,這一原則是當一方完成資料傳送任務後,傳送乙個fin來終止這一方向的連線,
收到乙個fin只是意味著這一方向上沒有資料流動了,即不會再收到資料了,但是在這個tcp連線上仍然能夠傳送資料,直到這一方向也傳送了fin。
這裡有乙個問題,如果誰知道可以告知一下,問題是:
假如第三次揮手完了,也就是客戶端進入到time_wait的時候,這時候客戶端突然網斷了,伺服器端會怎麼做?
它是否會去一直等待客戶端傳送的ack,還是用別的方法關閉掉自己?比如心跳檢測~
三次握手與四次揮手
三次握手與四次揮手分別對應tcp連線建立過程與斷開過程,先上tcp報文格式 三次握手過程 問題1 為什麼要三次握手?答 三次握手的目的是建立可靠的通訊通道,說到通訊,簡單來說就是資料的傳送與接收,而三次握手最主要的目的就是雙方確認自己與對方的傳送與接收機能正常。第一次握手 client什麼都不能確認...
三次握手與四次揮手
三次握手 1.定義 三次握手 three times handshake three way handshake 所謂的 三次握手 即對每次傳送的資料量是怎樣跟蹤進行協商使資料段的傳送和接收同步,根據所接收到的資料量而確定的資料確認數及資料傳送 接收完畢後何時撤消聯絡,並建立虛連線。2.為什麼要三次...
三次握手與四次揮手
syn 建立連線 synchronous ack確認 acknowledgement psh傳送 push fin結束 finish rst重置 reset urg緊急 urgent 我連你,你同意,我再連你 為什麼要建立三次握手?注 在建立連線中,任意一端掉線,tcp都會重發syn資料報,一般會重...