发布时间:2012-12-21 16:42:34
前面我们讲到如何加入到一个组播组中,当一个客户端完成了加入一个组播组的操作后,就可以从该组接收数据了。下面我们看看组播数据报接收的详细流程。 通过加入组播组的操作后,网络设备接口已经知道要接收该组的数据报,所以组播数据会从网卡接收进来,一直到达myip_rcv函数,我们就从myip_rcv函数开始,跟踪整个组播数据报的接收流程。 同样,myip_rcv还是先检查数据报的类型(是否为本机需要接收的包),ip首部是否正确,然后调用myip_rcv_finish。 myip_rcv_finish对任何数据报都要先查找输......【阅读全文】
发布时间:2012-12-21 16:34:47
上一篇我们讲到,因为my_inet是系统中第二个加载的IPv4模块,所以网络设备接口早已完成了加入IGMP_ALL_HOST组的操 作,my_inet只是简单增加引用计数和源过滤计数,下面我们来看看,第一个加载的IPv4模块(即内核原有的TCP/IP协议栈模块)是如何把网络设 备接口加入IGMP_ALL_HOST组的。 在myip_mc_inc_group函数中,首先检查in_device->mc_list列表中已加入的组播组,看本接口是否已经加入了 IGMP_ALL_HOST组,结果当然是没有。则,首先创建一个新的结构体s......【阅读全文】
发布时间:2012-12-21 16:32:12
_NODELAY的应用程序也有同样的问题。 TCP_DEFER_ACCEPT 我们首先考虑的第1个选项是 TCP_DEFER_ACCEPT(这是Linux系统上的叫法,其他一些操作系统上也有同样的选项但使用不同的名字)。为了理解 TCP_DEFER_ACCEPT选项的具体思想,我们有必要大致阐述一下典型的HTTP客户/服务器交互过程。请回想下TCP是如何与传输数据的目标建 立连接的。在网络上,在分离的单元之间传输的信息称为IP包(或IP 数据报)。一个包总有一个携带服务信息的包头,包头用于内部协议的处理,并且它也可以携带数据负载。服务信息的典型例子就是一套所谓的标志,它把包标记代 ......【阅读全文】