一、網(wǎng)絡(luò)基礎(chǔ)知識(shí)準(zhǔn)備
1、OSI七層網(wǎng)絡(luò)模型總結(jié):
- 上3層(會(huì)話層、表示層和應(yīng)用層)則以提供用戶與應(yīng)用程序之間的信息和數(shù)據(jù)處理功能為主。
- 第4層作為上下兩部分的橋梁,是整個(gè)網(wǎng)絡(luò)體系結(jié)構(gòu)中最關(guān)鍵的部分
- 下面4層(物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層和傳輸層)主要提供數(shù)據(jù)傳輸和交換功能, 即以節(jié)點(diǎn)到節(jié)點(diǎn)之間的通信為主
2、TCP/IP協(xié)議總結(jié):
- 應(yīng)用層:應(yīng)用程序間溝通的層,如簡(jiǎn)單電子郵件傳輸(SMTP)、文件傳輸協(xié)議(FTP)、 網(wǎng)絡(luò)遠(yuǎn)程訪問(wèn)協(xié)議(Telnet)等。
- 傳輸層:在此層中,它提供了節(jié)點(diǎn)間的數(shù)據(jù)傳送服務(wù),如傳輸控制協(xié)議(TCP)、 用戶數(shù)據(jù)報(bào)表協(xié)議(UDP)等,TCP和UDP- 給數(shù)據(jù)包加入傳輸數(shù)據(jù)并把它傳輸?shù)较乱粚又校?這一層負(fù)責(zé)傳送數(shù)據(jù),并且確定數(shù)據(jù)已被送達(dá)并接收。
- 網(wǎng)絡(luò)互連層:負(fù)責(zé)提供基本的數(shù)據(jù)封包傳送功能,讓每一塊數(shù)據(jù)包都能夠到達(dá)目 的主機(jī)(但不檢查是否被正確接收),如網(wǎng)際協(xié)議(IP)。
- 主機(jī)到網(wǎng)絡(luò)層:對(duì)實(shí)際的網(wǎng)絡(luò)媒體的管理,定義如何使用實(shí)際網(wǎng)絡(luò) (如Ethernet、Serial Line等)來(lái)傳送數(shù)據(jù)。
3、TCP協(xié)議流程:
- TCP(Transmission Control Protocol,傳輸控制協(xié)議)是面向連接的協(xié)議,即在收發(fā)數(shù)據(jù)錢 ,都需要與對(duì)面建立可靠的鏈接,這也是面試經(jīng)常會(huì)問(wèn)到的TCP的三次握手以及TCP的四次揮手!
三次握手: 建立一個(gè)TCP連接時(shí),需要客戶端和服務(wù)端總共發(fā)送3個(gè)包以確認(rèn)連接的建立, 在Socket編程中,這一過(guò)程由客戶端執(zhí)行connect來(lái)觸發(fā),具體流程圖如下四次揮手: 終止TCP連接,就是指斷開(kāi)一個(gè)TCP連接時(shí),需要客戶端和服務(wù)端總共發(fā)送4個(gè)包以確認(rèn)連接的斷開(kāi)。 在Socket編程中,這一過(guò)程由客戶端或服務(wù)端任一方執(zhí)行close來(lái)觸發(fā),具體流程圖如下:- 為什么建立連接是三次握手,而關(guān)閉連接卻是四次揮手呢?
因?yàn)榉?wù)端在LISTEN狀態(tài)下,收到建立連接請(qǐng)求的SYN報(bào)文后,把ACK和SYN放在一個(gè)報(bào)文里 發(fā)送給客戶端。而關(guān)閉連接時(shí),當(dāng)收到對(duì)方的FIN報(bào)文時(shí),僅僅表示對(duì)方不再發(fā)送數(shù)據(jù)了但是還 能接收數(shù)據(jù),己方也未必全部數(shù)據(jù)都發(fā)送給對(duì)方了,所以己方可以立即close,也可以發(fā)送一些 數(shù)據(jù)給對(duì)方后,再發(fā)送FIN報(bào)文給對(duì)方來(lái)表示同意現(xiàn)在關(guān)閉連接,因此,己方ACK和FIN一般都會(huì) 分開(kāi)發(fā)送。
4、UDP協(xié)議:
- UDP(User Datagram Protocol)用戶數(shù)據(jù)報(bào)協(xié)議,非連接的協(xié)議,傳輸數(shù)據(jù)之前源端和終端不 建立連接,當(dāng)它想傳送時(shí)就簡(jiǎn)單地去抓取來(lái)自應(yīng)用程序的數(shù)據(jù),并盡可能快地把它扔到網(wǎng)絡(luò)上。 在發(fā)送端,UDP傳送數(shù)據(jù)的速度僅僅是受應(yīng)用程序生成數(shù)據(jù)的速度、計(jì)算機(jī)的能力和傳輸帶寬 的限制;在接收端,UDP把每個(gè)消息段放在隊(duì)列中,應(yīng)用程序每次從隊(duì)列中讀一個(gè)消息段。 相比TCP就是無(wú)需建立鏈接,結(jié)構(gòu)簡(jiǎn)單,無(wú)法保證正確性,容易丟包
5、什么是socket
socket是在應(yīng)用層和傳輸層之間的一個(gè)抽象層,它把TCP/IP層復(fù)雜的操作抽象為幾個(gè)簡(jiǎn)單的接口供應(yīng)用層調(diào)用以實(shí)現(xiàn)進(jìn)程在網(wǎng)絡(luò)中通信。
Socket通信實(shí)現(xiàn)步驟解析:
1:創(chuàng)建ServerSocket和Socket2:打開(kāi)連接到的Socket的輸入/輸出流3:按照協(xié)議對(duì)Socket進(jìn)行讀/寫操作
二、http協(xié)議
1、什么是http協(xié)議
- hypertext transfer protocol(超文本傳輸協(xié)議),TCP/IP協(xié)議的一個(gè)應(yīng)用層協(xié)議,用于 定義WEB瀏覽器與WEB服務(wù)器之間交換數(shù)據(jù)的過(guò)程。客戶端連上web服務(wù)器后,若想獲得web服務(wù)器 中的某個(gè)web資源,需遵守一定的通訊格式,HTTP協(xié)議用于定義客戶端與web服務(wù)器通迅的格式。
2、http 1.0 與 http 1.1的區(qū)別
- 1.0協(xié)議,客戶端與web服務(wù)器建立連接后,只能獲得一個(gè)web資源! 而1.1協(xié)議,允許客戶端與web服務(wù)器建立連接后,在一個(gè)連接上獲取多個(gè)web資源!
3、Http協(xié)議的底層工作流程:
SYN(synchronous):TCP/IP建立連接時(shí)使用的握手信號(hào)
ACK(Acknowledgement):確認(rèn)字符,確認(rèn)發(fā)來(lái)的數(shù)據(jù)已經(jīng)接受無(wú)誤
客戶端發(fā)送syn包(syn = j)到服務(wù)器,進(jìn)入SYN_SEND狀態(tài),然后等待服務(wù)器確認(rèn)
服務(wù)器收到syn包,確認(rèn)客戶的syn(ack = j 1),同時(shí)在自己也發(fā)送一個(gè)SYN包(syn=k), 即SYN ACK包,服務(wù)器進(jìn)入SYN_RECV狀態(tài)
客戶端收到SYN ACK包,向服務(wù)器發(fā)送確認(rèn)包ACK(ack = k 1),發(fā)送完畢后,客戶端與服務(wù)端 進(jìn)入ESTABLISHED狀態(tài),完成三次握手,然后兩者開(kāi)始傳送數(shù)據(jù)
用戶點(diǎn)擊瀏覽器上的url(超鏈接),Web瀏覽器與Web服務(wù)器建立連接建立連接后,客戶端發(fā)送請(qǐng)求給服務(wù)器,請(qǐng)求的格式為: 統(tǒng)一資源標(biāo)識(shí)符(URL) 協(xié)議版本號(hào)(一般是1.1) MIME信息(多個(gè)消息頭) 一個(gè)空行服務(wù)端收到請(qǐng)求后,給予相應(yīng)的返回信息,返回格式為: 協(xié)議版本號(hào) 狀態(tài)行(處理結(jié)果) 多個(gè)信息頭 空行 實(shí)體內(nèi)容(比如返回的HTML)客戶端接收服務(wù)端返回信息,通過(guò)瀏覽器顯示出來(lái),然后與服務(wù)端斷開(kāi)連接;當(dāng)然如果中途 某步發(fā)生錯(cuò)誤的話,錯(cuò)誤信息會(huì)返回到客戶端,并顯示,比如:經(jīng)典的404錯(cuò)誤!4、http協(xié)議的業(yè)務(wù)流程
5、http-get請(qǐng)求和post請(qǐng)求對(duì)比
- GET:在請(qǐng)求的URL地址后以?的形式帶上交給服務(wù)器的數(shù)據(jù),多個(gè)數(shù)據(jù)之間以&進(jìn)行分隔, 但數(shù)據(jù)容量通常不能超過(guò)2K,比如:http://xxx?username=…&pawd=…這種就是GET
- POST: 這個(gè)則可以在請(qǐng)求的實(shí)體內(nèi)容中向服務(wù)器發(fā)送數(shù)據(jù),傳輸沒(méi)有數(shù)量限制
- GET安全性非常低,Post安全性較高, 但是執(zhí)行效率卻比Post方法好,一般查詢的時(shí)候我們用GET,數(shù)據(jù)增刪改的時(shí)候用POST?。?/section>
6、http協(xié)議的特點(diǎn)
- 2.簡(jiǎn)單快速:客戶向服務(wù)器請(qǐng)求服務(wù)時(shí),只需傳送請(qǐng)求方法和路徑。請(qǐng)求方法常用的有GET、 HEAD、POST。每種方法規(guī)定了客戶與服務(wù)器聯(lián)系的類型不同。 由于HTTP協(xié)議簡(jiǎn)單,使得HTTP服務(wù)器的程序規(guī)模小,因而通信速度很快。
- 3.靈活:HTTP允許傳輸任意類型的數(shù)據(jù)對(duì)象。正在傳輸?shù)念愋陀蒀ontent-Type加以標(biāo)記。
- 4.無(wú)連接:無(wú)連接的含義是限制每次連接只處理一個(gè)請(qǐng)求。服務(wù)器處理完客戶的請(qǐng)求, 并收到客戶的應(yīng)答后,即斷開(kāi)連接。采用這種方式可以節(jié)省傳輸時(shí)間。
- 5.無(wú)狀態(tài):HTTP協(xié)議是無(wú)狀態(tài)協(xié)議。無(wú)狀態(tài)是指協(xié)議對(duì)于事務(wù)處理沒(méi)有記憶能力。 缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息,則它必須重傳,這樣可能導(dǎo)致每 次連接傳送的數(shù)據(jù)量增大。另一方面,在服務(wù)器不需要先前信息時(shí)它的應(yīng)答就較快。
三、https協(xié)議
1、什么是https協(xié)議
- (Hypertext Transfer Protocol Secure:超文本傳輸安全協(xié)議)是一種透過(guò)計(jì)算機(jī)網(wǎng)絡(luò)進(jìn)行安全通信的傳輸協(xié)議。HTTPS 經(jīng)由 HTTP 進(jìn)行通信,但利用 SSL/TLS 來(lái)加密數(shù)據(jù)包。HTTPS 開(kāi)發(fā)的主要目的,是提供對(duì)網(wǎng)站服務(wù)器的身份認(rèn)證,保護(hù)交換數(shù)據(jù)的隱私與完整性。
2、https工作原理
版權(quán)聲明:本文為CSDN博主「小袁ITSuper」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。 原文鏈接:https://blog.csdn.net/yuan2019035055/article/details/122310503
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。