緩存:?
緩存是對cpu,內存的一個節約:節約的是網絡帶寬資源 節約服務器的性能
資源的每次下載和請求都會造成服務器的一個壓力
減少網絡對資源拉取的延遲 這個就是瀏覽器緩存的一個好處
表示這個html頁面的返回是不要緩存的 忽略緩存? 需要每次都到服務器上獲取新的
并不是不緩存 而是提示瀏覽器忽略緩存
pragma:no-cache:瀏覽器忽略緩存 出現在響應頭里面
用來控制緩存:
瀏覽器發起請求,先會去看有沒有緩存 沒有緩存直接去請求服務器去拉取資源
在有緩存,但是緩存過期的情況下
返回304的條件:
從磁盤緩存當中去獲取:過期時間沒有到
圖片一定是設置了過期時間的 圖片資源不放在服務器上 用單獨的圖片服務器?
圖片就會做一個緩存?
視頻類的存儲在磁盤當中
三次握手 四次揮手的狀態變化
狀態變化是從三次握手開始的
服務器:啟動--綁定--設置監聽 listen()--監聽先準備好 這樣才是有效的
從無狀態變成listen
這樣開始三次握手的操作:
(1)第一次握手:客戶端發起 客戶端調用connect函數
rcvd:接收
第二次握手服務器發生變化? 客戶端收到服務器的返回頁發生變化
當最后成功 客戶端和服務器是一個樣子 都是established
三次握手成功 雙方連接建立
建立之后就可以進行通信了--進行數據傳輸 通信過程中tcp是沒有發生任何變化的
established就是正常的通信狀態
SYN==1 發起連接請求 ==0時是沒有連接
?三次握手:
第一次握手:建立連接時,客戶端發送SYN包到服務器,并等待服務器確認。
第二次握手:服務器收到SYN包,同時自己也給客戶端發送一個確認包SYN+ACK包。
第三次握手: 客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK。
此包發送完畢,客戶端和服務器進入ESTABLISHED(TCP連接成功)狀態,完成三次握手
四次揮手:
雙方通信完畢,關閉連接時,要進行四次揮手
第一次揮手:客戶端發送一個FIN包,申請斷開連接,并等待服務器確認。
第二次揮手:服務端回復一個ACK包,表示接受到客戶端的關閉連接請求,但現在服務端還不能馬上關
閉連接,需要檢查下是否還有未處理完的數據
第三次揮手:服務端處理完所有數據,給客戶端發送FIN包,表示可以斷開連接
第四次揮手:客戶端回復ACK包,表示斷開連接
http的長短連接:
短連接:每次請求都會建立連接
長連接就是只建立一次連接 多次資源請求都復用該連接 完成后關閉
網絡深層知識:
?瀏覽器請求一個網頁:
客戶端就是用戶所用的程序:瀏覽器? 應用程序等等都叫做客戶端client
客戶端client
服務端就是存儲數據 存儲網頁的程序 還有處理數據的一個載體
服務端:數據和文件的出口? ?客戶端就是數據的入口
后臺是數據的管理
服務器就是電腦:家用電腦 配置高一點 服務器的系統帶server
我們輸入一個url地址,回車:就會對網址先進行dns解析 先去解析到底是什么東西
將網址轉換成ip地址? 然后通往服務器 這個過程會建立三次握手和四次揮手
這個就是請求網頁的流程!!!!
一般來說,一個服務器承載著一個或者多個ip地址?
一個網址對應一個ip地址 那為什么不直接使用ip而使用URL地址呢?
首先是方便記憶 數字不方便記憶
一個ip地址能映射出多個域名 所以ip地址是不適合用戶直接接觸的
計算機對數字是比較敏感的
三次握手才會真正的建立三次握手的連接 建立連接之后才能進行http請求
服務器返回,客戶端收到的是html代碼文件,瀏覽器進行解析和渲染
等到渲染頁面結束,進行四次揮手
tcp/ip的這種連接方式叫做長連接
重點:
tcp在哪個層
回答下tcp的功能
tcp為什么是三次握手?不是兩次四次?
如果只做兩次,無法去確認客戶端的接收能力
tcp面向連接 必須是雙方的 如果只有兩次 只是服務器建立 客戶端并沒有
造成連接資源的浪費
四次是沒有必要的 所以沒有必要進行第四次握手
TCP為什么需要4次揮手??為什么不是三次?
如果將第二次和第三次和為一體 第二次和第三次之間是有時間延遲的
導致客戶端不能及時接收:客戶端會重新發送斷開請求
ack和fin之間是有時差的
這個延遲是沒有辦法處理的 只能是把這兩次都分開 這樣才能達到效率最高
只有當客戶端和服務器兩端都確定好要斷開了 才能斷開?
四次是最優的方案
五次會造成資源的浪費
異常狀態碼,400應該找前端還是后端
HTTP狀態碼?400?表示客戶端請求存在語法或參數錯誤,其責任歸屬需要具體分析。?
http是哪一層協議
osi七層協議有哪七層??tcp四層模型
tcp四層模型
物理層和數據鏈路層合稱為網絡接口層
三層交換機具有路由功能
分層:方便管理
第七層 應用層
應用層是OSI模型中的最高層,也是和用戶最近的一層。它直接面向用戶和應用程序,為用戶提供各種網絡服務和應用程序支持
第六層 表示層
負責數據格式與編碼方式的轉換、加密解密和數據壓縮等任務。在實際的通信協議中,表示層往往與應用層或會話層結合使用,對數據進行處理和轉換。
第五層 會話層
在OSI七層模型中,會話層沒有單獨的協議,而是利用下層協議提供的會話機制來實現數據交換。會話層的作用是管理和協調應用程序之間的對話和會話,并與表示層一起支持數據轉換、加密和解密等功能。
第四層 傳輸層
傳輸層的作用是在不可靠的網絡上提供可靠的數據傳輸服務。它負責將應用程序發送的數據分割成較小的數據段,并使用可靠的數據傳輸協議(如TCP)或不可靠的數據傳輸協議(如UDP)將這些數據段傳輸到目標設備。傳輸層還負責控制數據流量、錯誤恢復和擁塞控制等任務。
如果你想要穩,就選tcp,想要穩,就選UDP第三層 網絡層
負責將數據包從源主機傳輸到目標主機。網絡層通過使用IP協議來實現這一過程,提供了路由、尋址和分組傳輸等功能,以確保數據能夠經過多個網絡進行傳輸,并最終到達目標主機。
第二層 數據鏈路層
負責將網絡層傳輸過來的數據包進行分幀,并在物理介質上進行傳輸。數據鏈路層還提供了錯誤檢測和糾正功能,以確保數據的可靠性。此外,數據鏈路層還實現了訪問控制和流量控制等功能,以協調多個設備之間的數據傳輸。
第一層 物理層
這一層就是osi最底層了,負責將數字數據轉換成物理信號并在網絡中傳輸。其意義在于實現不同設備之間的數據傳輸和通信,使得計算機網絡得以正常工作。物理層還定義了傳輸媒介、傳輸速率、編碼方式等參數,為上層協議提供了可靠的數據傳輸基礎。
就是進行物理連接的
get和post請求的區別?
應用層的常見協議有哪些??
http狀態碼
常見HTTP狀態碼 :
1xx :100 Continue繼續:客戶端應繼續其請求
2xx :200 OK
請求已成功,請求所希望的響應頭或數據體將隨此響應返回。出現此狀態碼是表示正常狀態。
204 No Content(無內容)
服務器成功處理,但未返回內容。在未更新網頁的情況下,可確保瀏覽器繼續顯示當前文檔。
206 Partial Content(部分內容)
服務器成功處理了部分GET請求。
3xx:
301 Moved Permanently(永久重定向)
請求的資源已被永久的移動到新URL,返回信息會包括新的URL,瀏覽器會自動定向到新URL。今后任何新的請求都應使用新的URI代替。
302 Found(臨時重定向)
與301類似。但資源只是臨時被移動。表示請求的資源被分配了新的URL,希望本次訪問使用新的URL。
303 See Othe(查看其他地址)
當請求者應對不同的位置進行單獨的 GET 請求以檢索響應時,服務器會返回此代碼。對于除 HEAD 請求之外的所有請求,服務器會自動轉到其他位置。
304 Not Modified(未修改)
所請求的資源未修改,服務器返回此狀態碼時,不會返回任何資源。客戶端通常會緩存訪問過的資源,通過提供一個頭信息指出客戶端希望只返回在指定日期之后修改的資源。
305 Use Proxy(使用代理)
請求者只能使用代理訪問請求的網頁。如果服務器返回此響應,那么,服務器還會指明請求者應當使用的代理
307 Temporary Redire(臨時重定向)
與303有著相同的含義,307會遵照瀏覽器標準不會從POST變成GET;(不同瀏覽器可能會出現不同的情況)。
4xx :
400 Bad Request (語法錯誤)
客戶端請求的語法錯誤,服務器無法理解。
401 Unauthorized(未授權)
請求要求用戶的身份認證
403 Forbidden(禁止)
服務器理解請求客戶端的請求,但是拒絕執行此請求
404 Not Found(未找到)
服務器無法根據客戶端的請求找到資源(網頁)。除此之外,也可以在服務器拒絕請求但不想給拒絕原因時使用。
405 Method Not Allowed (方法禁用)
客戶端請求中的方法被禁止。
406 Not Acceptable(不接受)
無法使用請求的內容特性來響應請求的網頁。
408 Request Time-out(請求超時)
服務器等待客戶端發送的請求時間過長,超時。
5xx
500Internal Server Error(服務器內部錯誤)
服務器遇到錯誤,無法完成請求。
501 Not Implemented(尚未實施)
服務器不具備完成請求的功能。例如,當服務器無法識別請求方法時,服務器可能會返回此代碼。
502 Bad Gateway(錯誤網關)
作為網關或者代理工作的服務器嘗試執行請求時,從遠程服務器接收到了一個無效的響應
503 Service Unavailable(服務不可用)
由于超載或系統維護,服務器暫時的無法處理客戶端的請求。通常,這只是一種暫時的狀態。
504 Gateway Time-out(網關超時)
服務器作為網關或代理,未及時從上游服務器接收請求。
505 HTTP Version not supported(HTTP 版本不受支持)
服務器不支持請求中所使用的 HTTP 協議版本。