Да ... протокол TCP гарантирует, что прикладной уровень будет видеть только пакеты в порядке и в собранном виде.Теперь, если вы говорите о создании какого-либо низкоуровневого интерфейса для анализа самого IP-пакета, вы можете попробовать его с помощью RAW-сокетов , которые должны предоставить вам доступ к информации заголовка IP.Вот пример:
import socket
# the public network interface
HOST = socket.gethostbyname(socket.gethostname())
# create a raw socket and bind it to the public interface
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP)
s.bind((HOST, 0))
# Include IP headers
s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
# receive all packages
s.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON)
# receive a package
print s.recvfrom(65565)
# disabled promiscuous mode
s.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF)
безбожно взято из документации модуля сокета python: http://docs.python.org/library/socket.html