一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

TCP/IP和HTTP協(xié)議代理

 louy2 2020-08-13

TCP/IP協(xié)議族


TCP/IP(傳輸控制協(xié)議/網(wǎng)際協(xié)議)是用于計(jì)算機(jī)通信的一個(gè)協(xié)議族。


TCP/IP協(xié)議族包括諸如Internet協(xié)議(IP)、地址解析協(xié)議(ARP)、互聯(lián)網(wǎng)控制信息協(xié)議(ICMP)、用戶數(shù)據(jù)報(bào)協(xié)議(UDP)、傳輸控制協(xié)議(TCP)、路由信息協(xié)議(RIP)、Telnet、簡(jiǎn)單郵件傳輸協(xié)議(SMTP)、域名系統(tǒng)(DNS)等協(xié)議。


1. 應(yīng)用層 應(yīng)用層包含一切與應(yīng)用相關(guān)的功能,我們經(jīng)常使用的HTTP、FTP,Telnet、SMTP等協(xié)議都在這一層實(shí)現(xiàn)。


2. 傳輸層 傳輸層負(fù)責(zé)提供可靠的傳輸服務(wù)。在該層中,典型的協(xié)議是TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)。其中,TCP提供可靠、有序的,面向連接的通信服務(wù);而UDP則提供無(wú)連接的、不可靠用戶數(shù)據(jù)報(bào)服務(wù)。


3. 網(wǎng)際層 網(wǎng)際層負(fù)責(zé)網(wǎng)絡(luò)間的尋址和數(shù)據(jù)傳輸,在該層中,典型的協(xié)議是IP(Internet Protocol)。


4. 網(wǎng)絡(luò)接口層 最下面一層是網(wǎng)絡(luò)接口層,負(fù)責(zé)數(shù)據(jù)的實(shí)際傳輸.網(wǎng)絡(luò)接口層在發(fā)送端將上層的IP數(shù)據(jù)報(bào)封裝成幀后發(fā)送到網(wǎng)絡(luò)上;數(shù)據(jù)幀通過(guò)網(wǎng)絡(luò)到達(dá)接收端時(shí),該結(jié)點(diǎn)的網(wǎng)絡(luò)接口層對(duì)數(shù)據(jù)幀拆封,并檢查幀中包含的MAC地址。如果該地址就是本機(jī)的MAC地址或者是廣播地址,則上傳到網(wǎng)絡(luò)層,否則丟棄該幀。


圖1 TCP/IP協(xié)議棧



圖1 TCP/IP協(xié)議棧


HTTP是一個(gè)客戶端終端(用戶)和服務(wù)器端(網(wǎng)站)請(qǐng)求和應(yīng)答的標(biāo)準(zhǔn)(TCP)。通過(guò)使用Web瀏覽器、網(wǎng)絡(luò)爬蟲或者其它的工具,客戶端發(fā)起一個(gè)HTTP請(qǐng)求到服務(wù)器上指定端口(默認(rèn)端口為80)。我們稱這個(gè)客戶端為用戶代理程序(user agent)。應(yīng)答的服務(wù)器上存儲(chǔ)著一些資源,比如HTML文件和圖像。我們稱這個(gè)應(yīng)答服務(wù)器為源服務(wù)器(origin server)。在用戶代理和源服務(wù)器中間可能存在多個(gè)中間層,比如代理,網(wǎng)關(guān),或者隧道(tunnel)。


盡管TCP/IP協(xié)議是互聯(lián)網(wǎng)上最流行的應(yīng)用,HTTP協(xié)議中,并沒有規(guī)定必須使用它或它支持的層。事實(shí)上,HTTP可以在任何互聯(lián)網(wǎng)協(xié)議上,或其他網(wǎng)絡(luò)上實(shí)現(xiàn)。HTTP假定其下層協(xié)議提供可靠的傳輸。因此,任何能夠提供這種保證的協(xié)議都可以被其使用。因此也就是其在TCP/IP協(xié)議族使用TCP作為其傳輸層。


通常,由HTTP客戶端發(fā)起一個(gè)請(qǐng)求,創(chuàng)建一個(gè)到服務(wù)器指定端口(默認(rèn)是80端口)的TCP連接。HTTP服務(wù)器則在那個(gè)端口監(jiān)聽客戶端的請(qǐng)求。一旦收到請(qǐng)求,服務(wù)器會(huì)向客戶端返回一個(gè)狀態(tài),比如"HTTP/1.1 200 OK",以及返回的內(nèi)容,如請(qǐng)求的文件、錯(cuò)誤消息、或者其它信息。


圖2 組成元素


圖2 組成元素


如圖,web服務(wù)器接入于公網(wǎng),ip地址為61.155.154.42, url為www.demo.com。 資源文件包括index.html,index.js,index.css,others位于服務(wù)器的虛擬根目錄下,index.html索引文件index.js,index.cs圖3 資源文件


若用戶在瀏覽器的地址欄中輸入www.demo.com并回車鍵確認(rèn),則將觸發(fā)以下流程:


· 瀏覽器所在客戶端主機(jī)通過(guò)DNS查詢,獲取www.demo.com所對(duì)應(yīng)的ip地址,并作為客戶端與該ip地址對(duì)應(yīng)的服務(wù)端建立http連接


· 瀏覽器向服務(wù)器發(fā)起http根請(qǐng)求,瀏覽器從本機(jī)取出根文件index.html并回應(yīng)瀏覽器


· 瀏覽器從根請(qǐng)求回應(yīng)中解析index.html文件中所引入的資源文件列表index.js,index.css等文件


· 瀏覽器再次分別向服務(wù)器發(fā)起index.js,index.css等文件請(qǐng)求


· 瀏覽器獲取所有文件之后,解析渲染出所有資源文件,提供ui接口給用戶


圖4 資源獲取流程


圖4 資源獲取流程


http代理服務(wù)器即是一個(gè)http協(xié)議的中繼。其所完成的任務(wù)是插入瀏覽器與服務(wù)器之間的通信,截獲瀏覽器的http請(qǐng)求,并模擬瀏覽器向服務(wù)器發(fā)起http請(qǐng)求,并把服務(wù)器的http回應(yīng),轉(zhuǎn)回應(yīng)于瀏覽器。這個(gè)動(dòng)作對(duì)應(yīng)瀏覽器來(lái)說(shuō),是透明的,


但是對(duì)于開發(fā)者來(lái)說(shuō),可以在代理服務(wù)器上做手腳,修改雙向的報(bào)文??梢酝ㄟ^(guò)兩種方式來(lái)實(shí)現(xiàn)http代理,其一為應(yīng)用程序代理,其二tcp代理,其特征分別為:


應(yīng)用層代理,瀏覽器與代理服務(wù)器,代理服務(wù)器與服務(wù)器兩個(gè)通信組隊(duì)之間,分別建立tcp連接,并進(jìn)行tcp數(shù)據(jù)傳輸。代理服務(wù)器與瀏覽器握手之后,截獲瀏覽器發(fā)出的GET報(bào)文,獲取HOST字段與服務(wù)器握手,并把GET報(bào)文進(jìn)行處理之后,轉(zhuǎn)發(fā)給服務(wù)器,等待服務(wù)器的回包,并轉(zhuǎn)發(fā)給瀏覽器。整個(gè)流程可以在應(yīng)用層完成。


可以看出代理服務(wù)器對(duì)客戶端上來(lái)的GET報(bào)文有修改


1、HTTP/1.1修改為HTTP/1.0, 這樣修改有兩個(gè)作用,服務(wù)器對(duì)HTTP/1.0請(qǐng)求的回應(yīng)報(bào)文沒有Content-Length, 或CHUNCK的標(biāo)示,而這兩個(gè)標(biāo)示與應(yīng)用程序數(shù)據(jù)的長(zhǎng)度相關(guān),如果采用HTTP/1.1的請(qǐng)求,則在修改服務(wù)器的回包之后(回包長(zhǎng)度發(fā)生變化),需要重新修改Content-Length或CHUNCK兩個(gè)屬性的值,而這兩個(gè)值的修改增加了開發(fā)的難度;


2、服務(wù)器對(duì)HTTP/1.0回應(yīng)不會(huì)保持長(zhǎng)連接,即圖中服務(wù)器響應(yīng)index.html之后,tcp連接關(guān)閉,這樣對(duì)于代理軟件來(lái)說(shuō),軟件容易穩(wěn)定,降低了開發(fā)難度。


TCP層代理


? TCP報(bào)文插入


在TCP層做報(bào)文注入,涉及到了修改報(bào)文雙向sequence, ack-sequence值的問題。原因在于seq值與ack值與實(shí)際報(bào)文長(zhǎng)度相關(guān),如果修改了報(bào)文長(zhǎng)度,顯然需要修改seq, ack值:


圖6 TCP之SEQ與ACK


圖6 TCP之SEQ與ACK


? TCP層代理報(bào)文插入


如圖7所示,代理需要維護(hù)兩個(gè)狀態(tài)機(jī),收到服務(wù)端帶fin報(bào)文的數(shù)據(jù)包之后,和服務(wù)端完成結(jié)束握手;同時(shí)去除fin報(bào)文的fin標(biāo)志,把改報(bào)文發(fā)給瀏覽器,同時(shí)完成和瀏覽器的報(bào)文插入以及結(jié)束握手:


圖7 TCP之SEQ與ACK


圖7 TCP之SEQ與ACK


? TCP層代理狀態(tài)機(jī)


1. Eth0收到http報(bào)文的結(jié)束幀(帶fin)


1. Eth0收到http報(bào)文的結(jié)束幀(帶fin)


2. 代理去掉fin標(biāo)志


代理去掉fin標(biāo)志


3. 代理插入一段報(bào)文,并加上fin標(biāo)志


代理插入一段報(bào)文,并加上fin標(biāo)志


代理插入一段報(bào)文,并加上fin標(biāo)志


4.瀏覽器對(duì)原始的http結(jié)束報(bào)文回應(yīng)fin:


瀏覽器對(duì)原始的http結(jié)束報(bào)文回應(yīng)fin


問題:看起來(lái)服務(wù)器到瀏覽器的fin報(bào)文,并沒有被代理扔掉,故而瀏覽器收到了兩幀fin報(bào)文。



    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    婷婷伊人综合中文字幕| 少妇人妻无一区二区三区| 激情综合五月开心久久| 免费观看日韩一级黄色大片| 91福利免费一区二区三区| 熟女乱一区二区三区四区| 日韩精品一区二区不卡| 国产精欧美一区二区三区久久| 日本高清一区免费不卡| 99久久国产精品成人观看| 大尺度剧情国产在线视频| 久久99午夜福利视频| 国产黄色高清内射熟女视频| 国产又黄又爽又粗视频在线| 日本办公室三级在线观看| 亚洲欧美日本视频一区二区| 国产爆操白丝美女在线观看| 不卡视频在线一区二区三区| 日本人妻的诱惑在线观看| 成年午夜在线免费视频| 日韩中文字幕狠狠人妻| 99国产一区在线播放| 久久人人爽人人爽大片av| 日韩成人中文字幕在线一区| 四季av一区二区播放| 中文字幕高清免费日韩视频| 欧美精品亚洲精品日韩专区| 日韩午夜老司机免费视频| 国产传媒一区二区三区| 中文日韩精品视频在线| 亚洲国产av在线观看一区| 欧美老太太性生活大片| 日韩高清一区二区三区四区| 国产麻豆精品福利在线| 国产亚洲中文日韩欧美综合网| 中文字幕无线码一区欧美| 好吊日成人免费视频公开| 国产午夜精品在线免费看| 很黄很污在线免费观看| 国产又大又猛又粗又长又爽| 国产精品偷拍一区二区|