繁体   English   中英

http请求和将HTTP请求文本写入80端口上的tcp / ip套接字有什么区别

[英]What's the difference between http request and writing http request text to tcp/ip socket on 80 port

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

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

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

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

请记住,套接字层只是HTTP数据始终经过的层。 谁将数据存储在其中并不重要,它只是从另一端以相同的方式输出。

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

实际查看数据包级别发生情况的最佳方法是使用网络嗅探器-如Wireshark或Packetyzer。 嗅探器实际上会记录网络的数据包并向您显示其内容。 因此,如果您记录了几个HTTP实现(来自各种浏览器)和您自己的套接字实现,则可以进行所需的更改以使它们在数据包级别相同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM