基礎知識隨記

基礎知識隨記

計算機網絡

1.HTTP無狀態協議到底指的什麼?

關鍵字 HTTP,Cookie機制,Session用戶驗證,TCP Keep-Alive,會話,緩存區

原文地址:HTTP無狀態協議到底指的什麼?

先來看這句話的另外兩個概念:(標準的http協議是無狀態的,無連接的)
標準的http協議指的是不包括cookies, session,application的http協議,他們都不屬於標準協議,雖然各種網絡應用提供商,實現語言、web容器等,都默認支持它
無連接指的是什麼
每一個訪問都是無連接,服務器挨個處理訪問隊列裏的訪問,處理完一個就關閉連接,這事兒就完了,然後處理下一個新的
無連接的含義是限制每次連接只處理一個請求。服務器處理完客戶的請求,並收到客戶的應答後,即斷開連接。

原文非常詳細生動,從HTTP的無狀態引入了Cookie、session認證機制,從用戶登錄認證,到購物車的實現說明的HTTP無狀態的應用

2.TCP/IP 狀態轉換過程

關鍵字 建鏈三次握手,斷鏈四次揮手,全雙工連接,圖解
原文
TCP/IP 狀態轉換圖
注:SYN表示主動請求,ACK表示接收到消息後迴應請求

三次握手

客戶端 SYN_SENT->ESTABLISHED
服務端 LISTEN->SYN_RCVD->ESTABLISHED

三次握手的狀態遷移:
第一握手:客戶端發給服務端SYN=1,seqNo=x(代表發送起始字節編號)
第二次握手:服務端接受到SYN=1,seqNo=x知道客戶端發起了連接請求;因此回送ACK=1(告訴客戶端連接請求接收到),ackNo=x+1(希望接收下一個字節的編號),seqNo=y(發送給客戶端起始字節編號)
第三次握手:客戶端接回應,又回送一個ACK=1,ackNo=y+1服務端表示收到它的確認請求
三次握手後客戶端與服務端就可以進行數據傳輸了!

即客戶端在服務器不知情的情況下發起連接請求【第一次:客戶端發】,服務器向客戶端應答,等待客戶端進一步回覆【第二次:服務器收,服務器發】,客戶端收到服務器確認請求,此時再向服務器發送確認應答【第三次:客戶端發,服務器收】

四次揮手(雙向)

主動關閉方(客戶端或者服務端) FIN_WAIT_1->FIN_WAIT_2->TIME_WAIT
被動關閉方
CLOSE_WAIT->LAST_ACK->CLOSE

面看看四次揮手的狀態遷移:
當主動關閉方發送完FIN(停止發送數據,但是還可以接收數據)後便進入FIN_WAIT_1狀態,被動關閉方接收到FIN,回送一個ACK,之後便進入到CLOSE_WAIT;主動關閉方接收到ACK便進入到FIN_WAIT_2(也稱半關閉狀態),之後當被動關閉端發送FIN給主動關閉端便進入LAST_ACK狀態,主動關閉端接收到FIN之後,發送一個ACK便進入到TIME_WAIT狀態(它持續的時間爲2MSL,報文傳輸的最大時長爲1MSL,爲的是當ACK發送出去被動關閉端沒有接收到,能夠再次發送)

即:主動關閉方準備停止時回發送FIN信號給被動關閉方,發送完無需等待確認便進入DIN_WAIT_1狀態,此時被動關閉方接收到FIN請求後進入CLOSE_WAIT狀態並返回ACK,主動方接收到ACK後進入了FIN_WAIT_2(半關閉狀態),之後等待被動關閉方進入LAST_ACK狀態後發送FIN給主動關閉方,在FIN_wAIT_2狀態下的主動方接收到FIN後再回復一個ACK後進入TIME_WAIT狀態

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章