2012年4月12日
摘要: icmp(Internet Control Message Protocol)协议是在接收端在接收到发送端发送的数据后(分两种情况,接收和转发),无法把数据上传或转发,需要回馈一个信息给发送端,典型的例子,当接收端接收到数据包后,没有找到把数据发送出去的路由表项,此时就会发送一个icmp包给发送端,告诉发送端,目的不可达。而主机收到的icmp数据包一般都是应答包,比如接收发送目的不可达的数据包回来,接收端就会接收到这个包,并根据类型,把信息打印出来。当收到应答包时,接收方就不需要再回复一个应答包给对方,从而避免的循环回复。本地发送数据包,如果找不到IP地址对应的MAC地址时,会发送arp广播查 阅读全文
posted @ 2012-04-12 09:53 image eye 阅读(2562) 评论(2) 推荐(0) 编辑
  2012年4月10日
摘要: 本地路由表项由rt_base指针管理,记录本机路由表,当一个IP包需要传输到本子网以外的网络时,就需要通过网关使用路由器来转发,那怎么找到网关呢,就查找由rt_base指针所管理的路由表。在linux下,我们会用 route add default gw 192.168.1.1命令来设置默认网关,把默认网关设置到路由表中,使用route命令可以查看本机设置的路由表。如下是一个设置网关的函数static int set_gateway(void){ static int sock_fd = -1; struct rtentry rt; U32 dstaddr, gwaddr; dstaddr = 阅读全文
posted @ 2012-04-10 17:05 image eye 阅读(7984) 评论(0) 推荐(1) 编辑
  2012年4月9日
摘要: Arp(adress resolution protocol—地址解析协议)是在传输IP包时,因不知道IP地址对应的MAC地址,无法传送数据引起的,通过arp,建立目的IP跟MAC地址的映射关系,从而获得目的IP的MAC地址。Arp头部的数据结构如下:typedefstruct arphdr { unsignedshort arp_hrd;/*硬件类型,*/ unsignedshort arp_pro;/*协议类型*/ unsignedchar arp_hln;/*硬件地址长度*/ unsignedchar arp_pln;/*协议地址长度*/ unsigne... 阅读全文
posted @ 2012-04-09 11:21 image eye 阅读(3047) 评论(1) 推荐(3) 编辑
  2012年4月6日
摘要: http://www.cnitblog.com/guopingleee/archive/2007/10/14/34843.html端到端与点到点是针对网络中传输的两端设备间的关系而言的。端到端传输指的是在数据传输前,经过各种各样的交换设备,在两端设备问建立一条链路,就象它们是直接相连的一样,链路建立后,发送端就可以发送数据,直至数据发送完毕,接收端确认接收成功。点到点系统指的是发送端把数据传给与它直接相连的设备,这台设备在合适的时候又把数据传给与之直接相连的下一台设备,通过一台一台直接相连的设备,把数据传到接收端。 端到端传输的优点是链路建立后,发送端知道接收设备一定能收到,而且经过中间交 阅读全文
posted @ 2012-04-06 23:19 image eye 阅读(3018) 评论(0) 推荐(1) 编辑
摘要: 阅读全文
posted @ 2012-04-06 16:50 image eye 阅读(1447) 评论(0) 推荐(2) 编辑
  2012年3月28日
摘要: 同步发行到atpking.com......这因为有个任务涉及到使用telnet 来连接远端的路由器,获取信息,之后进行处理.所以需要写一个自动telnet登录到远端,之后获取信息进行处理的程序.自己C++ 一塌糊涂,所以几乎最开始就没打算用C++或者C写论自己的实力,还是走C#路线稍微稳妥一点吧,因为telnet 是使用tcp/ip 协议折腾的事情很容易的想到使用socket来实现telnet(当然你可以在进程里启用telnet 命令,只不过总觉得那样不够技术,而且操作不自由--受限于telnet 这个指令)ok,翻协议,弄清原理,结果比预想的难度要大一些定义================ 阅读全文
posted @ 2012-03-28 18:05 image eye 阅读(14708) 评论(5) 推荐(5) 编辑
摘要: 一.开启telnet服务 出于安全考虑,linux默认是不允许telnet的.如果你需要使用telnet服务,首先你需要开启这项服务. 方法如下: 1.cp /etc/xinetd.d/telnet /etc/xinetd.d/telnet.bak(首先做个备份,以备将来有问题的时候恢复,要养成这个习惯) 2.vi /etc/xinetd.d/telnet,把结尾的disable=yes改为no.保存退出 3.重启xinetd服务 service xinetd restart OK,现在你就可以使用telnet服务了(当然你的防火墙设置要允许) 4.允许开机时自动启动telnet... 阅读全文
posted @ 2012-03-28 17:58 image eye 阅读(1812) 评论(0) 推荐(0) 编辑
  2012年2月28日
摘要: 在网上看了许多前辈的文章,就是无法理解报告描述符中的那些数字字符所表达的含义,几经周折,总算大致了解了。codecharMouseReportDescriptor[63]={ 0x05,0x01,//USAGE_PAGE(GenericDesktop) 0x09,0x06,//USAGE(Keyboard) 0xa1,0x01,//COLLECTION(Application)0x05,0x07,//USAGE_PAGE(Keyboard) 0x19,0xe0,//USAGE_MINIMUM(KeyboardLeftControl) 0x29,0xe7,//USAGE_MAXIMUM(Keyb 阅读全文
posted @ 2012-02-28 20:25 image eye 阅读(4048) 评论(2) 推荐(1) 编辑
  2012年2月15日
摘要: Realtek8168网卡时pci接口的网卡,其驱动程序就是一个PCI设备的驱动程序实例,我们一起看看其流程。1. 首先,初始化模块调用static inline int pci_register_driver(struct pci_driver *driver)函数来注册设备驱动,这个函数的参数是struct pci_driver *driver,对应于r8168,就是static struct pci_driver rtl8168_pci_driver = { .name = MODULENAME, .id_table = rtl8168_pci_tbl, .probe = rtl8168 阅读全文
posted @ 2012-02-15 17:00 image eye 阅读(11237) 评论(0) 推荐(1) 编辑
摘要: 有了设备模型基础及usb设备驱动的基础知识,来了解PCI设备驱动,就相对简单了,因为PCI设备驱动仍然套用了设备驱动模型的方式,用到的仍然是设备模型的相应函数,只是把相应的pci设备挂载到PCI总线的device队列,而凭此驱动则挂载到pci总线的driver队列,对应的匹配函数,探测函数,都是pci总线提供的函数。因为pci设备驱动的安装跟usb设备驱动的安装模式相似,因此,其繁杂的地方则是如何发现设备并把设备添加到pci设备队列中去这个步骤了。网上有一篇文章很好的介绍了PCI设备的枚举过程:(原文:http://www.diybl.com/course/6_system/linux/Lin 阅读全文
posted @ 2012-02-15 15:21 image eye 阅读(11823) 评论(0) 推荐(1) 编辑