随笔分类 -  linux C

摘要:在写路由器时,涉及到对ARP数据包的传输和接收!本来我是打算将广播,传输,接收一块儿写完之后再来说这块儿的,但是下午突然就没心思了,明天开始要休息五天,所以决定先把目前写了的部分讲述一下吧!我们先来看看ARP数据包的结构:一个ARP数据包为42个字节,前14个字节为以太网首部,后28个字节为ARP请求/应答部分。在看代码之前,我们首先得弄懂,ARP数据包的传输原理。假设A想B发送一个数据包,A并不知道B在哪里,那么A首先会发一个广播的ARP请求,这个网段上的所有计算机(电脑)都会接收到来自A的ARP请求,由于每台计算机(电脑)都有自己唯一的MAC和IP,那么它会分析目的IP是不是自己的IP,如 阅读全文
posted @ 2014-01-14 14:18 爱吃冰红茶 阅读(2147) 评论(0) 推荐(0)
摘要:最近打算写一个简单路由器,里面有用到ioctl获取网络接口信息,那就先把这部分单独拿出来说一说吧!ioctl这个函数,可以用来对特殊文件的基础设备参数进行操作,它们可以完成与打开文件描述符相关联的控制功能。在程序启动时获得主机上所有接口的信息: 接口的地址、接口是否支持广播、是否支持多播等等。成功返回0,出错则返回-1。本文里只是单独对获取网络接口信息部分讲解。先列出一些本文里ioctl的相关ioctl 请求的request 参数以及arg 地址必须指向的数据类型:request参数相关说明 指向数据类型SIOCGIFCONF获取所有接口信息struct ifconfSIOCGIFADDR获取 阅读全文
posted @ 2014-01-13 11:15 爱吃冰红茶 阅读(1139) 评论(0) 推荐(0)