摘要:第三次老王電話機(jī)通常還會(huì)回復(fù)一個(gè)給對(duì)方,以示接到對(duì)方的。報(bào)文請(qǐng)求由三部分組成,分別是請(qǐng)求行消息報(bào)頭請(qǐng)求正文。消息報(bào)頭消息報(bào)頭包括普通報(bào)頭請(qǐng)求報(bào)頭響應(yīng)報(bào)頭實(shí)體報(bào)頭。
概念
http(超文本傳輸協(xié)議)是一個(gè)基于請(qǐng)求與響應(yīng)模式的、無狀態(tài)的、應(yīng)用層的協(xié)議,常基于TCP的連接方式,HTTP1.1版本中給出一種持續(xù)連接的機(jī)制,絕大多數(shù)的Web開發(fā),都是構(gòu)建在HTTP協(xié)議之上的Web應(yīng)用。
HTTP URL (URL是一種特殊類型的URI,包含了用于查找某個(gè)資源的足夠的信息)的格式如下:
http://host":"port
http表示要通過HTTP協(xié)議來定位網(wǎng)絡(luò)資源;host表示合法的Internet主機(jī)域名或者IP地址;port指定一個(gè)端口號(hào),為空則使用缺省端口80;abs_path指定請(qǐng)求資源的URI;如果URL中沒有給出abs_path,那么當(dāng)它作為請(qǐng)求URI時(shí),必須以“/”的形式給出,通常這個(gè)工作瀏覽器自動(dòng)幫我們完成。
網(wǎng)絡(luò)基礎(chǔ)1 七層網(wǎng)絡(luò)協(xié)議(7 應(yīng)用層 6 表示層 5 會(huì)話層 4 傳輸層 3 網(wǎng)絡(luò)層 2 數(shù)據(jù)鏈路層 1 物理層)的內(nèi)容。
2 每個(gè)HTTP傳輸都要依次經(jīng)過應(yīng)用層、傳輸層、網(wǎng)絡(luò)層、鏈路層、(傳輸目標(biāo)的)鏈路層、(傳輸目標(biāo)的)網(wǎng)絡(luò)層、(傳輸目標(biāo)的)傳輸層和(傳輸目標(biāo)的)的應(yīng)用層。
http發(fā)生在應(yīng)用層,但它的底層是tcp。
3 TCP的三次握手
第一次握手:客戶端發(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),完成三次握手。
握手過程中傳送的包里不包含數(shù)據(jù),三次握手完畢后,客戶端與服務(wù)器才正式開始傳送數(shù)據(jù)。理想狀態(tài)下,TCP連接一旦建立,在通信雙方中的任何一方主動(dòng)關(guān)閉連接之前,TCP 連接都將被一直保持下去。
(斷開連接時(shí)服務(wù)器和客戶端均可以主動(dòng)發(fā)起斷開TCP連接的請(qǐng)求,斷開過程需要經(jīng)過“四次握手”)
4 電話原理
第一次上海的老王給北京的老張打電話,撥號(hào)碼010-68886xx8老王電話機(jī)與電信局之間的電話線,其實(shí)有兩個(gè)信道:信令信道 + 語音信道,當(dāng)老王拿起電話,撥010-68886xx8,這個(gè)號(hào)碼通過信令信道傳到了電信局,同時(shí)將語音信道(DS0)保留,為了稍后的通信做語音信道預(yù)留。
電信局根據(jù)這個(gè)號(hào)碼做路由查找,找到其上一級(jí)的交換機(jī),通過信令信道將010-68886xx88轉(zhuǎn)發(fā)給上一級(jí)交換機(jī),同時(shí)和上一級(jí)協(xié)商好,預(yù)留一個(gè)DS0語音信道,為了語音傳輸。
這樣一級(jí)級(jí)轉(zhuǎn)接,最終號(hào)碼轉(zhuǎn)接到北京老張的電話機(jī),振鈴,北京電信局與老張電話機(jī)之間預(yù)留一個(gè)DS0語音信道,為了語音傳輸。
第二次老張拿起電話的那一刻,一個(gè)“Connected”信令順著來時(shí)的信令信道(一跳、一跳)傳輸?shù)嚼贤醯碾娫挋C(jī)。
第三次老王電話機(jī)通常還會(huì)回復(fù)一個(gè)“ACK”給對(duì)方,以示接到對(duì)方的“Connected”。
語音傳輸當(dāng)老張拿起電話的那一刻,端到端的語音信道已經(jīng)預(yù)留好了,一般為DS0= 64Kbps,這條端到端信道其實(shí)是由多條 hop-2-hop信道串聯(lián)而成的。此時(shí)雙方可以自由說話,語音數(shù)據(jù)會(huì)從保留的語音信道流淌到對(duì)方。
從以上的描述來看,信令數(shù)據(jù)、語音數(shù)據(jù)是在自己獨(dú)立的信道里傳輸,大家井水不犯河水,互不干涉。
(例子出處,感謝作者:https://www.zhihu.com/people/...)
簡(jiǎn)單的 HTTP 協(xié)議http協(xié)議是不保存狀態(tài)的協(xié)議,因此引入了 Cookie 技術(shù)。
HTTP報(bào)文http請(qǐng)求由三部分組成,分別是:請(qǐng)求行、消息報(bào)頭、請(qǐng)求正文。
客戶端發(fā)出請(qǐng)求報(bào)文,服務(wù)器發(fā)出響應(yīng)報(bào)文。
客戶端請(qǐng)求
在請(qǐng)求報(bào)文中,客戶端使用不同的方法告知服務(wù)器意圖,常用的方法有 POST 、GET
GET 請(qǐng)求獲取Request-URI所標(biāo)識(shí)的資源 POST 在Request-URI所標(biāo)識(shí)的資源后附加新的數(shù)據(jù) HEAD 請(qǐng)求獲取由Request-URI所標(biāo)識(shí)的資源的響應(yīng)消息報(bào)頭 PUT 請(qǐng)求服務(wù)器存儲(chǔ)一個(gè)資源,并用Request-URI作為其標(biāo)識(shí) DELETE 請(qǐng)求服務(wù)器刪除Request-URI所標(biāo)識(shí)的資源 TRACE 請(qǐng)求服務(wù)器回送收到的請(qǐng)求信息,主要用于測(cè)試或診斷 CONNECT 保留將來使用 OPTIONS 請(qǐng)求查詢服務(wù)器的性能,或者查詢與資源相關(guān)的選項(xiàng)和需求 應(yīng)用舉例: GET方法:在瀏覽器的地址欄中輸入網(wǎng)址的方式訪問網(wǎng)頁(yè)時(shí),瀏覽器采用GET方法向服務(wù)器獲取資源,eg:GET /form.html HTTP/1.1 (CRLF) POST方法要求被請(qǐng)求服務(wù)器接受附在請(qǐng)求后面的數(shù)據(jù),常用于提交表單。
服務(wù)端響應(yīng)
HTTP響應(yīng)也是由三個(gè)部分組成,分別是:狀態(tài)行、消息報(bào)頭、響應(yīng)正文
狀態(tài)行格式如下
HTTP-Version Status-Code Reason-Phrase CRLF
其中,HTTP-Version表示服務(wù)器HTTP協(xié)議的版本;Status-Code表示服務(wù)器發(fā)回的響應(yīng)狀態(tài)代碼;Reason-Phrase表示狀態(tài)代碼的文本描述。
狀態(tài)代碼有三位數(shù)字組成,第一個(gè)數(shù)字定義了響應(yīng)的類別,且有五種可能取值:
1xx:指示信息--表示請(qǐng)求已接收,繼續(xù)處理
2xx:成功--表示請(qǐng)求已被成功接收、理解、接受
3xx:重定向--要完成請(qǐng)求必須進(jìn)行更進(jìn)一步的操作
4xx:客戶端錯(cuò)誤--請(qǐng)求有語法錯(cuò)誤或請(qǐng)求無法實(shí)現(xiàn)
5xx:服務(wù)器端錯(cuò)誤--服務(wù)器未能實(shí)現(xiàn)合法的請(qǐng)求
常見狀態(tài)代碼、狀態(tài)描述、說明:
200 OK //客戶端請(qǐng)求成功
400 Bad Request //客戶端請(qǐng)求有語法錯(cuò)誤,不能被服務(wù)器所理解
401 Unauthorized //請(qǐng)求未經(jīng)授權(quán),這個(gè)狀態(tài)代碼必須和WWW-Authenticate報(bào)頭域一起使用
403 Forbidden //服務(wù)器收到請(qǐng)求,但是拒絕提供服務(wù)
404 Not Found //請(qǐng)求資源不存在,eg:輸入了錯(cuò)誤的URL
500 Internal Server Error //服務(wù)器發(fā)生不可預(yù)期的錯(cuò)誤
503 Server Unavailable //服務(wù)器當(dāng)前不能處理客戶端的請(qǐng)求,一段時(shí)間后可能恢復(fù)正常
響應(yīng)正文就是服務(wù)器返回的資源的內(nèi)容。
消息報(bào)頭
HTTP消息報(bào)頭包括普通報(bào)頭、請(qǐng)求報(bào)頭、響應(yīng)報(bào)頭、實(shí)體報(bào)頭。
每一個(gè)報(bào)頭域都是由名字+“:”+空格+值 組成,消息報(bào)頭域的名字是大小寫無關(guān)的。
請(qǐng)求報(bào)頭允許客戶端向服務(wù)器端傳遞請(qǐng)求的附加信息以及客戶端自身的信息。
eg Accept:image/gif Accept-Charset
響應(yīng)報(bào)頭允許服務(wù)器傳遞不能放在狀態(tài)行中的附加響應(yīng)信息,以及關(guān)于服務(wù)器的信息和對(duì)Request-URI所標(biāo)識(shí)的資源進(jìn)行下一步訪問的信息。
eg Location Server
請(qǐng)求和響應(yīng)消息都可以傳送一個(gè)實(shí)體。一個(gè)實(shí)體由實(shí)體報(bào)頭域和實(shí)體正文組成,但并不是說實(shí)體報(bào)頭域和實(shí)體正文要在一起發(fā)送,可以只發(fā)送實(shí)體報(bào)頭域。實(shí)體報(bào)頭定義了關(guān)于實(shí)體正文(eg:有無實(shí)體正文)和請(qǐng)求所標(biāo)識(shí)的資源的元信息。
eg Encoding:gzip
編碼傳輸
HTTP 報(bào)文(message)一般和 HTTP實(shí)體(entity)是同一個(gè)東西。只有當(dāng)傳輸過程中發(fā)生編碼操作時(shí),實(shí)體主體的內(nèi)容發(fā)生變化,才導(dǎo)致它和報(bào)文主體產(chǎn)生差異。
常用的內(nèi)容編碼有:
gzip (GNU zip) compress (UNIX 系統(tǒng)的標(biāo)準(zhǔn)壓縮) deflate (zlib) identity (不進(jìn)行編碼)web服務(wù)的過程
搜索自身的dns緩存
搜索操作系統(tǒng)的自身的dns緩存
讀取本地host
瀏覽器發(fā)起一個(gè)dns的系統(tǒng)調(diào)用
找到ip地址后發(fā)起后續(xù)握手
感謝:http://www.cnblogs.com/li0803...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/89013.html
摘要:寫在前面用寫爬蟲的人很多,的爬蟲框架也很多,諸如和,筆者還是筆記傾向于,本文就用寫一個(gè)小爬蟲。本文適用于有一定基礎(chǔ)的,并且對(duì)爬蟲有一定了解的開發(fā)者。 寫在前面 用python寫爬蟲的人很多,python的爬蟲框架也很多,諸如pyspider 和 scrapy,筆者還是筆記傾向于scrapy,本文就用python寫一個(gè)小爬蟲demo。本文適用于有一定python基礎(chǔ)的,并且對(duì)爬蟲有一定了...
摘要:還有一些以后補(bǔ)充。十分推薦更多的教程斯坦福的公開課教學(xué)語言是。加盟百度前,余凱博士在美國(guó)研究院擔(dān)任部門主管,領(lǐng)導(dǎo)團(tuán)隊(duì)在機(jī)器學(xué)習(xí)圖像識(shí)別多媒體檢索視頻監(jiān)控,以及數(shù)據(jù)挖掘和人機(jī)交互等方面的產(chǎn)品技術(shù)研發(fā)。 轉(zhuǎn)載自http://baojie.org/blog/2013/01/27/deep-learning-tutorials/ ? Stanford Deep Learning wiki: htt...
摘要:這時(shí)才發(fā)現(xiàn)上面的配置錯(cuò)誤,必須用絕對(duì)路徑,不能用形如符號(hào)卸載重裝的正確姿勢(shì)查看當(dāng)前版本版本信息這里要重定向才可以輸出到文件哦之后,進(jìn)程是重新創(chuàng)建了的里面保存的是的主進(jìn)程號(hào) GET THE CODE ganiks ? nginx-1.8.0 wget http://nginx.org/download/nginx-1.8.0.tar.gz ganiks ? nginx-1.8....
摘要:簡(jiǎn)介官方的解釋很簡(jiǎn)單用來玩機(jī)器學(xué)習(xí)。什么是機(jī)器學(xué)習(xí)機(jī)器學(xué)習(xí)關(guān)注的是計(jì)算機(jī)程序如何隨著經(jīng)驗(yàn)積累自動(dòng)提高性能。的生態(tài)是一門簡(jiǎn)單易學(xué)的語言,語法要素不多,對(duì)于只關(guān)心機(jī)器學(xué)習(xí)本身非軟件開發(fā)的人員,語言層面的東西基本是不需要關(guān)心的。 showImg(https://segmentfault.com/img/bVKWg8?w=566&h=202); Scikit-learn 簡(jiǎn)介 官方的解釋很簡(jiǎn)單...
摘要:對(duì)于大多數(shù)想上手深度學(xué)習(xí)的小伙伴來說,我應(yīng)當(dāng)從那篇論文開始讀起這是一個(gè)亙古不變的話題。接下來的論文將帶你深入理解深度學(xué)習(xí)方法深度學(xué)習(xí)在前沿領(lǐng)域的不同應(yīng)用。 對(duì)于大多數(shù)想上手深度學(xué)習(xí)的小伙伴來說,我應(yīng)當(dāng)從那篇論文開始讀起?這是一個(gè)亙古不變的話題。而對(duì)那些已經(jīng)入門的同學(xué)來說,了解一下不同方向的論文,也是不時(shí)之需。有沒有一份完整的深度學(xué)習(xí)論文導(dǎo)引,讓所有人都可以在里面找到想要的內(nèi)容呢?有!今天就給...
閱讀 1088·2021-11-16 11:44
閱讀 1373·2019-08-30 13:12
閱讀 2412·2019-08-29 16:05
閱讀 3076·2019-08-28 18:29
閱讀 912·2019-08-26 13:41
閱讀 3233·2019-08-26 13:34
閱讀 2602·2019-08-26 10:35
閱讀 940·2019-08-26 10:28