http请求和将HTTP请求文本写入80端口上的tcp / ip socket之间有什么区别

时间:2011-12-06 17:48:43

标签: http sockets

有人可以解释HTTP请求与80端口上的处理和套接字请求之间的区别。据我所知,HTTP服务器监听80端口,当有人在此端口上发送HTTP请求时 - 服务器处理它。因此,当我们将套接字侦听器放在端口80上,然后将HTML格式的消息写入其中时 - 这是否意味着我们发送通常的HTTP请求?但正如小提琴手所说 - 这是假的。数据包级别有什么区别?或者在HTTP请求和HTTP形成的写入套接字之间的另一个低于表示级别?感谢。

1 个答案:

答案 0 :(得分:5)

首先,端口80是HTTP的默认端口,不是必需的。您也可以让HTTP服务器在其他端口上侦听。

关于“常规”HTTP请求与您通过套接字创建的HTTP请求之间的区别 - 没有区别。您所指的“常规”HTTP请求(例如,由Web浏览器创建)也通过套接字实现,就像您自己手动执行一样。服务器也是如此。 HTTP服务器的实现侦听传入的套接字连接并解析传递到那里的数据,就像你一样。

只要您发送套接字有效的HTTP协议(根据RFC),数据包级别应该没有差异(如果较低的网络堆栈相同)。

请记住,套接字层只是HTTP数据始终传递的层。将数据放在那里并不重要,它只是以与放入数据相同的方式从另一方面出来。

请注意,您自己实施HTTP时有一定的自由度。有许多可选字段,标题的顺序无关紧要。因此,两个不同的HTTP实现可能在数据包级别上有所不同,但行为基本相同。

实际查看数据包级别的最佳方法是使用网络嗅探器 - 例如wireshark或packetyzer。嗅探器实际上记录网络的数据包并向您显示其内容。因此,如果您记录多个HTTP实现(来自各种浏览器)和您自己的套接字实现,您可以进行必要的更改,使它们在数据包级别相同。