六敛摘、網(wǎng)絡(luò)
1.http 響應(yīng)碼 301 和 302 代表的是什么?有什么區(qū)別乳愉?
- 301 Moved Permanently
被請(qǐng)求的資源已永久移動(dòng)到新位置兄淫,并且將來(lái)任何對(duì)此資源的引用都應(yīng)該使用本響應(yīng)返回的若干個(gè) URI 之一屯远。如果可能,擁有鏈接編輯功能的客戶(hù)端應(yīng)當(dāng)自動(dòng)把請(qǐng)求的地址修改為從服務(wù)器反饋回來(lái)的地址捕虽。除非額外指定氓润,否則這個(gè)響應(yīng)也是可緩存的。 - 302 Found
請(qǐng)求的資源現(xiàn)在臨時(shí)從不同的 URI 響應(yīng)請(qǐng)求薯鳍。由于這樣的重定向是臨時(shí)的咖气,客戶(hù)端應(yīng)當(dāng)繼續(xù)向原有地址發(fā)送以后的請(qǐng)求。只有在Cache-Control或Expires中進(jìn)行了指定的情況下挖滤,這個(gè)響應(yīng)才是可緩存的崩溪。
2.forward 和 redirect 的區(qū)別?
1.地址欄顯示
- 請(qǐng)求轉(zhuǎn)發(fā):
服務(wù)器內(nèi)部重定向斩松,服務(wù)器直接訪問(wèn)目標(biāo)地址的url伶唯,獲取數(shù)據(jù),客戶(hù)端無(wú)感知惧盹,地址欄的網(wǎng)址不會(huì)改變乳幸。 - 重定向:
服務(wù)器根據(jù)邏輯,發(fā)送一個(gè)狀態(tài)碼钧椰,告訴瀏覽器重新去請(qǐng)求那個(gè)地址粹断,所以地址欄顯示的是新的地址。
2.數(shù)據(jù)共享
- 請(qǐng)求轉(zhuǎn)發(fā):
因?yàn)樵谡?qǐng)求過(guò)程中用的是同一個(gè)request嫡霞,所以會(huì)將request的信息帶到被重定向的jsp或者servlet中使用瓶埋。即可以共享數(shù)據(jù)。 - 重定向:
不能數(shù)據(jù)共享
3.運(yùn)用場(chǎng)景
- 請(qǐng)求轉(zhuǎn)發(fā):
一般用于用戶(hù)登錄的時(shí)候诊沪,根據(jù)角色轉(zhuǎn)發(fā)到相應(yīng)的模塊养筒。一次請(qǐng)求。 - 重定向:
一般用于用戶(hù)注銷(xiāo)登錄時(shí)返回主頁(yè)面或者跳轉(zhuǎn)到其他網(wǎng)站端姚。兩次請(qǐng)求晕粪。
4.效率
請(qǐng)求轉(zhuǎn)發(fā)效率高,重定向效率低渐裸。
5.本質(zhì)
- 請(qǐng)求轉(zhuǎn)發(fā):
客戶(hù)瀏覽器發(fā)送http請(qǐng)求巫湘,web服務(wù)器接收此請(qǐng)求,在容器內(nèi)部完成請(qǐng)求的處理和轉(zhuǎn)發(fā)橄仆。轉(zhuǎn)發(fā)的路徑必須是同一個(gè)路徑下的url剩膘,中間傳遞的是自己容器內(nèi)的request。 - 重定向
客戶(hù)瀏覽器發(fā)送http請(qǐng)求盆顾,web服務(wù)器接收請(qǐng)求后返回302狀態(tài)碼以及新的location給客戶(hù)端瀏覽器怠褐。客戶(hù)端瀏覽器發(fā)現(xiàn)是302狀態(tài)碼您宪,在發(fā)送一個(gè)新的http請(qǐng)求奈懒,新請(qǐng)求的url是返回的location奠涌。
3.簡(jiǎn)述 tcp 和 udp的區(qū)別?
-UDP
面向無(wú)連接的通訊協(xié)議磷杏,UDP數(shù)據(jù)包括目的端口號(hào)和源端信息溜畅。
優(yōu)點(diǎn):速度快,操作簡(jiǎn)單极祸,要求系統(tǒng)資源少慈格。由于通訊不需要連接,可以實(shí)現(xiàn)廣播傳送遥金。
缺點(diǎn):UDP發(fā)送數(shù)據(jù)前不建立連接浴捆,對(duì)收到的數(shù)據(jù)也不發(fā)送確認(rèn)信號(hào),發(fā)送端不知道數(shù)據(jù)是否會(huì)正確接收稿械,也不重復(fù)發(fā)送选泻,不可靠。
- TCP
面向連接的通訊協(xié)議美莫,通過(guò)三次握手建立連接页眯,通訊完成時(shí)四次揮手。
優(yōu)點(diǎn):TCP 在數(shù)據(jù)傳遞時(shí)厢呵,有確認(rèn)窝撵、窗口、重傳述吸、阻塞等控制機(jī)制忿族,能保證數(shù)據(jù)正確性,較為可靠蝌矛。
缺點(diǎn):TCP 相對(duì)于 UDP 速度慢一點(diǎn),要求系統(tǒng)資源較多错英。
4.tcp的三次握手和4次揮手
-
三次握手
為了實(shí)現(xiàn)可靠數(shù)據(jù)傳輸入撒, TCP 協(xié)議的通信雙方, 都必須維護(hù)一個(gè)序列號(hào)椭岩, 以標(biāo)識(shí)發(fā)送出去的數(shù)據(jù)包中茅逮, 哪些是已經(jīng)被對(duì)方收到的。 三次握手的過(guò)程即是通信雙方相互告知序列號(hào)起始值判哥, 并確認(rèn)對(duì)方已經(jīng)收到了序列號(hào)起始值的必經(jīng)步驟
三次握手.png
序列號(hào)seq:占4個(gè)字節(jié)献雅,用來(lái)標(biāo)記數(shù)據(jù)段的順序,TCP把連接中發(fā)送的所有數(shù)據(jù)字節(jié)都編上一個(gè)序號(hào)塌计,第一個(gè)字節(jié)的編號(hào)由本地隨機(jī)產(chǎn)生挺身;給字節(jié)編上序號(hào)后,就給每一個(gè)報(bào)文段指派一個(gè)序號(hào)锌仅;序列號(hào)seq就是這個(gè)報(bào)文段中的第一個(gè)字節(jié)的數(shù)據(jù)編號(hào)章钾。
確認(rèn)號(hào)ack:占4個(gè)字節(jié)墙贱,期待收到對(duì)方下一個(gè)報(bào)文段的第一個(gè)數(shù)據(jù)字節(jié)的序號(hào);序列號(hào)表示報(bào)文段攜帶數(shù)據(jù)的第一個(gè)字節(jié)的編號(hào)贱傀;而確認(rèn)號(hào)指的是期望接收到下一個(gè)字節(jié)的編號(hào)惨撇;因此當(dāng)前報(bào)文段最后一個(gè)字節(jié)的編號(hào)+1即為確認(rèn)號(hào)。
確認(rèn)ACK:占1位府寒,僅當(dāng)ACK=1時(shí)魁衙,確認(rèn)號(hào)字段才有效。ACK=0時(shí)株搔,確認(rèn)號(hào)無(wú)效
同步SYN:連接建立時(shí)用于同步序號(hào)纺棺。當(dāng)SYN=1,ACK=0時(shí)表示:這是一個(gè)連接請(qǐng)求報(bào)文段邪狞。若同意連接祷蝌,則在響應(yīng)報(bào)文段中使得SYN=1,ACK=1帆卓。因此巨朦,SYN=1表示這是一個(gè)連接請(qǐng)求,或連接接受報(bào)文剑令。SYN這個(gè)標(biāo)志位只有在TCP建產(chǎn)連接時(shí)才會(huì)被置1糊啡,握手完成后SYN標(biāo)志位被置0。
終止FIN:用來(lái)釋放一個(gè)連接吁津。FIN=1表示:此報(bào)文段的發(fā)送方的數(shù)據(jù)已經(jīng)發(fā)送完畢棚蓄,并要求釋放運(yùn)輸連接
? 第一次:客戶(hù)端發(fā)送初始序號(hào)x和syn=1請(qǐng)求標(biāo)志
? 第二次:服務(wù)器發(fā)送請(qǐng)求標(biāo)志syn,發(fā)送確認(rèn)標(biāo)志ACK碍脏,發(fā)送自己的序號(hào)seq=y梭依,發(fā)送客戶(hù)端的確認(rèn)序號(hào)ack=x+1
? 第三次:客戶(hù)端發(fā)送ACK確認(rèn)號(hào),發(fā)送自己的序號(hào)seq=x+1典尾,發(fā)送對(duì)方的確認(rèn)號(hào)ack=y+1
-
四次揮手
四次揮手.png
1)客戶(hù)端進(jìn)程發(fā)出連接釋放報(bào)文役拴,并且停止發(fā)送數(shù)據(jù)。釋放數(shù)據(jù)報(bào)文首部钾埂,F(xiàn)IN=1河闰,其序列號(hào)為seq=u(等于前面已經(jīng)傳送過(guò)來(lái)的數(shù)據(jù)的最后一個(gè)字節(jié)的序號(hào)加1),此時(shí)褥紫,客戶(hù)端進(jìn)入FIN-WAIT-1(終止等待1)狀態(tài)姜性。 TCP規(guī)定,F(xiàn)IN報(bào)文段即使不攜帶數(shù)據(jù)髓考,也要消耗一個(gè)序號(hào)部念。
2)服務(wù)器收到連接釋放報(bào)文,發(fā)出確認(rèn)報(bào)文,ACK=1印机,ack=u+1矢腻,并且?guī)献约旱男蛄刑?hào)seq=v,此時(shí)射赛,服務(wù)端就進(jìn)入了CLOSE-WAIT(關(guān)閉等待)狀態(tài)多柑。TCP服務(wù)器通知高層的應(yīng)用進(jìn)程,客戶(hù)端向服務(wù)器的方向就釋放了楣责,這時(shí)候處于半關(guān)閉狀態(tài)竣灌,即客戶(hù)端已經(jīng)沒(méi)有數(shù)據(jù)要發(fā)送了,但是服務(wù)器若發(fā)送數(shù)據(jù)秆麸,客戶(hù)端依然要接受初嘹。這個(gè)狀態(tài)還要持續(xù)一段時(shí)間,也就是整個(gè)CLOSE-WAIT狀態(tài)持續(xù)的時(shí)間沮趣。
3)客戶(hù)端收到服務(wù)器的確認(rèn)請(qǐng)求后屯烦,此時(shí),客戶(hù)端就進(jìn)入FIN-WAIT-2(終止等待2)狀態(tài)房铭,等待服務(wù)器發(fā)送連接釋放報(bào)文(在這之前還需要接受服務(wù)器發(fā)送的最后的數(shù)據(jù))驻龟。
4)服務(wù)器將最后的數(shù)據(jù)發(fā)送完畢后,就向客戶(hù)端發(fā)送連接釋放報(bào)文缸匪,F(xiàn)IN=1翁狐,ack=u+1,由于在半關(guān)閉狀態(tài)凌蔬,服務(wù)器很可能又發(fā)送了一些數(shù)據(jù)露懒,假定此時(shí)的序列號(hào)為seq=w,此時(shí)砂心,服務(wù)器就進(jìn)入了LAST-ACK(最后確認(rèn))狀態(tài)懈词,等待客戶(hù)端的確認(rèn)。
5)客戶(hù)端收到服務(wù)器的連接釋放報(bào)文后计贰,必須發(fā)出確認(rèn)钦睡,ACK=1,ack=w+1躁倒,而自己的序列號(hào)是seq=u+1,此時(shí)洒琢,客戶(hù)端就進(jìn)入了TIME-WAIT(時(shí)間等待)狀態(tài)秧秉。注意此時(shí)TCP連接還沒(méi)有釋放,必須經(jīng)過(guò)2??MSL(最長(zhǎng)報(bào)文段壽命)的時(shí)間后衰抑,當(dāng)客戶(hù)端撤銷(xiāo)相應(yīng)的TCB后象迎,才進(jìn)入CLOSED狀態(tài)。
6)服務(wù)器只要收到了客戶(hù)端發(fā)出的確認(rèn),立即進(jìn)入CLOSED狀態(tài)砾淌。同樣啦撮,撤銷(xiāo)TCB后,就結(jié)束了這次的TCP連接汪厨≡叽海可以看到,服務(wù)器結(jié)束TCP連接的時(shí)間要比客戶(hù)端早一些劫乱。
**5.Cookie和Session的區(qū)別织中?
1、Cookie和Session都是會(huì)話(huà)技術(shù)衷戈,Cookie是運(yùn)行在客戶(hù)端狭吼,Session是運(yùn)行在服務(wù)器端。
2殖妇、Cookie有大小限制以及瀏覽器在存cookie的個(gè)數(shù)也有限制刁笙,Session是沒(méi)有大小限制和服務(wù)器的內(nèi)存大小有關(guān)。
3谦趣、Cookie有安全隱患疲吸,通過(guò)攔截或本地文件找得到你的cookie后可以進(jìn)行攻擊。
4蔚润、Session是保存在服務(wù)器端上會(huì)存在一段時(shí)間才會(huì)消失磅氨,如果session過(guò)多會(huì)增加服務(wù)器的壓力。