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

Dan*_*kiy 2 sockets http

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

tal*_*kol 5

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

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

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

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

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

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