1.代理服務器
代理服務器(Proxy Server)的功能是代理網(wǎng)絡用戶去取得網(wǎng)絡信息,它是網(wǎng)絡信息的中轉站,是個人網(wǎng)絡和Internet服務商之間的中間代理機構以躯,負責轉發(fā)網(wǎng)絡信息蟆盐。
代理服務器可以實現(xiàn)一下功能:
1.隱藏身份
2.充當防火墻
3.防止攻擊
4.權限控制
代理服務器按照其使用方式和作用,分為正向代理服務器室谚,反向代理服務器.
1.1代理服務器的分類
(1) HTTP代理 :能夠代理客戶機的HTTP訪問毡鉴,主要是代理瀏覽器訪問網(wǎng)頁。
(2)FTP代理:能夠代理客戶機上的FTP軟件訪問FTP服務器秒赤。
(3)RTSP代理:代理客戶機上的Realplayer訪問Real流媒體服務器猪瞬。
(4)POP3代理:代理客戶機上的郵件軟件用POP3方式收發(fā)郵件。
(5)VPN代理:指在共用網(wǎng)絡上建立專用網(wǎng)絡的技術入篮。之所以稱為虛擬網(wǎng)主要是因為整個VPN網(wǎng)絡的任意兩個結點之間的
1.2.代理服務體現(xiàn)為網(wǎng)絡進程的通信
1.2.1本地進程間通信
本地進程間通信主要包括管道陈瘦、系統(tǒng)IPC(包括消息隊列、信號量潮售、信號痊项、共享內存等)锅风、以及套接字socket
1.2.2網(wǎng)絡進程通信方式
通信 : 通信協(xié)議 + 計算機網(wǎng)絡
兩個應用進程之間進行通信發(fā)送報文需要經(jīng)過計算機網(wǎng)絡,而應用進程一般由開發(fā)者控制线婚,計算機網(wǎng)絡由操作系統(tǒng)控制遏弱,所以計算機應用把通信的報文傳給網(wǎng)絡是通過一個socket(套接字)的軟件接口來實現(xiàn),因此套接字也被稱為應用程序和網(wǎng)絡之間的應用程序編程接口塞弊。
2.HTTP正向代理
http代理方式如下圖漱逸,負責將http請求和響應進行轉發(fā)。
2.1.用戶使用http代理
進程由ip地址和端口號來標識游沿,網(wǎng)絡的http代理提供方式都是諸如: ip地址:端口號 的方式饰抒,所以我們使用時也是在瀏覽器或者程序中設置ip和端口號就可以走網(wǎng)絡的http代理服務。
2.2.代理認證
代理認證:
前文提到代理服務器可以做到權限控制诀黍,即控制用戶使用相關資源袋坑。而網(wǎng)絡商的http代理服務器商也是使用代理認證的方式來區(qū)分是否客戶。
如何認證:
對于http代理的認證方式眯勾,分為basic認證和digest認證枣宫,目前主流都是使用basic認證,通過在http請求頭傳遞用戶名和密碼的base64加密字符串來實現(xiàn)認證吃环。
2.3.http正向代理的實現(xiàn)
2.3.1.socket套接字編程具體原理
前面說到應用程序往網(wǎng)絡傳輸層傳遞報文是通過套接字編程來實現(xiàn)的也颤,所以http正向代理也是通過socket來實現(xiàn)的。
客戶端去訪問服務器時郁轻,服務器的進程應該確保已經(jīng)運行起來翅娶,服務器進程會啟動一個serverSocket(歡迎套接字),該套接字是所有客戶端與服務器接觸的起點好唯,隨后該套接字會生成一個新的套接字竭沫,稱為連接套接字,連接套接字負責和客戶端的套接字進行報文數(shù)據(jù)的交換,使用流的方式來傳輸骑篙。
圖片引自博客
2.3.2.http代理服務器實現(xiàn)邏輯
2.3.3.參考例子
開發(fā)一個http代理服務器
java實現(xiàn)的簡單http代理服務器
基于netty實現(xiàn)的代理服務
《計算機網(wǎng)絡 自定向下方法》第六版