SSL握手和服务器响应

时间:2015-11-28 14:18:57

标签: java http ssl tcp https

我想知道如果在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();

2 个答案:

答案 0 :(得分:1)

服务器在打开响应文件时(或从中获取响应的任何位置)发送当前响应。仅在服务器收到HTTP请求后才知道完整URL。此请求仅在已建立的SSL隧道内的SSL握手之后完成。因此,它不会在握手之前提供版本。

答案 1 :(得分:0)

您的帖子中包含的代码并未使用明确的SSL,但使用SSL时,必须先进行握手。在握手完成(并且有效)之前不会下载任何内容,因为在此之前不能执行任何请求。必须完成Handskake才能正确编码和解码请求。