伺服器獲取客戶端請求地址
1. TCP伺服器怎麼獲得客戶端socket連接的IP
你是想知道代碼還是想了解原理,一般的C/S模型都由客戶端發出連接請求(客戶端在代碼中都是存有伺服器端的具體ip地址和埠信息(也就是伺服器端的INET協議族地址結構)的),當客戶端發送連接請求後,伺服器端通過accpet函數接收連接請求,accpet函數示例:accept(ServerSocket,(struct sockaddr *)&from,&len) (from是一個INET協議族地址結構變數,(struct sockaddr *)的作用是把INET協議族地址結構強制轉換為通用地址結構) ,accpet函數在接收連接的同時會把客戶端的具體ip和埠信息賦值給from,所以說客戶端socket連接的ip(非綁定的話客戶機隨機綁定ip和埠)是包含在連接報文數據里,伺服器端只有接收到客戶端發送的連接信息後,才會獲得客戶端的ip和埠信息,獲得具體ip的方式是通過函數,這個函數可以提取出IPv4地址結構中的點分十進制地址,函數用法:inet_ntoa(from.sin_addr)。
2. 如何獲取客戶端ip
取客戶端的IP地址的方法通常是request.getRemoteAddr(),這種方法在大部分情況下都是有效的。如果使用了反向代理軟體(Apache,Squid等),用request.getRemoteAddr()方法獲取的IP地址實際上是代理伺服器的地址。
不過大部分HTTP代理或負載均衡伺服器會將銷鉛X-Forwarded-For作為存放客戶端最原始的IP地址的HTTP請求頭欄位,如果經過多級反向代理的話,IP將會追加在其後並以逗號隔開,X-Forwarded-For的值並不止一個,取X-Forwarded-For中第一個非unknown的有效IP字元串即可。
經過apache http轉發後一般會加上Proxy-Client-IP請求頭握橘,WL-Proxy-Client-IP是它的weblogic插件加段斗團上的請求頭,有些代理伺服器會加上此請求頭HTTP_CLIENT_IP,nginx代理一般會加上請求頭X-Real-IP。獲取方法參考下面:
3. java服務端如何獲得客戶端的ip
serversocket()不提供這個方法,但是server端獲取到的請求new serversocket()().accept()()返回的是一個socket()對象,也就是當前連接的信息,這裡麵包含有一個 getRemoteAddress方法。多看看API
4. http伺服器怎樣獲取客戶端ip
客戶端
ip
地址是通過
cgi
變數
remote_addr
得到的,這個是
http
伺服器負責提供。
http
伺服器和客戶端瀏覽器之間存在
socket
連接,socket
連接信息包含了另一側的
ip
地址和埠。
當然,最終用戶如果是通過代理伺服器訪問怎麼辦呢?目前主流的
http
代理伺服器都支持在
http
報頭添加
x-forwarded-for
信息,這可以是一個列表,如果所有的代理
5. 伺服器如何獲取客戶端的IP地址,並與客戶端建立TCP連接
客戶端的IP自動獲取,關鍵要看客戶端的IP是由誰來分配的,如果都是有ISP提供的那麼伺服器利用IP去連接客戶端就不太可能。可以嘗試用下面兩種思路解決:
1、能否讓客戶機主動連接伺服器。
2、使用動態DNS。讓每個客戶機都申請一個動態域名,無論它的IP怎樣變,當改變以後都會到DNS伺服器進行注冊,然後伺服器使用主機的名字訪問客戶端。
6. 什麼是https它和http的主要區別在哪裡
一、什麼是HTTPS
HTTPS是在HTTP上建立SSL加密層,並對傳輸數據進行加密,是HTTP協議的安全版。HTTPS主要作用是:
(1)對數據進行加密,並建立一個信息安全通道,來保證傳輸過程中的數據安全;
(2)對網站伺服器進行真實身份認證。
二、什麼是HTTP
HTTP是互聯網上應用最為廣泛的一種網路協議,是一個客戶端和伺服器端請求和應答的標准(TCP),用於從WWW伺服器傳輸超文本到本地瀏覽器的傳輸協議。HTTP是採用明文形式進行數據傳輸,極易被不法分子竊取和篡改。
1、HTTPS是加密傳輸協議,HTTP是明文傳輸協議;
2、HTTPS需要用到SSL證書,而HTTP不用;
3、HTTPS比HTTP更加安全,對搜索引擎更友好,利於SEO;
4、 HTTPS標准埠443,HTTP標准埠80;
5、 HTTPS基於傳輸層,HTTP基於應用層;
6、 HTTPS在瀏覽器顯示綠色安全鎖,HTTP沒有顯示;
總的來說HTTPS比HTTP更加安全,能夠有效的保護網站用戶的隱私信息安全,這也是為什麼現在的HTTPS網站越來越多。