计算机网络实验 |WireShark抓包分析

本文介绍了Wireshark的基本使用,着重解析了TCP报文的序列号、确认号和Flags标志位,以及HTTP报文分析。通过实例解释了TCP的三次握手过程,并探讨了报文丢失后的确认策略。此外,还提供了Wireshark抓包的实战应用。
摘要由CSDN通过智能技术生成

摘要: WireShark基本使用,TCP报文分析,Http报文分析,顺便复习下TCP/IP,HTTP的知识点。

TCP协议

TCP是一种面向连接的,可靠的基于字节流的传输层协议。

它的报文格式为:
TCP报文结构
(挺多字段的,挑重点的理解一下:)

  • 序列号(Sequence Number):长度为32 bits节。指定了当前数据分片中分配给第一字节数据的序列号。在TCP传输流中每一个字节为一个序号
    如果TCP报文中flags标志位为SYN,该序列号表示初始化序列号(ISN),此时第一个数据应该是从序列号ISN+1开始。

  • 确认号(Acknowledgment Number):长度为32bits。是期望收到对方下一个报文段的第一个数据字节的序号。 例如: B正确收到了A的一个报文段,其序号为501,长200字节,则表明B正确收到了A发送的序号到700为止的数据,因此,B期望收到A的下一数据号为701,则B在发送给A的确认报文段中把确认号置位701 (不是700,也不是501)
    == 确认号为N,则表明序号到N-1为止的所有数据都正确接收到了==

  • TCP flags Tcp在连接中通过Flags标志位来表示传输中的连接状态,可以通过标志位来定位问题。

新版TCPflags字段如下:
新版TCPflags字段

简单介绍: 详细请参考-link
FIN: "finished"简写。表示发送者以及发送完数据。通常用在发送者发送完数据的最后一个包中。
SYN: "Synchronisation"简写。表示三次握手建立连接的第一步,在建立连接时发送者发送的第一个包中设置flag值为SYN。
ACK: "Acknowledgment"简写。表示包已经被成功接收。

例题:

  1. 假设主机A通过一条TCP连接向主机B发送两个紧接着的TCP报文段。第一个报文段的序号为90,第二个报文段序号为110。
    a. 第一个报文段中有多少数据?
    b. 假设第一个报文段丢失而第二个报文段到达主机B。那么在主机B发往主机A的确认报文中,确认号应该是多少?

a.共有110-90 = 20 字节的数据 (带单位)
b.应该为 90

TCP三次挥手

TCP建立连接的过程叫做握手,握手需要在客户端和服务器之间交换3个TCP报文段。
3次握手

第一次握手: 客户端向服务器发送连接请求包,标志位SYN(同步序号)置为1,初始序号为seq=J

(TCP规定:SYN报文段(即SYN=1的报文段)不能携带数据,但要消耗掉一个序号,这是TCP客户端进入SYN-SENT(同步已发送)的状态)

第二次握手: 服务器收到客户端发过来报文,由SYN=1知道客户端要求建立联机。向客户端发送一个SYN和ACK都置为1的TCP报文,设置初始序号seq=K,将确认序号设置为客户的序列号加1即ack=J+1

此时TCP服务器进入SYN-RCVD(同步收到)的状态

第三次握手: 客户端收到服务器发来的包后检查确认序号是否正确,即J+1。以及标志位ACK是否为1。若正确,客户端再次发送确认包,ACK标志位为1,SYN标志位为0。服务器收到后确认序号值与ACK=1则连接建立成功,可以传送数据了。

用wireshark抓包

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值