数据字段在哪个位开始在TCP段中?

时间:2015-04-08 01:30:25

标签: python sockets tcp http-request

我想在Python上使用套接字读取HTTP请求。具体而言,请求行,常规标题和请求标题基于this。要执行此操作,我需要读取TCP段的数据字段,但我如何知道数据字段在哪个位上启动?它将是32的倍数,但我必须强制它(即检查前32个字节是否类似" GET /index.html HTTP / 1.1")。

2 个答案:

答案 0 :(得分:0)

使用流套接字,Python会为您处理TCP封装/解封装。因此,您所要做的就是使用套接字recv函数 - 您收到的第一个字节将是GET(假设格式正确的HTTP请求)。

答案 1 :(得分:0)

TCP标头长度是可变的,但它在TCP标头本身中声明。 第13个字节的前4位(位96-99)是32位字中数据偏移或标题大小的二进制表示。

因此,例如,最小数据偏移量为20个字节,因此标头中的数据偏移字段将为0101。即5个32位字= 5 * 4个字节= 20个字节。

查看wikipedia page for TCP了解更多信息