8.網(wǎng)絡(luò)協(xié)議基本了解

1.網(wǎng)絡(luò)七層協(xié)議

  • 應(yīng)用層:
    1 用戶接口,應(yīng)用程序.
    2 Application典型設(shè)備:網(wǎng)關(guān).
    3 典型協(xié)議,標(biāo)準(zhǔn)和應(yīng)用:TELNET,FTP,HTTP

  • 表示層:
    1 數(shù)據(jù)表示,壓縮和加密presentation
    2 典型設(shè)備:網(wǎng)關(guān)
    3 典型協(xié)議,標(biāo)準(zhǔn)和應(yīng)用:ASCLL,PICT,TIFF,JPEG/MPEG
    4 表示層相當(dāng)于一個(gè)東西的表示,表示的一些協(xié)議,比如圖片,聲音和視頻MPEG.

  • 會(huì)話層:
    1 會(huì)話的建立和結(jié)束
    2 典型設(shè)備:網(wǎng)關(guān)
    3 典型協(xié)議,標(biāo)準(zhǔn)和應(yīng)用: RPC,SQL,NFS, X WINDOWS,ASP

  • 傳輸層:
    1 主要功能:端到端控制Tansport.
    2 典型設(shè)備:網(wǎng)關(guān)
    3 典型協(xié)議,標(biāo)注和應(yīng)用:TCP,UDP,SPX.

  • 網(wǎng)絡(luò)層:
    1 主要功能:路由,尋址NetWork
    2 典型設(shè)備:路由器
    3 典型協(xié)議,標(biāo)準(zhǔn)和應(yīng)用:IP,IPX,APPLETALK,ICMP

  • 數(shù)據(jù)鏈路層:
    1 主要功能:保證無差錯(cuò)的疏忽鏈路data link
    2 典型設(shè)備:交換機(jī),網(wǎng)橋,網(wǎng)卡
    3 典型協(xié)議,標(biāo)準(zhǔn)和應(yīng)用:802.2,802.3ATM,HDLC,FRAME RELAY.

  • 物理層:
    1 主要功能:傳輸比特流Physical.
    2 典型設(shè)備:集線器,中繼器
    3 典型協(xié)議,標(biāo)準(zhǔn)和應(yīng)用:V.35,EIA/TIA-232

2.HTTP 和HTTPS的區(qū)別? HTTPS 為什么更加安全?

  • 區(qū)別
    1 HTTPS需要想機(jī)構(gòu)申請(qǐng)CA證書,極少免費(fèi)
    2 HTTP屬于明文傳輸,HTTPS基于SSL進(jìn)行加密傳輸
    3 HTTP端口號(hào)默認(rèn)80,HTTPS端口號(hào)為443
    4 HTTPS是加密傳輸,有身份驗(yàn)證環(huán)節(jié),更加安全
  • 安全
    SSL(安全套接層)TLS(傳輸層安全)
    以上兩者在傳輸層之上,對(duì)網(wǎng)絡(luò)連接進(jìn)行加密處理,保障數(shù)據(jù)的完整性,更加安全

3.HTTPS的連接建立流程

HTTPS為了兼顧安全與效率,同事使用了對(duì)稱加密和非對(duì)稱加密.在傳輸過程中會(huì)涉及三個(gè)秘鑰:

  • 服務(wù)器端的公鑰和私鑰,用來進(jìn)行非對(duì)稱加密
  • 客戶端生成的隨機(jī)秘鑰,用來進(jìn)行對(duì)稱加密


    image

    如上圖,HTTPS連接過程大致分為八步:

  • 1 客戶端訪問HTTPS連接:
    客戶端會(huì)把安全協(xié)議版本號(hào),客戶端支持的加密算法列表,隨機(jī)數(shù)C發(fā)送給服務(wù)端
  • 2服務(wù)端發(fā)送證書給客戶端:
    服務(wù)端接受秘鑰算法配件后,會(huì)和自己支持的加密算法列表進(jìn)行比對(duì),如果不符合,則斷開連接,否則,服務(wù)端會(huì)在該算法列表中,選擇一個(gè)對(duì)稱算法(如AES),一種公鑰算法(如具有特定秘鑰長(zhǎng)度的RSA)和一種MAC算法發(fā)送給客戶端.服務(wù)端有一個(gè)秘鑰對(duì),及公鑰和私鑰,是用來進(jìn)行非對(duì)稱加密使用的,服務(wù)器保存私鑰,不能將其泄漏,公鑰可以發(fā)送給任何人.在發(fā)送加密算法的同事還會(huì)把數(shù)字證書和隨機(jī)數(shù)S發(fā)送給客戶端
  • 3客戶端驗(yàn)證server證書:
    會(huì)對(duì)server公鑰進(jìn)行檢查,驗(yàn)證其合法性,如果發(fā)現(xiàn)公鑰有問題,那么HTTPS傳輸就無法繼續(xù)進(jìn)行.
  • 4客戶端組裝會(huì)話密鑰:
    如果公鑰合格,那么客戶端會(huì)用服務(wù)器公鑰生成一個(gè)前主秘鑰(Pre-Master Secret,PMS),并通過該前主秘鑰和隨機(jī)數(shù)C,S來組裝會(huì)話密鑰
  • 5客戶端講前主秘鑰加密發(fā)送給服務(wù)端:
    是通過服務(wù)端的公鑰來對(duì)前主秘鑰進(jìn)行非對(duì)稱加密,發(fā)送給服務(wù)端
  • 6服務(wù)端通過私鑰解密得到前主秘鑰:
    服務(wù)端接收加密信息后,用私鑰解密得到前主秘鑰
  • 7服務(wù)端組裝會(huì)話秘鑰:
    服務(wù)端通過前主秘鑰和隨機(jī)數(shù)C,S來組裝會(huì)話秘鑰,至此,服務(wù)端和客戶端就已經(jīng)知道了用于此次會(huì)話的主秘鑰.
  • 8數(shù)據(jù)傳輸:
    客戶端收到服務(wù)端發(fā)送來的密文,用客戶端秘鑰對(duì)其進(jìn)行解密,得到服務(wù)端發(fā)送的數(shù)據(jù) ,同理服務(wù)端接收到客戶端發(fā)送的密文,用服務(wù)端秘鑰對(duì)其進(jìn)行對(duì)稱解密,得到客戶端發(fā)送的數(shù)據(jù)

4.三次握手和四次揮手

  • 三次握手: 剛開始的時(shí)候客戶端和服務(wù)端都處于CLOSED狀態(tài).主動(dòng)打開鏈接的是客戶端,被動(dòng)打開的是服務(wù)端.
    1.TCP服務(wù)器進(jìn)程先創(chuàng)建傳輸控制塊TCB,時(shí)刻準(zhǔn)備接受客戶進(jìn)程的連接請(qǐng)求,此時(shí)服務(wù)器就進(jìn)入了LISTEN(監(jiān)聽)狀態(tài).
    2.TCP客戶進(jìn)程也是先創(chuàng)建傳輸控制塊TCB,然后向服務(wù)器發(fā)出連SYN接 同步報(bào)文,這是報(bào)文首部中的同部位SYN=1,同時(shí)選擇一個(gè)初始序列號(hào) seq=x ,此時(shí),TCP客戶端進(jìn)程進(jìn)入了 SYN-SENT(同步已發(fā)送狀態(tài))狀態(tài),TCP規(guī)定,SYN報(bào)文段(SYN=1的報(bào)文段)不能攜帶數(shù)據(jù),但需要消耗掉一個(gè)序號(hào).
    3.TCP服務(wù)器收到SYN 同步報(bào)文之后,如果同意連接,會(huì)返回給客戶端 SYN 同步報(bào)文和 ACK 確認(rèn)報(bào)文. 確認(rèn)報(bào)文中應(yīng)該 ACK=1,SYN=1,確認(rèn)號(hào)是ack=x+1,同時(shí)也要為自己初始化一個(gè)序列號(hào) seq=y,此時(shí),TCP服務(wù)器進(jìn)程進(jìn)入了SYN-RCVD(同步收到)狀態(tài). 這個(gè)報(bào)文也不能攜帶數(shù)據(jù),但是同樣要消耗一個(gè)序號(hào).
    4.TCP客戶進(jìn)程收到確認(rèn)后,還要向服務(wù)器給出確認(rèn)。確認(rèn)報(bào)文的ACK=1,ack=y+1,自己的序列號(hào)seq=x+1,此時(shí),TCP連接建立,客戶端進(jìn)入ESTABLISHED(已建立連接)狀態(tài),TCP規(guī)定,此時(shí)ACK報(bào)文段可以攜帶數(shù)據(jù),但是如果不攜帶數(shù)據(jù)則不消耗序號(hào).
    5.當(dāng)服務(wù)器收到客戶端的ACK報(bào)文后也進(jìn)入ESTABLISHED狀態(tài),此時(shí)客戶端和服務(wù)端的連接正式建立。


    tcp.png
  • 四次揮手:數(shù)據(jù)傳輸完畢之后剛開始客戶端和服務(wù)端都處于ESTABLISHED狀態(tài),然后客戶端首先關(guān)閉連接狀態(tài),服務(wù)端被動(dòng)關(guān)閉連接狀態(tài)
    1.客戶端進(jìn)程發(fā)出FIN結(jié)束報(bào)文,并且停止發(fā)送數(shù)據(jù)。釋放數(shù)據(jù)報(bào)文首部,F(xiàn)IN=1,其序列號(hào)為seq=u(等于前面已經(jīng)傳送過來的數(shù)據(jù)的最后一個(gè)字節(jié)的序號(hào)加1),此時(shí),客戶端進(jìn)入FIN-WAIT-1(終止等待1)狀態(tài)。 TCP規(guī)定,F(xiàn)IN報(bào)文段即使不攜帶數(shù)據(jù),也要消耗一個(gè)序號(hào)。
    2.服務(wù)器收到FIN報(bào)文后,發(fā)出ACK確認(rèn)報(bào)文,ACK=1,ack=u+1,并且?guī)献约旱男蛄刑?hào)seq=v,此時(shí),由客戶端發(fā)起的斷開連接已經(jīng)完成,服務(wù)端就進(jìn)入了CLOSE-WAIT(關(guān)閉等待)狀態(tài).TCP服務(wù)器通知高層的應(yīng)用進(jìn)程,客戶端向服務(wù)器的方向就釋放了,這時(shí)候處于半關(guān)閉狀態(tài),即客戶端已經(jīng)沒有數(shù)據(jù)要發(fā)送了,但是服務(wù)器若發(fā)送數(shù)據(jù),客戶端依然要接受。這個(gè)狀態(tài)還要持續(xù)一段時(shí)間,也就是整個(gè)CLOSE-WAIT狀態(tài)持續(xù)的時(shí)間。
    3.客戶端收到服務(wù)器的確認(rèn)請(qǐng)求后,此時(shí),客戶端就進(jìn)入FIN-WAIT-2(終止等待2)狀態(tài),等待服務(wù)器發(fā)送連接釋放報(bào)文(在這之前還需要接受服務(wù)器發(fā)送的最后的數(shù)據(jù))。
    4.服務(wù)器將最后的數(shù)據(jù)發(fā)送完畢后,就向客戶端發(fā)送FIN報(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),等待客戶端的確認(rèn).
    5.客戶端收到服務(wù)器的FIN報(bào)文后,必須發(fā)出確認(rèn),ACK=1,ack=w+1,而自己的序列號(hào)是seq=u+1,此時(shí),客戶端就進(jìn)入了TIME-WAIT(時(shí)間等待)狀態(tài)。注意此時(shí)TCP連接還沒有釋放,必須經(jīng)過2?MSL(最長(zhǎng)報(bào)文段壽命)的時(shí)間后,當(dāng)客戶端撤銷相應(yīng)的TCB后,才進(jìn)入CLOSED狀態(tài).
    6.服務(wù)器只要收到了客戶端發(fā)出的確認(rèn),立即進(jìn)入CLOSED狀態(tài).同樣,撤銷TCB后,就結(jié)束了這次的TCP連接.可以看到,服務(wù)器結(jié)束TCP連接的時(shí)間要比客戶端早一些.


    close.png

5.TCP 和 UDP的區(qū)別

  • TCP:面向連接、傳輸可靠(保證數(shù)據(jù)正確性,保證數(shù)據(jù)順序)、用于傳輸大量數(shù)據(jù)(流模式)、速度慢,建立連接需要開銷較多(時(shí)間,系統(tǒng)資源)。

  • UDP:面向非連接、傳輸不可靠、用于傳輸少量數(shù)據(jù)(數(shù)據(jù)包模式)、速度快。

6.Cookie和Session

cookie

  • 1.用戶與服務(wù)器的交互

    cookie主要是用來記錄用戶狀態(tài),區(qū)分用戶,狀態(tài)保存在客戶端。cookie功能需要瀏覽器的支持。如果瀏覽器不支持cookie(如大部分手機(jī)中的瀏覽器)或者把cookie禁用了,cookie功能就會(huì)失效。

    a).首次訪問amazon時(shí),客戶端發(fā)送一個(gè)HTTP請(qǐng)求到服務(wù)器端 。服務(wù)器端發(fā)送一個(gè)HTTP響應(yīng)到客戶端,其中包含Set-Cookie頭部

    b).客戶端發(fā)送一個(gè)HTTP請(qǐng)求到服務(wù)器端,其中包含Cookie頭部。服務(wù)器端發(fā)送一個(gè)HTTP響應(yīng)到客戶端

    c).隔段時(shí)間再去訪問時(shí),客戶端會(huì)直接發(fā)包含Cookie頭部的HTTP請(qǐng)求。服務(wù)器端發(fā)送一個(gè)HTTP響應(yīng)到客戶端

  • 2.cookie的修改和刪除

    在修改cookie的時(shí)候,只需要新cookie覆蓋舊cookie即可,在覆蓋的時(shí)候,由于Cookie具有不可跨域名性,注意name、path、domain需與原cookie一致

    刪除cookie也一樣,設(shè)置cookie的過期時(shí)間expires為過去的一個(gè)時(shí)間點(diǎn),或者maxAge = 0(Cookie的有效期,單位為秒)即可

  • 3.cookie的安全

    事實(shí)上,cookie的使用存在爭(zhēng)議,因?yàn)樗徽J(rèn)為是對(duì)用戶隱私的一種侵害,而且cookie并不安全

    HTTP協(xié)議不僅是無狀態(tài)的,而且是不安全的。使用HTTP協(xié)議的數(shù)據(jù)不經(jīng)過任何加密就直接在網(wǎng)絡(luò)上傳播,有被截獲的可能。使用HTTP協(xié)議傳輸很機(jī)密的內(nèi)容是一種隱患。

    a).如果不希望Cookie在HTTP等非安全協(xié)議中傳輸,可以設(shè)置Cookie的secure屬性為true。瀏覽器只會(huì)在HTTPS和SSL等安全協(xié)議中傳輸此類Cookie。

    b).此外,secure屬性并不能對(duì)Cookie內(nèi)容加密,因而不能保證絕對(duì)的安全性。如果需要高安全性,需要在程序中對(duì)Cookie內(nèi)容加密、解密,以防泄密。

    c).也可以設(shè)置cookie為HttpOnly,如果在cookie中設(shè)置了HttpOnly屬性,那么通過js腳本將無法讀取到cookie信息,這樣能有效的防止XSS(跨站腳本攻擊)攻擊

Session

  • Session是服務(wù)器端使用的一種記錄客戶端狀態(tài)的機(jī)制,使用上比Cookie簡(jiǎn)單一些,相應(yīng)的也增加了服務(wù)器的存儲(chǔ)壓力。

  • Session是另一種記錄客戶狀態(tài)的機(jī)制,不同的是Cookie保存在客戶端瀏覽器中,而Session保存在服務(wù)器上。 客戶端瀏覽器訪問服務(wù)器的時(shí)候,服務(wù)器把客戶端信息以某種形式記錄在服務(wù)器上。這就是Session??蛻舳藶g覽器再次訪問時(shí)只需要從該Session中查找該客戶的狀態(tài)就可以了。

    當(dāng)程序需要為某個(gè)客戶端的請(qǐng)求創(chuàng)建一個(gè)session時(shí),服務(wù)器首先檢查這個(gè)客戶端的請(qǐng)求里是否已包含了一個(gè)session標(biāo)識(shí)(稱為SessionId)

    如果已包含則說明以前已經(jīng)為此客戶端創(chuàng)建過session,服務(wù)器就按照SessionId把這個(gè)session檢索出來,使用(檢索不到,會(huì)新建一個(gè))

    如果客戶端請(qǐng)求不包含SessionId,則為此客戶端創(chuàng)建一個(gè)session并且生成一個(gè)與此session相關(guān)聯(lián)的SessionId,SessionId的值應(yīng)該是一個(gè)既不會(huì)重復(fù),又不容易被找到規(guī)律以仿造的字符串,這個(gè)SessionId將被在本次響應(yīng)中返回給客戶端保存。

    保存這個(gè)SessionId的方式可以采用cookie,這樣在交互過程中瀏覽器可以自動(dòng)的按照規(guī)則把這個(gè)標(biāo)識(shí)發(fā)送給服務(wù)器。但cookie可以被人為的禁止,則必須有其他機(jī)制以便在cookie被禁止時(shí)仍然能夠把SessionId傳遞回服務(wù)器。

Cookie 和Session 的區(qū)別:

  • 1.cookie數(shù)據(jù)存放在客戶的瀏覽器上,session數(shù)據(jù)放在服務(wù)器上。

  • 2.cookie相比session不是很安全,別人可以分析存放在本地的cookie并進(jìn)行cookie欺騙,考慮到安全應(yīng)當(dāng)使用session。

  • 3.session會(huì)在一定時(shí)間內(nèi)保存在服務(wù)器上。當(dāng)訪問增多,會(huì)比較占用你服務(wù)器的性能,考慮到減輕服務(wù)器性能方面,應(yīng)當(dāng)使用cookie。

  • 4.單個(gè)cookie保存的數(shù)據(jù)不能超過4K,很多瀏覽器都限制一個(gè)站點(diǎn)最多保存20個(gè)cookie。而session存儲(chǔ)在服務(wù)端,可以無限量存儲(chǔ)

  • 5.所以:將登錄信息等重要信息存放為session;其他信息如果需要保留,可以放在cookie中

最后編輯于
?著作權(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ù)。

相關(guān)閱讀更多精彩內(nèi)容

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