+14就是跳过头部,裂友吵从第14字节起才是IP协议告扮的报文内容,随便用抓捕肆侍器抓一个包,可以看到这部分前导14个字节是源地址和目的地址以及类型,它们不属于IP协议本身。
socket编程写了一个简单的DNS服务器。是这样实现的斗渣,用两台PC,一个做客户端,一个做服务器;
在服务器用socket监视53端口,recvfrom()函数负责接收DNS查询报文,将其存入事先写好的数据结构里;
因为DNS查询报文和应答报文的前部分字段格式都是一样的,只是修改了几个参数,然后重点把DNS应答报文后面的字段进行增添。
然后陆念用sendto();函数发送就可以了。
在ie里面输入任意的网址,回车,就会触发客户端向服务器发出DNS查询报文,
此空悉悄时你可以同时在服务器和客户端抓包,看收到的报文是否正确。
注意几点:
1、一定要熟悉报文结构,定义合适的结构体,将报文进行解析
2、一定要注意网络序和主机序的转换htonl(),htons(),ntohl(),ntohs()等
3、找个熟知端口,最好是你熟悉的协议,如ftp,http,dns等。
4、客户端要把DNS服务器配置为你的服务器ip。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)