HTTP 三次握手 建立连接 和 四次握手断开连接
生活随笔
收集整理的這篇文章主要介紹了
HTTP 三次握手 建立连接 和 四次握手断开连接
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
三次握手建立連接? 第一次握手:主機A發(fā)送位碼為syn=1,隨機產(chǎn)生seq number=1234567的數(shù)據(jù)包到服務器,主機B由SYN=1知道,A要求建立聯(lián)機; 第二次握手:主機B收到請求后要確認聯(lián)機信息,向A發(fā)送ack number=(主機A的seq+1),syn=1,ack=1,隨機產(chǎn)生seq=7654321的包 第三次握手:主機A收到后檢查ack number是否正確,即第一次發(fā)送的seq number+1,以及位碼ack是否為1,若正確,主機A會再發(fā)送ack number=(主機B的seq+1),ack=1,主機B收到后確認seq值與ack=1則連接建立成功。 四次握手斷開: 由于?TCP?連接是全雙工的,因此每個方向都必須單獨進行關閉。這個原則是當一方完成它的數(shù)據(jù)發(fā)送任務后就能發(fā)送一個FIN?來終止這個方向的發(fā)送通道。收到一個?FIN?只意味著這一方向上沒有數(shù)據(jù)流動,一個?TCP?連接在收到一個?FIN?后仍能發(fā)送數(shù)據(jù)。首先進行關閉的一方將執(zhí)行主動關閉,而另一方執(zhí)行被動關閉。??
(?1?)客戶端?A?發(fā)送一個?FIN?,用來關閉客戶?A?到服務器?B?的數(shù)據(jù)傳送(報文段?4?)。??
(?2?)服務器?B?收到這個?FIN?,它發(fā)回一個?ACK?,確認序號為收到的序號加?1?(報文段?5?)。和?SYN?一樣,一個FIN?將占用一個序號。??
(?3?)服務器?B?關閉與客戶端?A?的連接,發(fā)送一個?FIN?給客戶端?A?(報文段?6?)。?? (?4?)客戶端?A?發(fā)回?ACK?報文確認,并將確認序號設置為收到序號加?1?(報文段?7?)。 問題1: 為什么建立連接協(xié)議是三次握手,而關閉連接卻是四次握手呢??? 這是因為服務端的?LISTEN?狀態(tài)下的?SOCKET?當收 到?SYN?報文的建立連接請求后,它可以把?ACK?和?SYN?(?ACK?起應答作用,而?SYN?起同步作用)放在一個報文里來發(fā)送。但關閉連接時, 當收到對方的?FIN?報文通知時,它僅僅表示對方?jīng)]有數(shù)據(jù)發(fā)送給你了;但未必你所有的數(shù)據(jù)都全部發(fā)送給對方了,所以你可以未必會馬上會關閉?SOCKET,?也即你可能還需要發(fā)送一些數(shù)據(jù)給對方之后,再發(fā)送?FIN?報文給對方來表示你同意現(xiàn)在可以關閉連接了,所以它這里的?ACK?報文 和?FIN報文多數(shù)情況下都是分開發(fā)送的。 HTTP 請求響應常見狀態(tài)碼 100~199:表示成功接收請求,要求客戶端繼續(xù)提交下一次請求才能完成整個處理過程。
?200~299:表示成功接收請求并已完成整個處理過程。常用200
?300~399:為完成請求,客戶需進一步細化請求。例如:請求的資源已經(jīng)移動一個新地址、常用302(意味著你請求我,我讓你去找別人),307和304(我不給你這個資源,自己拿緩存)
?400~499:客戶端的請求有錯誤,常用404(意味著你請求的資源在web服務器中沒有)403(服務器拒絕訪問,權限不夠) 500~599:服務器端出現(xiàn)錯誤,常用500
(?1?)客戶端?A?發(fā)送一個?FIN?,用來關閉客戶?A?到服務器?B?的數(shù)據(jù)傳送(報文段?4?)。??
(?2?)服務器?B?收到這個?FIN?,它發(fā)回一個?ACK?,確認序號為收到的序號加?1?(報文段?5?)。和?SYN?一樣,一個FIN?將占用一個序號。??
(?3?)服務器?B?關閉與客戶端?A?的連接,發(fā)送一個?FIN?給客戶端?A?(報文段?6?)。?? (?4?)客戶端?A?發(fā)回?ACK?報文確認,并將確認序號設置為收到序號加?1?(報文段?7?)。 問題1: 為什么建立連接協(xié)議是三次握手,而關閉連接卻是四次握手呢??? 這是因為服務端的?LISTEN?狀態(tài)下的?SOCKET?當收 到?SYN?報文的建立連接請求后,它可以把?ACK?和?SYN?(?ACK?起應答作用,而?SYN?起同步作用)放在一個報文里來發(fā)送。但關閉連接時, 當收到對方的?FIN?報文通知時,它僅僅表示對方?jīng)]有數(shù)據(jù)發(fā)送給你了;但未必你所有的數(shù)據(jù)都全部發(fā)送給對方了,所以你可以未必會馬上會關閉?SOCKET,?也即你可能還需要發(fā)送一些數(shù)據(jù)給對方之后,再發(fā)送?FIN?報文給對方來表示你同意現(xiàn)在可以關閉連接了,所以它這里的?ACK?報文 和?FIN報文多數(shù)情況下都是分開發(fā)送的。 HTTP 請求響應常見狀態(tài)碼 100~199:表示成功接收請求,要求客戶端繼續(xù)提交下一次請求才能完成整個處理過程。
?200~299:表示成功接收請求并已完成整個處理過程。常用200
?300~399:為完成請求,客戶需進一步細化請求。例如:請求的資源已經(jīng)移動一個新地址、常用302(意味著你請求我,我讓你去找別人),307和304(我不給你這個資源,自己拿緩存)
?400~499:客戶端的請求有錯誤,常用404(意味著你請求的資源在web服務器中沒有)403(服務器拒絕訪問,權限不夠) 500~599:服務器端出現(xiàn)錯誤,常用500
轉(zhuǎn)載于:https://www.cnblogs.com/ljlkfx/p/4825499.html
總結(jié)
以上是生活随笔為你收集整理的HTTP 三次握手 建立连接 和 四次握手断开连接的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从刷票了解如何获得客户端IP
- 下一篇: 河北省分布式光伏发电项目管理暂行办法对光