由于最经做模拟TCP三次握手的实验,需要用到raw socket编程。
运行第一段代码,发送ip数据报,第二段代码接收ip数据报。需要运行第二段代码,否则将无法接收数据报。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<sys/socket.h>
#include<sys/types.h>
#include<netinet/in.h>
struct iphead{ //该结构体模拟IP首部(代码中,控制套接字不添加IP数据包首部,需要自己添加),
//关于各变量的含义,可对照IP数据报格式,一目了然。
unsigned char ip_hl:4, ip_version:4; //ip_hl,ip_version各占四个bit位。
unsigned char ip_tos;
unsigned short int ip_len;
unsigned short int ip_id;
unsigned short int ip_off;
unsigned char ip_ttl;
unsigned char ip_pro;
uns