米葫芦网

用协议分析工具学习TCP/IP(三)

热度:12℃ 发布时间:2023-11-16 20:02:07

编者按:上篇我们搭建一个最简单的网络环境《用协议分析工具学习TCP/IP(二)》我们分别介绍了查找服务器、建立连接,下面我们来讨论数据传输和终止连接。
第三组 数据传输
1)下图显示的是57-60行的数据
 
图14
2)解释数据包
这四行数据是数据传输过程中一个发送一个接收的过程。
前文说过,TCP提供一种面向连接的、可靠的字节流服务。当接收端收到来自发送端的信息时,接受端要发送一条应答信息,表示收到此信息。数据传送时被TCP分割成认为最适合发送的数据块。一般以太网在传送时TCP将数据分为1460字节。也就是说数据在发送方被分成一块一块的发送,接受端收到这些数据后再将它们组合在一起。
57行显示1号机给208号机发送了大小为1514字节大小的数据,注重我们前文讲过数据发送时是层层加协议头的,1514字节=14字节以太网头 + 20字节IP头 + 20字节TCP头 + 1460字节数据
58行显示的应答信号ACK为:1781514222,这个数是57行得SEQ序号1781512762加上传送的数据1460,208号机将这个应答信号发给1号机说明已收到发来的数据。
59、60行显示的是继续传送数据的过程。
这个过程就像我向张三借书,借给我几本我要说:“我已借了你几本了。”,他说:“知道了”。
3)头信息
图15-1和图15-2分别是57行和58行的头信息,解释参考第二组。
 
第四组 终止连接
1)下图显示的是93-96行的数据
 

图16
2)解释数据包
93-96是两机通讯完关闭的过程。
建立一个连接需要三次握手,而终止一个连接要经过4次握手。这是因为一个TCP连接是全双工(即数据在两个方向上能同时传递),每个方向必须单独地进行关闭。4次握手实际上就是双方单独关闭的过程。
本例文件下载完后,关闭浏览器终止了与服务器的连接图16的93-96行显示的就是终止连接所经过4次握手过程。
93行数据显示的是关闭浏览器后,如图17-1所示208号机将FIN置1连同序号(SEQ)987695574发给1号机请求终止连接。
94行数据和图17-2显示1号机收到FIN关闭请求后,发回一个确认,并将应答信号设置为收到序号加1,这样就终止了这个方向的传输。
95行数据和图17-3显示1号机将FIN置1连同序号(SEQ)1773196056发给208号机请求终止连接。
96行数据和图17-4显示208号机收到FIN关闭请求后,发回一个确认,并将应答信号设置为收到序号加1,至此TCP连接彻底关闭。
3)头信息
 
 
六、扫描实例
下面我们再举个ping的实例,测试某台计算机是否通,最常用的命令就是ping命令。Ping 一台计算机,出现如图18所示界面就是通,出现如图19所示界面就是不通,不通有两种情况,一是该计算机不存在或没接网线,二是该计算机安装了防火墙并设置为不答应ping。如何区别这两种情况呢?下面还是利用iris跟踪上述情况。
 

图18
 
图19
如图20是ping通的情况。
如图21是ping不通该计算机不存在的情况。从图可以看出ARP请求没有回应。
如图22是ping不通,该计算机存在但安装了防火墙的情况。从图可以看出ARP请求有回应。但ICMP请求没回应。
从分析可以看出虽然后两种情况的表面现象是一样的,但实质确是截然相反的。通过头信息可以清楚的看出PING是
ICMP协议来完成的,通讯过程是在第三层完成的,没有用到第四层的TCP协议。
 

图20
 
图21

图22
七、后记
本文不是个教程,许多问题都没有涉及到,比如TCP重发、IP分解、路由等,只是提出个学习思路,希望能起到抛砖引玉的作用。TCP/IP协议族是非常复杂的,但只要理解了还是不难学的。最后向感爱好的朋友提个问题:分别telnet三台机器,一台正常23端口开放,一台网是通的但23端口没开放,另外一台是不存在的。用我们学过的方法跟踪一下,比较三个的不同。其实这就是用TCP扫描判定对方机器是否在线的一种方法。

网友评论
评论
发 布

更多软件教程
  • 软件教程推荐
更多+
Greenfoot设置中文的方法

Greenfoot设置中文的方法

Greenfoot是一款简单易用的Java开发环境,该软件界面清爽简约,既可以作为一个开发框使用,也能够作为集成开发环境使用,操作起来十分简单。这款软件支持多种语言,但是默认的语言是英文,因此将该软件下载到电脑上的时候,会发现软件的界面语言是英文版本的,这对于英语基础较差的朋友来说,使用这款软件就会...

07-05

Egret UI Editor修改快捷键的方法

Egret UI Editor修改快捷键的方法

Egret UI Editor是一款开源的2D游戏开发代码编辑软件,其主要功能是针对Egret项目中的Exml皮肤文件进行可视化编辑,功能十分强大。我们在使用这款软件的过程中,可以将一些常用操作设置快捷键,这样就可以简化编程,从而提高代码编辑的工作效率。但是这款软件在日常生活中使用得不多,并且专业性...

07-05

KittenCode新建项目的方法

KittenCode新建项目的方法

KittenCode是一款十分专业的编程软件,该软件给用户提供了可视化的操作界面,支持Python语言的编程开发以及第三方库管理,并且提供了很多实用的工具,功能十分强大。我们在使用这款软件进行编程开发的过程中,最基本、最常做的操作就是新建项目,因此我们很有必要掌握新建项目的方法。但是这款软件的专业性...

07-05

Thonny设置中文的方法

Thonny设置中文的方法

Thonny是一款十分专业的Python编辑软件,该软件界面清爽简单,给用户提供了丰富的编程工具,具备代码补全、语法错误显示等功能,非常的适合新手使用。该软件还支持多种语言,所以在下载这款软件的时候,有时候下载到电脑中的软件是英文版本的,这对于英语基础较差的小伙伴来说,使用这款软件就会变得十分困难,...

07-05

最新软件下载