[英]SSL Handshake and Server Response
我想知道,如果網站內容在SSL握手或TCP握手期間發生更改,會發生什么情況?
例如:
TCP或SSL握手恰好在客戶端和服務器之間的16:02:00開始,並且由於某種原因握手需要花費很長時間,例如5秒鍾。
因此握手在16:02:05處完成,但有一定延遲,但成功完成了,客戶端開始獲取內容。
但是,如果網站內容在ssl握手時發生更改,例如在16:02:03發生更改,會發生什么?
假設在16:02:00,網站內容為:“ ABCD”(當ssl或tcp握手啟動時)
並在16:02:03更改為:“ ABCD1234”(同時繼續握手)
這樣客戶就可以得到其中一個。 “ ABCD”還是“ ABCD1234”?
這是我的客戶端Java代碼,用於獲取服務器響應:
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(host, port));
URL obj = new URL(url); // url is https
HttpURLConnection con = (HttpURLConnection) obj.openConnection(proxy);
con.setConnectTimeout(10000);
con.setReadTimeout(15000);
int responseCode = con.getResponseCode();
InputStream is = con.getInputStream();
服務器發送在打開響應文件時(或從何處獲取響應)的當前響應。 只有在服務器收到HTTP請求后,才能知道完整的URL。 僅在已建立的SSL隧道內的SSL握手之后才執行此請求。 因此,它將不提供握手之前的版本。
您帖子中包含的代碼並未明確使用SSL,但是對於SSL,必須先進行握手。 握手完成(並且有效)之前,不會下載任何內容,因為在此之前無法進行任何請求。 必須完成握手才能正確編碼和解碼請求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.