我正在做一些网络编程。我正在尝试创建tcp和ip报头。我在阅读中发现,有两种方法可以做到这一点: 1)基于linux和2)基于BSD。
我希望使用linux方法来实现这一点,实际上包括linux/ip.h和linux/tcp.h。我要查找的头类型是
struct tcphdr {
unsigned short source;
unsigned short dest;
unsigned long seq;
unsigned long ack_seq;
unsigned short doff:4;
unsigned char syn;
在linux中,netstat命令告诉我们系统中活动套接字的信息。
我知道netstat使用/proc/net/tcp来获取系统网络信息。
因为netstat手册页上说netstat已经过时,所以我们应该使用'ss‘。
NOTE
This program is obsolete. Replacement for netstat is ss. Replacement
for netstat -r is ip route. Replacement for netstat -i is ip -s link.
Replacement for netstat -g i
我正在尝试实现握手功能(SOCK_RAW)。我正在发送SYN数据包,服务器通过SYN+ACK数据包进行响应,但是我用重置完成了连接
import socket, sys
from struct import *
import codecs
def checksum(msg):
s = 0
for i in range(0, len(msg), 2):
w = ord(msg[i]) + (ord(msg[i+1]) << 8 )
s = s + w
s = (s>>16) + (s & 0xffff);