網(wǎng)站名字 備案新聞?lì)^條今日要聞最新
一.網(wǎng)絡(luò)分類(lèi)
1.按照網(wǎng)絡(luò)的作用范圍進(jìn)行分類(lèi)
(1)廣域網(wǎng)WAN(Wide Area Network)
廣域網(wǎng)的作用范圍通常為幾十到幾千公里,因而有時(shí)也稱為遠(yuǎn)程網(wǎng)(long haul network)。廣域網(wǎng)是互聯(lián)網(wǎng)的核心部分,其任務(wù)是長(zhǎng)距離運(yùn)送主機(jī)所發(fā)送的數(shù)據(jù)。
(2)城域網(wǎng)MAN(Metropolitan Area Network)
城域網(wǎng)的作用范圍一般是一個(gè)城市,可跨越幾個(gè)街區(qū)甚至整個(gè)城市,其作用距離約為5-50km.城域網(wǎng)可以為一個(gè)或幾個(gè)單位所擁有,也可以是一種公共設(shè)施,用來(lái)將多個(gè)局域網(wǎng)進(jìn)行互連。目前很多城域網(wǎng)采用的是以太網(wǎng)技術(shù)。
(3)局域網(wǎng)(Local Area Network)?
局域網(wǎng)一般用微型計(jì)算機(jī)或工作站通過(guò)高速通信線路相連,但地理上則局限在較小的范圍(如1km左右)
(4)個(gè)人區(qū)域網(wǎng)PAN(Perisonal Area Network)
個(gè)人局域網(wǎng)就是在個(gè)人工作的地方把屬于個(gè)人使用的電子設(shè)備用無(wú)線技術(shù)連接起來(lái)的網(wǎng)絡(luò),因此也常常稱為無(wú)線個(gè)人局域網(wǎng)WPAN(Wireless PAN),其范圍很小,大約在10m左右。
2.按照網(wǎng)絡(luò)的使用者進(jìn)行分類(lèi)
(1)公用網(wǎng)(public network)
這是指電信公司出資建造的大型網(wǎng)絡(luò)?!肮谩本褪撬性敢獍措娦殴镜囊?guī)定交納費(fèi)用的人都可以使用這種網(wǎng)絡(luò)。
(2)專(zhuān)用網(wǎng)絡(luò)(private network)
這是某個(gè)部門(mén)為滿足單位的特殊業(yè)務(wù)工作的需要而建造的網(wǎng)絡(luò)。這種網(wǎng)絡(luò)不向本單位以外的人提供服務(wù)。例如 軍隊(duì),鐵路,銀行......
二.體系結(jié)構(gòu)
為了使不同體系結(jié)構(gòu)的計(jì)算機(jī)網(wǎng)絡(luò)能互連,國(guó)際標(biāo)準(zhǔn)化組織ISO于1977提出了各種計(jì)算機(jī)在世界范圍內(nèi)互聯(lián)成網(wǎng)的標(biāo)準(zhǔn)框架,即著名的開(kāi)放系統(tǒng)互連基本參考模型OSI/RM(Open Systems Interconnection Reference Model),簡(jiǎn)稱為OSI。
3.運(yùn)輸層
運(yùn)輸層的任務(wù)就是負(fù)責(zé)向兩臺(tái)主機(jī)中的進(jìn)程之間的通信提供通用的數(shù)據(jù)傳輸服務(wù)。應(yīng)用進(jìn)程利用該服務(wù)傳送應(yīng)用層報(bào)文。
運(yùn)輸層主要使用以下兩種協(xié)議:
傳輸控制協(xié)議TCP(Transmisson Control Protocol)
TCP時(shí)面向連接(一對(duì)一)的運(yùn)輸層協(xié)議,提供可靠的數(shù)據(jù)傳輸服務(wù)和全雙工通信其數(shù)據(jù)傳輸?shù)膯挝皇菆?bào)文段
用戶數(shù)據(jù)報(bào)協(xié)議UDP(User Datagram Protocol)
提供無(wú)連接的盡最大努力的數(shù)據(jù)傳輸服務(wù)(不保證數(shù)據(jù)傳輸?shù)目煽啃?/strong>),其數(shù)據(jù)傳輸?shù)膯挝皇怯脩魯?shù)據(jù)報(bào)
①TCP
TCP 提供面向有連接的通信傳輸,面向有連接是指在傳送數(shù)據(jù)之前必須先建立連接,數(shù)據(jù)傳送完成后要釋放連接。無(wú)論哪一方向另一方發(fā)送數(shù)據(jù)之前,都必須先在雙方之間建立一條連接。
在TCP/IP協(xié)議中,TCP協(xié)議提供可靠的連接服務(wù),連接是通過(guò)三次握手進(jìn)行初始化的。
TCP是全雙工模式(互相發(fā)送信息),所以需要四次揮手關(guān)閉連接。
每一條TCP連接有兩個(gè)端點(diǎn).比如在電腦分別用谷歌和火狐瀏覽器登錄B站,B站則需要把內(nèi)容發(fā)給兩個(gè)不同的應(yīng)用進(jìn)程,那么除了IP地址以外還需要端口號(hào)才能保證內(nèi)容不會(huì)錯(cuò)發(fā)給應(yīng)用進(jìn)程,在訪問(wèn)B站的時(shí)候?yàn)g覽器會(huì)自動(dòng)給我添加端口號(hào)443(HTTPS),然后電腦中會(huì)給不同瀏覽器分配不同的端口號(hào).這樣進(jìn)行連接就會(huì)像"管道"一樣特定進(jìn)行傳輸.那么IP地址加端口號(hào)稱為套接字socket
TCP首部格式
在TCP首部格式需要知道幾個(gè)字段
序號(hào)(seq)
占四字節(jié).在一個(gè)TCP連接中傳送的字節(jié)流中的每一個(gè)字節(jié)都按順序編號(hào).
確認(rèn)號(hào)(ack)
占四字節(jié) 是期望對(duì)方收到下一個(gè)報(bào)文段的一個(gè)數(shù)據(jù)字節(jié)的序號(hào).
記住:若確認(rèn)號(hào)為N,則表明N-1為止的所有數(shù)據(jù)都已正確收到.
緊急URG(URGent):
當(dāng)URG=1時(shí),表示緊急指針有效.發(fā)送應(yīng)用進(jìn)程告訴t發(fā)送方的tcp有緊急數(shù)據(jù)要傳送.于是發(fā)送方TCP就把緊急數(shù)據(jù)插入本報(bào)問(wèn)段數(shù)據(jù)的最前面,而在緊急數(shù)據(jù)后面的數(shù)據(jù)仍是普通數(shù)據(jù).
確認(rèn)ACK(ACKnowledgment)
僅當(dāng)ACk=1時(shí)確認(rèn)號(hào)字段才有效.當(dāng)為0時(shí),確認(rèn)號(hào)無(wú)效.TCP規(guī)定,在連接后所有傳送的報(bào)文段都必須把ACK置為1
推送PSH(PuSH)
當(dāng)發(fā)送方TCP把PSH置為1,并立即創(chuàng)建一個(gè)報(bào)文段發(fā)送出去.接收方TCP收到PSH=1報(bào)文段,就盡快交付接受應(yīng)用進(jìn)程,而不再等到整個(gè)緩存都填滿了后再向上交付.
復(fù)位RST(ReSeT)
當(dāng)RST=1時(shí),表示TCP連接中出現(xiàn)嚴(yán)重差錯(cuò)(如主機(jī)崩潰或其他原因),必須釋放連接,然后再重新建立運(yùn)輸連接.將RST置為1來(lái)拒絕一個(gè)非法的報(bào)文或者拒絕打開(kāi)一個(gè)連接.RST也稱為重建位或重置位.
同步SYN(SYNchronization)
當(dāng)SYN=1而ACK=0時(shí),表明這是一個(gè)連接請(qǐng)求報(bào)文段.若對(duì)方同意建立連接,則在響應(yīng)的報(bào)文段中使用SYN=1和ACK=1.因此SYN置為1就表示這是一個(gè)連接請(qǐng)求或者連接接受報(bào)文.
終止FIN(FINish)
當(dāng)FIN=1時(shí),表明此報(bào)文段的發(fā)送方數(shù)據(jù)已發(fā)送完畢,并要求釋放運(yùn)輸連接.
TCP三次握手
所謂三次握手(Three-way Handshake),是指建立一個(gè) TCP 連接時(shí),需要客戶端和服務(wù)器總共發(fā)送3個(gè)報(bào)文。
過(guò)程如下:
- 第一次握手:客戶端給服務(wù)端發(fā)一個(gè) SYN(同步,連接請(qǐng)求) 報(bào)文,并指明客戶端的初始化序列號(hào) ISN(c),此時(shí)客戶端處于 SYN_SENT 狀態(tài)
- 第二次握手:服務(wù)器收到客戶端的 SYN 報(bào)文之后,會(huì)以自己的 SYN 報(bào)文作為應(yīng)答,并且開(kāi)啟ACK(確認(rèn)),為了確認(rèn)客戶端的 SYN,將客戶端的 ISN+1作為ACK的值,此時(shí)服務(wù)器處于 SYN_RCVD 的狀態(tài)
- 第三次握手:客戶端收到 SYN 報(bào)文之后,會(huì)發(fā)送一個(gè) ACK 報(bào)文,值為服務(wù)器的ISN+1。此時(shí)客戶端處于 ESTABLISHED 狀態(tài)。服務(wù)器收到 ACK 報(bào)文之后,也處于 ESTABLISHED 狀態(tài),此時(shí),雙方已建立起了連接
- 第一次握手:客戶端發(fā)送網(wǎng)絡(luò)包,服務(wù)端收到了 這樣服務(wù)端就能得出結(jié)論:客戶端的發(fā)送能力、服務(wù)端的接收能力是正常的。
- 第二次握手:服務(wù)端發(fā)包,客戶端收到了 這樣客戶端就能得出結(jié)論:服務(wù)端的接收、發(fā)送能力,客戶端的接收、發(fā)送能力是正常的。不過(guò)此時(shí)服務(wù)器并不能確認(rèn)客戶端的接收能力是否正常
- 第三次握手:客戶端發(fā)包,服務(wù)端收到了。 這樣服務(wù)端就能得出結(jié)論:客戶端的接收、發(fā)送能力正常,服務(wù)器自己的發(fā)送、接收能力也正常
TCP四次揮手
客戶端和服務(wù)端都可以主動(dòng)發(fā)送關(guān)閉連接的請(qǐng)求
過(guò)程如下:
- 第一次揮手:客戶端發(fā)送一個(gè) FIN 報(bào)文,報(bào)文中會(huì)指定一個(gè)序列號(hào)。此時(shí)客戶端處于 FIN_WAIT1 狀態(tài),停止發(fā)送數(shù)據(jù),等待服務(wù)端的確認(rèn)
- 第二次揮手:服務(wù)端收到 FIN 之后,會(huì)發(fā)送 ACK 報(bào)文,且把客戶端的序列號(hào)值 +1 作為 ACK 報(bào)文的序列號(hào)值,表明已經(jīng)收到客戶端的報(bào)文了,此時(shí)服務(wù)端處于 CLOSE_WAIT狀態(tài)
- 第三次揮手:如果服務(wù)端也想斷開(kāi)連接了,和客戶端的第一次揮手一樣,發(fā)給 FIN 報(bào)文,且指定一個(gè)序列號(hào)。此時(shí)服務(wù)端處于?
LAST_ACK
?的狀態(tài) - 第四次揮手:客戶端收到 FIN 之后,一樣發(fā)送一個(gè) ACK 報(bào)文作為應(yīng)答,且把服務(wù)端的序列號(hào)值 +1 作為自己 ACK 報(bào)文的序列號(hào)值,此時(shí)客戶端處于 TIME_WAIT狀態(tài)。需要過(guò)一陣子以確保服務(wù)端收到自己的 ACK 報(bào)文之后才會(huì)進(jìn)入 CLOSED 狀態(tài),服務(wù)端收到 ACK 報(bào)文之后,就處于關(guān)閉連接了,處于 CLOSED 狀態(tài)
#四次揮手原因
服務(wù)端在收到客戶端斷開(kāi)連接Fin
報(bào)文后,并不會(huì)立即關(guān)閉連接,而是先發(fā)送一個(gè)ACK
包先告訴客戶端收到關(guān)閉連接的請(qǐng)求,只有當(dāng)服務(wù)器的所有報(bào)文發(fā)送完畢之后,才發(fā)送FIN
報(bào)文斷開(kāi)連接,因此需要四次揮手
三.HTTP和HTTPS
HTTP(HyperText Transfer Protocol)超文本傳輸協(xié)議
不同點(diǎn):
①連接方面:
HTTP 和 HTTPS 使用連接方式不同,默認(rèn)端口也不一樣,HTTP是80,HTTPS是443
②加密方面:
HTTP協(xié)議運(yùn)行在TCP之上,所有傳輸?shù)膬?nèi)容都是明文。HTTPS使用SSL/TLS協(xié)議對(duì)HTTP報(bào)文進(jìn)行加密,使得敏感數(shù)據(jù)在網(wǎng)絡(luò)傳輸過(guò)程中不容易被竊聽(tīng)和篡改。這種加密過(guò)程結(jié)合了對(duì)稱加密和非對(duì)稱加密,確保數(shù)據(jù)的保密性和完整性。
1.HTTP1.0 HTTP.1.1 HTTP2.0區(qū)別
①HTTP1.0
②HTTP1.1
②HTTP2.0
四.Get和Post請(qǐng)求區(qū)別
get請(qǐng)求通常用于從服務(wù)器獲取資源,參數(shù)暴露在URL中,存在安全隱患,并且傳輸長(zhǎng)度受URL限制,一般為2k。
情況例舉:在地址欄輸入url訪問(wèn);點(diǎn)擊a鏈接;link標(biāo)簽引入css;;img標(biāo)簽引入圖片;script標(biāo)簽引入js;video與audio引入多媒體;form標(biāo)簽的method為get;ajax的get請(qǐng)求。
post請(qǐng)求通常用于向服務(wù)器提交數(shù)據(jù)或者創(chuàng)建新的資源。數(shù)據(jù)放在請(qǐng)求體中,而不是暴露在URL中,理論上來(lái)說(shuō)沒(méi)有傳輸長(zhǎng)度限制。
情況舉例:;form標(biāo)簽的method為post;ajax的post請(qǐng)求。
五.HTTP響應(yīng)狀態(tài)碼
狀態(tài)碼第一位數(shù)字決定了不同的響應(yīng)狀態(tài),有如下:
- 1 表示消息
- 2 表示成功
- 3 表示重定向
- 4 表示請(qǐng)求錯(cuò)誤
- 5 表示服務(wù)器錯(cuò)誤
#1xx
代表請(qǐng)求已被接受,需要繼續(xù)處理。這類(lèi)響應(yīng)是臨時(shí)響應(yīng),只包含狀態(tài)行和某些可選的響應(yīng)頭信息,并以空行結(jié)束
常見(jiàn)的有:
- 100(客戶端繼續(xù)發(fā)送請(qǐng)求,這是臨時(shí)響應(yīng)):這個(gè)臨時(shí)響應(yīng)是用來(lái)通知客戶端它的部分請(qǐng)求已經(jīng)被服務(wù)器接收,且仍未被拒絕??蛻舳藨?yīng)當(dāng)繼續(xù)發(fā)送請(qǐng)求的剩余部分,或者如果請(qǐng)求已經(jīng)完成,忽略這個(gè)響應(yīng)。服務(wù)器必須在請(qǐng)求完成后向客戶端發(fā)送一個(gè)最終響應(yīng)
- 101:服務(wù)器根據(jù)客戶端的請(qǐng)求切換協(xié)議,主要用于websocket或http2升級(jí)
#2xx
代表請(qǐng)求已成功被服務(wù)器接收、理解、并接受
常見(jiàn)的有:
-
200(成功):請(qǐng)求已成功,請(qǐng)求所希望的響應(yīng)頭或數(shù)據(jù)體將隨此響應(yīng)返回
-
201(已創(chuàng)建):請(qǐng)求成功并且服務(wù)器創(chuàng)建了新的資源
-
202(已創(chuàng)建):服務(wù)器已經(jīng)接收請(qǐng)求,但尚未處理
-
203(非授權(quán)信息):服務(wù)器已成功處理請(qǐng)求,但返回的信息可能來(lái)自另一來(lái)源
-
204(無(wú)內(nèi)容):服務(wù)器成功處理請(qǐng)求,但沒(méi)有返回任何內(nèi)容
-
205(重置內(nèi)容):服務(wù)器成功處理請(qǐng)求,但沒(méi)有返回任何內(nèi)容
-
206(部分內(nèi)容):服務(wù)器成功處理了部分請(qǐng)求
#3xx
表示要完成請(qǐng)求,需要進(jìn)一步操作。 通常,這些狀態(tài)代碼用來(lái)重定向
常見(jiàn)的有:
-
300(多種選擇):針對(duì)請(qǐng)求,服務(wù)器可執(zhí)行多種操作。 服務(wù)器可根據(jù)請(qǐng)求者 (user agent) 選擇一項(xiàng)操作,或提供操作列表供請(qǐng)求者選擇
-
301(永久移動(dòng)):請(qǐng)求的網(wǎng)頁(yè)已永久移動(dòng)到新位置。 服務(wù)器返回此響應(yīng)(對(duì) GET 或 HEAD 請(qǐng)求的響應(yīng))時(shí),會(huì)自動(dòng)將請(qǐng)求者轉(zhuǎn)到新位置
-
302(臨時(shí)移動(dòng)): 服務(wù)器目前從不同位置的網(wǎng)頁(yè)響應(yīng)請(qǐng)求,但請(qǐng)求者應(yīng)繼續(xù)使用原有位置來(lái)進(jìn)行以后的請(qǐng)求
-
303(查看其他位置):請(qǐng)求者應(yīng)當(dāng)對(duì)不同的位置使用單獨(dú)的 GET 請(qǐng)求來(lái)檢索響應(yīng)時(shí),服務(wù)器返回此代碼
-
305 (使用代理): 請(qǐng)求者只能使用代理訪問(wèn)請(qǐng)求的網(wǎng)頁(yè)。 如果服務(wù)器返回此響應(yīng),還表示請(qǐng)求者應(yīng)使用代理
-
307 (臨時(shí)重定向): 服務(wù)器目前從不同位置的網(wǎng)頁(yè)響應(yīng)請(qǐng)求,但請(qǐng)求者應(yīng)繼續(xù)使用原有位置來(lái)進(jìn)行以后的請(qǐng)求
#4xx
代表了客戶端看起來(lái)可能發(fā)生了錯(cuò)誤,妨礙了服務(wù)器的處理
常見(jiàn)的有:
- 400(錯(cuò)誤請(qǐng)求): 服務(wù)器不理解請(qǐng)求的語(yǔ)法
- 401(未授權(quán)): 請(qǐng)求要求身份驗(yàn)證。 對(duì)于需要登錄的網(wǎng)頁(yè),服務(wù)器可能返回此響應(yīng)。
- 403(禁止): 服務(wù)器拒絕請(qǐng)求
- 404(未找到): 服務(wù)器找不到請(qǐng)求的網(wǎng)頁(yè)
- 405(方法禁用): 禁用請(qǐng)求中指定的方法
- 406(不接受): 無(wú)法使用請(qǐng)求的內(nèi)容特性響應(yīng)請(qǐng)求的網(wǎng)頁(yè)
- 407(需要代理授權(quán)): 此狀態(tài)代碼與 401(未授權(quán))類(lèi)似,但指定請(qǐng)求者應(yīng)當(dāng)授權(quán)使用代理
- 408(請(qǐng)求超時(shí)): 服務(wù)器等候請(qǐng)求時(shí)發(fā)生超時(shí)
#5xx
表示服務(wù)器無(wú)法完成明顯有效的請(qǐng)求。這類(lèi)狀態(tài)碼代表了服務(wù)器在處理請(qǐng)求的過(guò)程中有錯(cuò)誤或者異常狀態(tài)發(fā)生
常見(jiàn)的有:
- 500(服務(wù)器內(nèi)部錯(cuò)誤):服務(wù)器遇到錯(cuò)誤,無(wú)法完成請(qǐng)求
- 501(尚未實(shí)施):服務(wù)器不具備完成請(qǐng)求的功能。 例如,服務(wù)器無(wú)法識(shí)別請(qǐng)求方法時(shí)可能會(huì)返回此代碼
- 502(錯(cuò)誤網(wǎng)關(guān)): 服務(wù)器作為網(wǎng)關(guān)或代理,從上游服務(wù)器收到無(wú)效響應(yīng)
- 503(服務(wù)不可用): 服務(wù)器目前無(wú)法使用(由于超載或停機(jī)維護(hù))
- 504(網(wǎng)關(guān)超時(shí)): 服務(wù)器作為網(wǎng)關(guān)或代理,但是沒(méi)有及時(shí)從上游服務(wù)器收到請(qǐng)求
- 505(HTTP 版本不受支持): 服務(wù)器不支持請(qǐng)求中所用的 HTTP 協(xié)議版本