TCPDUMP学习笔记。

1.启动

普通情况下,直接启动tcpdump将监视第一个网络界面上所有流过的数据包,注意这里使用超级用户。当用户上网得时候,就会将监视得数据打印出来。

我没使用root用户,结果输入tcpdump命令,提示:

tcpdump: packet printing is not supported for link type BLUETOOTH_HCI_H4_WITH_PHDR: use –w

2.简单实例

监听网卡(我的网卡号是eno16777736)

# tcpdump -i eno16777736

监听指定协议的数据

# tcpdump -i eno16777736 -nn ‘icmp‘  (-nn的功能是用ip地址表示主机。)

说明: 这个是用来监听icmp协议的数据,就是ping命令使用的协议。类似的,如果要监听tcp或者是udp协议,只需要修改上例的icmp就可以了。

3.针对网络接口、端口和协议的数据包截取。

我在虚拟机上运行了一个TCP服务端程序,接收数据,端口为9877,本机上运行客户端发送数据,然后用tcpdump抓包:

# tcpdump -w test.pcap -i eno16777736 tcp port 9877

运行客户端发送数据完成之后,结束抓包(按ctrl+ c中断tcpdump命令的执行)就会在当前目录下生成一个test.pcap文件。

这个文件可以用抓包工具wireshark来分析,直接打开就可以看到这个pcap文件的信息,实际就是TCP数据包格式存储的数据,熟悉TCP格式的话基本都能看懂了。

4.数据包分析

以上一个为例,抓了一个发送“HelloSocket!”的数据包,命令行提示:

5 packets captured
5 packets received by filter
0 packets dropped by kernel

就是抓了一个包。

TCP包最大能容纳65535字节数据,于是我就试想发送一个65535字节的数据,会不会抓到2个,然而提示的是:

13 packets captured
13 packets received by filter
0 packets dropped by kernel

也就是说抓了13个包。原来有个MUT的概念,也就是分片。而且第一次显示的是5个包,第二次显示的是13个包,为何数据量小于MUT不是1个包,经过分析才知道,服务器上面的抓包命令不但抓了收到数据“HelloSocket!”的数据包,还把TCP三次握手的包夜抓了,每次握手传一个包,就是3个包(注意包括服务器发送出去的包),最后还有个XXXXXXXXXXXX包。想要只抓数据包,得修改命令参数,后面补充。

通过这次抓包,可以明显观察到TCP三次握手的情景(下图1,2,3步就是TCP三次握手情形,参考《UNIX网络编程卷1,第三版》,第2.6节TCP连接的建立和终止):

另外,第二次抓包有一个TCP的状态为PSH,如下图(第12步):

我看了一下TCP状态说明,PSH表示有 DATA数据传输,前面第十步,第八步都有数据传输,为何没有PSH呢?

时间: 2024-10-18 11:21:43

TCPDUMP学习笔记。的相关文章

CoAP学习笔记——nodeJS node-coap返回JSON数据包

0 前言 本文说明如何使用node-coap返回JSON数据包.CoAP是专门为物联网系统开发的面向网络的应用层协议栈,CoAP建立在UDP协议之上尽可能减少网络开销,又具有HTTP Restful类型的特性.node-coap使用nodejs实现了coap的客户端和服务器端. [测试环境]--ubuntu/Linux [相关博文] [CoAP协议文档--The Constrained Application Protocol (CoAP)] [CoAP协议学习--CoAP基础] [CoAP学习

LVS学习笔记--DR模式部署

一.部署环境: 服务器版本:CentOS6.5(Finnal) 网络拓扑: 二.需求分析:调度服务器与网页服务器均在同一网段局域网环境,用户提交的请求会经过调度器的分配指定到网页服务器,同时保证服务高可用性(任意一台网站服务器宕机后调度器会剔除它直至服务器恢复至正常:主调度器宕机后从调度器会接管它直至其恢复正常.). 三.相关配置: 部署调度器LVS服务脚本: #!/bin/sh mkdir tools cd tools/ # yum install lrzsz # rz # ls wget h

LVS的持久连接和awk/sed/grep的学习笔记

一.LVS持久连接的模式 1.PPC(persistent port connection) ipvsadm -A|E 192.168.10.1:80 -p 600 定义VIP为192.168.10.1director的80端口为持久连接,也就是只把web服务加入集群服务,可以通过改变端口实现不同服务的持久连接且把不同服务加入集群服务 2.PCC(persistent client connection) ipvsadm -A|E 192.168.10.1:0 -p 600 定义VIP为192.

Heartbeat学习笔记--HA高可用集群实现

一.部署环境: 服务器版本:CentOS6.5 双主热备模式: VIP:192.168.3.30(MASTER上) VIP:192.168.3.32(BACKUP上) 主机网络参数: 接口 MASTER BACKUP 说明 eth1 192.168.3.23 192.168.3.24 内网管理IP eth2 192.168.5.23 192.168.5.24 心跳线 eth3 192.168.2.23 192.168.2.24 外网(临时下载文件用) 网络拓扑: 二.需求分析: 通过Heartb

计算机网络学习笔记——操作

**********************网络基本命令************************** IP相关参数:/etc/sysconfig/network-scripts/ifcfg-ethX ---ifconfig--- ifconfig  查看网络接口信息 ifconfig eth0 10.1.20.186 netmask 255.255.255.0 mtu 8000 修改网路接口参数 ifconfig eth0:0 192.168.1.10 在网络接口上增加一个IPifcon

vector 学习笔记

vector 使用练习: /**************************************** * File Name: vector.cpp * Author: sky0917 * Created Time: 2014年04月27日 11:07:33 ****************************************/ #include <iostream> #include <vector> using namespace std; int main

Caliburn.Micro学习笔记(一)----引导类和命名匹配规则

Caliburn.Micro学习笔记(一)----引导类和命名匹配规则 用了几天时间看了一下开源框架Caliburn.Micro 这是他源码的地址http://caliburnmicro.codeplex.com/ 文档也写的很详细,自己在看它的文档和代码时写了一些demo和笔记,还有它实现的原理记录一下 学习Caliburn.Micro要有MEF和MVVM的基础 先说一下他的命名规则和引导类 以后我会把Caliburn.Micro的 Actions IResult,IHandle ICondu

jQuery学习笔记(一):入门

jQuery学习笔记(一):入门 一.JQuery是什么 JQuery是什么?始终是萦绕在我心中的一个问题: 借鉴网上同学们的总结,可以从以下几个方面观察. 不使用JQuery时获取DOM文本的操作如下: 1 document.getElementById('info').value = 'Hello World!'; 使用JQuery时获取DOM文本操作如下: 1 $('#info').val('Hello World!'); 嗯,可以看出,使用JQuery的优势之一是可以使代码更加简练,使开

[原创]java WEB学习笔记93:Hibernate学习之路---Hibernate 缓存介绍,缓存级别,使用二级缓存的情况,二级缓存的架构集合缓存,二级缓存的并发策略,实现步骤,集合缓存,查询缓存,时间戳缓存

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------