大家好,又见面了,我是你们的朋友全栈君。
以wireshark 2.6.3 汉化版为例
除了路径是自定义之外,其它均默认即可。
在Windows平台上用Ethereal抓包时发现TCP校验和错误,
但应用层的反应告诉我,这个报文的TCP校验和没问题。
A: 2000-03
网卡配置->高级->Rx Checksum Offload/Tx Checksum Offload,
很可能你的这两处设置是Enable,将之调整成Disable即可,代价是网络性能降低。
一般由操作系统的TCP/IP协议栈完成TCP/UDP/IP校验和的计算工作,
这两处设置成Enable之后,协议栈不再进行校验和的计算,而是由网卡自己完成。
如果在前述位置没有发现Rx Checksum Offload/Tx Checksum Offload项,
有两种可能,一种是网卡本身不支持这种功能,另一种是网卡驱动未提供配置项,后一种情形居多。
解决方法:
把网卡的属性修改一下就可以,禁用 Checksum Offload(原理是让网卡硬件自己计算校验和,而不是交给操作系统的 tcp/ip 协议栈来计算):
这个主要还是需要多看输入的提示,我也是靠蒙写个简单的
//表示只过滤主机10.6.161.15或者10.10.65.67的包
host 10.6.161.15 or host 10.10.65.67
//使用域名
host baidu.com
//表示只显示Source为10.6.161.15的
ip.src==10.6.161.15
菜单“捕获-选项”,设置需要捕获的网络适配器,点击“开始”。也可以在菜单“捕获-开始”、“捕获-结束”来控制开始结束。在“捕获-捕获过滤器”编辑捕获表达式
在上述“捕获”菜单中进行的操作,也可以在工具栏进行,如下图
双击每一行记录,可在弹出窗口中查看详细记录
在菜单“视图-着色规则”下查看
注:window查看本机ip、mac等,可在cmd下使用命令ipconfig/all
三次数据包
其中[SYN]意为SYN位为1(如果没有,则表示为0)。同理如果[]中有ACK,表示ACK位为1
客户端==》服务器
服务器==》客户端
客户端==》服务器
摘抄自:TCP三次握手和四次挥手过程
假设Client端发起中断连接请求,也就是发送FIN报文。Server端接到FIN报文后,意思是说”我Client端没有数据要发给你了“,但是如果你还有数据没有发送完成,则不必急着关闭Socket,可以继续发送数据。所以你先发送ACK,“告诉Client端,你的请求我收到了,但是我还没准备好,请继续你等我的消息”。这个时候Client端就进入FIN_WAIT状态,继续等待Server端的FIN报文。当Server端确定数据已发送完成,则向Client端发送FIN报文,“告诉Client端,好了,我这边数据发完了,准备好关闭连接了”。Client端收到FIN报文后,”就知道可以关闭连接了,但是他还是不相信网络,怕Server端不知道要关闭,所以发送ACK后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。“,Server端收到ACK后,“就知道可以断开连接了”。Client端等待了2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,我Client端也可以关闭连接了。Ok,TCP连接就这样关闭了!
四次数据包
数据含义同三次握手
标志位对应的功能:
tcp数据包结构及在wireshark中的位置
ip数据包:(不画了,耐心已为负值)
抓取财政会计行业管理系统的一些示例
点击页面中的任意一个查询
如下,将包的内容和浏览器的内容对比一下
查看响应包(注意http和tcp流的不同)
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/148707.html原文链接:https://javaforall.cn