Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python TCP段中的数据字段从哪个位开始?_Python_Sockets_Tcp_Http Request - Fatal编程技术网

Python TCP段中的数据字段从哪个位开始?

Python TCP段中的数据字段从哪个位开始?,python,sockets,tcp,http-request,Python,Sockets,Tcp,Http Request,我想在Python上使用套接字读取HTTP请求。具体而言,请求行、常规标头和请求标头基于。要执行此操作,我需要读取TCP段的数据字段,但如何知道数据字段从哪个位开始?它将是32的倍数,但我必须强制执行它,即检查前32个字节是否类似于GET/index.html HTTP/1.1。使用流套接字,Python为您处理TCP封装/解除封装。因此,您所要做的就是使用socket recv函数-您收到的第一个字节将在假定格式良好的HTTP请求的情况下获得。TCP头长度是可变的,但它在TCP头本身中声明。

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

使用流套接字,Python为您处理TCP封装/解除封装。因此,您所要做的就是使用socket recv函数-您收到的第一个字节将在假定格式良好的HTTP请求的情况下获得。

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

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


查看以了解更多信息

您这样做是出于教育目的吗?如果不是,考虑简单地使用Python的许多HTTP库中的一个,比如内置URLLB。是的,它是为了教育目的。我只是想看看是否可以用插座来做。