1 Web 機制
????????無論通過有線方式 (比如,網(wǎng)線) 還是無線方式(比如 wifi 或藍牙),通信都需要進行連接,而網(wǎng)絡(luò)上的每臺計算機都需要鏈接到路由器(router),它確保從一臺計算機上發(fā)出的一條信息可以到達正確的計算機。計算機先連接路由器,然后路由器之間互相連接,可以通過電話基礎(chǔ)設(shè)施相互連接,并把網(wǎng)絡(luò)連接到管理特殊路由器的互聯(lián)網(wǎng)服務(wù)提供商(ISP),最后這些路由器再連接其他 ISP 的路由器。調(diào)制解調(diào)器(modem)可以把網(wǎng)絡(luò)信息變成電話設(shè)施可以處理的信息,而網(wǎng)絡(luò)消息可以被 ISP 捕獲并發(fā)送到相應(yīng)的網(wǎng)絡(luò)。互聯(lián)網(wǎng)作為基礎(chǔ)設(shè)施,就是由這些所有的網(wǎng)絡(luò)設(shè)施所組成,而網(wǎng)絡(luò)是建立在這種基礎(chǔ)設(shè)施之上的服務(wù)。?
超鏈接(Hyperlink),通常簡稱為鏈接(link)。大多數(shù)鏈接將兩個網(wǎng)頁相連。而錨將一個網(wǎng)頁中的兩個段落相連。當(dāng)點擊指向錨點的鏈接時,瀏覽器跳轉(zhuǎn)到當(dāng)前文檔的另一部分,而不是加載新文檔。內(nèi)鏈是自己的網(wǎng)頁之間的鏈接。外鏈是從自己的網(wǎng)頁鏈接到其他人的網(wǎng)頁的鏈接。傳入鏈接是從其他人的網(wǎng)頁鏈接到自己的網(wǎng)頁的鏈接。鏈接對網(wǎng)站用戶和搜索引擎都很重要,鏈接的可見文本會影響搜索結(jié)果對特定 URL 的搜索。一個網(wǎng)頁擁有的鏈接越多,它在搜索結(jié)果中的排名就越靠前。外部鏈接會影響源網(wǎng)頁和目標網(wǎng)頁的搜索排名,但具體影響程度尚不清楚。
連接到互聯(lián)網(wǎng)的計算機被稱作客戶端和服務(wù)器。客戶端是典型的 Web 用戶入網(wǎng)設(shè)備(比如連接了 Wi-Fi 的計算機,或接入移動網(wǎng)絡(luò)的手機)和設(shè)備上可聯(lián)網(wǎng)的軟件(比如 Firefox 和 Chrome 的瀏覽器)。服務(wù)器是存儲網(wǎng)頁,站點和應(yīng)用的計算機。當(dāng)一個客戶端設(shè)備想要獲取一個網(wǎng)頁時,一份網(wǎng)頁的拷貝將從服務(wù)器上下載到客戶端機器上來在用戶瀏覽器上顯示。
網(wǎng)絡(luò)服務(wù)器(web server):一臺托管一個或多個網(wǎng)站的計算機??梢源赣布蜍浖?,或者是它們協(xié)同工作的整體。硬件部分是一臺存儲了 web 服務(wù)器軟件以及網(wǎng)站的組成文件(比如,HTML 文檔、圖片、CSS 樣式表和 JavaScript 文件)的計算機。它接入到互聯(lián)網(wǎng)并且支持與其他連接到互聯(lián)網(wǎng)的設(shè)備進行物理數(shù)據(jù)的交互。軟件部分包括控制網(wǎng)絡(luò)用戶如何訪問托管文件的幾個部分,至少是一臺?HTTP 服務(wù)器。一臺 HTTP 服務(wù)器是一種能夠理解?URL和?HTTP的軟件。一個 HTTP 服務(wù)器可以通過它所存儲的網(wǎng)站域名進行訪問,并將這些托管網(wǎng)站的內(nèi)容傳遞給最終用戶的設(shè)備。
靜態(tài) web 服務(wù)器(static web server)由一個計算機(硬件)和一個 HTTP 服務(wù)器(軟件)組成。稱它為“靜態(tài)”是因為這個服務(wù)器把它托管文件的“保持原樣”地傳送到你的瀏覽器。
動態(tài) web 服務(wù)器(dynamic web server)由一個靜態(tài)的網(wǎng)絡(luò)服務(wù)器加上額外的軟件組成,最普遍的是一個應(yīng)用服務(wù)器和一個數(shù)據(jù)庫。稱它為“動態(tài)”是因為這個應(yīng)用服務(wù)器會在通過 HTTP 服務(wù)器把托管文件傳送到你的瀏覽器之前會對這些托管文件進行更新。
嚴格來說,可以在自己的計算機上托管所有的這些文件,但專用的 web 服務(wù)器上有以下優(yōu)勢:
- 專用 web 服務(wù)器可用性更強(會一直啟動和運行)
- 除去停機時間和系統(tǒng)故障,專用 web 服務(wù)器總是連接到互聯(lián)網(wǎng)。
- 專用 web 服務(wù)器可以一直擁有一樣的 IP 地址,這也稱為專有 IP 地址(不是所有的?ISP?都會為家庭線提供一個固定的 IP 地址)
- 專用 web 服務(wù)器往往由第三方提供者維護
網(wǎng)頁(webpage):一份能夠顯示在網(wǎng)絡(luò)瀏覽器(如 Firefox,,Google Chrome,Microsoft Internet Explorer 或 Edge,Apple 的 Safari)上的文檔。網(wǎng)頁也常被稱作"web pages"(網(wǎng)頁)或者就叫"pages"(頁面)。瀏覽器也能顯示其他文檔,例如 PDF 文件或圖像,但網(wǎng)頁(webpage)專指 HTML 文檔。其他情況使用文檔(document)。
網(wǎng)站(website):網(wǎng)站是共享唯一域名的相互鏈接的網(wǎng)頁的集合。網(wǎng)站常被稱作"web site"(網(wǎng)站)或簡稱"site"(站點)。當(dāng)網(wǎng)站只包含一個網(wǎng)頁時,可稱之為單頁網(wǎng)站(single-page website)。
搜索引擎(search engine):幫助尋找其他網(wǎng)頁的網(wǎng)站,比如 Google,Bing,或 Yahoo。
CMS(內(nèi)容管理系統(tǒng),content management system)是一個允許用戶發(fā)布、組織、修改、刪除多種類型的內(nèi)容的軟件。CMS?不僅支持文本,還可以嵌入圖片、視頻、音頻和互動的代碼。
2 協(xié)議體系結(jié)構(gòu)
協(xié)議(Protocol)是定義了數(shù)據(jù)如何在計算機內(nèi)和之間進行交換的規(guī)則的系統(tǒng)。設(shè)備之間通信要求設(shè)備接受正在交換的數(shù)據(jù)的格式。定義格式的一組規(guī)則稱之為協(xié)議。
OSI體系結(jié)構(gòu)順口溜:物聯(lián)網(wǎng)叔會試用
物理層:主要任務(wù)是在物理媒體上實現(xiàn)比特流的透明傳輸。主要解決二進制數(shù)據(jù)到信號之間的互轉(zhuǎn)問題。
- 功能:定義接口特性、傳輸模式(單工/半雙工/雙工)、傳輸速率,實現(xiàn)比特同步和比特編碼;
- 工作設(shè)備:集線器、中繼器。
數(shù)據(jù)鏈路層:把網(wǎng)絡(luò)層傳下來的數(shù)據(jù)報組裝成幀。作用是將數(shù)據(jù)在一個子網(wǎng)(廣播域)內(nèi)有效傳輸。
- 功能:成幀(定義幀的開始和結(jié)束)、差錯控制(幀錯+位錯)、流量控制、訪問(接入)控制(?控制對信道的訪問);
- 工作設(shè)備:網(wǎng)橋、交換機。
網(wǎng)絡(luò)層:把分組(IP數(shù)據(jù)報)從源主機傳到目的主機(點到點),為分組交換網(wǎng)上的不同主機提供通信服務(wù)。主要解決如何定位目標以及如何尋找最優(yōu)路徑的問題。
- 功能:路由選擇(最佳路徑)、流量控制、差錯控制、擁塞控制;
- 協(xié)議:IP/ARP(地址解析協(xié)議:根據(jù)IP獲取物理地址);
- 工作設(shè)備:路由器。
傳輸層:負責(zé)主機中「兩個進程」的通信,即「端到端」的通信。傳輸單位是報文段或用戶數(shù)據(jù)報;主要面向傳輸過程。
- 功能:可靠傳輸(TCP)或不可靠傳輸(UDP)、差錯控制、流量控制、復(fù)用分用
- 復(fù)用:多個應(yīng)用層進程可同時使用下面?zhèn)?/span>輸層的服務(wù);
- 分用:傳輸層把收到的信息分別交付給上面應(yīng)用層中相應(yīng)的進程。
會話層: 向表示層實體/用戶進程提供「建立鏈接」并在連接上「有序」地「傳輸」數(shù)據(jù)。這是會話,也是建立「同步(SYN)」;功能:
- 建立、管理、終止會話;
- 使用校驗點可使會話在通信失效時從校驗點/同步點繼續(xù)恢復(fù)通信,實現(xiàn)數(shù)據(jù)同步(適用于傳輸大文件)。
表示層:用于處理兩個通信系統(tǒng)中交換信息的表示方式(語義和語法)。功能:數(shù)據(jù)格式交換、加密解密、壓縮和恢復(fù)
應(yīng)用層:所有能和用戶交互產(chǎn)生網(wǎng)絡(luò)流量的程序。典型的網(wǎng)絡(luò)應(yīng)用:域名系統(tǒng)(DNS)、文件傳輸(FTP)、電子郵件(SMTP、POP3)、萬維網(wǎng)(HTTP)。面向互聯(lián)網(wǎng)中的具體應(yīng)用場景相關(guān)的消息格式。
????????發(fā)送消息時,消息從上到下進行打包,每一層會在上一層的基礎(chǔ)上加包,而接受消息時,從下到上進行解包,最終得到原始信息。
分層的意義:利用分成的思想將復(fù)雜的問題簡單化。
3 TCP 和 UDP
傳輸控制協(xié)議(TCP,Transmission Control Protocol)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。TCP 會校驗包的交付。TCP 確保字節(jié)流在接收時維持它們的發(fā)送順序。TCP 使用三次握手來建立連接和四次握手來中斷連接。
用戶數(shù)據(jù)報協(xié)議(UDP,User Datagram Protocol,又稱用戶數(shù)據(jù)包協(xié)議)是一種簡單的面向數(shù)據(jù)包的無連接的傳輸層通信協(xié)議。用于在傳輸速度和效率比安全性和可靠性更重要的場合下發(fā)送數(shù)據(jù)。UDP 使用校驗和保證數(shù)據(jù)完整性,使用端口號以區(qū)分數(shù)據(jù)發(fā)送方和接收方中不同的應(yīng)用程序。它無需握手會話,即將不可靠的底層網(wǎng)絡(luò)直接暴露給了用戶的應(yīng)用程序:不保證消息交付、不保證交付順序也不保證消息不重復(fù)。
UDP 的協(xié)議棧避免了處理差錯和糾錯的開銷。對時間敏感的應(yīng)用程序通常使用 UDP,因為丟棄數(shù)據(jù)包比等待數(shù)據(jù)包重傳(可能不是實時操作系統(tǒng)可接受的選項)更可取。
3.1 TCP和UDP的異同
(兩者的異同即定義,因此直接列出異同)同為傳輸層協(xié)議;異:
- TCP面向連接(可靠),UDP無連接(不可靠)
- TCP面向字節(jié)流,UDP面向數(shù)據(jù)報
- TCP支持1對1,UDP支持1對多、多對一、多對多
- TCP首部開銷大(20字節(jié)),UDP首部開銷?。?字節(jié))
- TCP使用流量和擁塞控制,UDP不使用。
- TCP可靠傳輸應(yīng)用(文件傳輸、遠程登錄),UDP實時應(yīng)用(IP電話,視頻會議,直播)’
????????當(dāng)數(shù)據(jù)傳輸?shù)男阅鼙仨氉屛挥跀?shù)據(jù)傳輸?shù)耐暾?、可控制性和可靠性時,TCP是更好的選擇。當(dāng)強調(diào)傳輸性能而不是傳輸?shù)耐暾詴r,UDP是更好的選擇。
3.2 TCP三次握手
第一次握手:客戶端進行連接請求——發(fā)送SYN= j包(SYN表示連接請求),進入SYN_SEND狀態(tài),等待服務(wù)端確認(服務(wù)端確認:自己接收正常,對方發(fā)送正常)
第二次握手:服務(wù)端同意連接請求,返回SYN-ACK包,SYN(等于j表示是確認了該客戶端的連接請求) 、 ACK =1 (等于1表示有效ACK包,用于驗證服務(wù)端到客戶端通信是否正常)、 seq = y(服務(wù)端起始序列號) 、ack = x+1(確認號,期望收到的下一個數(shù)據(jù)的開頭),進入SYN-RCVD狀態(tài),等待客戶端確認(客戶端確認:自己發(fā)送接收正常,對方發(fā)送接收正常)
第三次握手:客戶端收到確認包,發(fā)送ACK包,ACK=1,seq = x+1, ack = y + 1,發(fā)送完畢即雙方進入ESTABLISHED 狀態(tài)(服務(wù)端確認:自己發(fā)送正常,對方接收正常)
三次握手的目的就是雙方確認自己與對方發(fā)送和接收是正常。
3.3 TCP四次揮手
第一次揮手:客戶端發(fā)送一個斷開連接的 FIN 報文:FIN=1(表示斷開連接)、seq=u,主動關(guān)閉連接,進入FIN-WAIT1狀態(tài),等待服務(wù)端確認。
第二次揮手:服務(wù)端收到FIN報文,返回ACK報文:ACK = 1、ack= u + 1,seq = v,服務(wù)端進入CLOSE_WAIT?狀態(tài),此時客戶端到服務(wù)端的連接釋放。而客戶端收到這個確認報文后進入FIN_WAIT2(終止等待2)狀態(tài)(等待服務(wù)端的連接釋放報文)
第三次揮手:?服務(wù)端發(fā)送一個斷開連接的 FIN 報文:FIN=1(表示斷開連接)、ACK=1、seq=w、ack=u+1,主動關(guān)閉連接,進入LAST-ACK狀態(tài),等待客戶端的確認。
第四次揮手:客戶端收到服務(wù)端的FIN 報文后,返回確認報文段(ACK=1,seq=u+1,ack=w+1),客戶端進入TIME_WAIT(時間等待)狀態(tài)。等待2MSL時間后客戶端進入CLOSE狀態(tài)(1.ACK有可能丟失,從而導(dǎo)致處在LAST-ACK狀態(tài)的服務(wù)器收不到對FIN 的確認報文。服務(wù)器會超時重傳這個FIN??2.使本連接持續(xù)的時間內(nèi)所產(chǎn)生的所有報文段都從網(wǎng)絡(luò)中消失)。
四次揮手的原因:服務(wù)端收到FIN報文時,很可能仍然有數(shù)據(jù)發(fā)送,因此服務(wù)端返回的確認客戶端FIN報文的ACK報文需要和服務(wù)端斷開連接的FIN報文分開發(fā)送。
3.4 TCP的可靠傳輸
流量控制:通過滑動窗口限制發(fā)送方的發(fā)送速率來保證接收方來得及接收實現(xiàn)流量控制,其中滑動窗口的大小由接收方返回的確認報文中的窗口大小字段來決定。
差錯控制:檢驗報文段首部和數(shù)據(jù)的檢驗和,把檢驗和有差錯的報文進行丟棄和不確認。
超時重傳:發(fā)送方超過定時器時間未收到確認即進行重傳
重復(fù)丟棄:接收端對重復(fù)報文段只確認一次,其余丟棄
ARQ(自動重傳請求):1. 停止等待ARQ 2. 連續(xù)ARQ;
區(qū)別在于前者發(fā)送方每發(fā)送一個報文段后即等待確認(確認報文段丟失:丟棄發(fā)送方發(fā)送的重復(fù)消息,不向上層交付并再向發(fā)送方發(fā)送確認消息。確認報文段遲到?:發(fā)送方收到重復(fù)的確認和接收方收到重復(fù)的消息都直接丟棄。),而后者發(fā)送方連續(xù)發(fā)送,接收方進行累計確認。
擁塞控制:采用慢開始(初始值為1,指數(shù)段)、擁塞避免(線性段)、快重傳和快恢復(fù)策略,具體過程:慢開始到初始門限值ssthresh后進入擁塞避免端直到擁塞(標志:三個重復(fù) ACK),先優(yōu)先快重傳丟失的報文段,然后更新ssthresh門限值為擁塞的一半,后續(xù)報文段進入快恢復(fù)(初始值為新ssthresh門限值)階段繼續(xù)擁塞避免(線性段)。
4 DNS
DNS(Domain Name System)域名系統(tǒng),是一個層次化、分散化的互聯(lián)網(wǎng)連接資源命名系統(tǒng)。DNS 維護著一個域名列表以及與之相關(guān)聯(lián)的資源(即?IP 地址)。
域名是在互聯(lián)網(wǎng)的網(wǎng)站的地址。域名被用于URL識別一個服務(wù)器屬于哪個特定的網(wǎng)站。域名包含由句號點(”.“)分隔的標簽(名稱)的分級序列并以TLD作為結(jié)尾,不同于中文書寫順序,它需要從右到左閱讀。二級域?(SLD,Secondary Level Domain)是剛好位于 TLD 前面的標簽。一個域名可以有多個標簽(或者說是組件、名稱),沒有強制規(guī)定必須要 3 個標簽來構(gòu)成域名。
TLD(頂級域)是互聯(lián)網(wǎng)分層 DNS(域名系統(tǒng))中最通用的域,且是作為域名的最后一個組成部分。頂級域既可以包含拉丁字母,也可以包含特殊字符。頂級域名最長可以達到 63 個字符,為了使用方便,大多數(shù)頂級域都是兩到三個字符。ICANN(互聯(lián)網(wǎng)名稱與數(shù)字地址分配機構(gòu))指定組織來管理每個 TLD。根據(jù)管理組織的嚴格程度,TLD 通??梢宰鳛榫W(wǎng)站目的、所有權(quán)或國籍的線索。IANA 區(qū)分了以下幾組頂級域:
- 國家/地區(qū)代碼頂級域?(ccTLD,country-code top-level domains):為國家或地區(qū)建立的二字符域。
- 國際化國家代碼頂級域?(IDN c??cTLD):非拉丁字符集(例如阿拉伯語或中文)的 ccTLD。
- 通用頂級域 (gTLD):具有三個或更多字符的頂級域。
- 非贊助頂級域:直接根據(jù) ICANN 流程為全球互聯(lián)網(wǎng)社區(qū)制定的政策運營的域,例如“com”和“edu”。
- 贊助頂級域:由私人組織提議和贊助,這些組織根據(jù)社區(qū)主題概念決定申請人是否有資格使用 TLD。
- 基礎(chǔ)設(shè)施頂級域:該組僅由一個域組成,即地址和路由參數(shù)區(qū)域 (arpa),?尤其是用于反向 DNS 查找。
DNS 最突出的功能是將易于記憶的域名翻譯成為數(shù)字化的IP地址;從域名到 IP 地址的映射過程被稱為DNS 查詢(DNS lookup)。而DNS 反向查詢(rDNS)用來找到與 IP 地址對應(yīng)的域名。
DNS 數(shù)據(jù)庫存儲在全球每個 DNS 服務(wù)器上,所有這些服務(wù)器都源于 (refer to) 幾個被稱為“權(quán)威名稱服務(wù)器”或“頂級 DNS 服務(wù)器”。只要您的注冊商創(chuàng)建或更新給定域名的任何信息,信息就必須在每個 DNS 數(shù)據(jù)庫中刷新。知道給定域名的每個 DNS 服務(wù)器都會存儲一段時間的信息,然后再次刷新(DNS 服務(wù)器再次查詢權(quán)威服務(wù)器)。因此,知道此域名的 DNS 服務(wù)器需要些時間才能獲取最新信息,這個時間一般被稱為傳播時間。然而這個術(shù)語是不精準的,因為更新本身沒有傳播 (top → down)。被計算機(down) 查詢的 DNS 服務(wù)器只在它需要的時候才從權(quán)威服務(wù)器 (top) 中獲取信息。
選擇www 或非 www URL 作為其中之一作為規(guī)范域名,保證所有絕對鏈接都應(yīng)使用它。同時,HTTP 允許使用兩種技術(shù),當(dāng)無法預(yù)測用戶會在瀏覽器地址欄使用哪個 URL時,以便讓用戶或搜索引擎清楚地知道哪個域是規(guī)范域,同時仍然允許非規(guī)范域正常工作并提供預(yù)期的頁面:
- 在需要對接收 HTTP 請求的服務(wù)器進行配置,使其對任何指向非規(guī)范域的請求作出帶指向規(guī)范域的HTTP Location首部的 HTTP 301 響應(yīng)。這將把試圖訪問非規(guī)范 URL 的瀏覽器重定向到其規(guī)范等效域。
- 為兩個域提供相同的內(nèi)容,向頁面添加<link rel="canonical"?href="">元素指示頁面的規(guī)范地址。這對用戶沒有影響,但會告訴搜索引擎爬蟲頁面的實際位置。這樣,搜索引擎就不會多次索引同一個頁面,避免將其視為重復(fù)內(nèi)容或垃圾郵件甚至將頁面從搜索引擎結(jié)果頁面中刪除或降級。與前一種情況不同,瀏覽器歷史記錄會將非 www 和 www URL 視為獨立條目。
DNS使用TCP和UDP的情況:
- 使用TCP:輔域名服務(wù)器會定時(一般3小時)向主域名服務(wù)器查詢數(shù)據(jù)是否有變動。如有變動,則會執(zhí)行一次區(qū)域傳送,進行數(shù)據(jù)同步。區(qū)域傳送使用TCP是因為傳送的數(shù)據(jù)量比一個請求/應(yīng)答的數(shù)據(jù)量要多得多,而且需要保證數(shù)據(jù)的準確性。
- 使用UDP:目的是避免使用 TCP 協(xié)議造成的連接時延。因為得到一個域名的 IP 地址,往往會向多個域名服務(wù)器查詢,如果使用 TCP 協(xié)議,那么每次請求都會存在連接時延,會使得?DNS 服務(wù)變得很慢,導(dǎo)致網(wǎng)頁等待時間過長。
5 URI、URL、URN
URI(統(tǒng)一資源標識符,Uniform Resource Identifier)是一個用于標識(區(qū)分)互聯(lián)網(wǎng)資源的字符串,允許用戶對網(wǎng)絡(luò)中的資源通過特定的協(xié)議進行交互操作。URI只支持ASCII 碼,對于非ASCII碼和界定符(比如空格)編碼轉(zhuǎn)為“%十六進制字節(jié)值”
? ? ? ? ? ? ? ???
URI示例
scheme(或protocol)是方案(或協(xié)議),常見協(xié)議有:
- data:Data URIs;即前綴為 data: 協(xié)議的 URL,其允許內(nèi)容創(chuàng)建者向文檔中嵌入小文件。 現(xiàn)代瀏覽器將 Data URL 視作唯一的不透明來源,是不可以用于導(dǎo)航的 URL。由四個部分組成:data:[<mediatype>][;base64],<data>。使用場景:1. CSS url();2. img元素src;3. link元素href。Opera 11 瀏覽器限制 URL 最長為 65535 個字符,這意味著 data URL 最長為 65529 個字符(如果你使用純文本 data:,而不是指定一個 MIME 類型的話,那么 65529 字符長度是編碼后的長度,而不是源文件)。Firefox 97 及更高版本支持高達 32MB 的數(shù)據(jù) URL(在 97 之前,限制接近 256MB)。Chromium 支持到超過 512MB 的 URL,Webkit(Safari)支持到超過 2048MB 的 URL。
- data::前綴。
- [<mediatype>]:可選,指示數(shù)據(jù)類型的MIME類型字符串。如果被省略,則默認值為 text/plain;charset=US-ASCII。
- [;base64]:如果非文本則為可選的base64標記。在 Windows 中,PowerShell 的 Convert.ToBase64String 可用于執(zhí)行 Base64 編碼:
- [convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("hello"))
- <data>:數(shù)據(jù)本身。如果數(shù)據(jù)包含RFC 3986中定義為保留字符的字符或包含空格符、換行符或者其他非打印字符,這些字符必須進行百分號編碼(又名“URL 編碼”)。如果數(shù)據(jù)是文本類型,可以直接將文本嵌入(根據(jù)文檔類型,使用合適的實體字符或轉(zhuǎn)義字符)。否則,可以指定base64標記來嵌入 base64 編碼的二進制數(shù)據(jù)。data字段是沒有結(jié)束標記的,所以嘗試在data URL后面添加查詢字符串(特定于頁面的參數(shù),語法為 <url>?parameter-data)會導(dǎo)致查詢字符串也一并被當(dāng)作data字段。
- file:指定主機上文件的名稱;
- ftp:文件傳輸協(xié)議;
- http、https:超文本傳輸協(xié)議、安全的超文本傳輸協(xié)議;
- mailto:電子郵件地址;
- ssh:安全shell;
- tel:電話
- urn:統(tǒng)一資源名稱;
- view-source:資源的源代碼;
- ws、wss:WebSocket連接。
#fragment(或Anchor)是資源本身的某一部分的一個錨點。#?號后面的部分,也稱為片段標識符,永遠不會與請求一起發(fā)送到服務(wù)器。
URI可以分為URL(統(tǒng)一資源定位符,Uniform Resource Locator)和URN(永久統(tǒng)一資源定位符,Uniform Resource Name),URN通過特定命名空間中的唯一名稱來標識資源。URL示例:
6 絕對路徑、相對路徑
當(dāng)前資源是指資源當(dāng)前所處的html文件或CSS文件
目標資源是在當(dāng)前資源中取訪問的一個其他資源。
????????絕對路徑則是與當(dāng)前資源的path無關(guān)。比如當(dāng)前資源是http://b.com/some/something?id=1,其中path是some/something?id=1h1:
- http://b.com/list 即http://b.com/list
- 省略協(xié)議://b.com/list 即協(xié)議名沿用當(dāng)前資源的協(xié)議,即http://b.com/list
- 省略協(xié)議,域名,端口:/list 省略即 http://b.com/list
- / 即 http://b.com/
????????絕對路徑的使用場景:
- 站外資源只能使用絕對路徑:iconfont的css、站外圖片、站外鏈接等;(站外資源是指非當(dāng)前網(wǎng)站的資源,站內(nèi)資源指的是當(dāng)前網(wǎng)站的資源)。
- 當(dāng)前資源和目標資源的相對位置不穩(wěn)定或不明確,且目標資源的path是穩(wěn)定的,推薦絕對路徑:用戶上傳的圖片地址、多地址的頁面引入同一目標資源等。
????????相對路徑則是相對于當(dāng)前資源的path的路徑。比如當(dāng)前資源是http://b.com/some/something?id=1#h1,path為域名后面的部分,path目錄為最后一個斜杠之前的部分,因此:
- ./list 即http://b.com/some/list
- ../list 即http://b.com/list
- list 即 http://b.com/some/list
- ?id=2 即 http://b.com/some/something?id=2
- #h2 即 http://b.com/some/something?id=1#h2
????????相對路徑的使用場景:當(dāng)前資源與目標資源的相對位置穩(wěn)定且明確,開發(fā)中大部分場景均適用。
7 媒體類型(MIME)
媒體類型(Multipurpose Internet Mail Extensions 或 MIME 類型)是一種標準,用來表示文檔、文件或字節(jié)流的性質(zhì)和格式。其語法結(jié)構(gòu)為type/subtype,由類型type與子類型subtype兩個字符串中間用'/'分隔而組成,不允許空格存在。type 表示可以被分多個子類的獨立類型或Multipart類型,subtype 表示細分后的每個類型。
獨立類型:
- text:表明文件是普通文本,理論上是人類可讀,比如text/plain, text/html, text/css, text/javascript。對于 text 文件類型若沒有特定的 subtype,就使用 text/plain,文本文件默認值。即使它意味著未知的文本文件,但瀏覽器認為是可以直接展示的。text/plain并不是意味著某種文本數(shù)據(jù)。如果瀏覽器想要一個文本文件的明確類型,瀏覽器并不會考慮他們是否匹配。比如說,如果通過一個表明是下載 CSS 文件的<link>鏈接下載了一個 text/plain 文件。如果提供的信息是 text/plain,瀏覽器并不會認出這是有效的 CSS 文件。CSS 類型需要使用 text/css。
- image:表明是某種圖像。不包括視頻,但是動態(tài)圖(比如動態(tài) gif)也使用 image 類型,比如image/gif,image/png、image/jpeg、image/bmp、image/webp、image/x-icon、image/vnd.microsoft.icon。
- audio:表明是某種音頻文件,比如audio/midi、audio/mpeg、audio/webm、audio/ogg、audio/wav。
- video:表明是某種視頻文件,比如video/webm, video/ogg。
- application:表明是某種二進制數(shù)據(jù),比如application/octet-stream, application/pkcs12, application/vnd.mspowerpoint, application/xhtml+xml, application/xml, application/pdf。二進制文件沒有特定或已知的 subtype,即使用application/octet-stream,這是應(yīng)用程序文件的默認值。意思是未知的應(yīng)用程序文件,瀏覽器一般不會自動執(zhí)行或詢問執(zhí)行。瀏覽器會像對待 設(shè)置了HTTP 頭Content-Disposition 值為 attachment 的文件一樣來對待這類文件。
Multipart 類型:表示細分領(lǐng)域的文件類型的種類,經(jīng)常對應(yīng)不同的 MIME 類型。這是復(fù)合文件的一種表現(xiàn)方式。文章來源:http://www.zghlxwxcb.cn/news/detail-622677.html
瀏覽器通常使用 MIME 類型(而不是文件擴展名)來確定如何處理 URL,因此 Web 服務(wù)器在響應(yīng)頭中添加正確的 MIME 類型非常重要。如果配置不正確,瀏覽器可能會曲解文件內(nèi)容,網(wǎng)站將無法正常工作,并且下載的文件也會被錯誤處理。Web上重要的?MIME 類型:文章來源地址http://www.zghlxwxcb.cn/news/detail-622677.html
- text/plain:文本(通常為 ASCII 或 ISO 8859- n)(.txt)。
- text/css: 層疊樣式表(CSS)(.css)。在網(wǎng)頁中要被解析為 CSS 的任何 CSS 文件必須指定 MIME 為text/css。通常,服務(wù)器不識別以.css 為后綴的文件的 MIME 類型,而是將其以 MIME 為text/plain 或 application/octet-stream 來發(fā)送給瀏覽器:在這種情況下,大多數(shù)瀏覽器不識別其為 CSS 文件,直接忽略掉。特別要注意為 CSS 文件提供正確的 MIME 類型。
- text/html:超文本標記語言(HTML)(.htm或.html)。所有的 HTML 內(nèi)容都應(yīng)該使用這種類型。XHTML 的其他 MIME 類型(如application/xml+html)現(xiàn)在基本不再使用。但如果打算使用 XML 的嚴格解析規(guī)則,使用 <![CDATA[...]]> 或非 HTML、非 SVG 或非 MathML XML 命名空間中的元素,則仍需要使用 application/xml 或 application/xhtml+xml,因為 text/html 的解析語義與 application/xml 的解析語義存在微妙的不兼容。
- text/calendar:日歷格式(.ics)。
- text/javascript:JavaScript(.js)。據(jù) HTML 標準,應(yīng)該總是使用 MIME 類型 text/javascript 服務(wù) JavaScript 文件。其他值不被認為有效,使用那些值可能會導(dǎo)致腳本不被載入或運行。即便任何給定的 user agent 可能支持這些中的任意或所有,你只應(yīng)該使用 text/javascript。它是唯一確保能在目前和以后正常工作的 MIME 類型。
- text/javascript:JavaScript 模塊(.mjs)。
- text/csv:逗號分隔值(CSV)(.csv) 。
- image/gif:圖形交換格式(GIF)(.gif)。
- image/vnd.microsoft.icon:圖標格式(.ico)。
- image/bmp:Windows OS/2位圖圖形(.bmp)。
- image/jpeg:JPEG 圖像(.jpeg .jpg)。
- image/png:便攜式網(wǎng)絡(luò)圖形(.png)。
- image/tiff:標記圖像文件格式(TIFF)(.tif .tiff)。
- image/svg+xml:可縮放矢量圖形(SVG)(.svg)。
- image/webp: 網(wǎng)頁圖像(.webp)。
- font/otf:OpenType 字體(.otf)。
- font/ttf:TrueType字體(.ttf)。
- font/woff:Web 開放字體格式 (WOFF)(.woff)。
- font/woff2:Web 開放字體格式 (WOFF)(.woff2)。
- audio/midi 或audio/x-midi:樂器數(shù)字接口 (MIDI)(.mid或.midi)。
- audio/ogg:奧格音頻(.oga)。采用 OGG 多媒體文件格式的音頻文件。Vorbis 是這個多媒體文件格式最常用的音頻解碼器。
- audio/mpeg:MP3音頻(.mp3)。
- audio/wav:波形音頻格式(.wav )。音頻流媒體文件。一般支持 PCM 音頻編碼
- audio/webm: 網(wǎng)絡(luò)管理音頻(.weba)。WebM 音頻文件格式。Vorbis 和 Opus 是其最常用的解碼器。
- audio/aac:AAC音頻(.aac)。
- video/x-msvideo:AVI音頻視頻交錯(.avi)。
- video/ogg:奧格視頻(.ogv)。采用 OGG 多媒體文件格式的音視頻文件。常用的視頻解碼器是 Theora;音頻解碼器為 Vorbis。
- video/mpeg:MPEG視頻(.mpeg)。
- video/webm: 網(wǎng)絡(luò)視頻(.webm)。采用 WebM 視頻文件格式的音視頻文件。VP8 和 VP9 是其最常用的視頻解碼器。Vorbis 和 Opus 是其最常用的音頻解碼器。
- video/3gpp audio/3gpp(若不含視頻):3GPP音頻/視頻容器(.3gp)。
- video/3gpp2 audio/3gpp2(若不含視頻):3GPP2音頻/視頻容器(.3g2)。
- application/x-abiword:AbiWor文檔(.abw)。
- application/x-freearc:存檔文檔,嵌入多個文件(.arc)。
- application/vnd.amazon.ebook:亞馬遜Kindle電子書格式(.azw)。
- application/octet-stream:任何類型的二進制數(shù)據(jù)(.bin)。
- application/x-bzip:BZip 存檔(.bz)。
- application/x-bzip2:BZip2存檔(.bz2)。
- application/x-csh:C-Shell腳本(.csh)。
- application/java-archive:Java存檔 (JAR)(.jar)。
- application/msword:微軟Word(.doc)。
- application/vnd.openxmlformats-officedocument.wordprocessingml.document:微軟Word (OpenXML)(.docx)。
- application/vnd.ms-fontobject:MS 嵌入式OpenType字體(.eot)。
- application/epub+zip:電子出版物(EPUB)(.epub)。
- application/json:JSON格式(.json)。
- application/ld+json:JSON-LD 格式(.jsonld)。
- application/vnd.apple.installer+xml:蘋果安裝包(.mpkg)。
- application/vnd.oasis.opendocument.presentation:OpenDocument演示文檔(.odp)。
- application/vnd.oasis.opendocument.spreadsheet:OpenDocument電子表格(.ods)。
- application/vnd.oasis.opendocument.text:OpenDocument文本文檔(.odt)。
- application/ogg:奧格(.ogx)。采用 OGG 多媒體文件格式的音視頻文件。常用的視頻解碼器是 Theora;音頻解碼器為 Vorbis。
- application/pdf:Adobe便攜式文檔格式(PDF)(.pdf)。
- application/vnd.ms-powerpoint:微軟PowerPoint(.ppt)。
- application/vnd.openxmlformats-officedocument.presentationml.presentation:微軟PowerPoint (OpenXML)(.pptx)。
- application/x-rar-compressed:RAR存檔(.rar)。
- application/rtf:富文本格式(RTF)(.rtf)。
- application/x-sh:Bourne shell腳本(.sh)。
- application/x-shockwave-flash:小型網(wǎng)頁格式(SWF) 或 Adobe Flash 文檔(.swf)。
- application/x-tar:磁帶存檔(TAR)(.tar)。
- application/vnd.visio:微軟Visio (.vsd)。
- application/xhtml+xml: XHTML(.xhtml)。
- application/vnd.ms-excel:微軟Excel(.xls)。
- application/vnd.openxmlformats-officedocument.spreadsheetml.sheet:Microsoft Excel (OpenXML)(.xlsx)。
- application/xml:XML代碼對普通用戶來說不可讀 (RFC 3023, section 3) text/xml 代碼對普通用戶來說可讀 (RFC 3023, section 3)(.xml)。
- application/vnd.mozilla.xul+xml:選擇(.xul)。
- application/zip:ZIP存檔(.zip)。
- application/x-7z-compressed:7-zip存檔(.7z)。
- multipart/form-data:將完整的 HTML 表單的值從瀏覽器發(fā)送到服務(wù)器時,可以使用 multipart/form-data 類型。作為多部分文檔格式,它由不同部分組成,由邊界(以雙破折號”--”開頭的字符串)分隔。每個部分都是其自己的實體,具有自己的 HTTP 標頭、Content-Disposition 和用于文件上傳字段的 Content-Type。
- multipart/byteranges:用于把部分的響應(yīng)報文發(fā)送回瀏覽器。當(dāng)發(fā)送狀態(tài)碼206 Partial Content 時,這個 MIME 類型用于指出這個文件由若干部分組成,每個部分對應(yīng)一個請求的范圍。
前端需要知道的計算機網(wǎng)絡(luò)知識:HTTP
到了這里,關(guān)于前端需要知道的計算機網(wǎng)絡(luò)知識的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!