
Linux
文章平均质量分 75
wfhh000
这个作者很懒,什么都没留下…
展开
-
IP之Overview
4 Internet Protocol Layer4.1 概述 上图是IP layer的调用关系。 上图为IP address的类型。 If ((HostIP ^ DestinationIP) & SubnetMask)==0),该语句决定了本地地址跟目的地址是否在同一个子网中。 [此为原创,转载请标明出处,谢谢!]原创 2015-01-29 14:53:44 · 498 阅读 · 0 评论 -
IP之IPv6
4.2.6 IPv6 IPv6 header有固定的40bytes,没有option field,但是它有扩展头部。Traffic class:类似于IPv4的TOS。Flow label:用来识别相同流的数据包,如:视频流。Payload lenght:不包括40bytes的ip header的数据包长度,多大为65535bytes。Next header:表明上层协原创 2015-03-11 21:27:18 · 819 阅读 · 0 评论 -
IP之NAT(二)
4.2.5 NAT的实现Source nat的hook name是NF_INET_POST_ROUTING,Destination nat的hook name是NF_INET_PRE_REOUTING和NF_INET_LOCAL_OUT。建立source nat和destination nat的hook的数据结构(在/net/ipv4/netfilter/nf_nat_rule.c ):原创 2015-03-01 20:47:40 · 1444 阅读 · 0 评论 -
IP之NAT(一)
4.2.4 NAT私有地址如下:10.0.0.0 – 10.255.255.255 (10.0.0.0/8),172.16.0.0 – 172.31.255.255 (172.16.0.0/12),192.168.0.0 – 192.168.255.255 (192.168.0.0/16) NAT对于ICMP协议的影响对于icmp协议,不仅icmp packet的h原创 2015-02-15 11:06:40 · 1040 阅读 · 0 评论 -
网络部分之概述
1、sk_buff在这里,我不想描述sk_buff的结构,因为网上已经有很多资料了。当一个数据包被网络设备接收时,alloc_skb()将被调用,用来为packet分配一块空的buffer,如下图: 起初,它是一个空的buffer,所以所有的指针都有跟head相同的值,当packet到达时,skb_put()被调用,它会改变几个头部指针,让他们指向正确的位置,就形成了下面的原创 2015-01-04 20:03:59 · 419 阅读 · 0 评论 -
IP之Fragmentation
4.2.3 Fragmentation and ReassemblyIP的MTU是65536bytes;而Ethernet的MTU为1518bytes,所以需要分片,而router可能会对packet再次分片。注意:分片的payload部分一定是8bytes的倍数。属于同一个packet的所有分片的identifier field(位于IP header)的值相同,在flags fie原创 2015-02-09 09:26:04 · 3179 阅读 · 0 评论 -
Link layer之Ethernet
3.5 EthernetEthernet的link layer由mac sublayer和LLC syblayer构成。Mac sublayer负责封装packets和media access control。下图是没有标签的Ethernet frame。 Preamble:用户同步物理信号,固定为1010...1010,Little-Endian bit ordering,共原创 2015-01-18 16:35:51 · 802 阅读 · 0 评论 -
IP之IP Packet Format
4.2.2 IP Packet Format 有很多资料都在介绍ip header,所以我只介绍一些需要注意的field。 Header Length:仅仅是IP header的长度,是4字节的倍数,如果没有options,则为20bytes。 Type of Service (TOS):根据RFC791 和 1349定义如下图: 而RFC 2474 定义前六个bi原创 2015-02-06 09:30:57 · 3175 阅读 · 0 评论 -
Link layer之PPP
3.4 Point-to-Point Protocol(PPP)它有三个组件:一个封装上层协议的方法Link Control Protocol(LCP):负责链接的建立和断开。Network Control Protocol(NCP):负责配置不同网络层的选项。3.4.1 PPP Operaton数据包交互过程如下:1、PPP首先发送LCP packets来建立连接和测原创 2015-01-16 12:30:53 · 826 阅读 · 0 评论 -
Link layer之device driver
3.7 Device DriversDriver在跟device通信之前,需要先初始化环境,包括:probing I/O ports、probing IRQs。 DMA是在没有CPU的干涉下将大块数据从内存传输数据(或将大块数据传输到内存)。有两种方式可以出发DMA传输:1)Read() or wirte()被调用2)硬件异步的写数据到内存 DMA的操作步骤如下:原创 2015-01-25 19:47:37 · 547 阅读 · 0 评论 -
Link layer之Bridge
3.6 BridgingHub:也叫repeater hub,是一个Layer-1 device,也就是说它只会将数据包广播到所有port上。Mac bridge:也叫bridge和Layer-2 switch,因为它可以分析ethernet header,所以有self-learning(自学习)功能,可以有效的避免广播,节省带宽。当发生组播时,打开GMRP 功能,可以有效的减少组播的带原创 2015-01-21 09:57:41 · 876 阅读 · 0 评论 -
IP之routing(二)
接《IP之routing(一)》Two-level hashing(fib structure) Routing cache的数据结构叫做rt_hash_table,它是rt_hash_bucket的一个数组,它中的每个数组元素都指向rtable的list,而rt_hash()的参数有3个:source ip、destination ip、服务类型。如果发生routing原创 2015-02-03 10:14:11 · 810 阅读 · 0 评论 -
网络部分之Physical Layer
2 Physical LayerPhysical layer需要将data转换成signal,所以需要2 steps:Step 1,叫做information coding,来对数据进行压缩和保护。Step2,叫做modulation,把数据信号调制成模拟信号。 2.1 传输模型现在我们来描述一下传输和接收流在physical layer上的处理过程。1、首先,信息源产原创 2015-01-12 12:26:05 · 717 阅读 · 0 评论 -
IP之routing(一)
4.2 Data-plane protocol for IPv44.2.1 Routing table查找routing table 是用一个叫做longest prefix matching的原则来实现的,举例说明,有A和B两个公司,A拥有从194.24.0.0 到 194.24.6.255的IP,所以在routing table中与A对应的routing entry应该是192.24.原创 2015-01-31 20:52:14 · 1006 阅读 · 0 评论 -
网络部分之link layer
3 link layer3.1 Frame Delimiting在100BASE-X中,使用4B/5B encoding。这种编码的特点是将欲发送的数据流每4bit作为一个组,然后按照4B/5B编码规则将其转换成相应5bit码。5bit码共有32种组合,但只采用其中 的16种对应4bit码的16种,其他的16种或者未用或者用作控制码,以表示帧的开始和结束、光纤线路的状态(静止、空闲、暂原创 2015-01-10 13:37:16 · 637 阅读 · 0 评论 -
IP之ARP
4.3 Control-plane protocol4.3.1 ARP当一个host需要得到目的host的mac时,它会广播一个arp request。目的host(或gateway)会应答一个arp reply(单播)。hardware addresstype 和protocoladdress type表明哪个协议用在链路层或网络层。如果是Ethernet则hardwar原创 2015-03-23 12:17:58 · 950 阅读 · 0 评论