- OSI 七層模型指什么
- OSI:open system interconnection reference model 開(kāi)放式系統(tǒng)信號(hào)互聯(lián)參考模型千所,是一種為了使全世界的計(jì)算機(jī)互聯(lián)為網(wǎng)絡(luò)的標(biāo)準(zhǔn)框架。
- 分為七層:從下到上衡蚂,分別為物理層绳慎,數(shù)據(jù)鏈路層条霜,網(wǎng)絡(luò)層忿峻,傳輸層昆箕,會(huì)話層,表達(dá)層妥色,應(yīng)用層搪花。
physical layer,data link layer,network layer,transport layer,session layer,presentation layer,application layer;
reference
- HTTP 的工作原理是什么嘹害?
HTTP(hyperText transfer protocol) 超文本傳輸協(xié)議撮竿,是發(fā)生在OSI模型的application layer上的應(yīng)用。(應(yīng)用層的作用:為應(yīng)用軟件設(shè)置的界面笔呀,以便與另一應(yīng)用軟件進(jìn)行通信)幢踏。其是一種客戶端終端(用戶)和服務(wù)器進(jìn)行請(qǐng)求和響應(yīng)的標(biāo)準(zhǔn)。
工作流程:
- client send request to the server
- server receives request and handles the request of the client and send the result of handle request
- in the transfer road ,it maybe cross the gateway(網(wǎng)關(guān)) or the proxy server or tunnel(隧道)
reference
reference
details
- 客戶端和服務(wù)器建立通信連接许师。
- 客戶端的應(yīng)用程序發(fā)出請(qǐng)求房蝉,而這個(gè)請(qǐng)求(針對(duì)frontend來(lái)說(shuō))被瀏覽器包裝成HTTP報(bào)文僚匆,其中包含start line ,head,body 發(fā)給服務(wù)器
- 服務(wù)器接受這個(gè)報(bào)文,進(jìn)行解析搭幻,同時(shí)返回相應(yīng)的響應(yīng)信息咧擂。
- 瀏覽器接受到服務(wù)器傳來(lái)的請(qǐng)求,進(jìn)行解析同時(shí)展示于頁(yè)面之上檀蹋。
- 客戶端和服務(wù)器通信斷開(kāi)松申。
- URI 的格式是什么?常見(jiàn)的協(xié)議有哪些
URI: uniform resource identifier
一般由URL 和URN 組成
- url :通過(guò)描述資源的位置來(lái)描述資源
- URN: 通過(guò)名字來(lái)識(shí)別資源续扔,一般和位置無(wú)關(guān)
format:<scheme>://<user><password><host>:<port>/<path>;<params>?<query>#<hash>
the protocol are file攻臀、ftp、mailto
- HTTP 協(xié)議有幾種和服務(wù)器交互的方法
- get 纱昧、post 刨啸、put、delete识脆、trace设联、option、head
- 狀態(tài)碼200灼捂,301离例,304,403,404,500悉稠,503分別代表什么意思
- 200 通信成功宫蛆。一切正常,對(duì)于請(qǐng)求和應(yīng)答的文檔都在后面
- 301 重定向的猛,資源轉(zhuǎn)移耀盗,應(yīng)該請(qǐng)求新的地址
- 304 緩存沒(méi)有被modified
- 403 forbidden 資源不可用。一般沒(méi)有權(quán)限去請(qǐng)求
- 404 not found 找不到頁(yè)面
- 500 server error 服務(wù)器出現(xiàn)狀況卦尊,無(wú)法完成請(qǐng)求
- 503 server override 服務(wù)器因任務(wù)過(guò)載或維護(hù)叛拷,而答應(yīng)
- 報(bào)文有哪幾部分組成?
報(bào)文:the data block is that the client commit with the server / 是客戶端與服務(wù)端傳遞的數(shù)據(jù)包
組成:三部分
- start line 對(duì)報(bào)文進(jìn)行描述的起始行
- heard 包含屬性的首部
- body 可選的包含信息的數(shù)據(jù)塊
請(qǐng)求頭的格式和作用是什么岂却?給個(gè)范例截圖說(shuō)明
看懂英文就知道什么作用了忿薇,??首部的格式和作用是什么?給個(gè)范例截圖說(shuō)明
主體的作用是什么躏哩?給個(gè)范例
簡(jiǎn)述瀏覽器緩存是如何控制的
-
三次握手
- 第一次握手署浩,客戶端發(fā)出請(qǐng)求握手的報(bào)文,
- 第二次握手扫尺,服務(wù)器接受到請(qǐng)求的報(bào)文筋栋,然后返回一個(gè)ack報(bào)文,同時(shí)為這次連接進(jìn)行資源的分配器联。
-
第三次握手二汛,客戶端接受到服務(wù)器發(fā)出的ack報(bào)文,然后開(kāi)始為連接進(jìn)行分配資源拨拓。此后肴颊,建立了tcp連接。
-
四次分手
- 因?yàn)閿嚅_(kāi)連接渣磷,有可能是發(fā)生在客戶端或者是服務(wù)端婿着,然后稱為主機(jī)一二
- 主機(jī)一想要斷開(kāi)TCP連接,然后想主機(jī)二發(fā)送一個(gè)fin報(bào)文
- 主機(jī)二接受fin報(bào)文醋界,先發(fā)送一個(gè)ack竟宋,告訴主機(jī)一我還有數(shù)據(jù)沒(méi)有發(fā)完。完成數(shù)據(jù)之后形纺,主機(jī)二進(jìn)入到ack-wait的狀態(tài)丘侠,在發(fā)送一個(gè)FIN給主機(jī)一,說(shuō)明自己要關(guān)閉連接的信息逐样。
- 主機(jī)一接收到主機(jī)二接受到FIN蜗字,知道主機(jī)二關(guān)閉了連接,但是不相信這個(gè)是不是真的脂新,所以在發(fā)了一次挪捕,去確認(rèn)主機(jī)二是不是關(guān)閉了。等待2msl之后争便,沒(méi)有反饋级零,就知道自己不需要發(fā)送什么信號(hào),然后就自己進(jìn)行斷開(kāi)鏈接
- 主機(jī)二等了2msl之后滞乙,發(fā)現(xiàn)沒(méi)有信號(hào)發(fā)過(guò)來(lái)奏纪,就知道主機(jī)一斷開(kāi)了信號(hào),然后也自己斷開(kāi)了鏈接酷宵。
reference
reference
同時(shí)亥贸,我們要知道HTTP鏈接是一個(gè)無(wú)狀態(tài)的短鏈接,用完就會(huì)斷開(kāi)連接的。所以當(dāng)我們進(jìn)行一些長(zhǎng)時(shí)間的通信的時(shí)候浇垦,就發(fā)現(xiàn)現(xiàn)在的HTTP協(xié)議是無(wú)法完成的炕置,所以要使用一些方式:輪詢
http長(zhǎng)鏈接和短鏈接
一般在即時(shí)聊天中使用長(zhǎng)鏈接的多,實(shí)現(xiàn)方式
- content-type:keep-alive
- long polling
- polling
- websocket
- sse (server-sent event)
reference