IP协议分析
文章平均质量分 79
wangpengqi
这个作者很懒,什么都没留下…
展开
-
linux下ip层的一些概念
首先来看这个ip层的结构: 这里看到非常多的netfilter hook,这是因为netfilter主要是针对ip层的。 ip层的主要任务有下面5个方面: 1 ip数据包的校验 2 防火墙的处理(也就是netfilter子系统) 3 处理options(这里的options包含了一些可选的信息。比如时间戳或者源路由option). 4 切转载 2013-08-22 12:15:00 · 1121 阅读 · 0 评论 -
linux下ip协议(V4)的实现(一)
首先来看校验相关的一些结构: 1 net_device结构: 包含一个features的域,这个表示设备的一些特性(比如控制校验),下面的几个flag就是用来控制校验: #define NETIF_F_IP_CSUM 2 /* Can checksum TCP/UDP over IPv4. */ #define NETIF_F_NO_CSUM 4 /转载 2013-08-23 09:45:38 · 1228 阅读 · 0 评论 -
linux下ip协议(V4)的实现(二)
这次主要介绍下forward和local delivery。 上次我们提到当ip_rcv_finish完成后后调用相关的发送函数ip_forward或者ip_local_deliver.这次就主要介绍这两个函数。 先来看forward。 forward一般由下面几部组成: 1 执行ip option 2 确定这个包能被forward 3 减小ttl,当ttl为0时,丢掉这个转载 2013-08-26 18:24:57 · 764 阅读 · 0 评论 -
linux下ip协议(V4)的实现(三)
这次我们来看数据包如何从4层传递到3层。 先看下面的图,这张图表示了4层和3层之间(也就是4层传输给3层)的传输所需要调用的主要的函数: 我们注意到3层最终会把帧用dst_output函数进行输出,而这个函数,我们上一次已经讲过了,他会调用skb->dst->output这个虚函数(他会对包进行3层的处理),而最终会调用一个XX_finish_output的函数,从而转载 2013-08-27 17:54:21 · 962 阅读 · 0 评论 -
linux下ip协议(V4)的实现(四)
这次主要介绍的是ip层的切片与组包的实现。 首先来看一下分片好的帧的一些概念: 1 第一个帧的offset位非0并且MF位为1 2 所有的在第一个帧和最后一个帧之间的帧都拥有长度大于0的域 3 最后一个帧MF位为0 并且offset位非0。(这样就能判断是否是最后一个帧了). 这里要注意在linux中,ip头的frag_off域包含了 rfcip头的定义中的转载 2013-08-30 18:43:32 · 1071 阅读 · 0 评论 -
IP协议(RFC791)-IP包格式
IP封包格式(IPv4包首部长度为20字节)Internet Header Format 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1转载 2013-11-21 15:39:03 · 2575 阅读 · 0 评论 -
基于tcpdump实例讲解TCP/IP协议
前言虽然网络编程的socket大家很多都会操作,但是很多还是不熟悉socket编程中,底层TCP/IP协议的交互过程,本文会一个简单的客户端程序和服务端程序的交互过程,使用tcpdump抓包,实例讲解客户端和服务端的TCP/IP交互细节。TCP/IP协议IP头和TCP头格式如下:Internet Header Format 0转载 2013-11-21 12:02:19 · 1344 阅读 · 0 评论