客户端(浏览器)如何生成发送到服务器的请求?

时间:2010-11-05 20:17:36

标签: http client request network-protocols

一旦用户点击URL,本地机器会在hosts文件上查找是否有任何条目,如果不是本地机器ping某些DNS(如何?在哪里?)来解析URL并获取相关的IP地址...一旦获得IP,它就会在该IP地址上打开一个套接字通道并与服务器进行交互...

这准确吗?

我正在尝试逐步详细了解如何生成请求并将其发送到服务器。

感谢您的投入!

4 个答案:

答案 0 :(得分:4)

有关DNS如何工作的详细概述,请参阅RFC 1035以及HTTP如何工作,请参阅RFC 2616

这些是规范性文件。它们非常详细,但是如果你坚持使用整体操作部分并查找那些需要澄清的部分,它们会非常有用。

基本上对于您想要解释的任何协议(在更深层次上您可能希望看到TCP),获取信息的最详细的地方是RFC。

答案 1 :(得分:2)

我假设你在谈论TCP连接。正如您所说,客户端将在其hosts文件中进行查找;如果没有条目,它将查找其第一个配置的DNS服务器(基于手动配置或DHCP设置)并启动与该服务器的连接。一旦客户端具有所需服务器的地址,它将向该服务器发送SYN数据包,该服务器将使用SYN / ACK进行回复,并且客户端将使用ACK数据包进行回复以建立连接。这是TCP handshake。建立连接后,客户端和服务器通过各自的套接字进行通信,通过TCP协议层传递数据,并发送纠错和元数据包以相互协调。此信息包含请求的类型,通常取决于协议。对于HTTP,这通常是GET或POST请求,服务器会相应地对其进行响应。如果您需要更具体的信息,可以发布您对此感兴趣的协议吗?

答案 2 :(得分:1)

是。你越来越正确了。

它在hosts文件中查找,然后在DNS中查找。在linux机器上,您可以更改etc / resolv.conf文件中的顺序。

您的主DNS服务器是在tcp / ip设置中配置的。 DNS正在使用端口UDP / 53进行此类请求。如果您的DNS无法解析主机名,则会将其转发到父DNS,但这是另一个主题。 在获取IP地址后,它使用地址(IP +端口)打开服务器的套接字。

希望它有所帮助。

答案 3 :(得分:1)

http://betterexplained.com/wp-content/uploads/compression/HTTP_request.png