8. 網(wǎng)絡(luò)

79. http 響應(yīng)碼 301 和 302 代表的是什么?有什么區(qū)別?

答:301,302 都是HTTP狀態(tài)的編碼,都代表著某個(gè)URL發(fā)生了轉(zhuǎn)移。
區(qū)別:
301 redirect: 301 代表永久性轉(zhuǎn)移(Permanently Moved)。
302 redirect: 302 代表暫時(shí)性轉(zhuǎn)移(Temporarily Moved )。

80. forward 和 redirect 的區(qū)別?

Forward和Redirect代表了兩種請(qǐng)求轉(zhuǎn)發(fā)方式:直接轉(zhuǎn)發(fā)和間接轉(zhuǎn)發(fā)。

直接轉(zhuǎn)發(fā)方式(Forward),客戶端和瀏覽器只發(fā)出一次請(qǐng)求,Servlet、HTML、JSP或其它信息資源,由第二個(gè)信息資源響應(yīng)該請(qǐng)求,在請(qǐng)求對(duì)象request中,保存的對(duì)象對(duì)于每個(gè)信息資源是共享的。

間接轉(zhuǎn)發(fā)方式(Redirect)實(shí)際是兩次HTTP請(qǐng)求,服務(wù)器端在響應(yīng)第一次請(qǐng)求的時(shí)候,讓瀏覽器再向另外一個(gè)URL發(fā)出請(qǐng)求,從而達(dá)到轉(zhuǎn)發(fā)的目的。

舉個(gè)通俗的例子:
直接轉(zhuǎn)發(fā)就相當(dāng)于:“A找B借錢,B說沒有,B去找C借,借到借不到都會(huì)把消息傳遞給A”;
間接轉(zhuǎn)發(fā)就相當(dāng)于:"A找B借錢,B說沒有,讓A去找C借"。

* 重定向的特點(diǎn):redirect
            1. 地址欄發(fā)生變化
            2. 重定向可以訪問其他站點(diǎn)(服務(wù)器)的資源
            3. 重定向是兩次請(qǐng)求。不能使用request對(duì)象來共享數(shù)據(jù)
* 轉(zhuǎn)發(fā)的特點(diǎn):forward
            1. 轉(zhuǎn)發(fā)地址欄路徑不變
            2. 轉(zhuǎn)發(fā)只能訪問當(dāng)前服務(wù)器下的資源
            3. 轉(zhuǎn)發(fā)是一次請(qǐng)求,可以使用request對(duì)象來共享數(shù)據(jù)

81. 簡(jiǎn)述 tcp 和 udp的區(qū)別?

  • TCP面向連接(如打電話要先撥號(hào)建立連接);UDP是無(wú)連接的,即發(fā)送數(shù)據(jù)之前不需要建立連接。
  • TCP提供可靠的服務(wù)。也就是說,通過TCP連接傳送的數(shù)據(jù),無(wú)差錯(cuò),不丟失,不重復(fù),且按序到達(dá);UDP盡最大努力交付,即不保證可靠交付。
  • Tcp通過校驗(yàn)和,重傳控制,序號(hào)標(biāo)識(shí),滑動(dòng)窗口、確認(rèn)應(yīng)答實(shí)現(xiàn)可靠傳輸。如丟包時(shí)的重發(fā)控制,還可以對(duì)次序亂掉的分包進(jìn)行順序控制。
  • UDP具有較好的實(shí)時(shí)性,工作效率比TCP高,適用于對(duì)高速傳輸和實(shí)時(shí)性有較高的通信或廣播通信。
  • 每一條TCP連接只能是點(diǎn)到點(diǎn)的;UDP支持一對(duì)一,一對(duì)多,多對(duì)一和多對(duì)多的交互通信。
  • TCP對(duì)系統(tǒng)資源要求較多,UDP對(duì)系統(tǒng)資源要求較少。

82. tcp 為什么要三次握手,兩次不行嗎?為什么?

為了實(shí)現(xiàn)可靠數(shù)據(jù)傳輸, TCP 協(xié)議的通信雙方, 都必須維護(hù)一個(gè)序列號(hào), 以標(biāo)識(shí)發(fā)送出去的數(shù)據(jù)包中, 哪些是已經(jīng)被對(duì)方收到的。 三次握手的過程即是通信雙方相互告知序列號(hào)起始值, 并確認(rèn)對(duì)方已經(jīng)收到了序列號(hào)起始值的必經(jīng)步驟。
如果只是兩次握手, 至多只有連接發(fā)起方的起始序列號(hào)能被確認(rèn), 另一方選擇的序列號(hào)則得不到確認(rèn)。

83. 說一下 tcp 粘包是怎么產(chǎn)生的?

  • 發(fā)送方:
    采用TCP協(xié)議傳輸數(shù)據(jù)的客戶端與服務(wù)器經(jīng)常是保持一個(gè)長(zhǎng)連接的狀態(tài)(一次連接發(fā)一次數(shù)據(jù)不存在粘包),雙方在連接不斷開的情況下,可以一直傳輸數(shù)據(jù);但當(dāng)發(fā)送的數(shù)據(jù)包過于的小時(shí),那么TCP協(xié)議默認(rèn)的會(huì)啟用Nagle算法,將這些較小的數(shù)據(jù)包進(jìn)行合并發(fā)送(緩沖區(qū)數(shù)據(jù)發(fā)送是一個(gè)堆壓的過程);這個(gè)合并過程就是在發(fā)送緩沖區(qū)中進(jìn)行的,也就是說數(shù)據(jù)發(fā)送出來它已經(jīng)是粘包的狀態(tài)了。
  • 接收方產(chǎn)生粘包:
    接收方采用TCP協(xié)議接收數(shù)據(jù)時(shí)的過程是這樣的:數(shù)據(jù)到底接收方,從網(wǎng)絡(luò)模型的下方傳遞至傳輸層,傳輸層的TCP協(xié)議處理是將其放置接收緩沖區(qū),然后由應(yīng)用層來主動(dòng)獲取(C語(yǔ)言用recv、read等函數(shù));這時(shí)會(huì)出現(xiàn)一個(gè)問題,就是我們?cè)诔绦蛑姓{(diào)用的讀取數(shù)據(jù)函數(shù)不能及時(shí)的把緩沖區(qū)中的數(shù)據(jù)拿出來,而下一個(gè)數(shù)據(jù)又到來并有一部分放入的緩沖區(qū)末尾,等我們讀取數(shù)據(jù)時(shí)就是一個(gè)粘包。(放數(shù)據(jù)的速度 > 應(yīng)用層拿數(shù)據(jù)速度)

84. OSI 的七層模型都有哪些?

* 應(yīng)用層:網(wǎng)絡(luò)服務(wù)與最終用戶的一個(gè)接口。
* 表示層:數(shù)據(jù)的表示、安全、壓縮。
* 會(huì)話層:建立、管理、終止會(huì)話。
* 傳輸層:定義傳輸數(shù)據(jù)的協(xié)議端口號(hào),以及流控和差錯(cuò)校驗(yàn)。
* 網(wǎng)絡(luò)層:進(jìn)行邏輯地址尋址,實(shí)現(xiàn)不同網(wǎng)絡(luò)之間的路徑選擇。
* 數(shù)據(jù)鏈路層:建立邏輯連接、進(jìn)行硬件地址尋址、差錯(cuò)校驗(yàn)等功能。
* 物理層:建立、維護(hù)、斷開物理連接。

85. get 和 post 請(qǐng)求有哪些區(qū)別?

  1. Get:
  1. 請(qǐng)求參數(shù)在請(qǐng)求行中
  2. 請(qǐng)求的url長(zhǎng)度有限制的
  3. 不太安全
  1. POST:
  1. 請(qǐng)求參數(shù)在請(qǐng)求體中
  2. 請(qǐng)求的url長(zhǎng)度沒有限制的
  3. 相對(duì)安全
    GET在瀏覽器回退時(shí)是無(wú)害的,而POST會(huì)再次提交請(qǐng)求。

    GET產(chǎn)生的URL地址可以被Bookmark,而POST不可以。

    GET請(qǐng)求會(huì)被瀏覽器主動(dòng)cache,而POST不會(huì),除非手動(dòng)設(shè)置。

    GET請(qǐng)求只能進(jìn)行url編碼,而POST支持多種編碼方式。

    GET請(qǐng)求參數(shù)會(huì)被完整保留在瀏覽器歷史記錄里,而POST中的參數(shù)不會(huì)被保留。

    GET請(qǐng)求在URL中傳送的參數(shù)是有長(zhǎng)度限制的,而POST么有。

    對(duì)參數(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返回的是腳本代碼(包含一個(gè)函數(shù)調(diào)用)
 2、JSONP 只支持get請(qǐng)求、不支持post請(qǐng)求
 (類似往頁(yè)面添加一個(gè)script標(biāo)簽,通過src屬性去觸發(fā)對(duì)指定地址的請(qǐng)求,故只能是Get請(qǐng)求)
2、nginx反向代理:
  www.baidu.com/index.html需要調(diào)用www.sina.com/server.php,可以寫一個(gè)接口www.baidu.com/server.php,由這個(gè)接口在后端去調(diào)用www.sina.com/server.php并拿到返回值,然后再返回給index.html

87.說一下 JSONP 實(shí)現(xiàn)原理?

jsonp 即 json+padding,動(dòng)態(tài)創(chuàng)建script標(biāo)簽,利用script標(biāo)簽的src屬性可以獲取任何域下的js腳本,通過這個(gè)特性(也可以說漏洞),服務(wù)器端不在返回json格式,而是返回一段調(diào)用某個(gè)函數(shù)的js代碼,在src中進(jìn)行了調(diào)用,這樣實(shí)現(xiàn)了跨域。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容