结合WireShark工具学习TCP协议
来源:互联网 发布:怎样运营淘宝店铺 编辑:程序博客网 时间:2024/04/29 17:46
结合WireShark工具学习TCP协议
一、利用wireshark抓取包
1.通过在终端输入wireshark命令打开wireshark(如果不是root用户,则需要sudo wireshark命令才能打开此工具)2.抓取的配置如下:interface选择eth0;Capture Filter选择tcp;3.在另一个终端中执行如下命令,连接126邮箱的pop服务器,端口号为110:
输入命令:root@yutao:~# telnet pop.126.com 110Trying 123.125.50.23...Connected to pop3.126.idns.yeah.net.Escape character is '^]'.+OK Welcome to coremail Mail Pop3 Server (126coms[96cf230d1dfd5e9799113d194aeefd37s])quit+OK core mailConnection closed by foreign host.root@yutao:~#
dkjfkld
然后就停止wireshark对包的抓取,并保存结果,接下来就可以分析包了。
二、本机和服务器的基本信息获取
1.获取本机ip和物理地址root@yutao:~# ifconfigeth0 Link encap:以太网 硬件地址 78:45:c4:01:fc:aa inet 地址:192.168.33.72 广播:192.168.33.255 掩码:255.255.255.0 inet6 地址: fe80::7a45:c4ff:fe01:fcaa/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 跃点数:1 接收数据包:161448 错误:0 丢弃:0 过载:0 帧数:0 发送数据包:20966 错误:0 丢弃:0 过载:0 载波:0 碰撞:0 发送队列长度:1000 接收字节:39220604 (39.2 MB) 发送字节:2946869 (2.9 MB) 中断:27 基本地址:0x2000 lo Link encap:本地环回 inet 地址:127.0.0.1 掩码:255.0.0.0 inet6 地址: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 跃点数:1 接收数据包:1345 错误:0 丢弃:0 过载:0 帧数:0 发送数据包:1345 错误:0 丢弃:0 过载:0 载波:0 碰撞:0 发送队列长度:0 接收字节:644080 (644.0 KB) 发送字节:644080 (644.0 KB)通过ifconfig命令,可以得到本机如下主要信息:ip地址-- 192.168.33.72mac地址(硬件地址)-- 78:45:c4:01:fc:aa
2.获取要访问的服务器的信息
root@yutao:~# host pop.126.compop.126.com is an alias for pop3.126.com.pop3.126.com is an alias for pop3.126.idns.yeah.net.pop3.126.idns.yeah.net has address 123.125.50.23通过host命令确定要访问的域名对应的ip地址:域名--pop.126.comip地址—123.125.50.23
三、分析包信息
1.先看看包信息的截图
2.包信息分析
本文重点分析TCP连接的三次握手,对于断开连接的四次握手,这里还有一些疑问,所以暂时不分析。
首先,通过follow tcp stream可以看到如下内容,也就是显示在终端中的内容:
+OK Welcome to coremail Mail Pop3 Server (126coms[96cf230d1dfd5e9799113d194aeefd37s])
quit
+OK core mail
其次,概述这12条记录的内容
1-3正是建立TCP连接的三次握手;
4-9是本机与服务器的交互信息,其中包含一些携带ack的确认信息;
10-12是断开连接的相关信息
我们重点来研究前三条记录。
先来看第一条记录的详细信息,包括四个部分:框架、以太网协议(链路层)、IP协议(网络层)、TCP协议(传输层)。一共有74个字节的内容:
框架内容如下图所示:
包含的内容有一共多少个字节,到达具体的时间,精确到ns等信息。
以太网协议如下图所示
此部分内容一个占14个字节,分为三部分:目的物理地址(6个字节)、源的物理地址(6个字节)、类型(2个字节)
前面已经用ifconfig命令查到了本机的mac(物理)地址为78:45:c4:01:fc:aa,所以这里前6个字节是目的的物理地址,而接下来的6个字节就是本机的物理地址,紧接着的两个字节0x0800代表了接下来的类型是IP数据报,若为0806则表示是ARP请求/应答,若为8035则代表RARP请求/应答。
接下来的20字节内容代表IP首部,这是一个标准的IP首部,不包含选项字段。
第一个字节45包含两部分内容,4代表IP协议版本号是4,即IPv4;5代表IP首部的长度(1单位为4个字节,所以5代表此IP首部长度为20个字节);
第二个字节代表服务类型,10可以代表telnet;
接下来两个字节代表整个IP数据报的总长度(注:后面的TCP首部及数据都包含在IP数据报内),所以74个字节中,减去14个字节代表以太网协议,剩下的都是IP数据报的内容,为60个字节(1单位代表1个字节,与前面的首部长度的单位不同);
然后的两个字节表示标识;然后的两个字节包含一个3位标志和13位片偏移;然后的一个字节40代表生存时间为64;
部分省略.....最后的8个字节分别表示源IP地址和目的IP地址,前面我们已经知道,本机IP地址为192.168.33.72,目的IP地址为123.125.50.23,将其转为16进制后就是看到的数据了。
终于到了我们的TCP数据报了,这部分就是最后的内容,包含40个字节,其中20个字节是TCP首部,另外20个字节是选项数据,所以这整个数据报都没有包含任何数据信息。这里我们重点分析前20个字节的首部信息,选项数据略过。
前4个字节是端口号:2字节源端口号46367 + 2字节目的端口号110(我们在之前的telnet命令中已经指定);b5 1f(46376) 00 6e(110)
之前的IP地址,加上现在的端口号,这正是socket编程中通讯必须的数据。
接下来是4个字节的序号和4个字节的确认序号,不过确认序号只有在标志ACK为1时才有意义,这个数据报中ACK为0,所以它无意义。本数据报的SYN为1,
SYN是同步序号,表示发起一个连接。当前的序号是97 c9 06 5b,后面当服务器返回ACK确认信息时,这个值会加1,它称为ISN(Initial Sequence Number),
它的产生是随时间变化的,RFC793中它每4ms加1.
接下来是4位TCP首部长度,也就是a0中的a,a代表10,所以它代表首部长度为10*4字节,也就是40个字节,20+20(选项)。
这里的标志位只有SYN为1,代表要建立连接;
后面的6个字节忽略之:分别为2字节窗口大小、2字节检验和、2字节紧急指针。
我们已经分析完了第一条数据报,这是本机向服务器发出的建立连接的申请,第二条数据报则应该是服务器发回的确认受到第一条数据报的信息,以及服务器也想要建立连接的请求,第三条就是本机发给服务器,告诉服务器我们已经受到你刚才发过来的第二条数据报了。
主要需要留意的几点在标志位和序号及确认序号的不同。
看第二条数据报的这些内容:
留意三点:
1. 5e d2 95 89 这是服务器发来的序号,当然它也是一个随时间变化的,这里看不出什么规律,但后面它会加1;
2.紧接着的确认序号:97 c9 06 5c ,对比之前第一条发往服务器的数据报的序号97 c9 06 5b,它已经加1;
3.标志位中ACK--Acknowledgement: Set和SYN都为1,ACK代表服务器确认收到了第一条数据报,而且正确接收了(利用检验和判断),
同时SYN代表服务器也希望能够建立一条连接。
再看第三条数据报内容:
看点同样有三个:
1.确认序号为5e d2 95 8a,对比前一个数据报的序号(拿现在的“确认序号”与之前的“序号”相比,而不是两个数据报的“确认序号”或“序号”相比),正好加1
2.现在的序号97 c9 06 5c正是之前的确认序号
3.只有ACK标志为1,表明确认正常接收到服务器传来的信息。
至此,TCP连接的三次握手算是成功了。对于终止连接的四次握手,这里有疑问,怎么我这里看到的数据报只有三条呢? 还请高人指点,不知是否是我的telnet操作的关系导致的。
- 结合WireShark工具学习TCP协议
- 结合Wireshark深入理解TCP/IP协议
- 基于tcp协议使用wireshark工具
- 基于tcp协议使用wireshark工具
- 工具之网络协议分析 Wireshark基本介绍和学习TCP三次握手
- 【安全牛学习笔记】基本工具-常见协议包、WIRESHARK-TCP
- 结合Wireshark捕获分组深入理解TCP/IP协议栈之TCP协议
- http协议学习及Wireshark工具使用
- wireshark tcp 协议分析
- WireShark分析TCP协议
- wireshark tcp 协议分析
- wireshark tcp 协议分析
- 结合Wireshark捕获分组深入理解TCP/IP协议之IP协议
- 结合Wireshark捕获分组深入理解TCP/IP协议栈之HTTP协议
- 【网络】结合Wireshark捕获分组深入理解TCP/IP协议栈 之 HTTP协议
- 结合Wireshark捕获分组深入理解TCP/IP协议栈之TCP协议(TCP报文格式+三次握手实例)
- 结合Wireshark捕获分组深入理解TCP/IP协议栈之TCP协议(TCP报文格式+三次握手实例)
- 结合Wireshark捕获分组深入理解TCP/IP协议栈之TCP协议(TCP报文格式+三次握手实例)
- Mysql 原理,命令,及技巧总结
- Python中module、library、package辨析
- Install Sublime Text 2 Editor In Ubuntu
- hdu1251
- web系统中使用js调用activex打印费用报销单
- 结合WireShark工具学习TCP协议
- Webservice_20_SOAP的基于契约优先头信息处理(隐式头信息)
- scanner
- kthread_create和kernel_thread的区别和总结
- linux_电源管理
- mac安装插件失败,提示“无法打开Plugins替身,因为找不到其原身”
- Android_LayoutInflater的作用与用法详解
- android学习笔记1 menu和actionBar学习笔记
- 抽象工厂模式-与-工厂方法模式区别