当前位置: 技术问答>docker中文入门学习手册
iis7站长之家
网络面试题,linux + c +socket,搞的头都大了,请高手帮忙!!
来源: 互联网 发布时间:2016-08-11
本文导语: 题目一 1.能够捕获网络上的数据包。 2.若捕获的数据包为IP包,打印其上层协议类型,若上层协议为TCP/UDP则再次打印其应用层协议类型(如http.smtp等). 3.若捕获的数据包非IP包,则打印其源MAC,目的MAX,以及...
题目一
1.能够捕获网络上的数据包。
2.若捕获的数据包为IP包,打印其上层协议类型,若上层协议为TCP/UDP则再次打印其应用层协议类型(如http.smtp等).
3.若捕获的数据包非IP包,则打印其源MAC,目的MAX,以及协议类型。
4.能够在端口9001上监听其他应用的UDP请求,并打印其请求的数据包内容(头部及数据体部分独立打印,内容见下面)
5.回复其他应用的UDP请求。
题目二
1.与题目一通过9001端口通讯,给题目一发送数据桢(桢格式如下所示)
2.支持使用IP地址作为参数连接题目二。
3.数据包长度随机产生,范围:1~255
4.打印题目一回复的内容并记录到文件。
请求桢格式至少包含:
版本号 3bit
请求类型 2bit 00->Request 01->Response 10/11->Reserved
数据长度 8bit
序列号 16bit,每发送一个数据包值曾一
数据体 0~255byte,起始位置包含32字节欢迎信息,其它内容随机生成。
环境为redhat 9.0,请高手看看用C代码如何实现上面2个功能,说说大致思路,需要用到那些知识,最好有代码参考。socket我刚入门,谢谢!!
1.能够捕获网络上的数据包。
2.若捕获的数据包为IP包,打印其上层协议类型,若上层协议为TCP/UDP则再次打印其应用层协议类型(如http.smtp等).
3.若捕获的数据包非IP包,则打印其源MAC,目的MAX,以及协议类型。
4.能够在端口9001上监听其他应用的UDP请求,并打印其请求的数据包内容(头部及数据体部分独立打印,内容见下面)
5.回复其他应用的UDP请求。
题目二
1.与题目一通过9001端口通讯,给题目一发送数据桢(桢格式如下所示)
2.支持使用IP地址作为参数连接题目二。
3.数据包长度随机产生,范围:1~255
4.打印题目一回复的内容并记录到文件。
请求桢格式至少包含:
版本号 3bit
请求类型 2bit 00->Request 01->Response 10/11->Reserved
数据长度 8bit
序列号 16bit,每发送一个数据包值曾一
数据体 0~255byte,起始位置包含32字节欢迎信息,其它内容随机生成。
环境为redhat 9.0,请高手看看用C代码如何实现上面2个功能,说说大致思路,需要用到那些知识,最好有代码参考。socket我刚入门,谢谢!!
|
抓包底层用libpcap来支持,否则没办法实现,然后分析包的格式就行了
发包如果需要高度定制,底层要用libnet,否则也没办法实现
PS:这个不是面试题吧?应该是你的一个什么项目或者作业才对...
发包如果需要高度定制,底层要用libnet,否则也没办法实现
PS:这个不是面试题吧?应该是你的一个什么项目或者作业才对...
|
题1:
如果只需要ip层或者ip层以上的包,RAW socket是可以实现全部监听的.
你把RAW socket的3种模式看下,再看看TCP/IP几种包头的结构,差不多就能做了.
如果只需要ip层或者ip层以上的包,RAW socket是可以实现全部监听的.
你把RAW socket的3种模式看下,再看看TCP/IP几种包头的结构,差不多就能做了.
|
LINUX下使用socket(PF_PACKET, SOCK_RAW, htons(ETH_P_IP))能够抓到到本机的所有包,如果要抓网络上的包,要把网卡设成混杂
模式,把包抓进来进行分析就行。。。
同时你要另外建一个SOCKET作为UDP服务器, 上面的只能抓包不能回复。。。
libpcap和libnet也可以,不过你要先花很多时间去了解它们的框架
模式,把包抓进来进行分析就行。。。
同时你要另外建一个SOCKET作为UDP服务器, 上面的只能抓包不能回复。。。
libpcap和libnet也可以,不过你要先花很多时间去了解它们的框架