tcpdump抓包分析工具 还是很好用的,针对Tcp通讯过程做一个记录,对照tcp通讯过程

介绍tcpdump

  man一下,介绍的很清楚在进行网络测试的时候,我们经常需要进行抓包的工作,当然有许多测试工具可以使用,比如sniffer, ethreal等.但最为方便和简单得就非TCPDump莫属. Linux的发行版里基本都包括了这个工具. TCPDump将网络接口设置成混杂模式以便捕获到达的每一个数据包.下面给出TCPDump的部分常用选项:-i  指定监听的网络接口-v指定详细模式输出详细的报文信息-vv指定更详细模式输出更详细的报文信息-x指定以16进制数格式显示数据包-X规定以ASCII码格式显示输出-n规定在捕获过程中不需向DNS查询IP地址-F  从指定文件中读取表达式-D显示可用网络接口-s  设置捕获数据包的长度TCPDump的表达式:默认情况下TCPDump将捕获所有到达网络的数据包.这并不是我们想要的,因此就必须通过表达式来限制不必要的流量,只输出我们需要监听的数据包.1.类型限定词类型限定词有: host, port和net. host用来指定主机或目的地址,port指定端口,net可以用来指定某一子网. 如:tcpdump 'port 80' 监听80端口tcpdump 'net 192.168.1' 监听子网192.168.1.0tcpdump 'net 192.168.1.0/24'2.逻辑运算符逻辑运算符有AND,OR和NOT. ()可将多个表达式组合起来.tcpdump 'port 80 and (host 192.168.1.10 or host 192.168.1.11)'监听主机192.168.1.10 或192.168.1.11的80端口.3.传输方向限定词关键词src指定源地址,dst指定目的地址tcpdump 'port 80 and (src 192.168.1.10 or src 192.168.1.11)'tcpdump 'dst port 25'4.协议限定词用来捕获特定协议的数据包有: ether(Ethernet), TCP,UDP,ICMP,IP,ip6(IPv6),ARP,rarp(reverse ARP)等.5.原语原语主要有: 算术运算符(+,-,*,/,>,<,>=,<=,!=等), broadcast, gateway, greater, less.broadcast捕获广播数据包, greater和less相当于>=和<=.小例子://本机20000端口通讯数据抓包tcpdump -s 0 -i lo port 20000 -w /tmp/20000.pcap//10.8.2.181:7001端口通讯数据抓包tcpdump -i eth0 -s 0 host 10.8.2.181 and port 7001  -w /tmp/syrk.pcap

介绍tcp通讯-三次握手

所谓三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换 TCP 窗口大小信息.在socket编程中,客户端执行connect()时。将触发三次握手。

第一次握手:客户端发送一个TCP的SYN标志位置1的包指明客户打算连接的服务器的端口,以及初始序号X,保存在包头的序列号(Sequence Number)字段里。

第二次握手:服务器发回确认包(ACK)应答。即SYN标志位和ACK标志位均为1同时,将确认序号(Acknowledgement Number)设置为客户的I S N加1以.即X+1。

第三次握手.客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN的+1

SYN攻击

在三次握手过程中,服务器发送SYN-ACK之后,收到客户端的ACK之前的TCP连接称为半连接(half-open connect).此时服务器处于Syn_RECV状态.当收到ACK后,服务器转入ESTABLISHED状态.Syn攻击就是 攻击客户端 在短时间内伪造大量不存在的IP地址,向服务器不断地发送syn包,服务器回复确认包,并等待客户的确认,由于源地址是不存在的,服务器需要不断的重发直 至超时,这些伪造的SYN包将长时间占用未连接队列,正常的SYN请求被丢弃,目标系统运行缓慢,严重者引起网络堵塞甚至系统瘫痪。Syn攻击是一个典型的DDOS攻击。检测SYN攻击非常的方便,当你在服务器上看到大量的半连接状态时,特别是源IP地址是随机的,基本上可以断定这是一次SYN攻击.在Linux下可以如下命令检测是否被Syn攻击
netstat -n -p TCP | grep SYN_RECV
一般较新的TCP/IP协议栈都对这一过程进行修正来防范Syn攻击,修改tcp协议实现。主要方法有SynAttackProtect保护机制、SYN cookies技术、增加最大半连接和缩短超时时间等.但是不能完全防范syn攻击。

介绍tcp通讯-四次挥手

TCP的连接的拆除需要发送四个包,因此称为四次挥手(four-way handshake)。客户端或服务器均可主动发起挥手动作,在socket编程中,任何一方执行close()操作即可产生挥手操作。

抓包解释

命令


sudo tcpdump -i eth1 tcp port 6002

抓到的包


1:三次握手
15:16:28.243056 IP 192.168.1.4.64547 > zzh.local.x11-2: Flags [S], seq 3591482379, win 8192, options [mss 1024], length 0
15:16:28.243090 IP zzh.local.x11-2 > 192.168.1.4.64547: Flags [S.], seq 3375148518, ack 3591482380, win 14600, options [mss 1460], length 0
15:16:28.245052 IP 192.168.1.4.64547 > zzh.local.x11-2: Flags [.], ack 1, win 8192, length 0
2:正常通讯
15:16:28.251058 IP 192.168.1.4.64547 > zzh.local.x11-2: Flags [.], seq 1:1025, ack 1, win 8192, length 1024
15:16:28.251119 IP zzh.local.x11-2 > 192.168.1.4.64547: Flags [.], ack 1025, win 16384, length 0
3:四次挥手
15:16:28.251210 IP zzh.local.x11-2 > 192.168.1.4.64547: Flags [R.], seq 1, ack 1025, win 16384, length 0
15:16:28.255032 IP 192.168.1.4.64547 > zzh.local.x11-2: Flags [P.], seq 1025:2049, ack 1, win 8192, length 1024
15:16:28.255054 IP zzh.local.x11-2 > 192.168.1.4.64547: Flags [R], seq 3375148519, win 0, length 0
15:16:28.273042 IP 192.168.1.4.64548 > zzh.local.x11-2: Flags [S], seq 3591945419, win 8192, options [mss 1024], length 0

tcpdump和tcp通讯相关推荐

  1. c++ char4个字节_西门子PLC的TCP通讯(不同项目下)①--TSEND_C指令

    西门子PLC的TCP通讯(不同项目下)①--TSEND_C指令 本期说一下,不同项目下的,连个西门子1200的TCP通讯,这次我们用TSEND_C和TRCV_C组合使用,这次先了解下TSEND_C指令 ...

  2. 基于QTcpSocket和QTcpServer的Tcp通讯以及QDataStream序列化数据

    为什么80%的码农都做不了架构师?>>>    最近要在QT下开发Tcp通讯,发送序列化数据以便于接收. 这里涉及到几个问题: 1.QTcpSocket.QTcpServer的通讯 ...

  3. TCP通讯处理粘包详解

    一般所谓的TCP粘包是在一次接收数据不能完全地体现一个完整的消息数据.TCP通讯为何存在粘包呢?主要原因是TCP是以流的方式来处理数据,再加上网络上MTU的往往小于在应用处理的消息数据,所以就会引发一 ...

  4. boost asio 异步实现tcp通讯

    一.前言 boost asio可算是一个简单易用,功能又强大可跨平台的C++通讯库,效率也表现的不错,linux环境是epoll实现的,而windows环境是iocp实现的.而tcp通讯是项目当中经常 ...

  5. JAVA通信编程(三)——TCP通讯

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

  6. linux网络编程(二)TCP通讯状态

    linux网络编程(二)TCP通讯状态 TCP状态转换 为什么需要等待2MSL? 端口复用 TCP状态转换 tcp协议连接开始会经过三次握手,客户端和服务器开始都会处于CLOSED状态 第一次握手:客 ...

  7. 基于STM32和W5500的Modbus TCP通讯

     在最近的一个项目中需要实现Modbus TCP通讯,而选用的硬件平台则是STM32F103和W5500,软件平台则选用IAR EWAR6.4来实现. 1.移植前的准备工作 为了实现Modbus ...

  8. winpcapp配置c++网口通讯_(经验)西门子PLC的Modbus TCP通讯的一些经验

    Modbus是一种协议公开的工业通讯,被广泛使用.通过串口的是Modbus-RTU协议,通过以太网的是Modbus TCP通讯.现在的PLC都开始支持以太网通讯,因此,Modbus TCP也越来越重要 ...

  9. activeMQ的源码分析 -TCP通讯机制

    2019独角兽企业重金招聘Python工程师标准>>> activeMQ的源码分析 -TCP通讯机制 博客分类: MQ <IGNORE_JS_OP style="WO ...

最新文章

  1. 【自然语言处理】N-最短路径法进行中文分词
  2. c odac 连接 oracle,使用ODAC112040Xcopy_64bit 将sql server连接到oracle
  3. 构造函数必须是public吗_c++ 构造函数,析构函数必须要给成公有的吗?
  4. 实战|Python轻松实现动态网页爬虫(附详细源码)
  5. Alibaba Cloud Linux 2 开源后又有什么新动作?
  6. uva11609(组合数学,快速幂)
  7. cmd 命令 之 dir 之 强化使用
  8. HP UNIX下载工具的一个好地方
  9. Keil4与keil5共存问题
  10. poi操作PPT读取模板流,生成新PPT文件
  11. 在mysql中,涉及到金钱的数据类型一般是什么?
  12. micro、macro、weighted、sample区别
  13. 问题 D: 猫和兔子
  14. Unity3D添加天空盒
  15. android 高德地图 lbstraceclient,安卓高德地图定位篇-(1)
  16. c语言邻接表做公园导游系统,公园导游管理系统
  17. 『前端大事记』之「几件大事」
  18. 上大学究竟是来干什么的 为什么会这样
  19. 前端小白训练营DAY3
  20. AlexNet论文解读与代码实现

热门文章

  1. Linux性能优化——stress压力测试工具
  2. http://www.55zm.com/a/20120702/38037.html
  3. URL-based 方式和 HTML-based方式的差别(摘自关河)
  4. 请听题!如何实现只用1个VN5640A搭建含2个交换机的车载以太网网络?|VN5640A新功能
  5. 输入5个同学的3门课程成绩,计算各门课程的总分及平均分
  6. JS Undefined类型
  7. Java高效处理Excel【阿里yyds!】
  8. 免流量LoRa智慧农业解决方案
  9. Linux系统使用LAMP架构部署Discuz论坛系统,简洁明了
  10. 【PyTorch】PyTorch搭建神经网络处理图片分类的完整代码