怎么样用出C语言写一个分析TCP/IP报文的程
展开全部 socket编程写了一个简单的DNS服务器。
是这样实现的,用两台PC,一个做客户端,一个做服务器;在服务器用socket监视53端口,recvfrom()函数负责接收DNS查询报文,将其存入事先写好的数据结构里;因为DNS查询报文和应答报文的前部分字段格式都是一样的,只是修改了几个参数,然后重点把DNS应答报文后面的字段进行增添。
然后用sendto();函数发送就可以了。
在ie里面输入任意的网址,回车,就会触发客户端向服务器发出DNS查询报文,此时你可以同时在服务器和客户端抓包,看收到的报文是否正确。
注意几点:1、一定要熟悉报文结构,定义合适的结构体,将报文进行解析2、一定要注意网络序和主机序的转换htonl(),htons(),ntohl(),ntohs()等3、找个熟知端口,最好是你熟悉的协议,如ftp,http,dns等。
4、客户端要把DNS服务器配置为你的服务器ip。
...
求助一个MODBUS TCP/IP报文解析。
展开全部 首先说一下1514字节是如何得到的。
以太网封装IP数据包的最大长度是1500字节,也就是说以太网最大帧长应该是以太网首部加上1500,再加上7字节的前导同步码和1字节的帧开始定界符,具体就是:7字节前导同步吗+1字节帧开始定界符+6字节的目的MAC+6字节的源MAC+2字节的帧类型+1500+4字节的CRC校验。
按照上述,最大帧应该是1526字节,但是实际上我们抓包得到的最大帧是1514字节,为什么不是1526字节呢?原因是当数据帧到达网卡时,在物理层上网卡要先去掉前导同步码和帧开始定界符,然后对帧进行CRC检验,如果帧校验和错,就丢弃此帧。
如果校验和正确,就判断帧的目的硬件地址是否符合自己的接收条件(目的地址是自己的物理硬件地址、广播地址、可接收的多播硬件地址等),如果符合,就将帧交“设备驱动程序”做进一步处理。
这时我们的抓包软件才能抓到数据,因此,抓包软件抓到的是去掉前导同步码、帧开始分界符、CRC校验之外的数据,其最大值是6+6+2+1500=1514。
再说一下TCP报文内部的结构。
一个完整的数据包格式,是数据帧{IP包{TCP或UDP包{Data}}},如前所述{IP包{TCP或UDP包{Data}}}部分最大是1500字节。
那么根据目前的IPv4协议,有如下规定: IP首部,版本:4 ,包含源、目的IP、首部校验和,TTL等,共计20个字节。
TCP首部,包含源、目的端口,一系列指针、标志、校验和等,共计20字节,因此实际可用的数据为1500-20-20=1460字节。
这1460字节,特殊情况下会减小。
...
什么是TCP/IP通讯中的心跳包
心跳包,通常是客户端每隔一小段时间向服务器发送的一个数据包,通知服务器自己仍然在线,并传输一些可能有必要的数据。
因按照一定的时间间隔发送,类似于心跳,所以叫做心跳包。
事实上为了保持长连接,至于包的内容,是没有特别规定的,不过一般都是很小的包,或者只是包含包头的一个空包。
在TCP协议的机制里面,本身是存在有心跳包机制的,也就是TCP协议中的SO_KEEPALIVE,系统默认是设置2小时的心跳频率。
需要用要用setsockopt将SOL_SOCKET.SO_KEEPALIVE设置为1才是打开,并且可以设置三个参数tcp_keepalive_time/tcp_keepalive_probes/tcp_keepalive_intvl,分别表示连接闲置多久开始发keepalive的ACK包、发几个ACK包不回复才当对方死了、两个ACK包之间间隔多长。
TCP协议会向对方发一个带有ACK标志的空数据包(KeepAlive探针),对方在收到ACK包以后,如果连接一切正常,应该回复一个ACK;如果连接出现错误了(例如对方重启了,连接状态丢失),则应当回复一个RST;如果对方没有回复,服务器每隔多少时间再发ACK,如果连续多个包都被无视了,说明连接被断开了。
“心跳检测包”是属于TCP协议底层的检测机制,上位机软件只是解析显示网口的有用数据包,收到心跳包报文属于TCP协议层的数据,一般软件不会将它直接在应用层显示出来,所以看不到。
以太网中的“心跳包”可以通过“以太网抓包软件”分析TCP/IP协议层的数据流看到。
报文名称”TCP Keep-Alive”。
一些比较可靠的以太网转串口模块,都有心跳包的检测,比如致远电子的ZNE-100TL模块,配置“心跳包检测”间隔时间设为“10”秒,使用一款”wireshark”的抓包软件来实际查看下TCP/IP协议层“心跳包”数据。
抓包分析ethernet ii 的ipv4 tcp udp三种报文的报头怎么分析
展开全部 TCP/IP协议详解---最好最权威的TCPIP协议书籍目 录译者序前言第一部分 TCP/IP基础第1章 开放式通信模型简介 11.1 开放式网络的发展 11.1.1 通信处理层次化 21.1.2 OSI参考模型 31.1.3 模型的使用 51.2 TCP/IP参考模型 71.3 小结 7第2章 TCP/IP和Internet 82.1 一段历史 82.1.1 ARPANET 82.1.2 TCP/IP 92.1.3 国家科学基金会(NSF) 92.1.4 当今的Internet 122.2 RFC和标准化过程 122.2.1 获得RFC 132.2.2 RFC索引 132.2.3 有关RFC的幽默 132.3 Internet服务简介 132.3.1 Whois和Finger 142.3.2 文件传输协议 142.3.3 Telnet 142.3.4 Email 142.3.5 WWW 142.3.6 USENET News 152.4 Intranet和Extranet概览 152.4.1 Intranet 152.4.2 将Intranet对外开放 162.5 Internet的明天 162.5.1 下一代Internet(NGI) 162.5.2 超速骨干网服务 162.5.3 Internet2(I2) 172.6 Internet管理组织 172.6.1 Internet协会 172.6.2 Internet体系结构组 172.6.3 Internet工程任务组 172.6.4 Internet工程指导组 172.6.5 Internet编号管理局 182.6.6 Internet名字和编号分配组织 (ICANN) 182.6.7 Internet网络信息中心和其他注 册组织 182.6.8 RFC编辑 182.6.9 Internet服务提供商 182.7 小结 19第3章 TCP/IP概述 203.1 TCP/IP的优点 203.2 TCP/IP的层和协议 213.2.1 体系结构 213.2.2 传输控制协议 213.2.3 IP协议 233.2.4 应用层 253.2.5 传输层 253.2.6 网络层 253.2.7 链路层 253.3 远程登录(Telnet) 253.4 文件传输协议(FTP) 253.5 普通文件传输协议(TFTP) 263.6 简单邮件传输协议(SMTP) 263.7 网络文件系统(NFS) 263.8 简单网络管理协议(SNMP) 273.9 TCP/IP和系统结合 273.10 内部网概述 283.11 小结 28第二部分 命名和寻址第4章 IP网络中的名字和地址 294.1 IP寻址 294.1.1 二进制和十进制数 304.1.2 IPv4地址格式 304.2 子网的出现 344.2.1 分子网 354.2.2 可变长子网掩码(VLSM) 374.3 无类域前路由(CIDR) 384.3.1 无类地址 384.3.2 强化路由汇聚 394.3.3 超网化 394.3.4 CIDR怎样工作 394.3.5 公共地址空间 404.3.6 RFC 1597和1918 404.4 小结 40第5章 ARP和RARP 415.1 使用地址 415.1.1 子网寻址 415.1.2 IP地址 435.2 使用地址解析协议 445.2.1 ARP cache 455.2.2 代理ARP 475.2.3 反向地址解析协议 475.3 使用ARP命令 475.4 小结 47第6章 DNS:名字服务器 486.1 域名系统概述 486.2 授权局 506.3 DNS分布数据库 506.4 域和区 506.5 Internet顶级域 516.6 选择一个域名服务器 526.7 名字服务解析过程 526.7.1 递归查询 526.7.2 叠代查询 526.8 高速缓存 526.9 反向解析(Pointer)查询 526.10 DNS安全 526.11 资源记录 536.12 小结 54第7章 WINS 557.1 NetBIOS 557.2 NetBIOS名字解析 577.3 动态NetBIOS名字解析 587.3.1 使用WINS的优点 587.3.2 WINS如何工作 597.3.3 配置WINS客户机 607.3.4 为代理配置WINS 607.3.5 配置NT 4.0系统 617.3.6 配置Windows 95或Windows 98 系统 617.4 安装WINS服务器 617.5 WINS管理和维护 627.5.1 加入静态表项 627.5.2 维护WINS数据库 637.5.3 备份WINS数据库 657.5.4 备份WINS注册项 657.5.5 恢复WINS数据库 657.5.6 压缩WINS数据库 667.5.7 WINS复制参与者 667.5.8 WINS实现建议 677.6 集成WINS和DNS名字解析服务 677.7 DHCP服务WINS选项 677.8 通过LMHOSTS进行NetBIOS名字 解析 687.9 小结 69第8章 地址发现协议(BOOTP和DHCP) 718.1 “引导”协议(BOOTP) 718.2 动态主机配置协议(DHCP) 728.2.1 DHCP如何工作 728.2.2 理解租用地址 738.3 管理地址池 748.4 DHCP能处理的其他分配 758.4.1 注意重载 758.4.2 其他分配 758.5 小结 76第三部分 IP和相关协议第9章 IP协议家族 779.1 TCP/IP模型 779.1.1 解剖TCP/IP模型 789.1.2 协议组件 789.2 理解网际协议(IP) 799.2.1 IPv4结构 799.2.2 IP做什么 809.3 理解传输控制协议(TCP) 819.3.1 TCP头结构 819.3.2 TCP做什么 839.4 理解用户数据报协议(UDP) 859.4.1 UDP头结构 859.4.2 UDP能做什么 859.4.3 TCP和UDP 869.5 小结 86第10章 IPv6 8710.1 IPv6数据报 8710.1.1 优先级分类 8810.1.2 流标识 8910.1.3 128位IP地址 8910.1.4 IP扩展头 9010.2 多IP地址主机 9110.3 单播、组播和任一播头 9110.4 从IPv4到IPv6的过渡 9310.5 小结 94第四部分 IP互联第11章 IP网络中的路由 9511.1 路由基本知识 9511.1.1 静态路由 9611.1.2 距离-向量路由 9911.1.3 链路-状态路由 10011.2 IP网络中的收敛 10211.2.1 适应拓扑变化 10211.2.2 收敛时间 10611.3 计算IP网络中的路由 10611.3.1 存储多条路由 10711.3.2 初始化更新 10711.3.3 路由度量标准 10711.4 小结 108第12章 路由信息协议(RIP) 10912.1 理解RFC1058 10912.1.1 RIP报文格式 10912.1.2 RIP路由表 11112.2 操作机制 11212.2.1 计算距离向量 11312.2.2 更新路由表 11612.2.3 寻址问题 11812.3 拓扑变化 12012.3.1 收敛 12012.3.2 计值到无穷 12212.4 RIP的限制 12712.4.1 跳数限制 12812.4.2 固定度量 12812.4.3 对路由表更新反应强烈 12812.4.4 收敛慢 12812.4.5 缺乏负载均衡 12812.5 小结 129第13章 开放式最短路径优先 1301...
Wireshark 怎么指定抓某个软件的数据
展开全部 wireshark 抓包是对整个网卡而言的,无法对相应的应用程序进行抓包,但你可以通过分析你的程序进行过滤,比如我要抓浏览器的包,在抓好的包里进行 HTTP 过滤就可以看到类似的,再根据自己的请求判断自己抓的哪个包,当然也可以用360,qq的大师什么的,监控这个程序所使用的TCP流,找到再 wireshark 包里过滤即可。
尽可能的关闭其他的应用程序,先打开wireshark工具,选定当前的网卡开始,点击开始抓包,然后在打开浏览器,输入地址,进行访问操作,wireshark会自动将来往数据抓下来,过后你保存分析就行了。
下面的图是我访问百度时的一些数据包,包含tcp会话建立的时候的情况,但是在包里面没有抓取的FIN的数据包。
网页挺难抓到的,貌似有个hold time。
tcp会话不会立刻中断。
...
wireshark 如何导出数据
1、打开wireshark->Capture->Interface->;选择你的网卡(选中)->Start2、OK抓包开始,工具栏上有stop,点击停止抓包3、过滤,这个你可以看我之前回复的一个问题。
或者网上查一查。
比如 tcp && tcp.len > 04、Fire->Save 下面有选项,选择过滤完的,还是全部的,还是选中的。
5、输入文件名,即可。
Wireshark(前称Ethereal)是一个网络封包分析软件。
网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。
Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。
这个人很懒_连昵称都没有