絕大多數(shù)web應(yīng)用都是簡(jiǎn)歷在HTTP協(xié)議的基礎(chǔ)上的,所以學(xué)習(xí)HTTP有助于我們更好的進(jìn)行網(wǎng)絡(luò)開發(fā)。
IP網(wǎng)絡(luò)中每臺(tái)電腦都有一個(gè)唯一的IP地址。IP地址是一個(gè)邏輯地址。英特網(wǎng)中IP地址具有全球唯一性。32位,4個(gè)字節(jié),通常用十進(jìn)制數(shù)表示,如:192.168.1.16。
為了進(jìn)行網(wǎng)絡(luò)中的數(shù)據(jù)交換,而建立的規(guī)則,標(biāo)準(zhǔn)或約定。不同層有各自不同的協(xié)議。
分層方法,把網(wǎng)絡(luò)互聯(lián)問(wèn)題劃分為若干個(gè)較小的,單一的問(wèn)題,在不同層上予以解決。
OSI將網(wǎng)絡(luò)的不同功能劃分為7層。
開發(fā)主要跟應(yīng)用層打交到。
對(duì)等層實(shí)體之間虛擬通信。下層向上層提供服務(wù),實(shí)際通信在最底層完成。
應(yīng)用層:遠(yuǎn)程登錄協(xié)議(telnet)、文件傳輸協(xié)議(FTP)、超文本傳輸協(xié)議(HTTP)、域名服務(wù)(DNS)、簡(jiǎn)單郵件傳輸協(xié)議(SMTP)、郵局協(xié)議(POP3)。
傳輸層:傳輸控制協(xié)議(TCP)、用戶數(shù)據(jù)報(bào)協(xié)議(UDP)。
面向連接的保證可靠傳輸?shù)膮f(xié)議。一旦連接建立起來(lái),雙方的socket就可以按統(tǒng)一的格式,傳送大量的數(shù)據(jù)。
UDP是一個(gè)不可靠的協(xié)議,發(fā)送方發(fā)送的數(shù)據(jù)報(bào),并不是按相同的次序答接對(duì)方。每次傳送數(shù)據(jù)包有大小限制,每個(gè)包在64K之間。
l 可靠傳輸需要付出代價(jià),TCP傳輸效率不如UDP高。
l 許多應(yīng)用中并不需要使用可靠的TCP傳輸方式,比如網(wǎng)絡(luò)視頻只用保證連貫性就可以了。這種情況顯然UDP更合理。
互聯(lián)網(wǎng)傳輸?shù)臄?shù)據(jù)都包括IP和端口號(hào)。IP地址用來(lái)標(biāo)識(shí)網(wǎng)絡(luò)上的計(jì)算機(jī),端口用來(lái)指明該IP地址計(jì)算機(jī)上的應(yīng)用程序。端口使用16位的數(shù)字表示,范圍是0~65535,1024以下的端口號(hào)保留給預(yù)定義服務(wù)。HTTP使用80端口。
l 一臺(tái)計(jì)算機(jī)發(fā)送數(shù)據(jù)到另一臺(tái)計(jì)算機(jī),數(shù)據(jù)必須打包,我們管打包過(guò)程叫做封裝。
l 封裝就是在數(shù)據(jù)前面加上特定的協(xié)議頭。
l HTTP是超文本傳輸協(xié)議,目前的版本是1.1。
l HTTP是應(yīng)用層協(xié)議,瀏覽器和服務(wù)器之間通過(guò)HTTP在INTERNET上進(jìn)行數(shù)據(jù)發(fā)送和接受。
l HTTP是一個(gè)基于請(qǐng)求/響應(yīng)模式的,無(wú)狀態(tài)的協(xié)議。
1. 客戶端發(fā)起連接
2. 客戶端發(fā)送請(qǐng)求
3. 服務(wù)器響應(yīng)請(qǐng)求
4. 服務(wù)器關(guān)閉連接
開銷大,造成INTERNET堵塞。
持續(xù)連接,發(fā)送請(qǐng)求可以在此得到回應(yīng),一直在一個(gè)連接里面??蛻舳税l(fā)送多個(gè)請(qǐng)求,不用對(duì)每次請(qǐng)求都重新建立連接。
1. 客戶端建立連接
2. 客戶端發(fā)出第一次請(qǐng)求
3. 客戶端發(fā)出第N次請(qǐng)求
4. 服務(wù)端回送第一次請(qǐng)求
5. 服務(wù)端回送第N次請(qǐng)求
6. 客戶端發(fā)出關(guān)閉連接請(qǐng)求
7. 服務(wù)端關(guān)閉連接
l URI純粹的符號(hào)結(jié)構(gòu),用于指定構(gòu)成web資源的字符串的各個(gè)不同部分。
l URL是一種特殊類型的URI,它包含了用于查找某個(gè)資源的足夠的信息。
l 客戶端通過(guò)發(fā)送HTTP請(qǐng)求向服務(wù)器請(qǐng)求對(duì)資源的訪問(wèn)。
l HTTP請(qǐng)求由三部分組成,分別是:請(qǐng)求行,信息報(bào)頭,請(qǐng)求正文。
l 以一個(gè)方法符號(hào)開頭,后面跟著請(qǐng)求URI和協(xié)議的版本,以回車換行結(jié)尾。
l 格式:Method Request-URI HTTP-version
① Method 表示請(qǐng)求方法,常用的有get和post。
② Request-URI 是一個(gè)統(tǒng)一資源標(biāo)識(shí)符。標(biāo)識(shí)了要請(qǐng)求的資源。
③ HTTP-version 表示請(qǐng)求的HTTP協(xié)議的版本。
l 如:GET /test.html HTTP/1.1
l GET方法用于獲取由Request-URI所標(biāo)識(shí)的資源的信息。
l 我們通過(guò)瀏覽器直接輸入網(wǎng)址的方式去訪問(wèn)網(wǎng)頁(yè),就是GET方法。
l POST方法用于向服務(wù)器發(fā)送請(qǐng)求,要求服務(wù)器接受附在請(qǐng)求后面的數(shù)據(jù)。POST方法在表單提交時(shí)用的最多。
l HEAD方法與GET方法幾乎是一樣的,他們的區(qū)別在于HEAD方法只是請(qǐng)求消息報(bào)頭,而不是完整的內(nèi)容。
l GET和POST的區(qū)別:處理的方式不一樣,處理的方法不一樣,地址欄呈現(xiàn)的結(jié)果不一樣。
l Get:把沒(méi)有實(shí)體內(nèi)容,會(huì)把提交的數(shù)據(jù)加到url地址后面。點(diǎn)擊超鏈接敲url地址都是get
l Post:如果我的提交的數(shù)據(jù)不改變服務(wù)器端的狀態(tài)就用get(get會(huì)緩存)。提交的數(shù)據(jù)改變服務(wù)器端的狀態(tài)就用post
l 在接收和解釋請(qǐng)求消息后,服務(wù)器會(huì)返回一個(gè)HTTP響應(yīng)消息。
l 與HTTP請(qǐng)求類似,HTTP響應(yīng)也是由三個(gè)部分組成,分別是:狀態(tài)行,消息報(bào)頭,響應(yīng)正文。
l 由協(xié)議版本,數(shù)字形式的狀態(tài)代碼,相應(yīng)的狀態(tài)描述組成,各個(gè)元素中間以空格分隔,除了結(jié)尾回車換行,不允許出現(xiàn)回車換行字符。
l 如:HTTP/1.1 200 OK
對(duì)于請(qǐng)求消息,開始行就是請(qǐng)求行,對(duì)于響應(yīng)消息,開始行就是狀態(tài)行。
聯(lián)系客服