UDP跟踪器字节顺序翻转取决于响应状态

2024-06-28 15:00:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用python编写一个bittorrent客户机(用于我自己的学习)。我的代码正在向UDP跟踪器发送请求,但是我收到了一些奇怪的响应,这些响应对我来说毫无意义。我使用tcpdump查看原始数据包,似乎跟踪器正在改变其响应的字节顺序。有时它们看起来像是大端顺序(这是我所期望的),但是错误响应似乎部分是以小端顺序排列的。我知道这听起来很疯狂,所以我怀疑我一定是错过了什么,但我一辈子都搞不清是什么。在

下面是一个很好的回答:

11:57:50.676956 IP 31.172.63.252.80 > 192.168.1.4.52404: UDP, length 20
    0x0000:  4500 0030 0000 4000 3011 2969 1fac 3ffc  E..0..@.0.)i..?.
    0x0010:  c0a8 0104 0050 ccb4 001c bf4e 0000 0002  .....P.....N....
    0x0020:  2134 0ba3 0000 1ebf 0000 000a 0000 066c  !4.............l

您可以在第三行末尾看到,action字段等于000 0002,这是协议中预期的按大端顺序排列的“scrape/success”值。在

事情变得奇怪了:

^{pr2}$

这似乎是一条错误消息,根据协议规范,action字段应该具有值3,按大端顺序应该是0000 0003。但是这个响应给出的是0300 0000,它是3的小端顺序。在

这让我很困惑,我希望有比我聪明的人能帮我弄清楚到底发生了什么。在

编辑:这是我参考的两个站点:official docs和文档引用的another site。在


Tags: 代码ip协议客户机字节顺序错误action