如何从链路层收到的数据报中访问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()。

TCP/IP(二):数据链路层和网络层

数据链路层 数据链路层的功能: 1)将数据封装成帧,帧是数据链路层传输的单位 2)控制帧的传输:处理简单的传输差错,调节发送速率,接送方匹配 3)维持两个连接网络实体间的链路建立、维持和释放管理...
  • sweetgum2012
  • sweetgum2012
  • 2016年04月17日 14:38
  • 5522

TCP/IP详解——数据链路层

1.概述      数据链路层属于计算机网络的底层,使用的信道主要有点对点信道和广播信道两种类型。        在TCP/IP协议族中,数据链路层主要有三个目的:           1)为IP模块...
  • yangquanhui1991
  • yangquanhui1991
  • 2016年06月15日 15:56
  • 4498

TCP/IP链路层作用与实现过程

根据TCP/IP协议,网络分4层,如图所示
  • u010571316
  • u010571316
  • 2014年11月09日 19:36
  • 1370

[计算机网络-1] TCP/IP数据包格式详解-包括数据链路层的头部

最近在进行一些路由软件的编程,发现自己对数据报格式并不是十分清楚,所以就查阅了相关资料,总结如下,供大家参考,也可以称为自己日后的工具。 图中括号中的数字代表的是当前域所占的空间大小,单位是b...
  • shishengshi
  • shishengshi
  • 2013年12月19日 11:24
  • 3207

TCP/IP协议各层数据格式及首部含义

TCP/IP四层模型 原帖:http://www.cnblogs.com/BlueTzar/articles/811160.html TCP/IP参考模型      ISO制定的OSI参考模型的...
  • yefanchen01
  • yefanchen01
  • 2017年04月11日 14:36
  • 1110

TCP层的分段和IP层的分片之间的关系 & MTU和MSS之间的关系

首先说明:数据报的分段和分片确实发生,分段发生在传输层,分片发生在网络层。但是对于分段来说,这是经常发生在UDP传输层协议上的情况,对于传输层使用TCP协议的通道来说,这种事情很少发生。 1,MTU(...
  • yusiguyuan
  • yusiguyuan
  • 2014年04月02日 10:16
  • 9300

TCP/IP四层模型解析

1.TCP/IP四层模型与OSI七层模型的对应关系1.网络接口层(主机-网络层) 网络接口层与OSI参考模型中的物理层和数据链路层相对应。 它负责监视数据在主机和网络之间的交换。 事...
  • leiflyy
  • leiflyy
  • 2015年11月29日 15:20
  • 4975

TCP/IP链路层详解

在TCP/IP协议簇中,链路层主要有三个目的:⑴ 为IP模块发送和接收IP数据报。⑵ 为ARP模块发送ARP请求和接收ARP应答。⑶ 为RARP发送RARP请求和接收RARP应答。以太网与IEEE80...
  • houdong
  • houdong
  • 2007年02月04日 19:13
  • 5680

IP数据报首部的格式:关于标识(identification)、标志(flag)和片偏移

转自:http://hi.baidu.com/%C7%D8%B7%E7%CF%FE%D4%C2%C3%F7/blog/item/7c8ca8f66b17a6d30b46e01a.html qin:源...
  • fzxy002763
  • fzxy002763
  • 2012年01月30日 13:31
  • 7538

TCP/IP基础(一)OSI7层模型、TCP4层模型、封装与分用

OSI7层模型、TCP4层模型、封装与分用、端口
  • cbf9526
  • cbf9526
  • 2017年12月22日 12:41
  • 100
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何从链路层收到的数据报中访问IP层和TCP层头信息?
举报原因:
原因补充:

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