1. 程式人生 > >IE WPAD代理設定工作原理

IE WPAD代理設定工作原理

WPAD代表Web Proxy Auto-Discovery Protocol,是客戶端通過DHCP或DNS協議探測代理伺服器配置指令碼url的一種方式。當IE定位指令碼並將指令碼下載到本地之後,就可以通過該指令碼來為不同的url選擇相應的代理伺服器。目前主流瀏覽器一般都支援WPAD。本文主要介紹IE中WPAD相應的工作原理以及常見WPAD相關的問題的解決方案。

工作流程

當IE Internet Options連線中配置為自動發現設定時,IE會根據以下方式來探測WPAD.dat檔案

  • DHCP(252 option)
  • DNS A record query
  • NetBios

如果DHCP配置了WPAD的地址,IE則使用該地址傳送http get請求得到相應的WPAD.dat檔案。即使該地址請求失敗,IE也不會繼續使用DNS探測的結果。

如果DHCP伺服器沒有提供WPAD資訊,DNS探測結果就會被採用。例如使用者的計算機名為pc.department.branch.example.com,IE會按照如下url順序來請求WPAD.dat檔案。

如果DNS探測仍然失敗,IE則通過Netbios來請求WPAD。

當Netbios請求仍然失敗的話,IE則會嘗試直接傳送網路請求。

DHCP WPAD探測邏輯

IE通過呼叫DhcpRequestParams方法來得到DHCP 252 option。根據MSDN對該方法的描述,該返回結果會在本地快取起來。

DHCP clients store data obtained from a DHCP server in their local cache. If the DHCP client cache contains all data requested in the RecdParams array of a DhcpRequestParams function call, the client returns data from its cache. If requested data is not available in the client cache, the client processes the DhcpRequestParams function call by submitting a DHCP-INFORM message to the DHCP server。

因此DHCP-INFORM訊息只在第一次或者cache被清空的時候被髮送。以下是一個DHCP-INFORM訊息的示例。

複製程式碼
55     10.0.0.101  255.255.255.255 DHCP        DHCP:Request, MsgType = INFORM, TransactionID = 0x33276787 
56     10.0.0.1      10.0.0.101  DHCP          DHCP:Reply, MsgType = ACK, TransactionID = 0x33276787 
  Frame: Number = 56, Captured Frame Length = 371, MediaType = ETHERNET 
……
 - Dhcp: Reply
, MsgType = ACK, TransactionID = 0x33276787 OpCode: Reply, 2(0x02) Hardwaretype: Ethernet HardwareAddressLength: 6 (0x6) …… + MessageType: ACK - Type 53 + ServerIdentifier: 10.0.0.1 - Type 54 + SubnetMask: 255.255.0.0 - Type 1 + DHCPEOptionsVendorSpecificInformation: + DomainName: ctest.local - Type 15 + DomainNameServer: 10.0.0.1 - Type 6 + WPAD: http://consto.ctest.local/WPAD.dat - Type 252 + End:
複製程式碼

另外有兩點值得注意:

  • IE只支援IPv4 DHCP的探測,不支援IPv6 DHCP探測
  • IE會嘗試通過所有的網路卡來探測DHCP設定。

當IE得到WPAD.dat檔案的地址,IE傳送http get請求得到WPAD.dat檔案,這與通過IE位址列寫入url傳送請求一樣。一旦WPAD.dat檔案返回成功,IE會將該WPAD.dat的地址存進登錄檔HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections\DefaultConnectionSettings中。另外將WPAD.dat檔案寫進IE快取目錄Temporary Internet Files。當IE再次傳送其他網頁請求的時候,IE會從登錄檔中讀取WPAD.dat的地址,之後發現快取中可以找到該地址對應的檔案快取,之後使用該檔案來確定相應的代理伺服器。

常見問題

在使用IE過程中有以下兩種問題比較常見,

1. DHCP伺服器上更新了252 option的WPAD.dat地址,但是IE並沒有按照新地址的WPAD.dat檔案來使用代理伺服器。 這種情況多數是由於IE快取了WPAD.dat的地址在登錄檔HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections\DefaultConnectionSettings。

2. WPAD.dat檔案內容被更新,但是IE並沒有按照的新WPAD.dat檔案來使用代理伺服器。 這種情況多數是由於IE快取了WPAD.dat檔案,沒有去請求新的WPAD.dat的內容。

解決方案

對於第一個問題,我們可以執行如下步驟來清空不同級別的快取,

清空DHCP快取

ipconfig /release

ipconfig /renew  

清空DNS快取

ipconfig /flushDNS  

清空登錄檔WPAD.dat地址快取

HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections\DefaultConnectionSettings HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections\SavedLegacySettings  

清空IE快取

RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8

對於第二個問題,可以從客戶端和伺服器兩個方面去解決,

  • 在客戶端清空IE快取。
  • 在伺服器端為WPAD.dat檔案新增cache-control: no-cache http header,這樣WPAD.dat檔案將不會被IE快取。即使伺服器WPAD.dat內容被頻繁更新客戶端也會及時得到。不過這樣會對效能有一定的影響,畢竟要多傳送請求來得到WPAD.dat檔案。

除錯方法 

如果上述解決方案對你遇到的問題不起作用,也可以嘗試通過以下方式來查詢問題發生的原因,對於這類問題一般的除錯方法是通過Process Monitor Networ Monitor, 通過process monitor來追蹤登錄檔訪問情況和本地快取中wpad檔案的訪問情況,通過network monitor來抓包檢視是否傳送了wpad相關請求。

Process Monitor

Network Monitor

相關推薦

IE WPAD代理設定工作原理

WPAD代表Web Proxy Auto-Discovery Protocol,是客戶端通過DHCP或DNS協議探測代理伺服器配置指令碼url的一種方式。當IE定位指令碼並將指令碼下載到本地之後,就可以通過該指令碼來為不同的url選擇相應的代理伺服器。目前主流瀏覽器一般都

代理伺服器工作原理

 (1) 代理服務原理 代理伺服器有很多種,大體來說有http,ftp,socks代理三種,其中又分透明代理和不透明代理。其中透明代理一般是閘道器,是硬體。所以這裡討論不透明代理。 當機器通過代理伺服器上網時。通訊是分兩次的,先是機器和代理伺服器通訊,再是代理伺服器和目的地址

代理服務器之趣談工作原理

pan 不能訪問網絡 獲取 strong 會有 網絡 簡單 演唱會 文章 最近經常會有同學們這些問題: 代理是什麽意思,我們為什麽要用代理服務器。 設置代理了之後,我的瀏覽器或者手機居然不能訪問網站了,我不能接受! 問出這樣的問題,一般都是對代理服務器不夠了解,不知其然

sock5代理工作原理

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

設定DHCP服務的配置以及DHCP工作原理

設定dhcp服務的配置 **1.DHCP服務 ** DHCP(Dynamic Host Configuration Protocol,動態主機設定協議),是一個區域網的網路協議,使用UDP協議工作。它是TCP/IP協議簇中的一種, 主要作用是集中的管理、分配IP地址,使cli

HTTP代理伺服器的工作原理

在HTTP通訊鏈上,客戶端和目標伺服器之間通常存在某些中轉代理伺服器,它們提供對目標資源的中轉訪問。一個HTTP請求可能被多個代理伺服器轉發,後面的伺服器稱為前面伺服器的上游伺服器。代理伺服器按照其使用方式和作用,分為正向代理伺服器、反向代理伺服器、透明代理伺服

IE的安全設定中設成“啟用,執行,下載activeX控制元件”程式控制的實現的原理

(1)IE的安全屬性設定是放置在登錄檔的以下位置的: HKEY_USERS\UserName\Software\Microsoft\Windows\CurrentVersion\Internet Se

自動切換IE代理設定: 簡單使用IE自動配置指令碼

今天和一個朋友聊到了chrome的自動代理功能,很多人感覺這個功能非常方便,但大家或許不知道這個功能其實是繼承自IE瀏覽器,而且在“遙遠”的Windows 98時代IE就已經具有了這個功能。這個功能在IE中被稱作Proxy Automatic Configuration

Tomcat簡介(組成,工作原理,執行緒數設定等)

一、簡介:tomcat是一個免費的開放原始碼的web應用伺服器。屬於輕量級應用伺服器,在中小型系統和併發訪問使用者不是很多的場合下被普遍使用,是開發和除錯JSP程式的首選。當在一臺機器上配置好Apache伺服器,可以利用它響應HTML頁面的訪問請求。實際上Tomcat是Apa

VMware快照的工作原理

所有 整合 100g 性能 不變 小時 此外 建立 console VMware中的快照是對VMDK在某個時間點的“拷貝”,這個“拷貝”並不是對VMDK文件的復制,而是保持磁盤文件和系統內存在該時間點的狀態,以便在出現故障後虛擬機能夠恢復到該時間點。如果對某個虛擬機創建了多

Vue工作原理小結

key 如何實現 reference 讀寫 owa 方法 cli scrip 枚舉 本文能幫你做什麽?1、了解vue的雙向數據綁定原理以及核心代碼模塊2、緩解好奇心的同時了解如何實現雙向綁定為了便於說明原理與實現,本文相關代碼主要摘自vue源碼, 並進行了簡化改造,相對較

angularjs工作原理解析

body oot 分隔 復制 抖動 修改 重新 接收 裏的 個人覺得,要很好的理解AngularJS的運行機制,才能盡可能避免掉到坑裏面去。在這篇文章中,我將根據網上的資料和自己的理解對AngularJS的在啟動後,每一步都做了些什麽,做一個比較清楚詳細的解析。 首

shell編程培訓之shell的工作原理

shell編程培訓Shell是用戶和Linux操作系統之間的接口。Linux中有多種shell,其間缺省運用的是Bash。本章敘述了shell的作業原理,shell的品種,shell的一般操作及Bash的特性。什麽是shellLinux系統的shell作為操作系統的外殼,為用戶提供使用操作系統的接口。它是命令

session rsyns 的工作原理

session rsyns 的工作原理session的工作原理 1.session實現與工作原理瀏覽器和服務器采用http無狀態的通訊,為了保持客戶端的狀態,使用session來達到這個目的。然而服務端是怎麽樣標示不同的客戶端或用戶呢?這裏我們可以使用生活中的一個例子,假如你參加一個晚會,認識了很多人,你會采

CGI的工作原理

設置 mark 之間 com 環境變量 沒有 mar 輸出 表單 CGI是Webserver和外部程序之間的一個接口。利用CGI程序能夠處理從Web上client發送出來的表單和數據。並對此做出相關操作。這樣的反應能夠是HTML文件、圖片、聲音、視頻等能夠在瀏覽器窗口

struts2工作原理

struts archive logs tro images src str hive www 摘取於:http://www.cnblogs.com/jy02444453/archive/2011/08/27/2155427.html struts2工作原理

USB Type-C工作原理解析

說明 是否 forms dfp 其他 耗時 def 左右 del 自從蘋果發布了新MacBook,USB Type-C接口就成為了熱議對象。我來從硬件角度解析下這個USB Type-C,以便大家更好的了解USB Type-C的工作原理。特色尺寸小,支持正反插,速度快(10G

session 的工作原理

銷毀 這樣的 機制 過期 登陸 處理 art 客戶端瀏覽器 生成 一直在使用session存儲數據,一直沒有好好總結一下session的使用方式以及其工作原理,今天在這裏做一下梳理。這裏的介紹主要是基於php語言,其他的語言操作可能會有差別,但基本的原理不變。 1.在p

SpringMVC的工作原理

free 視圖渲染 jstl resp mapping div 更多 con lib 一、spring簡介     springMVC是spring框架的一個模塊,springMVC和spring無需通過中間整合層進行開發。 springMVC是一個基於mvc的

Nginx 模塊的工作原理

nginx 模塊的工作原理Nginx 模塊的工作原理 Handlers :(處理器模塊)此模塊直接處理請求 並且進行內容傳輸以及修改headres信息等操作。Handlers模塊只能處理一個。Filters(處理器模塊):此類模塊只需要對其他服務器模塊輸出的內容進行修改操做,最後又Nginx操做proxies