在TCP协议中,发起连接的Client端首先会发送一条SYN报文,用来发起TCP连接请求。这条SYN报文的本质是TCP报文,只不过flags字段中SYN位置为1。
且SYN的序列号是随机的,所以可以用一个随机函数来生成随机数。而ack确认号是0。
TCP报文和UDP报文一样,需要设置源和目标端口号,表示关联的应用程序。
完成代码:
on key 'c'
{
ppkt.tcp.Init();//tcp init
ppkt.tcp.source = 52;//source port
ppkt.tcp.destination = 17;//destination port
ppkt.tcp.sequence = random(0xFFFFFFFF);//sequence number: random
ppkt.tcp.ackNumber = 0;//ack number: 0
ppkt.tcp.offset = 5;//tcp header length: 5 x 4 = 20
ppkt.tcp.flags = 0x02;//msb to lsb: URG ACK PSH RST SYN FIN
ppkt.tcp.window = 0xFFFF;//received window
ppkt.tcp.pointer = 0;
ppkt.ipv4.source = ipGetAddressAsNumber("192.168.0.52");
ppkt.ipv4.destinati