79. http 響應(yīng)碼 301 和 302 代表的是什么鸳玩?有什么區(qū)別?
答:301,302 都是HTTP狀態(tài)的編碼的猛,都代表著某個URL發(fā)生了轉(zhuǎn)移。
區(qū)別:
301 redirect: 301 代表永久性轉(zhuǎn)移(Permanently Moved)想虎。
302 redirect: 302 代表暫時性轉(zhuǎn)移(Temporarily Moved )卦尊。
80. forward 和 redirect 的區(qū)別?
Forward和Redirect代表了兩種請求轉(zhuǎn)發(fā)方式:直接轉(zhuǎn)發(fā)和間接轉(zhuǎn)發(fā)舌厨。
直接轉(zhuǎn)發(fā)方式(Forward)岂却,客戶端和瀏覽器只發(fā)出一次請求,Servlet裙椭、HTML躏哩、JSP或其它信息資源,由第二個信息資源響應(yīng)該請求揉燃,在請求對象request中扫尺,保存的對象對于每個信息資源是共享的。
間接轉(zhuǎn)發(fā)方式(Redirect)實(shí)際是兩次HTTP請求炊汤,服務(wù)器端在響應(yīng)第一次請求的時候正驻,讓瀏覽器再向另外一個URL發(fā)出請求弊攘,從而達(dá)到轉(zhuǎn)發(fā)的目的。
舉個通俗的例子:
直接轉(zhuǎn)發(fā)就相當(dāng)于:“A找B借錢拨拓,B說沒有肴颊,B去找C借氓栈,借到借不到都會把消息傳遞給A”渣磷;
間接轉(zhuǎn)發(fā)就相當(dāng)于:"A找B借錢,B說沒有授瘦,讓A去找C借"醋界。
* 重定向的特點(diǎn):redirect
1. 地址欄發(fā)生變化
2. 重定向可以訪問其他站點(diǎn)(服務(wù)器)的資源
3. 重定向是兩次請求。不能使用request對象來共享數(shù)據(jù)
* 轉(zhuǎn)發(fā)的特點(diǎn):forward
1. 轉(zhuǎn)發(fā)地址欄路徑不變
2. 轉(zhuǎn)發(fā)只能訪問當(dāng)前服務(wù)器下的資源
3. 轉(zhuǎn)發(fā)是一次請求提完,可以使用request對象來共享數(shù)據(jù)
81. 簡述 tcp 和 udp的區(qū)別形纺?
- TCP面向連接(如打電話要先撥號建立連接);UDP是無連接的,即發(fā)送數(shù)據(jù)之前不需要建立連接徒欣。
- TCP提供可靠的服務(wù)逐样。也就是說,通過TCP連接傳送的數(shù)據(jù)打肝,無差錯脂新,不丟失,不重復(fù)粗梭,且按序到達(dá);UDP盡最大努力交付争便,即不保證可靠交付。
- Tcp通過校驗(yàn)和断医,重傳控制滞乙,序號標(biāo)識,滑動窗口鉴嗤、確認(rèn)應(yīng)答實(shí)現(xiàn)可靠傳輸斩启。如丟包時的重發(fā)控制,還可以對次序亂掉的分包進(jìn)行順序控制醉锅。
- UDP具有較好的實(shí)時性浇垦,工作效率比TCP高,適用于對高速傳輸和實(shí)時性有較高的通信或廣播通信荣挨。
- 每一條TCP連接只能是點(diǎn)到點(diǎn)的;UDP支持一對一男韧,一對多,多對一和多對多的交互通信默垄。
- TCP對系統(tǒng)資源要求較多此虑,UDP對系統(tǒng)資源要求較少。
82. tcp 為什么要三次握手口锭,兩次不行嗎朦前?為什么介杆?
為了實(shí)現(xiàn)可靠數(shù)據(jù)傳輸, TCP 協(xié)議的通信雙方韭寸, 都必須維護(hù)一個序列號春哨, 以標(biāo)識發(fā)送出去的數(shù)據(jù)包中, 哪些是已經(jīng)被對方收到的恩伺。 三次握手的過程即是通信雙方相互告知序列號起始值赴背, 并確認(rèn)對方已經(jīng)收到了序列號起始值的必經(jīng)步驟。
如果只是兩次握手晶渠, 至多只有連接發(fā)起方的起始序列號能被確認(rèn)凰荚, 另一方選擇的序列號則得不到確認(rèn)。
83. 說一下 tcp 粘包是怎么產(chǎn)生的褒脯?
- 發(fā)送方:
采用TCP協(xié)議傳輸數(shù)據(jù)的客戶端與服務(wù)器經(jīng)常是保持一個長連接的狀態(tài)(一次連接發(fā)一次數(shù)據(jù)不存在粘包)便瑟,雙方在連接不斷開的情況下,可以一直傳輸數(shù)據(jù)番川;但當(dāng)發(fā)送的數(shù)據(jù)包過于的小時到涂,那么TCP協(xié)議默認(rèn)的會啟用Nagle算法,將這些較小的數(shù)據(jù)包進(jìn)行合并發(fā)送(緩沖區(qū)數(shù)據(jù)發(fā)送是一個堆壓的過程)颁督;這個合并過程就是在發(fā)送緩沖區(qū)中進(jìn)行的践啄,也就是說數(shù)據(jù)發(fā)送出來它已經(jīng)是粘包的狀態(tài)了。 - 接收方產(chǎn)生粘包:
接收方采用TCP協(xié)議接收數(shù)據(jù)時的過程是這樣的:數(shù)據(jù)到底接收方适篙,從網(wǎng)絡(luò)模型的下方傳遞至傳輸層往核,傳輸層的TCP協(xié)議處理是將其放置接收緩沖區(qū),然后由應(yīng)用層來主動獲热陆凇(C語言用recv聂儒、read等函數(shù));這時會出現(xiàn)一個問題硫痰,就是我們在程序中調(diào)用的讀取數(shù)據(jù)函數(shù)不能及時的把緩沖區(qū)中的數(shù)據(jù)拿出來衩婚,而下一個數(shù)據(jù)又到來并有一部分放入的緩沖區(qū)末尾,等我們讀取數(shù)據(jù)時就是一個粘包效斑。(放數(shù)據(jù)的速度 > 應(yīng)用層拿數(shù)據(jù)速度)
84. OSI 的七層模型都有哪些非春?
* 應(yīng)用層:網(wǎng)絡(luò)服務(wù)與最終用戶的一個接口。
* 表示層:數(shù)據(jù)的表示缓屠、安全奇昙、壓縮。
* 會話層:建立敌完、管理储耐、終止會話。
* 傳輸層:定義傳輸數(shù)據(jù)的協(xié)議端口號滨溉,以及流控和差錯校驗(yàn)什湘。
* 網(wǎng)絡(luò)層:進(jìn)行邏輯地址尋址长赞,實(shí)現(xiàn)不同網(wǎng)絡(luò)之間的路徑選擇。
* 數(shù)據(jù)鏈路層:建立邏輯連接闽撤、進(jìn)行硬件地址尋址得哆、差錯校驗(yàn)等功能。
* 物理層:建立哟旗、維護(hù)贩据、斷開物理連接。
85. get 和 post 請求有哪些區(qū)別热幔?
- Get:
- 請求參數(shù)在請求行中
- 請求的url長度有限制的
- 不太安全
- POST:
- 請求參數(shù)在請求體中
- 請求的url長度沒有限制的
- 相對安全
GET在瀏覽器回退時是無害的乐设,而POST會再次提交請求讼庇。
GET產(chǎn)生的URL地址可以被Bookmark绎巨,而POST不可以。
GET請求會被瀏覽器主動cache蠕啄,而POST不會场勤,除非手動設(shè)置。
GET請求只能進(jìn)行url編碼歼跟,而POST支持多種編碼方式和媳。
GET請求參數(shù)會被完整保留在瀏覽器歷史記錄里,而POST中的參數(shù)不會被保留哈街。
GET請求在URL中傳送的參數(shù)是有長度限制的留瞳,而POST么有。
對參數(shù)的數(shù)據(jù)類型骚秦,GET只接受ASCII字符她倘,而POST沒有限制。
GET比POST更不安全作箍,因?yàn)閰?shù)直接暴露在URL上硬梁,所以不能用來傳遞敏感信息。
GET參數(shù)通過URL傳遞胞得,POST放在Request body中荧止。
86. 跨域問題?
https://www.cnblogs.com/wmm123/p/11498899.html
1阶剑、jsonp跨域
JSONP(JSON with Padding:填充式JSON)跃巡,應(yīng)用JSON的一種新方法,
JSON牧愁、JSONP的區(qū)別:
1素邪、JSON返回的是一串?dāng)?shù)據(jù)、JSONP返回的是腳本代碼(包含一個函數(shù)調(diào)用)
2递宅、JSONP 只支持get請求娘香、不支持post請求
(類似往頁面添加一個script標(biāo)簽苍狰,通過src屬性去觸發(fā)對指定地址的請求,故只能是Get請求)
2、nginx反向代理:
www.baidu.com/index.html需要調(diào)用www.sina.com/server.php烘绽,可以寫一個接口www.baidu.com/server.php淋昭,由這個接口在后端去調(diào)用www.sina.com/server.php并拿到返回值,然后再返回給index.html
87.說一下 JSONP 實(shí)現(xiàn)原理安接?
jsonp 即 json+padding翔忽,動態(tài)創(chuàng)建script標(biāo)簽,利用script標(biāo)簽的src屬性可以獲取任何域下的js腳本盏檐,通過這個特性(也可以說漏洞)歇式,服務(wù)器端不在返回json格式,而是返回一段調(diào)用某個函數(shù)的js代碼胡野,在src中進(jìn)行了調(diào)用材失,這樣實(shí)現(xiàn)了跨域。