1.TCP/IP详解卷1:协议目录
2.通过源码理解rarp协议(基于linux1.2.13)
3.Wireshark介绍、源码Wireshark使用教程
4.深度解析Linux内核协议栈探索网络通信的源码奥秘linux内核协议栈
5.TCP/IP详解å·1ï¼åè®®çä½åç®å½
6.sniffer状态
TCP/IP详解卷1:协议目录
译者序
前言
第1章 概述1
第2章 链路层
第3章 IP:网际协议
第4章 ARP:地址解析协议
第5章 RARP:逆地址解析协议
第6章 ICMP:Internet控制报文协议
第7章 Ping程序
第8章 Traceroute程序
第9章 IP选路
第章 动态选路协议
第章 UDP:用户数据报协议
第章 广播和多播
第章 IGMP:Internet组管理协议
第章 DNS:域名系统
第章 TFTP:简单文件传送协议
第章 BOOTP: 引导程序协议
第章 TCP:传输控制协议
第章 TCP连接的建立与终止
第章 TCP的交互数据流
第章 TCP的成块数据流
第章 TCP的超时与重传
第章 TCP的坚持定时器
第章 TCP的保活定时器
第章 TCP的未来和性能
第章 SNMP:简单网络管理协议
第章 Telnet和Rlogin:远程登录
第章 FTP:文件传送协议
第章 SMTP:简单邮件传送协议
第章 网络文件系统
第章 其他的TCP/IP应用程序
附录A tcpdump程序
附录B 计算机时钟
附录C sock程序
附录D 部分习题的解答
附录E 配置选项
附录F 可以免费获得的源代码
参考文献
缩略语
通过源码理解rarp协议(基于linux1.2.)
rarp协议用于基于mac地址查询ip,主要在没有ip的源码主机使用,以下为rarp协议的源码格式和作用原理。
rarp与arp协议相似,源码通过mac地址查询ip地址,源码特色指标源码 弘历操作系统内维护转换表,源码表项来源于用户通过接口设置,源码可使用ioctl函数进行增删改查操作,源码关注新增逻辑,源码其中arpreq定义用于插入表项(若不存在)。源码
rarp_init函数负责底层注册节点,源码当mac底层接收到ETH_P_RARP类型数据包时,源码执行rarp_packet_type中定义的源码rarp_packet_type函数。
rarp_rcv函数处理接收到的源码rarp请求,解析数据,根据请求mac地址在表中查找对应ip,若存在,则调用arp_send函数发送回包。
这是rarp协议早期实现的概述,旨在通过源码理解其工作原理和关键操作。
Wireshark介绍、Wireshark使用教程
一、简介:Wireshark(前称 Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark 使用 WinPCAP 作为接口,直接与网卡进行数据报文交换。
网络封包分析软件的功能可想像成 电工技师使用电表来量测电流、电压、电阻 的工作 - 只是将场景移植到网络上,并将电线替换成网络线。在过去,网络封包分析软件是非常昂贵的,或是专门属于营利用的软件。Ethereal 的出现改变了这一切。在 GNUGPL 通用许可证的保障范围底下,使用者可以以免费的代价取得软件与其源代码,并拥有针对其源代码修改及客制化的权利。Ethereal 是目前全世界最广泛的网络封包分析软件之一。
网络管理员使用 Wireshark 来检测网络问题,网络安全工程师使用 Wireshark 来检查资讯安全相关问题,开发者使用Wireshark 来为新的通讯协定除错,普通使用者使用 Wireshark 来学习网络协定的相关知识。当然,有的人也会居心叵测的用它来寻找一些敏感信息
Wireshark 不是入侵侦测系统(Intrusion Detection System,IDS)。对于网络上的异常流量行为,Wireshark 不会产生警示或是任何提示。然而,仔细分析 Wireshark 撷取的封包能够帮助使用者对于网络行为有更清楚的了解。Wireshark 不会对网络封包产生内容的修改,它只会反映出目前流通的封包资讯。 Wireshark 本身也不会送出封包至网络上。
wireshark 能获取 HTTP,也能获取 HTTPS,但是不能解密 HTTPS,所以 wireshark 看不懂 HTTPS 中的内容,如果是处理 HTTP,HTTPS 还是用 Fiddler,其他协议比如 TCP,UDP 就用 wireshark。同类产品:tcpview
二、工作流程:
(1)确定 Wireshark 的位置。如果没有一个正确的位置,启动 Wireshark 后会花费很长的时间捕获一些与自己无关的数据。
(2)选择捕获接口。社保卡源码一般都是选择连接到 Internet 网络的接口,这样才可以捕获到与网络相关的数据。否则,捕获到的其它数据对自己也没有任何帮助。
(3)使用捕获过滤器。通过设置捕获过滤器,可以避免产生过大的捕获文件。这样用户在分析数据时,也不会受其它数据干扰。而且,还可以为用户节约大量的时间。
(4)使用显示过滤器。通常使用捕获过滤器过滤后的数据,往往还是很复杂。为了使过滤的数据包再更细致,此时使用显示过滤器进行过滤。
(5)使用着色规则。通常使用显示过滤器过滤后的数据,都是有用的数据包。如果想更加突出的显示某个会话,可以使用着色规则高亮显示。
(6)构建图表。如果想要更明显的看出一个网络中数据的变化情况,使用图表的形式可以很方便的展现数据分布情况。
(7)重组数据。Wireshark 的重组功能,可以重组一个会话中不同数据包的信息,或者是一个重组一个完整的或文件。由于传输的文件往往较大,所以信息分布在多个数据包中。为了能够查看到整个或文件,这时候就需要使用重组数据的方法来实现。
三、使用教程:
1、英文版界面菜单及布局:
2、捕捉过滤器:
捕捉过滤器的语法与其它使用Lipcap(Linux)或者Winpcap(Windows)库开发的软件一样,比如著名的TCPdump。捕捉过滤器必须在开始捕捉前设置完毕,这一点跟显示过滤器是不同的。
设置捕捉过滤器的步骤是:
- 选择 capture - options。
- 填写capture filter栏或者点击capture filter按钮为您的过滤器起一个名字并保存,以便在今后的捕捉中继续使用这个过滤器。
- 点击开始(Start)进行捕捉。
语法:Protocol Direction Host(s) Value Logical Operations Other expression
例子:tcp dst .1.1.1 and tcp dst .2.2.2
Protocol(协议):
可能的值: ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp and udp.
如果没有特别指明是什么协议,则默认使用所有支持的协议。
Direction(方向):
可能的值: src, dst, src and dst, src or dst
如果没有特别指明来源或目的地,则默认使用 src or dst 作为关键字。
例如,host .2.2.2与src or dst host .2.2.2是一样的。
Host(s):
可能的值: net, port, host, portrange.
如果没有指定此值,则默认使用host关键字。
例如,src .1.1.1与src host .1.1.1相同。
Logical Operations(逻辑运算):
可能的值:not, and, or.
否(not)具有最高的优先级。或(or)和与(and)具有相同的优先级,运算时从左至右进行。例如,
not tcp port and tcp port 与(not tcp port ) and tcp port 相同。
not tcp port and tcp port 与not (tcp port and tcp port )不同。
例子:
tcp dst port 显示目的TCP端口为的封包。
ip src host .1.1.1 显示来源IP地址为.1.1.1的封包。
host .1.2.3 显示目的或来源IP地址为.1.2.3的封包。
src portrange - 显示来源为UDP或TCP,并且端口号在至范围内的封包。
not imcp 显示除了icmp以外的深圳商城源码公司所有封包。(icmp通常被ping工具使用)
src host .7.2. and not dst net ..0.0/ 显示来源IP地址为.7.2.,但目的地不是..0.0/的封包。
(src host .4.1. or src net .6.0.0/) and tcp dst portrange - and dst net .0.0.0/8 显示来源IP为.4.1.或者来源网络为.6.0.0/,目的地TCP端口号在至之间,并且目的位于网络.0.0.0/8内的所有封包。
注意事项:
当使用关键字作为值时,需使用反斜杠\。
ether proto \ip (与关键字ip相同).
这样写将会以IP协议作为目标。
ip proto \icmp (与关键字icmp相同).
这样写将会以ping工具常用的icmp作为目标。
可以在ip或ether后面使用multicast及broadcast关键字。
当您想排除广播请求时,no broadcast就会非常有用。
3、显示过滤器:
通常经过捕捉过滤器过滤后的数据还是很复杂。此时您可以使用显示过滤器进行更加细致的查找。
它的功能比捕捉过滤器更为强大,而且在您想修改过滤器条件时,并不需要重新捕捉一次。
语法:Protocol String 1 String 2 Comparison operator Value Logical Operations Other expression
例子:ftp passive ip == .2.3.4 xor icmp.type
Protocol(协议):
您可以使用大量位于OSI模型第2至7层的协议。点击Expression...按钮后,您可以看到它们。
比如:IP,TCP,DNS,SSH
Wireshark的网站提供了对各种 协议以及它们子类的说明。
四、练习:
首次启动:本案例的客户端有 4 块网卡,其中出口网卡被命名为 ,使用 Wireshark 版本是 v2.0.1
双击 出口网卡 ,开始捕捉包。或者从菜单开始此步,注意勾选混杂模式:
正在对 网卡 进行捕包:
滚屏设置:
封包列表(Packet List Pane)的面板中显示:编号,时间戳,源地址,目标地址,协议,长度,以及封包信息。
不同的协议用了不同的颜色显示,也可以修改这些显示颜色的规则, View -Coloring Rules
保存后的本地文件:
查看 arp 协议的数据包:
查看与某个地址相关的握手:
深度解析Linux内核协议栈探索网络通信的奥秘linux内核协议栈
近年来,随着互联网的普及和信息技术的不断发展,网络通信的重要性日益凸显。而在网络通信中,协议栈是至关重要的环节。Linux内核协议栈作为Linux操作系统的核心组成部分之一,是实现网络通信的关键组件。本文将详细介绍Linux内核协议栈的结构和工作原理,探索网络通信的奥秘。
一、Linux内核协议栈的结构
Linux内核协议栈主要由五个层次组成,分别是应用层、传输层、网络层、数据链路层和物理层。
(1)应用层
应用层是网络通信的最上层。在Linux内核中,应用层由一系列协议组成,例如HTTP协议、FTP协议、SMTP协议等。这些协议负责处理应用程序与网络的交互过程,将应用程序发送的数据转化为可传输的网络数据包。
(2)传输层
传输层是应用层下的一个子层。在Linux内核中,吾爱免费源码网站传输层主要由TCP协议和UDP协议组成。它们负责将应用程序转化的数据传输到网络层。
(3)网络层
网络层是传输层下的一个子层。在Linux内核中,网络层由IP协议、ICMP协议和IGMP协议组成。网络层负责将传输层传输的数据包进行路由和寻址,保证数据包传输到达目的地址。
(4)数据链路层
数据链路层是网络层下的一个子层。在Linux内核中,数据链路层由以太网协议、ARP协议和RARP协议组成。数据链路层负责将网络层传输的数据包进行分段和组装,以及实现局域网内计算机之间的通信。
(5)物理层
物理层是整个协议栈中最底层的一层。物理层负责将数字信号转化为模拟信号,通过物理媒介(例如光缆或者电缆)进行传输。
二、Linux内核协议栈的工作原理
Linux内核协议栈中各个层次之间的数据传输是通过TCP/IP协议进行的。当应用程序需要发送数据时,会将数据打包成数据包,然后通过传输层的TCP或UDP协议进行传输。传输层将数据包进行封装并加入TCP或UDP头部信息后,将数据包传输到网络层。在网络层,数据包的IP地址和端口号信息被加入IP头部,同时添加了用于检验数据完整性的校验和。然后,数据包被传输到数据链路层进行分段和组装,最终通过物理层传输到接收方计算机。
需要注意的是,Linux内核协议栈中的每个层次都需要进行协议处理和数据加工,这个过程需要消耗大量的系统资源。因此,在进行网络通信时,需要科学地配置协议栈,保证数据的快速传输。
三、深入学习Linux内核协议栈的方法
如果想要深入学习Linux内核协议栈,你需要掌握以下知识点:
(1)Linux内核协议栈的结构和工作原理;
(2)TCP/IP协议的基本原理和应用场景;
(3)Linux操作系统的基本知识和网络编程技能。
此外,还可以通过阅读相关的书籍和博客,以及参与开源社区中的Linux内核开发实践来深入学习。
参考文献:
1. Linux内核源代码解析.卷2:进程,内存和文件系统;
2. TCP/IP详解。
文章讲了怎样深入学习Linux内核协议栈,以及Linux内核协议栈的结构和工作原理,探索网络通信的奥秘。
TCP/IP详解å·1ï¼åè®®çä½åç®å½
è¯è åºåè¨
第1ç« æ¦è¿°1
1.1 å¼è¨1
1.2 åå±1
1.3 TCP/IPçåå±4
1.4 äºèç½çå°å5
1.5 ååç³»ç»6
1.6 å°è£ 6
1.7 åç¨8
1.8 客æ·-æå¡å¨æ¨¡å8
1.9 端å£å·9
1. æ ååè¿ç¨
1. RFC
1. æ åçç®åæå¡
1. äºèç½
1. å®ç°
1. åºç¨ç¼ç¨æ¥å£
1. æµè¯ç½ç»
1. å°ç»
第2ç« é¾è·¯å±
2.1 å¼è¨
2.2 以太ç½åIEEE å°è£
2.3 å°¾é¨å°è£
2.4 SLIPï¼ä¸²è¡çº¿è·¯IP
2.5 å缩çSLIP
2.6 PPPï¼ç¹å¯¹ç¹åè®®
2.7 ç¯åæ¥å£
2.8 æå¤§ä¼ è¾åå MTU
2.9 è·¯å¾MTU
2. 串è¡çº¿è·¯ååé计ç®
2. å°ç»
第3ç« IPï¼ç½é åè®®
3.1 å¼è¨
3.2 IPé¦é¨
3.3 IPè·¯ç±éæ©
3.4 åç½å¯»å
3.5 åç½æ©ç
3.6 ç¹æ®æ åµçIPå°å
3.7 ä¸ä¸ªåç½çä¾å
3.8 ifconfigå½ä»¤
3.9 netstatå½ä»¤
3. IPçæªæ¥
3. å°ç»
第4ç« ARPï¼å°å解æåè®®
4.1 å¼è¨
4.2 ä¸ä¸ªä¾å
4.3 ARPé«éç¼å
4.4 ARPçåç»æ ¼å¼
4.5 ARP举ä¾
4.5.1 ä¸è¬çä¾å
4.5.2 对ä¸åå¨ä¸»æºçARP请æ±
4.5.3 ARPé«éç¼åè¶ æ¶è®¾ç½®
4.6 ARP代ç
4.7 å è´¹ARP
4.8 arpå½ä»¤
4.9 å°ç»
第5ç« RARPï¼éå°å解æåè®®
5.1 å¼è¨
5.2 RARPçåç»æ ¼å¼
5.3 RARP举ä¾
5.4 RARPæå¡å¨ç设计
5.4.1 ä½ä¸ºç¨æ·è¿ç¨çRARPæå¡å¨
5.4.2 æ¯ä¸ªç½ç»æå¤ä¸ªRARPæå¡å¨
5.5 å°ç»
第6ç« ICMPï¼Internetæ§å¶æ¥æåè®®
6.1 å¼è¨
6.2 ICMPæ¥æçç±»å
6.3 ICMPå°åæ©ç 请æ±ä¸åºç
6.4 ICMPæ¶é´æ³è¯·æ±ä¸åºç
6.4.1 举ä¾
6.4.2 å¦ä¸ç§æ¹æ³
6.5 ICMP端å£ä¸å¯è¾¾å·®é
6.6 ICMPæ¥æç4.4BSDå¤ç
6.7 å°ç»
第7ç« Pingç¨åº
7.1 å¼è¨
7.2 Pingç¨åº
7.2.1 LANè¾åº
7.2.2 WANè¾åº
7.2.3 线路SLIPé¾æ¥
7.2.4 æ¨å·SLIPé¾è·¯
7.3 IPè®°å½è·¯ç±é项
7.3.1 é常çä¾å
7.3.2 å¼å¸¸çè¾åº
7.4 IPæ¶é´æ³é项
7.5 å°ç»
第8ç« Tracerouteç¨åº
8.1 å¼è¨
8.2 Traceroute ç¨åºçæä½
8.3 å±åç½è¾åº
8.4 广åç½è¾åº
8.5 IPæºç«éè·¯é项
8.5.1 宽æ¾çæºç«éè·¯çtraceroute
ç¨åºç¤ºä¾
8.5.2 ä¸¥æ ¼çæºç«éè·¯çtraceroute
ç¨åºç¤ºä¾
8.5.3 宽æ¾çæºç«éè·¯tracerouteç¨åº
çå¾è¿è·¯ç±
8.6 å°ç»
第9ç« IPéè·¯
9.1 å¼è¨
9.2 éè·¯çåç
9.2.1 ç®åè·¯ç±è¡¨
9.2.2 åå§åè·¯ç±è¡¨
9.2.3 è¾å¤æçè·¯ç±è¡¨
9.2.4 没æå°è¾¾ç®çå°çè·¯ç±
9.3 ICMP主æºä¸ç½ç»ä¸å¯è¾¾å·®é
9.4 转åæä¸è½¬å
9.5 ICMPéå®åå·®é
9.5.1 ä¸ä¸ªä¾å
9.5.2 æ´å¤çç»è
9.6 ICMPè·¯ç±å¨åç°æ¥æ
9.6.1 è·¯ç±å¨æä½
9.6.2 主æºæä½
9.6.3 å®ç°
9.7 å°ç»
ç¬¬ç« å¨æéè·¯åè®®
.1 å¼è¨
.2 å¨æéè·¯
.3 Unixéè·¯å®æ¤ç¨åº
.4 RIPï¼é路信æ¯åè®®
.4.1 æ¥ææ ¼å¼
.4.2 æ£å¸¸è¿è¡
.4.3 度é
.4.4 é®é¢
.4.5 举ä¾
.4.6 å¦ä¸ä¸ªä¾å
.5 RIPçæ¬
.6 OSPFï¼å¼æ¾æçè·¯å¾ä¼å
.7 BGPï¼è¾¹çç½å ³åè®®
.8 CIDRï¼æ ç±»ååé´éè·¯
.9 å°ç»
ç¬¬ç« UDPï¼ç¨æ·æ°æ®æ¥åè®®
.1 å¼è¨
.2 UDPé¦é¨
.3 UDPæ£éªå
.3.1 tcpdumpè¾åº
.3.2 ä¸äºç»è®¡ç»æ
.4 ä¸ä¸ªç®åçä¾å
.5 IPåç
.6 ICMPä¸å¯è¾¾å·®éï¼éè¦åçï¼
.7 ç¨Tracerouteç¡®å®è·¯å¾MTU
.8 éç¨UDPçè·¯å¾MTUåç°
.9 UDPåARPä¹é´ç交äºä½ç¨
. æ大UDPæ°æ®æ¥é¿åº¦
. ICMPæºç«æå¶å·®é
. UDPæå¡å¨ç设计
..1 客æ·IPå°åå端å£å·
..2 ç®æ IPå°å
..3 UDPè¾å ¥éå
..4 éå¶æ¬å°IPå°å
..5 éå¶è¿ç«¯IPå°å
..6 æ¯ä¸ªç«¯å£æå¤ä¸ªæ¥æ¶è
. å°ç»
ç¬¬ç« å¹¿æåå¤æ
.1 å¼è¨
.2 广æ
.2.1 åéç广æ
.2.2 æåç½ç»ç广æ
.2.3 æååç½ç广æ
.2.4 æåææåç½ç广æ
.3 广æçä¾å
.4 å¤æ
.4.1 å¤æç»å°å
.4.2 å¤æç»å°åå°ä»¥å¤ªç½å°åç转æ¢
.4.3 FDDIå令çç¯ç½ç»ä¸çå¤æ
.5 å°ç»
ç¬¬ç« IGMPï¼Internetç»ç®¡çåè®®
.1 å¼è¨
.2 IGMPæ¥æ
.3 IGMPåè®®
.3.1 å å ¥ä¸ä¸ªå¤æç»
.3.2 IGMPæ¥ååæ¥è¯¢
.3.3 å®ç°ç»è
.3.4 çåæ¶é´å段
.3.5 ææ主æºç»
.4 ä¸ä¸ªä¾å
.5 å°ç»
ç¬¬ç« DNSï¼ååç³»ç»
.1 å¼è¨
.2 DNSåºç¡
.3 DNSçæ¥ææ ¼å¼
.3.1 DNSæ¥è¯¢æ¥æä¸çé®é¢é¨å
.3.2 DNSååºæ¥æä¸çèµæºè®°å½é¨å
.4 ä¸ä¸ªç®åçä¾å
.5 æéæ¥è¯¢
.5.1 举ä¾
.5.2 主æºåæ£æ¥
.6 èµæºè®°å½
.7 é«éç¼å
.8 ç¨UDPè¿æ¯ç¨TCP
.9 å¦ä¸ä¸ªä¾å
. å°ç»
ç¬¬ç« TFTPï¼ç®åæä»¶ä¼ éåè®®
.1 å¼è¨
.2 åè®®
.3 ä¸ä¸ªä¾å
.4 å®å ¨æ§
.5 å°ç»
ç¬¬ç« BOOTP: å¼å¯¼ç¨åºåè®®
.1 å¼è¨
.2 BOOTPçåç»æ ¼å¼
.3 ä¸ä¸ªä¾å
.4 BOOTPæå¡å¨ç设计
.5 BOOTPç©¿è¶è·¯ç±å¨
.6 ç¹å®ååä¿¡æ¯
.7 å°ç»
ç¬¬ç« TCPï¼ä¼ è¾æ§å¶åè®®
.1 å¼è¨
.2 TCPçæå¡
.3 TCPçé¦é¨
.4 å°ç»
ç¬¬ç« TCPè¿æ¥ç建ç«ä¸ç»æ¢
.1 å¼è¨
.2 è¿æ¥ç建ç«ä¸ç»æ¢
.2.1 tcpdumpçè¾åº
.2.2 æ¶é´ç³»å
.2.3 建ç«è¿æ¥åè®®
.2.4 è¿æ¥ç»æ¢åè®®
.2.5 æ£å¸¸çtcpdumpè¾åº
.3 è¿æ¥å»ºç«çè¶ æ¶
.3.1 第ä¸æ¬¡è¶ æ¶æ¶é´
.3.2 æå¡ç±»åå段
.4 æ大æ¥æ段é¿åº¦
.5 TCPçåå ³é
.6 TCPçç¶æåè¿å¾
.6.1 2MSLçå¾ ç¶æ
.6.2 å¹³éæ¶é´çæ¦å¿µ
.6.3 FIN_WAIT_2ç¶æ
.7 å¤ä½æ¥æ段
.7.1 å°ä¸åå¨ç端å£çè¿æ¥è¯·æ±
.7.2 å¼å¸¸ç»æ¢ä¸ä¸ªè¿æ¥
.7.3 æ£æµåæå¼è¿æ¥
.8 åæ¶æå¼
.9 åæ¶å ³é
. TCPé项
. TCPæå¡å¨ç设计
..1 TCPæå¡å¨ç«¯å£å·
..2 éå®çæ¬å°IPå°å
..3 éå®çè¿ç«¯IPå°å
..4 å¼å ¥è¿æ¥è¯·æ±éå
. å°ç»
ç¬¬ç« TCPç交äºæ°æ®æµ
.1 å¼è¨
.2 交äºå¼è¾å ¥
.3 ç»åæ¶å»¶ç确认
.4 Nagleç®æ³
.4.1 å ³éNagleç®æ³
.4.2 ä¸ä¸ªä¾å
.5 çªå£å¤§å°éå
.6 å°ç»
ç¬¬ç« TCPçæåæ°æ®æµ
.1 å¼è¨
.2 æ£å¸¸æ°æ®æµ
.3 æ»å¨çªå£
.4 çªå£å¤§å°
.5 PUSHæ å¿
.6 æ ¢å¯å¨
.7 æåæ°æ®çååé
.7.1 带宽æ¶å»¶ä¹ç§¯
.7.2 æ¥å¡
.8 ç´§æ¥æ¹å¼
.9 å°ç»
ç¬¬ç« TCPçè¶ æ¶ä¸éä¼
.1 å¼è¨
.2 è¶ æ¶ä¸éä¼ çç®åä¾å
.3 å¾è¿æ¶é´æµé
.4 å¾è¿æ¶é´RTTçä¾å
.4.1 å¾è¿æ¶é´RTTçæµé
.4.2 RTT估计å¨ç计ç®
.4.3 æ ¢å¯å¨
.5 æ¥å¡ä¸¾ä¾
.6 æ¥å¡é¿å ç®æ³
.7 å¿«ééä¼ ä¸å¿«éæ¢å¤ç®æ³
.8 æ¥å¡ä¸¾ä¾ï¼ç»ï¼
.9 ææ¯æ¡è·¯ç±è¿è¡åº¦é
. ICMPçå·®é
. éæ°åç»
. å°ç»
ç¬¬ç« TCPçåæå®æ¶å¨
.1 å¼è¨
.2 ä¸ä¸ªä¾å
.3 ç³æ¶çªå£ç»¼åç
.4 å°ç»
ç¬¬ç« TCPçä¿æ´»å®æ¶å¨
.1 å¼è¨
.2 æè¿°
.3 ä¿æ´»ä¸¾ä¾
.3.1 å¦ä¸ç«¯å´©æº
.3.2 å¦ä¸ç«¯å´©æºå¹¶éæ°å¯å¨
.3.3 å¦ä¸ç«¯ä¸å¯è¾¾
.4 å°ç»
ç¬¬ç« TCPçæªæ¥åæ§è½
.1 å¼è¨
.2 è·¯å¾MTUåç°
.2.1 ä¸ä¸ªä¾å
.2.2 大åç»è¿æ¯å°åç»
.3 é¿è¥ç®¡é
.4 çªå£æ©å¤§é项
.5 æ¶é´æ³é项
.6 PAWSï¼é²æ¢åç»çåºå·
.7 T/TCPï¼ä¸ºäºå¡ç¨çTCPæ©å±
.8 TCPçæ§è½
.9 å°ç»
ç¬¬ç« SNMPï¼ç®åç½ç»ç®¡çåè®®
.1 å¼è¨
.2 åè®®
.3 管çä¿¡æ¯ç»æ
.4 对象æ è¯ç¬¦
.5 管çä¿¡æ¯åºä»ç»
.6 å®ä¾æ è¯
.6.1 ç®ååé
.6.2 è¡¨æ ¼
.6.3 åå ¸å¼æåº
.7 ä¸äºç®åçä¾å
.7.1 ç®ååé
.7.2 get-nextæä½
.7.3 è¡¨æ ¼ç访é®
.8 管çä¿¡æ¯åº(ç»)
.8.1 systemç»
.8.2 interfaceç»
.8.3 atç»
.8.4 ipç»
.8.5 icmpç»
.8.6 tcpç»
.9 å ¶ä»ä¸äºä¾å
.9.1 æ¥å£MTU
.9.2 è·¯ç±è¡¨
. trap
. ASN.1åBER
. SNMPv
. å°ç»
ç¬¬ç« TelnetåRloginï¼è¿ç¨ç»å½
.1 å¼è¨
.2 Rloginåè®®
.2.1 åºç¨è¿ç¨çå¯å¨
.2.2 æµéæ§å¶
.2.3 客æ·çä¸æé®
.2.4 çªå£å¤§å°çæ¹å
.2.5 æå¡å¨å°å®¢æ·çå½ä»¤
.2.6 客æ·å°æå¡å¨çå½ä»¤
.2.7 客æ·ç转ä¹ç¬¦
.3 Rloginçä¾å
.3.1 åå§ç客æ·-æå¡å¨åè®®
.3.2 客æ·ä¸æé®
.4 Telnetåè®®
.4.1 NVT ASCII
.4.2 Telnetå½ä»¤
.4.3 é项åå
.4.4 åé项åå
.4.5 ååå·¥ãä¸æ¬¡ä¸å符ãä¸æ¬¡
ä¸è¡æè¡æ¹å¼
.4.6 åæ¥ä¿¡å·
.4.7 客æ·ç转ä¹ç¬¦
.5 Telnet举ä¾
.5.1 åå符æ¹å¼
.5.2 è¡æ¹å¼
.5.3 ä¸æ¬¡ä¸è¡æ¹å¼(åè¡æ¹å¼)
.5.4 è¡æ¹å¼ï¼å®¢æ·ä¸æé®
.6 å°ç»
ç¬¬ç« FTPï¼æä»¶ä¼ éåè®®
.1 å¼è¨
.2 FTPåè®®
.2.1 æ°æ®è¡¨ç¤º
.2.2 FTPå½ä»¤
.2.3 FTPåºç
.2.4 è¿æ¥ç®¡ç
.3 FTPçä¾å
.3.1 è¿æ¥ç®¡çï¼ä¸´æ¶æ°æ®ç«¯å£
.3.2 è¿æ¥ç®¡çï¼é»è®¤æ°æ®ç«¯å£
.3.3 ææ¬æä»¶ä¼ è¾ï¼NVT ASCII
表示è¿æ¯å¾å表示
.3.4 å¼å¸¸ä¸æ¢ä¸ä¸ªæ件çä¼ è¾ï¼
Telnetåæ¥ä¿¡å·
.3.5 å¿åFTP
.3.6 æ¥èªä¸ä¸ªæªç¥IPå°åçå¿åFTP
.4 å°ç»
ç¬¬ç« SMTPï¼ç®åé®ä»¶ä¼ éåè®®
.1 å¼è¨
.2 SMTPåè®®
.2.1 ç®åä¾å
.2.2 SMTPå½ä»¤
.2.3 ä¿¡å°ãé¦é¨åæ£æ
.2.4 ä¸ç»§ä»£ç
.2.5 NVT ASCII
.2.6 éè¯é´é
.3 SMTPçä¾å
.3.1 MXè®°å½ï¼ä¸»æºéç´æ¥è¿å°
Internet
.3.2 MXè®°å½ï¼ä¸»æºåºæ é
.3.3 VRFYåEXPNå½ä»¤
.4 SMTPçæªæ¥
.4.1 ä¿¡å°çååï¼æ©å çSMTP
.4.2 é¦é¨ååï¼éASCIIå符
.4.3 æ£æååï¼éç¨Interneté®ä»¶
æ©å
.5 å°ç»
ç¬¬ç« ç½ç»æ件系ç»
.1 å¼è¨
.2 Sunè¿ç¨è¿ç¨è°ç¨
.3 XDRï¼å¤é¨æ°æ®è¡¨ç¤º
.4 端å£æ å°å¨
.5 NFSåè®®
.5.1 æ件å¥æ
.5.2 å®è£ åè®®
.5.3 NFSè¿ç¨
.5.4 UDPè¿æ¯TCP
.5.5 TCPä¸çNFS
.6 NFSå®ä¾
.6.1 ç®åçä¾åï¼è¯»ä¸ä¸ªæ件
.6.2 ç®åçä¾åï¼å建ä¸ä¸ªç®å½
.6.3 æ ç¶æ
.6.4 ä¾åï¼æå¡å¨å´©æº
.6.5 çå¹è¿ç¨
.7 第3ççNFS
.8 å°ç»
ç¬¬ç« å ¶ä»çTCP/IPåºç¨ç¨åº
.1 å¼è¨
.2 Fingeråè®®
.3 Whoisåè®®
.4 ArchieãWAISãGopherãVeronica
åWWW
.4.1 Archie
.4.2 WAIS
.4.3 Gopher
.4.4 Veronica
.4.5 ä¸ç»´ç½WWW
.5 Xçªå£ç³»ç»
.5.1 Xscopeç¨åº
.5.2 LBX: ä½å¸¦å®½X
.6 å°ç»
éå½A tcpdumpç¨åº
éå½B 计ç®æºæ¶é
éå½C sockç¨åº
éå½D é¨åä¹ é¢ç解ç
éå½E é ç½®é项
éå½F å¯ä»¥å è´¹è·å¾çæºä»£ç
åèæç®
缩ç¥è¯
sniffer状态
sniffer是窃听的意思
应该就是窃听状态
sniffers(嗅探器)几乎和internet有一样久的历史了.Sniffer是一种常用的收集有用数据方法,这些数据可以是用户的帐号和密码,可以是一些商用机密数据等等。随着Internet及电子商务的日益普及,Internet的安全也越来越受到重视。在Internet安全隐患中扮演重要角色之一的Sniffer以受到越来越大的关注,所以今天我要向大家介绍一下介绍Sniffer以及如何阻止sniffer。
大多数的黑客仅仅为了探测内部网上的主机并取得控制权,只有那些"雄心勃勃"的黑客,为了控制整个网络才会安装特洛伊木马和后门程序,并清除记录。他们经常使用的手法是安装sniffer。
在内部网上,黑客要想迅速获得大量的账号(包括用户名和密码),最为有效的手段是使用 "sniffer" 程序。这种方法要求运行Sniffer 程序的主机和被监听的主机必须在同一个以太网段上,故而在外部主机上运行sniffer是没有效果的。再者,java如何编写源码必须以root的身份使用sniffer 程序,才能够监听到以太网段上的数据流。谈到以太网sniffer,就必须谈到以太网sniffing。
那么什么是以太网sniffer呢?
以太网sniffing是指对以太网设备上传送的数据包进行侦听,发现感兴趣的包。如果发现符合条件的包,就把它存到一个log文件中
去。通常设置的这些条件是包含字"username"或"password"的包。它的目的是将网络层放到promiscuous模式,从而能干些事情。
Promiscuous模式是指网络上的所有设备都对总线上传送的数据进行侦听,并不仅仅是它们自己的数据。根据第二章中有关对以太网的工作原理的基本介绍,可以知道:一个设备要向某一目标发送数据时,它是对以太网进行广播的。一个连到以太网总线上的设备在任何时间里都在接受数据。不过只是将属于自己的数据传给该计算机上的应用程序。
利用这一点,可以将一台计算机的网络连接设置为接受所有以太
网总线上的数据,从而实现sniffer。
sniffer通常运行在路由器,或有路由器功能的主机上。这样就能对大量的数据进行监控。sniffer属第二层次的攻击。通常是攻击者已经进入了目标系统,然后使用sniffer这种攻击手段,以便得到更多的信息。
sniffer除了能得到口令或用户名外,还能得到更多的其他信息,比如一个其他重要的信息,在网上传送的金融信息等等。sniffer几乎能得到任何以太网上的传送的数据包。黑客会使用各种方法,获得系统的控制权并留下再次侵入的后门,以保证sniffer能够执行。在Solaris 2.x平台上,sniffer 程序通常被安装在/usr/bin 或/dev目录下。黑客还会巧妙的修改时间,使得sniffer程序看上去是和其它系统程序同时安装的。
大多数以太网sniffer程序在后台运行,将结果输出到某个记录文件中。黑客常常会修改ps程序,使得系统管理员很难发现运行的sniffer程序。
以太网sniffer程序将系统的网络接口设定为混合模式。这样,它就可以监听到所有流经同一以太网网段的数据包,不管它的接受者或发送者是不是运行sniffer的主机。 程序将用户名、密码和其它黑客感兴趣的数据存入log文件。黑客会等待一段时间 ----- 比如一周后,再回到这里下载记录文件。
讲了这么多,那么到底我们可以用什么通俗的话来介绍sniffer呢?
计算机网络与电话电路不同,计算机网络是共享通讯通道的。共享意味着计算机能够接收到发送给其它计算机的信息。捕获在网络中传输的数据信息就称为sniffing(窃听)。
以太网是现在应用最广泛的计算机连网方式。以太网协议是在同一回路向所有主机发送数据包信息。数据包头包含有目标主机的正确地址。一般情况下只有具有该地址的主机会接受这个数据包。如果一台主机能够接收所有数据包,而不理会数据包头内容,这种方式通常称为"混杂" 模式。
由于在一个普通的网络环境中,帐号和口令信息以明文方式在以太网中传输, 一旦入侵者获得其中一台主机的root权限,并将其置于混杂模式以窃听网络数据,从而有可能入侵网络中的所有计算机。
一句话,sniffer就是一个用来窃听的黑客手段和工具。
二、sniffer的工作原理
通常在同一个网段的所有网络接口都有访问在物理媒体上传输的所有数据的能力,而每个网络接口都还应该有一个硬件地址,该硬件地址不同于网络中存在的其他网络接口的硬件地址,同时,每个网络至少还要一个广播地址。(代表所有的接口地址),在正常情况下,一个合法的网络接口应该只响应这样的两种数据帧:
1、帧的目标区域具有和本地网络接口相匹配的硬件地址。
2、帧的目标区域具有"广播地址"。
在接受到上面两种情况的数据包时,nc通过cpu产生一个硬件中断,该中断能引起操作系统注意,然后将帧中所包含的数据传送给系统进一步处理。
而sniffer就是一种能将本地nc状态设成(promiscuous)状态的软件,当nc处于这种"混杂"方式时,该nc具备"广播地址",它对所有遭遇到的每一个帧都产生一个硬件中断以便提醒操作系统处理流经该物理媒体上的每一个报文包。(绝大多数的nc具备置成 promiscuous方式的能力)
可见,sniffer工作在网络环境中的底层,它会拦截所有的正在网络上传送的数据,并且通过相应的软件处理,可以实时分析这些数据的内容,进而分析所处的网络状态和整体布局。值得注意的是:sniffer是极其安静的,它是一种消极的安全攻击。
通常sniffer所要关心的内容可以分成这样几类:
1、口令
我想这是绝大多数非法使用sniffer的理由,sniffer可以记录到明文传送的userid和passwd.就算你在网络传送过程中使用了加密的数据,sniffer记录的数据一样有可能使入侵者在家里边吃肉串边想办法算出你的算法。
2、金融帐号
许多用户很放心在网上使用自己的信用卡或现金帐号,然而sniffer可以很轻松截获在网上传送的用户姓名、口令、信用卡号码、截止日期、帐号和pin.
3、偷窥机密或敏感的信息数据
通过拦截数据包,入侵者可以很方便记录别人之间敏感的信息传送,或者干脆拦截整个的email会话过程。
4、窥探低级的协议信息。
这是很可怕的事,我认为,通过对底层的信息协议记录,比如记录两台主机之间的网络接口地址、远程网络接口ip地址、ip路由信息和tcp连接的字节顺序号码等。这些信息由非法入侵的人掌握后将对网络安全构成极大的危害,通常有人用sniffer收集这些信息只有一个原因:他正在进行一次欺诈,(通常的ip地址欺诈就要求你准确插入tcp连接的字节顺序号,这将在以后整理的文章中指出)如果某人很关心这个问题,那么sniffer对他来说只是前奏,今后的问题要大得多。(对于高级的hacker而言,我想这是使用sniffer的唯一理由吧)
二.sniffer的工作环境
snifffer就是能够捕获网络报文的设备。嗅探器的正当用处在于分析网络的流量,以便找出所关心的网络中潜在的问题。例如,假设网络的某一段运行得不是很好,报文的发送比较慢,而我们又不知道问题出在什么地方,此时就可以用嗅探器来作出精确的问题判断。
嗅探器在功能和设计方面有很多不同。有些只能分析一种协议,而另一些可能能够分析几百种协议。一般情况下,大多数的嗅探器至少能够分析下面的协议:
1.标准以太网
2.TCP/IP
3.IPX
4.DECNet
嗅探器通常是软硬件的结合。专用的嗅探器价格非常昂贵。另一方面,免费的嗅探器虽然不需要花什么钱,但得不到什么支持。
嗅探器与一般的键盘捕获程序不同。键盘捕获程序捕获在终端上输入的键值,而嗅探器则捕获真实的网络报文。嗅探器通过将其置身于网络接口来达到这个目的——例如将以太网卡设置成杂收模式。(为了理解杂收模式是怎么回事,先解释局域网是怎么工作的)。
数据在网络上是以很小的称为帧(Ftame)的单位传输的帧由好几部分组成,不同的部分执行不同的功能。(例如,以太网的前个字节存放的是源和目的的地址,这些位告诉网络:数据的来源和去处。以太网帧的其他部分存放实际的用户数据、TCP/IP的报文头或IPX报文头等等)。
帧通过特定的称为网络驱动程序的软件进行成型,然后通过网卡发送到网线上。通过网线到达它们的目的机器,在目的机器的一端执行相反的过程。接收端机器的以太网卡捕获到这些帧,并告诉操作系统帧的到达,然后对其进行存储。就是在这个传输和接收的过程中,嗅探器会造成安全方面的问题。
每一个在LAN上的工作站都有其硬件地址。这些地址唯一地表示着网络上的机器(这一点于Internet地址系统比较相似)。当用户发送一个报文时,这些报文就会发送到LAN上所有可用的机器。
在一般情况下,网络上所有的机器都可以“听”到通过的流量,但对不属于自己的报文则不予响应(换句话说,工作站A不会捕获属于工作站B的数据,而是简单的忽略这些数据)。
如果某在工作站的网络接口处于杂收模式,那么它就可以捕获网络上所有的报文和帧,如果一个工作站被配置成这样的方式,它(包括其软件)就是一个嗅探器。
嗅探器可能造成的危害:
1.嗅探器能够捕获口令
2.能够捕获专用的或者机密的信息
3.可以用来危害网络邻居的安全,或者用来获取更高级别的访问权限
事实上,如果你在网络上存在非授权的嗅探器就以为着你的系统已经暴露在别人面前了。(大家可以试试天行2的嗅探功能)
一般我们只嗅探每个报文的前到个字节。用户名和口令都包含在这一部分中,这是我们关心的真正部分。工人,也可以嗅探给定接口上的所有报文,如果有足够的空间进行存储,有足够的那里进行处理的话,将会发现另一些非常有趣的东西……
简单的放置一个嗅探器宾将其放到随便什么地方将不会起到什么作用。将嗅探器放置于被攻击机器或网络附近,这样将捕获到很多口令,还有一个比较好的方法就是放在网关上。如果这样的话就能捕获网络和其他网络进行身份鉴别的过程。这样的方式将成倍地增加我们能够攻击的范围。
三.谁会使用sniffers
可能谁都回知道谁会使用sniffer,但是并不是每个使用它的人都是网络高手,因为现在有很多的sniffer都成了傻瓜似的了,前段时间用的最多的不外乎oicq sniffer。我想那些喜欢查好友ip的朋友都应该记得它吧。呵呵,我都使用过它,现在当然不用了啊!
当然系统管理员使用sniffer来分析网络信息交通并且找出网络上何处发生问题。一个安全管理员可以同时用多种sniffer, 将它们放置在网络的各处,形成一个入侵警报系统。对于系统管理员来说sniffer是一个非常好的工具,但是它同样是一个经常被黑客使用的工具.骇客安装sniffer以获得用户名和账号,信用卡号码,个人信息,和其他的信息可以导致对你或是你的公司的极大危害如果向坏的方面发展。当它们得到这些信息后,骇客将使用密码来进攻其他的internet 站点甚至倒卖信用卡号码。
三.sniffer是如何在网络上实施的
谈这个问题之前还应该先说一下Ethernet的通讯。通常在同一个网段的所有网络接口都有访问在媒体上传输的所有数据的能力,而每个网络接口都还应该有一个硬件地址,该硬件地址不同于网络中存在的其它网络接口的硬件地址,同时,每个网络至少还要一个广播地址。在正常情况下,一个合法的网络接口应该只响应这样的两种数据帧:
1�帧的目标区域具有和本地网络接口相匹配的硬件地址。
2�帧的目标区域具有“广播地址”。
在接受到上面两种情况的数据包时,网卡通过cpu产生一个硬件中断。该中断能引起操作系统注意,然后将帧中所包含的数据传送给系统进一步处理。而sniffer就是一种能将本地网卡状态设成杂乱模式(promiscuous Mode)的软件。当网卡处于杂乱模式时,该网卡具备“广播地址”,它对所有遇到的每一个帧都产生一个硬件中断以提醒操作系统处理每一个报文包。(绝大多数的网卡具备设置成杂乱模式的能力。
可见,sniffer工作在网络环境中的底层,它会拦截所有的正在网络上传送的数据。通过相应的软件处理,可以实时分析这些数据的内容,进而分析所处的网络状态和整体布局。值得注意的是:sniffer是极其安静的,它是一种消极的安全攻击。
四.哪里可以得到sniffer
我们讲的sniffer,主要是在unix系统下运用的,至于那些oicq sniffer就不在我们讨论的范围。
Sniffer是黑客们最常用的入侵手段之一。你可以在经过允许的网络中运行sniffer,了解它是如何有效地危及本地机器安全。
Sniffer可以是硬件,也可以是软件。现在品种最多,应用最广的是软件Sniffer,绝大多数黑客们用的也是软件Sniffer。
以下是一些也被广泛用于调试网络故障的sniffer工具:
(一).商用sniffer:
1. Network General.
Network General开发了多种产品。最重要的是Expert Sniffer,它不仅仅可以sniff,还能够通过高性能的专门系统发送/接收数据包,帮助诊断故障。还有一个增强产品"Distrbuted Sniffer System"可以将UNIX工作站作为sniffer控制台,而将sniffer agents(代理)分布到远程主机上。
2. Microsoft's Net Monitor
对于某些商业站点,可能同时需要运行多种协议--NetBEUI、IPX/SPX、TCP/IP、.3和SNA等。这时很难找到一种sniffer帮助解决网络问题,因为许多sniffer往往将某些正确的协议数据包当成了错误数据包。Microsoft的Net Monitor(以前叫Bloodhound)可以解决这个难题。它能够正确区分诸如Netware控制数据包、NT NetBios名字服务广播等独特的数据包。(etherfind只会将这些数据包标识为类型的广播数据包。)这个工具运行在MS Windows 平台上。它甚至能够按MAC地址(或主机名)进行网络统计和会话信息监视。只需简单地单击某个会话即可获得tcpdump标准的输出。过滤器设置也是最为简单的,只要在一个对话框中单击需要监视的主机即可。
(二).免费软件sniffer
1. Sniffit由Lawrence Berkeley 实验室开发,运行于Solaris、SGI和Linux等平台。可以选择源、目标地址或地址集合,还可以选择监听的端口、协议和网络接口等。这个SNIFFER默认状态下只接受最先的个字节的信息包,这对于一次登陆会话进程刚刚好。
2. SNORT:这个SNIFFER有很多选项供你使用并可移植性强,可以记录一些连接信息,用来跟踪一些网络活动。
3. TCPDUMP:这个SNIFFER很有名,linux,FREEBSD还搭带在系统上,是一个被很多UNIX高手认为是一个专业的网络管理工具,记得以前TsutomuShimomura(应该叫下村侵吧)就是使用他自己修改过的TCPDUMP版本来记录了KEVINMITNICK攻击他系统的记录,后来就配合FBI抓住了KEVINMITNICK,后来他写了一文:使用这些LOG记录描述了那次的攻击,HowMitnickhackedTsutomuShimomurawithanIPsequenceattack
( /~lspitz/snoop.html
(四).Linux下的sniffer工具
Linux下的sniffer工具,我推荐Tcpdump。
[1].tcpdump的安装
在linux下tcpdump的安装十分简单,一般由两种安装方式。一种是以rpm包的形式来进行安装。另外一种是以源程序的形式安装。
1. rpm包的形式安装
这种形式的安装是最简单的安装方法,rpm包是将软件编译后打包成二进制的格式,通过rpm命令可以直接安装,不需要修改任何东西。以超级用户登录,使用命令如下:
#rpm -ivh tcpdump-3_4a5.rpm
这样tcpdump就顺利地安装到你的linux系统中。怎么样,很简单吧。
2. 源程序的安装
既然rpm包的安装很简单,为什么还要采用比较复杂的源程序安装呢?其实,linux一个最大的诱人之处就是在她上面有很多软件是提供源程序的,人们可以修改源程序来满足自己的特殊的需要。所以我特别建议朋友们都采取这种源程序的安装方法。
· 第一步 取得源程序 在源程序的安装方式中,我们首先要取得tcpdump的源程序分发包,这种分发包有两种 形式,一种是tar压缩包(tcpdump-3_4a5.tar.Z),另一种是rpm的分发包(tcpdump-3_4a5.src.rpm)。这两种 形式的内容都是一样的,不同的仅仅是压缩的方式.tar的压缩包可以使用如下命令解开:
#tar xvfz tcpdump-3_4a5.tar.Z
rpm的包可以使用如下命令安装:
#rpm -ivh tcpdump-3_4a5.src.rpm
这样就把tcpdump的源代码解压到/usr/src/redhat/SOURCES目录下.
· 第二步 做好编译源程序前的准备活动
在编译源程序之前,最好已经确定库文件libpcap已经安装完毕,这个库文件是tcpdump软件所需的库文件。同样,你同时还要有一个标准的c语言编译器。在linux下标准的c 语言编译器一般是gcc。 在tcpdump的源程序目录中。有一个文件是Makefile.in,configure命令就是从Makefile.in文件中自动产生Makefile文件。在Makefile.in文件中,可以根据系统的配置来修改BINDEST 和 MANDEST 这两个宏定义,缺省值是
BINDEST = @sbindir @
MANDEST = @mandir @
第一个宏值表明安装tcpdump的二进制文件的路径名,第二个表明tcpdump的man 帮助页的路径名,你可以修改它们来满足系统的需求。
· 第三步 编译源程序
使用源程序目录中的configure脚本,它从系统中读出各种所需的属性。并且根据Makefile.in文件自动生成Makefile文件,以便编译使用.make 命令则根据Makefile文件中的规则编译tcpdump的源程序。使用make install命令安装编译好的tcpdump的二进制文件。
总结一下就是:
# tar xvfz tcpdump-3_4a5.tar.Z
# vi Makefile.in
# . /configure
# make
# make install
[2].Tcpdump的使用
tcpdump采用命令行方式,它的命令格式为:
tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ]
[ -i 网络接口 ] [ -r 文件名] [ -s snaplen ]
[ -T 类型 ] [ -w 文件名 ] [表达式 ]
1. tcpdump的选项介绍
-a 将网络地址和广播地址转变成名字;
-d 将匹配信息包的代码以人们能够理解的汇编格式给出;
-dd 将匹配信息包的代码以c语言程序段的格式给出;
-ddd 将匹配信息包的代码以十进制的形式给出;
-e 在输出行打印出数据链路层的头部信息;
-f 将外部的Internet地址以数字的形式打印出来;
-l 使标准输出变为缓冲行形式;
-n 不把网络地址转换成名字;
-t 在输出的每一行不打印时间戳;
-v 输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;
-vv 输出详细的报文信息;
-c 在收到指定的包的数目后,tcpdump就会停止;
-F 从指定的文件中读取表达式,忽略其它的表达式;
-i 指定监听的网络接口;
-r 从指定的文件中读取包(这些包一般通过-w选项产生);
-w 直接将包写入文件中,并不分析和打印出来;
-T 将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程 调用)和snmp(简单网络管理协议;)
2. tcpdump的表达式介绍
表达式是一个正则表达式,tcpdump利用它作为过滤报文的条件,如果一个报文满足表达式的条件,则这个报文将会被捕获。如果没有给出任何条件,则网络上所有的信息包将会被截获。
在表达式中一般如下几种类型的关键字,一种是关于类型的关键字,主要包括host,net,port, 例如 host ...2,指明 ...2是一台主机,net .0.0.0 指明 .0.0.0是一个网络地址,port 指明端口号是。如果没有指定类型,缺省的类型是host.
第二种是确定传输方向的关键字,主要包括src , dst ,dst or src, dst and src ,这些关键字指明了传输的方向。举例说明,src ...2 ,指明ip包中源地址是...2 , dst net .0.0.0 指明目的网络地址是.0.0.0 。如果没有指明方向关键字,则缺省是src or dst关键字。
第三种是协议的关键字,主要包括fddi,ip ,arp,rarp,tcp,udp等类型。Fddi指明是在FDDI(分布式光纤数据接口网络)上的特定的网络协议,实际上它是"ether"的别名,fddi和ether具有类似的源地址和目的地址,所以可以将fddi协议包当作ether的包进行处理和分析。其他的几个关键字就是指明了监听的包的协议内容。如果没有指定任何协议,则tcpdump将会监听所有协议的信息包。
除了这三种类型的关键字之外,其他重要的关键字如下:gateway, broadcast,less,greater,还有三种逻辑运算,取非运算是 'not ' '! ', 与运算是'and','&&';或运算 是'or' ,'';
这些关键字可以组合起来构成强大的组合条件来满足人们的需要,下面举几个例子来说明。
(1)想要截获所有...1 的主机收到的和发出的所有的数据包:
#tcpdump host ...1
(2) 想要截获主机...1 和主机...2 或...3的通信,使用命令:(在命令行中适用括号时,一定要
#tcpdump host ...1 and \ (...2 or ...3 \)
(3) 如果想要获取主机...1除了和主机...2之外所有主机通信的ip包,使用命令:
#tcpdump ip host ...1 and ! ...2
(4)如果想要获取主机...1接收或发出的telnet包,使用如下命令:
#tcpdump tcp port host ...1
3. tcpdump 的输出结果介绍
下面我们介绍几种典型的tcpdump命令的输出信息
(1) 数据链路层头信息
使用命令#tcpdump --e host ice
ice 是一台装有linux的主机,她的MAC地址是0::::AF:1A
H是一台装有SOLARIC的SUN工作站,它的MAC地址是8:0:::5B:;上一条命令的输出结果如下所示:
::. eth0 < 8:0:::5b: 0::::af:1a ip : h. > ice.telne
t 0:0(0) ack win (DF)
分析:::是显示的时间, 是ID号,eth0 <表示从网络接口eth0 接受该数据包,eth0 >表示从网络接口设备发送数据包, 8:0:::5b:是主机H的MAC地址,它表明是从源地址H发来的数据包. 0::::af:1a是主机ICE的MAC地址,表示该数据包的目的地址是ICE . ip 是表明该数据包是IP数据包, 是数据包的长度, h. > ice.telnet 表明该数据包是从主机H的端口发往主机ICE的TELNET()端口. ack 表明对序列号是的包进行响应. win 表明发送窗口的大小是.
(2) ARP包的TCPDUMP输出信息
使用命令#tcpdump arp
得到的输出结果是:
::. eth0 > arp who-has route tell ice (0::::af:1a)
::. eth0 < arp reply route is-at 0::::: (0::::af:1a)
分析: ::是时间戳, 是ID号, eth0 >表明从主机发出该数据包, arp表明是ARP请求包, who-has route tell ice表明是主机ICE请求主机ROUTE的MAC地址。 0::::af:1a是主机ICE的MAC地址。
(3) TCP包的输出信息
用TCPDUMP捕获的TCP包的一般输出信息是:
src > dst: flags data-seqno ack window urgent options
src > dst:表明从源地址到目的地址, flags是TCP包中的标志信息,S 是SYN标志, F (FIN), P (PUSH) , R (RST) "." (没有标记); data-seqno是数据包中的数据的顺序号, ack是下次期望的顺序号, window是接收缓存的窗口大小, urgent表明数据包中是否有紧急指针. Options是选项.
(4) UDP包的输出信息
用TCPDUMP捕获的UDP包的一般输出信息是:
route.port1 > ice.port2: udp lenth
UDP十分简单,上面的输出行表明从主机ROUTE的port1端口发出的一个UDP数据包到主机ICE的port2端口,类型是UDP, 包的长度是lenth上面,我就详细介绍了TCPDUMP的安装和使用,希望会对大家有所帮助。如果想要熟练运用TCPDUMP这个LINUX环境下的SNIFFER利器,还需要大家在实践中总结经验,充分发挥它的威力。
(五).windows平台上的sniffer
我推荐netxray和sniffer pro软件,想必大家都用过他们,不过我在这儿还要再简单介绍一下他们。
netxray的使用说明
1.1.1.1----2.2.2.2----3.3.3.3----4.4.4.4 这是一个ShareHub连接下的局域网
5.5.5.5 这是一个端口上的
启动Capture,
2024-11-23 12:17
2024-11-23 12:06
2024-11-23 10:49
2024-11-23 10:46
2024-11-23 10:43
2024-11-23 10:40
2024-11-23 10:25
2024-11-23 10:10