如何从链路层收到的数据报中访问IP层和TCP层头信息?

原创 2005年04月30日 19:22:00
收包时ip_rcp()中第一行skb->nh.iph以前在那里被赋值!  

从网卡开始收数据包开始跟踪一个数据包的接受过程,到ip_rcp()这个函数的时候,他的第一句话是中第一行struct iphdr *iph=skb->nh.iph

可是我看的源码中并没有给skb->nh.iph赋值,有的只是赋了skb->dev之类的,所以这里这个skb->nh.iph是不能用的,我觉得。


不知道他是在那给赋值的,高手看一下:)

Re: 收包时ip_rcp()中第一行skb->nh.iph以前在那里被赋值! [re:linuxask] 

2.6.9 dev.c

netif_receive_skb()
skb->h.raw = skb->nh.raw = skb->data;

=========================================

自己的评论:

网卡接收到数据后,在接收函数中分配一个skb的空间,把数据从网卡芯片上的buffer拷贝到skb->data为起始地址的内存中,此时skb->data中是以目的MAC地址,源MAC地址起始的MAC帧。此时skb结构中其它变量为0。但是上面的那个赋值语句将h和nh中指针的位置设置成与skb->data相同,也就是

此时(链路层)skb->data指向了MAC头,IP层头部,TCP层头部。

这就意味着这个时候如果你想访问h(tcp头)中的变量,必须这样:

struct tcphdr *temp;

temp = (struct tcphdr *)((char *)skb->data + sizeof(struct iphdr));

此时temp的指针指向了数据报中TCP头结构--struct tcphdr。

如果你想访问IP头信息,则 struct iphdr *iph = skb->nh.iph

此时iph指向了IP头结构---struct iphdr。

在eth_trans_type的开始去掉mac头后,上传到IP层,IP层负责接收的函数是

ip_rcv()。

数据报在链路层的接收(kernel2.6.35)

数据报在链路层的接收(kernel2.6.35) 网络设备在接收到来自网络中其它主机的数据报,或本地环回接口的数据报之后,交给协议栈的netif_rx函数,该函数首先要为收到的这个skb打上当前的时...

【计算机网络】——TCP/IP网络层,IP地址,IP协议,IP数据报的分片及组装详解

网络层  TCP/IP体系中网络层十分重要,本篇文章主要介绍IP(Internet Protocol)协议。   网络层的主要作用是“实现终端节点之间的通信”。这种终端节点之间的通信也叫作“点对点通...

TCP/IP详解卷1:协议(第二章:链路层)

以太网和IEEE 802封装 8 0 2 . 3针对整个C S M A / C D网络 8 0 2 . 4针对令牌总线网络 8 0 2 . 5针对令牌环网络 8 0 2 . 2则定...

《TCP/IP详解 卷一协议》第二章 链路层

1.链路层的三个目的:a为IP模块发送和接受数据包 b.为ARP模块发送ARP请求和接受ARP应答 c.为ARP模块发送RARP请求和接受RARP应答。 2.硬件地址是48bit,ARP和R...

TCP/IP协议详解学习笔记-- 链路层(包含CentOS6.5下抓包工具tcpdump的使用)

a链路层的目的 b以太网和IEEE 802封装IEEE 8023帧结构 Ethernet II帧结构 帧识别 cPPP点对点协议PPP数据帧格式 比特填充与字符填充 d环回接口环回接口处理IP数据报的...

《TCP/IP详解 卷1》 笔记: 链路层

引言     在TCP/IP协议族中,链路层主要有三个目的:(1)为IP模块发送和接收IP数据报;(2)为ARP模块发送ARP请求和接收ARP应答;(3)为RARP发送RARP请求和接收RARP应答...

TCP/IP详解卷1:协议(二)【链路层】

链路层主要有三个目的:(1)为IP模块发送和接收IP数据报;(2)为ARP模块发送ARP请求和接收ARP应答;(3)为RARP发送RARP请求和接收RARP应答。TCP/IP支持多种不同的链路层协议,...
  • WuLex
  • WuLex
  • 2017年11月13日 09:59
  • 94

TCP/IP详解卷1 读书笔记:第二章 链路层

链路层作用 链路层主要有三个作用:(1)为I P模块发送和接收I P数据报;(2)为A R P模块发送 A R P请求和接收 A R P应答;(3)为R A R P发送R A R P请求和接收R A ...
  • wwww4
  • wwww4
  • 2015年09月28日 23:34
  • 467

TCP/IP详解卷1:第二章(链路层)

1. 以太网和IEEE 802封装
  • fzyz_sb
  • fzyz_sb
  • 2014年10月20日 20:39
  • 818

再看TCP/IP第一卷>关于链路层的知识细节及相关协议

关于链路层的知识细节及相关协议  http://www.cnblogs.com/guguli/p/4452249.html 在TCP/IP协议族中,链路层的主要有三个目的:...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何从链路层收到的数据报中访问IP层和TCP层头信息?
举报原因:
原因补充:

(最多只允许输入30个字)