网络通信问题定位步骤

来源:互联网 发布:新浪php笔试题 编辑:程序博客网 时间:2024/05/24 08:33

网络通信问题定位步骤

  1. ping网络,查看网络是否连通;
  2. 使用抓包工具抓包,查看是否发送或接收到相应数据包;
  3. 检查数据帧格式,大端小端等问题,查看数据是否组帧正确;
  4. 排查发送或接收端程序问题。

抓包

Windows系统下可使用Wireshark抓包工具

Wireshark通过可视化图像界面菜单中的捕获下的选项按钮进行设置,如下图。


选项按钮中可设置捕获接口,捕获筛选器等配置,如下图。


配置完成后点击开始按钮可开始捕获数据。可在应用显示筛选器中按照Wireshark要求格式填写筛选语句,这样可筛选显示的捕获数据。快捷工具栏中从左往右开始的3个按钮可控制捕获的开始与停止,以及重新捕获。


总结:这里只是简单的介绍了Wireshark的使用,具体使用可查看官方使用说明文档。

Linux系统下可使用tcpdump抓包工具

示例:截取全部进入服务器的数据可以使用以下的格式:
           tcpdump -n -i eth0 dst 192.168.0.202
具体使用可参考http://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html

大端小端

  1. 大端模式:是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中。例如:e6 84大端模式存储为e6 84。这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;这和我们的阅读习惯一致。
  2. 小端模式:是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中。例如:e6 84小端模式存储为84 e6这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低。
  3. 总结:一般操作系统都是小端,而通讯协议是大端的。常用的X86结构是小端模式,而KEIL C51则为大端模式。对于大小端的处理也和编译器的实现有关,在C语言中,默认是小端(但在一些对于单片机的实现中却是基于大端,比如Keil 51C),Java是平台无关的,默认是大端。很多的ARM,DSP都为小端模式。有些ARM处理器还可以由硬件来选择是大端模式还是小端模式。在网络上传输数据普遍采用的都是大端。

为什么会有大小端模式之分呢?

这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit。但是在大部分语言中除了8bit的char之外,还有16bit的short型,32bit的long型(要看具体的编译器),对于位数大于8位的数据类型,由于寄存器宽度大于一个字节,那么必然存在着一个如果将多个字节安排的问题。因此就导致了大端存储模式和小端存储模式。

本文是自己的一点经验之谈,如有不足之处请指正。文章仅供学习和交流使用!
原创粉丝点击