网络工程师学习笔记_TCP-ARP工作流程及Wireshark抓包分析_精华篇【入门指导】

我们众元教育的老师上课的时候会仔细讲一些ARP和TCP建立连接的过程,这个是最常用的,所以特意做了一些整理,还有实验相关的,方便大家复习~

ARP工作原理

地址解析协议ARP主要是用来将已知的IP地址解析为MAC地址协议。

就是我知道你的IP地址,但是我不知道你的MAC地址时,可以用这个协议知道MAC地址,就像我们点给别人买东西只知道收件人电话,不知道收货地址一样。

ARP工作如图所示:

在这里插入图片描述

由上图所示,HostA知道HostB的IP地址,但不知道其对应MAC地址,工作过程如下:

(1) 网络设备一般都一个ARP缓存,用来存放IP地址与对应MAC地址的映射关系。在发送数据之前,主机HostA会先查找自己的ARP缓存表,查看是否存在HostB的ARP表项,发现不存在。

(2) 于是HostA广播发送ARP请求报文,该网络中所有主机包括网关都会收到此报文。

其发送的ARP数据包格式如下所示:
在这里插入图片描述

Hardware Type表示硬件地址类型,一般为以太网;
Protocol Type表示三层协议地址类型,一般为IP;
Hardware Length和Protocol Length为MAC地址和IP地址的长度,单位是字节;
Operation Code指定了ARP报文的类型,包括ARP Request和ARP Reply;
Source Hardware Address指的是发送ARP报文的设备MAC地址;
Source Protocol Address指的是发送ARP报文的设备IP地址;
Destination Hardware Address指的是接收者MAC地址,在ARP Request报文中,该字段值为0;
Destination Protocol Address指的是接收者的IP地址

(3)其发送的ARP Request包会封装在以太帧里,以太帧的帧头源MAC地址为HostA的MAC地址,因为不知道主机HostB的地址,所以以太帧的目标MAC地址是广播地址FF-FF-FF-FF-FF-FF。

(4)ARP Request包里面也有发送端的MAC地址、IP地址和目标端的MAC地址、IP地址,因为发送ARP Request包时是不知道目标端MAC地址的所以ARP Request包里面的目标MAC地址为0,ARP报文类型为Request。

(5)网络中所有主机收到ARP Request报文后,会检查报文里面的目的端IP地址是不是自己,不是则抛弃报文不响应。是自己则将报文中的发送端MAC地址和IP地址记录到自己的ARP缓存表里面,然后单播发送ARP Reply报文给HostA。

(6)ARP Reply报文里面发送端IP地址和MAC地址都是自己的,接收端IP地址和MAC地址都是HostA的,ARP报文类型为Reply。

(7)主机HostA收到主机HostB的ARP Reply包,会检查主机IP地址与MAC地址是否与报文的目的端是一样的,不一样则抛弃,用于则会记录发送端的MAC地址和IP地址。

(2)于是双方都有的相应的IP地址与MAC地址映射,可以直接通信。

验证:

设备1 IP地址:192.168.1.19 MAC:vivoXXXXX

设备2 IP地址:192.1681.29 MAC:30:XXXXXXX

(1)在设备上使用ping命令测试使用Wireshark抓包软件对ARP数据包进行数据抓包,ARP Request包发送如图所示:
在这里插入图片描述

(2)由方框可知,在数据帧头部中,源MAC地址是设备的MAC地址,目标MAC地址是广播地址FF-FF-FF-FF-FF-FF。由圆框可知,在ARP报文中发送端IP地址和MAC地址都是PC1的,目标MAC值为0,目标IP地址为192.168.1.29.

(3)ARP Reply数据包回应如图所示:
在这里插入图片描述

由方框可知,在数据帧头部,源MAC地址为设备2和目标MAC地址为设备1;

由圆框可知,在ARP Repla包中,发送端IP地址和MAC地址都为设备2,接收端IP地址和目标地址都为设备1.可知发送ARP Reply包是单播的。

(4)验证成功。

TCP工作原理

TCP是一种面向连接的端到端协议。是可靠的,也就是说在传输过程中,会检查数据包是否正确完整的发送给目标主机,若没有会进行重传等一些操作。

TCP头部是封装在IP数据包里面的,具体内容如图所示:
在这里插入图片描述

这里解释一些常用的一些字段:

源端口号:源主机的应用程序使用的端口号。

目的端口号:目的主机的应用程序使用的端口号

序列号:用于标识从发送端发出的不同的TCP数据段的序号。数据段在网络中传输时,它们的顺序可能会发生变化;接收端依据此序列号,便可按照正确的顺序重组数据。

确认序列号seq:用于标识接收端确认收到的数据段。确认序列号为成功收到的数据序列号加1。

头部长度:表示头部占32bit字的数目,它能表达的TCP头部最大长度为60字节。

标志位:

URG(紧急): 为1时表明紧急指针字段有效。
ACK(确认):为1时表明确认号字段有效。
PSH(推送):为1时接收方应尽快将这个报文段交给应用层。
RST(复位):为1时表明TCP连接出现故障必须重建连接。
SYN(同步):在连接建立时用来同步序号。
FIN (终止): 为1时表明发送端数据发送完毕要求释放连接。

校验和:校验整个TCP报文段,包括TCP头部和TCP数据。该值由发送端计算和记录并由接收端进行验证。

在TCP需要与对方建立连接时,有3个步骤(3次握手),如图:
在这里插入图片描述

由上图可知,TCP建立连接的三个步骤为:

(1) 第一步,主机A向服务器发送同步序号SYN=1,且生成seq=a(a的值是随机的)请求建立连接,简称第一次握手;

(2) 第二步,服务器A收到主机A的SYN=1,了解到主机A的连接请求,回复ACK number=a+1,SYN=1,ACK=1,并seq=b(b的值是随机生成的),简称第二次握手;

(3) 第三步,主机A收到后检查ACK是否正确,也就是说seq的值是否为a+1,ACK是否为1,若是正确的,主机A发送ACK number=b+1,seq=a+1,ACK=1,表明确认建立连接,简称第三次握手。

这样讲的话就比较书面话,下面就是我们的老师叫我用抓包的方法去验证这个过程的.从本地主机访问百度的TCP握手,如下图所示:
在这里插入图片描述

由上图方框可知,

第一步,本地192.168.1.19给目标112.80.248.76发送SYN=1,其seq=1021…96

第二步,目标主机向本地主机回复了SYN=1,ACK=1,其seq=10…66,ack=1021…97(上一次的seq+1)。

第三步,本地主机给目标主机发送ACK=1,seq=1021…97(第一次发送的seq+1),ack=10…67(上一次seq+1),建立连接。

在TCP需要与对方释放连接时,有四个步骤(4次挥手),如图:
在这里插入图片描述

由上图可知,TCP释放连接的四个步骤为:

(1) 第一步,主机A进程发出连接释放报文,并通知发送数据,发送终止符FIN=1,seq=a(等于前面等于前面已经传送过来的数据的最后一个字节的序号加1),ack=b

(2) 第二步,服务器A收到释放报文,发出确认报文ACK=1,ack =a+1,seq=b(b为自己的序列号)。

(3) 第三步,服务器A将最后的数据发送完毕后,向主机A发送连接释放报文,FIN=1,ACK=a+1,seq=b

(4) 第四步,主机A收到服务器A的连接释放报文后,发出确认,ACK=1,ack=b+1,双方释放连接成功。

四次挥手也抓个包验证一下,访问本地FTP服务器过程,断开连接信息如图:
在这里插入图片描述

由上图方框可知,

第一步,本地192.168.1.19给目标192.1681.24发送FIN=1,ACK=1,其seq=96XX45,ack=11XX51.

第二步,目标主机向本地主机回复了ACK=1,其seq=11XX51,ack=96XX46

第三步,目标主机给本地主机发送FIN=1,ACK=1,seq= 11XX51, ack=96XX46

第四步,本地主机给目标主机回复了ACK=1,seq=96XX46,ack= 11XX52.

最后,双方释放连接成功。

其过程其实是一样的,推出访问网站,等一会就可以看见四次挥手了。好多理论学起来麻烦,一做实验就很直观了,所以在讲课的时候都会做实验,看数据,然后用抓包验证一些。

另外精心整理了一些【TCP/ARP–实验技术文档/视频案例分析/抓包软件模拟】,来进一步巩固你的基础;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果大家想要上面的学习资料,私信 “ 学习 ” 即可免费领取哦!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值