计算机网络协议(一)
Http協(xié)議狀態(tài)碼
1**:信息類狀態(tài)碼,表示接受的請(qǐng)求正在處理
臨時(shí)響應(yīng)并需要請(qǐng)求者繼續(xù)執(zhí)行操作的狀態(tài)代碼
2**:成功狀態(tài)碼,表示請(qǐng)求正常處理完畢
3**:重定向,表示要完成請(qǐng)求,需要進(jìn)一步操作。
4**:客戶端錯(cuò)誤,請(qǐng)求可能出錯(cuò),妨礙了服務(wù)器的處理
5**:服務(wù)器端本身錯(cuò)誤,
常見(jiàn)狀態(tài)碼:
200:請(qǐng)求被成功處理,請(qǐng)求所希望的響應(yīng)頭或者數(shù)據(jù)體將隨此響應(yīng)返回。
204:服務(wù)器成功處理請(qǐng)求,但不返回任何實(shí)體內(nèi)容
206:服務(wù)器已經(jīng)成功處理部分get請(qǐng)求,類似于迅雷講一個(gè)大文件分解為多個(gè)下載段同時(shí)下載
?
301: 永久性重定向,可緩存
302:臨時(shí)性重定向,可緩存
303: 對(duì)應(yīng)當(dāng)前請(qǐng)求的響應(yīng)可以在另一個(gè) URI 上被找到,而且客戶端應(yīng)當(dāng)采用 GET 的方式訪問(wèn)那個(gè)資源。這個(gè)方法的存在主要是為了允許由腳本激活的POST請(qǐng)求輸出重定向到一個(gè)新的資源。這個(gè)新的 URI 不是原始資源的替代引用。同時(shí),303響應(yīng)禁止被緩存。當(dāng)然,第二個(gè)請(qǐng)求(重定向)可能被緩存。 新的 URI 應(yīng)當(dāng)在響應(yīng)的 Location 域中返回。除非這是一個(gè) HEAD 請(qǐng)求,否則響應(yīng)的實(shí)體中應(yīng)當(dāng)包含指向新的 URI 的超鏈接及簡(jiǎn)短說(shuō)明。 注意:許多 HTTP/1.1 版以前的瀏覽器不能正確理解303狀態(tài)。如果需要考慮與這些瀏覽器之間的互動(dòng),302狀態(tài)碼應(yīng)該可以勝任,因?yàn)榇蠖鄶?shù)的瀏覽器處理302響應(yīng)時(shí)的方式恰恰就是上述規(guī)范要求客戶端處理303響應(yīng)時(shí)應(yīng)當(dāng)做的。304: 如果客戶端發(fā)送了一個(gè)帶條件的 GET 請(qǐng)求且該請(qǐng)求已被允許,而文檔的內(nèi)容(自上次訪問(wèn)以來(lái)或者根據(jù)請(qǐng)求的條件)并沒(méi)有改變,則服務(wù)器應(yīng)當(dāng)返回這個(gè)狀態(tài)碼。304響應(yīng)禁止包含消息體,因此始終以消息頭后的第一個(gè)空行結(jié)尾。 該響應(yīng)必須包含以下的頭信息:Date,除非這個(gè)服務(wù)器沒(méi)有時(shí)鐘。假如沒(méi)有時(shí)鐘的服務(wù)器也遵守這些規(guī)則,那么代理服務(wù)器以及客戶端可以自行將 Date 字段添加到接收到的響應(yīng)頭中去(正如RFC 2068中規(guī)定的一樣),緩存機(jī)制將會(huì)正常工作。ETag 和/或 Content-Location,假如同樣的請(qǐng)求本應(yīng)返回200響應(yīng)。Expires, Cache-Control,和/或Vary,假如其值可能與之前相同變量的其他響應(yīng)對(duì)應(yīng)的值不同的話。 假如本響應(yīng)請(qǐng)求使用了強(qiáng)緩存驗(yàn)證,那么本次響應(yīng)不應(yīng)該包含其他實(shí)體頭;否則(例如,某個(gè)帶條件的 GET 請(qǐng)求使用了弱緩存驗(yàn)證),本次響應(yīng)禁止包含其他實(shí)體頭;這避免了緩存了的實(shí)體內(nèi)容和更新了的實(shí)體頭信息之間的不一致。 假如某個(gè)304響應(yīng)指明了當(dāng)前某個(gè)實(shí)體沒(méi)有緩存,那么緩存系統(tǒng)必須忽視這個(gè)響應(yīng),并且重復(fù)發(fā)送不包含限制條件的請(qǐng)求。 假如接收到一個(gè)要求更新某個(gè)緩存條目的304響應(yīng),那么緩存系統(tǒng)必須更新整個(gè)條目以反映所有在響應(yīng)中被更新的字段的值。307: 請(qǐng)求的資源現(xiàn)在臨時(shí)從不同的URI 響應(yīng)請(qǐng)求。由于這樣的重定向是臨時(shí)的,客戶端應(yīng)當(dāng)繼續(xù)向原有地址發(fā)送以后的請(qǐng)求。只有在Cache-Control或Expires中進(jìn)行了指定的情況下,這個(gè)響應(yīng)才是可緩存的。 新的臨時(shí)性的URI 應(yīng)當(dāng)在響應(yīng)的 Location 域中返回。除非這是一個(gè)HEAD 請(qǐng)求,否則響應(yīng)的實(shí)體中應(yīng)當(dāng)包含指向新的URI 的超鏈接及簡(jiǎn)短說(shuō)明。因?yàn)椴糠譃g覽器不能識(shí)別307響應(yīng),因此需要添加上述必要信息以便用戶能夠理解并向新的 URI 發(fā)出訪問(wèn)請(qǐng)求。 如果這不是一個(gè)GET 或者 HEAD 請(qǐng)求,那么瀏覽器禁止自動(dòng)進(jìn)行重定向,除非得到用戶的確認(rèn),因?yàn)檎?qǐng)求的條件可能因此發(fā)生變化。
400:1.語(yǔ)義有誤當(dāng)前請(qǐng)求無(wú)法被服務(wù)器理解。除非進(jìn)行修改,否則客戶端不應(yīng)該重復(fù)提交這個(gè)請(qǐng)求。2.參數(shù)錯(cuò)誤
401: 當(dāng)前請(qǐng)求需要用戶驗(yàn)證。該響應(yīng)必須包含一個(gè)適用于被請(qǐng)求資源的 WWW-Authenticate 信息頭用以詢問(wèn)用戶信息。客戶端可以重復(fù)提交一個(gè)包含恰當(dāng)?shù)?/span> Authorization 頭信息的請(qǐng)求。如果當(dāng)前請(qǐng)求已經(jīng)包含了 Authorization 證書(shū),那么401響應(yīng)代表著服務(wù)器驗(yàn)證已經(jīng)拒絕了那些證書(shū)。如果401響應(yīng)包含了與前一個(gè)響應(yīng)相同的身份驗(yàn)證詢問(wèn),且瀏覽器已經(jīng)至少嘗試了一次驗(yàn)證,那么瀏覽器應(yīng)當(dāng)向用戶展示響應(yīng)中包含的實(shí)體信息,因?yàn)檫@個(gè)實(shí)體信息中可能包含了相關(guān)診斷信息。
403:服務(wù)器已經(jīng)理解請(qǐng)求,但是拒絕執(zhí)行
404:請(qǐng)求失敗,請(qǐng)求所希望得到的資源未被在服務(wù)器上發(fā)現(xiàn)
500: 服務(wù)器遇到了一個(gè)未曾預(yù)料的狀況,導(dǎo)致了它無(wú)法完成對(duì)請(qǐng)求的處理。一般來(lái)說(shuō),這個(gè)問(wèn)題都會(huì)在服務(wù)器的程序碼出錯(cuò)時(shí)出現(xiàn)。
503:由于臨時(shí)的服務(wù)器維護(hù)或者過(guò)載,服務(wù)器當(dāng)前無(wú)法處理請(qǐng)求。這個(gè)狀況是臨時(shí)的,并且將在一段時(shí)間以后恢復(fù)。如果能夠預(yù)計(jì)延遲時(shí)間,那么響應(yīng)中可以包含一個(gè) Retry-After 頭用以標(biāo)明這個(gè)延遲時(shí)間。如果沒(méi)有給出這個(gè) Retry-After 信息,那么客戶端應(yīng)當(dāng)以處理500響應(yīng)的方式處理它。
注意:503狀態(tài)碼的存在并不意味著服務(wù)器在過(guò)載的時(shí)候必須使用它。某些服務(wù)器只不過(guò)是希望拒絕客戶端的連接
?
七層模型
物理層:建立,維護(hù),斷開(kāi)物理連接
數(shù)據(jù)鏈路層:建立邏輯連接,進(jìn)行硬件地址尋址,差錯(cuò)校驗(yàn)等功能
網(wǎng)絡(luò)層:進(jìn)行邏輯地址尋址,實(shí)現(xiàn)不同網(wǎng)絡(luò)之間的路徑選擇
傳輸層:定義傳輸數(shù)據(jù)的協(xié)議端口號(hào),以及流控和差錯(cuò)校驗(yàn)
協(xié)議有TCP UDP,數(shù)據(jù)包一旦離開(kāi)網(wǎng)卡即進(jìn)入網(wǎng)絡(luò)傳輸層
TCP三次協(xié)議握手過(guò)程:
第一次握手:建立連接時(shí),客戶端發(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包,此時(shí)服務(wù)器進(jìn)入SYN_RECV狀態(tài)
第三次握手:客戶端收到服務(wù)器的SYN+ACK包,向服務(wù)器發(fā)送確認(rèn)包ACK(ack=k+1),此包發(fā)送完畢,客戶端和服務(wù)器進(jìn)入ESTABLISHED狀態(tài),完成三次握手。
完成三次握手后,客戶端和服務(wù)器開(kāi)始傳輸數(shù)據(jù)
會(huì)話層:建立,管理,終止會(huì)話
表示層:數(shù)據(jù)的表示,安全,壓縮
應(yīng)用層:網(wǎng)絡(luò)服務(wù)與最終用戶的一個(gè)借口
協(xié)議有:HTTP,FTP,SMTP,DNS,TELNET,HTTPS,DHCP,POP3
?
HTTP協(xié)議工作特點(diǎn)
1.???基于B/S模式
2.???通信開(kāi)銷小,簡(jiǎn)單快捷
3.???使用靈活,可使用超文本傳輸協(xié)議
4.???節(jié)省傳輸時(shí)間
5.???無(wú)狀態(tài)
HTTP工作原理:
客戶端發(fā)送請(qǐng)求給服務(wù)器,創(chuàng)建一個(gè)TCP連接,指定端口號(hào),默認(rèn)為80,連接到服務(wù)器,服務(wù)器監(jiān)聽(tīng)瀏覽器請(qǐng)求,一旦監(jiān)聽(tīng)到客戶端請(qǐng)求,分析請(qǐng)求類型后,服務(wù)器會(huì)向客戶端返回狀態(tài)信息和數(shù)據(jù)內(nèi)容。
HTTP協(xié)議常見(jiàn)請(qǐng)求/響應(yīng)頭
HTTP消息頭是在,客戶端請(qǐng)求(Request)或服務(wù)器響應(yīng)(Response)時(shí)傳遞的,位請(qǐng)求或響應(yīng)的第一行,HTTP消息體(請(qǐng)求或響應(yīng)的內(nèi)容)是其后傳輸。HTTP消息頭,以明文的字符串格式傳送,是以冒號(hào)分隔的鍵/值對(duì),如:Accept-Charset: utf-8,每一個(gè)消息頭最后以回車符(CR)和換行符(LF)結(jié)尾。HTTP消息頭結(jié)束后,會(huì)用一個(gè)空白的字段來(lái)標(biāo)識(shí),這樣就會(huì)出現(xiàn)兩個(gè)連續(xù)的CR-LF。
HTTP消息頭由IANA(TheInternet Assigned Numbers Authority,互聯(lián)網(wǎng)數(shù)字分配機(jī)構(gòu))來(lái)整理和維護(hù)。其標(biāo)準(zhǔn)最早來(lái)源于RFC 4229。IANA將其整理到了消息頭文檔,文檔中還包括了一些新提出的信息頭。
HTTP消息頭支持自定義,自定義的專用消息頭一般會(huì)添加'X-'前綴。
?
Content-Type: 請(qǐng)求體的MIME類型(用于POST和PUT請(qǐng)求中)
Content-Type: text/html
Accept:?? 可接受的響應(yīng)內(nèi)容類型(Content-Types)。
Accept :text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Origin:? 發(fā)起一個(gè)針對(duì)跨域資源共享的請(qǐng)求(該請(qǐng)求要求服務(wù)器在響應(yīng)中加入一個(gè)Access-Control-Allow-Origin的消息頭,表示訪問(wèn)控制所允許的來(lái)源)。
?
Cookie:由之前服務(wù)器通過(guò)Set-Cookie設(shè)置的一個(gè)HTTP協(xié)議Cookie
?
Cookie: imooc_uuid=bb2a340b-b607-430c-8e71-bdbba95dd952;imooc_isnew_ct=1522329071; loginstate=1; apsid=Y0MzRjMTJhYzVmYTA1MzVmYmI0Yzg0ZDk3OGY1YzYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMzQ4MDEyNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyNDI2NjA5NzUwQHFxLmNvbQAAAAAAAAAAAAAAAAAAADYyNTkxODhlYzk3YTE2NjA0MmI4NGI2Zjc4OTA1ODU2Kea8WinmvFo%3DNm;imooc_isnew=2; PHPSESSID=39ha704aek7ha4ui7vgudjejt4; IMCDNS=0;Hm_lvt_f0cfcccd7b1393990c78efdeebff3968=1522329079,1522329219,1522462327,1524710000;Hm_lpvt_f0cfcccd7b1393990c78efdeebff3968=1524710739; cvde=5ae13a614592b-11
Cache-Control:用來(lái)指定當(dāng)前的請(qǐng)求/回復(fù)中的,是否使用緩存機(jī)制。
Cache-Control: max-age=0
?
User-Agent:? 瀏覽器的身份標(biāo)識(shí)字符串
User-Agent: Mozilla/5.0 (WindowsNT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3381.1Safari/537.36
?
Referrer: 表示瀏覽器所訪問(wèn)的前一個(gè)頁(yè)面,可以認(rèn)為是之前訪問(wèn)頁(yè)面的鏈接將瀏覽器帶到了當(dāng)前頁(yè)面。Referer其實(shí)是Referrer這個(gè)單詞,但RFC制作標(biāo)準(zhǔn)時(shí)給拼錯(cuò)了,后來(lái)也就將錯(cuò)就錯(cuò)使用Referer了
Referer: https://www.imooc.com/
X-Forwarded-FOR:建成XFF頭,它代表客戶端,也就是HTTP的請(qǐng)求端真實(shí)的IP,只有在通過(guò)了HTTP 代理或者負(fù)載均衡服務(wù)器時(shí)才會(huì)添加該項(xiàng), 在代理轉(zhuǎn)發(fā)及反向代理中經(jīng)常使用X-Forwarded-For 字段
X-Forwarded-For: client1, proxy1, proxy2。
Access-Control-Allow-Origin:指定哪些網(wǎng)站可以跨域源資源共享
Access-Control-Allow-Origin: *
Last-Modified:所請(qǐng)求的對(duì)象的最后修改日期
Last-Modified: Dec, 26 Dec 2015 17:30:00 GMT
?
HTTP協(xié)議請(qǐng)求方法
GET,POST,HEAD,OPTIONS,DELETE,PUT,TRACE
HTTP協(xié)議的GET和POST請(qǐng)求方法的區(qū)別
HTTPS工作原理
HTTPS是一種基于SSL/TLS的HTTP協(xié)議,所有的HTTP數(shù)據(jù)都是在SSL/TLS協(xié)議封裝之上傳輸?shù)摹?/span>
HTTPS協(xié)議在HTTP協(xié)議的基礎(chǔ)上,添加了SSL/TLS握手和數(shù)據(jù)加密傳輸,也屬于應(yīng)用層協(xié)議。
?
常見(jiàn)網(wǎng)絡(luò)協(xié)議含義及端口
FTP:文件傳輸協(xié)議 21
Telnet:遠(yuǎn)程登錄協(xié)議 23
SMTP:簡(jiǎn)單郵件傳輸協(xié)議 25
POP3:郵局協(xié)議第三版 110
HTTP:超文本傳輸協(xié)議 80
DNS:域名系統(tǒng)協(xié)議 53
總結(jié)
以上是生活随笔為你收集整理的计算机网络协议(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: php文件目录操作相关
- 下一篇: 微信第三方登录