【计算机网络实验】TCP协议的抓包分析:三次握手四次挥手UDP和TCP的区别(超详细教程)

news2024/11/20 15:37:49

计算机网络实验——TCP协议抓包分析


文章目录

  • 计算机网络实验——TCP协议抓包分析
    • 一、基础知识点
      • 1、运输层两个重要协议的特点对比(TCP和UDP)
      • 2、TCP报文的格式
      • 3、常见的TCP报文标识字段(FLAG字段)
      • 4、TCP连接的建立过程及理解——三次握手
      • 5、TCP释放连接的过程及理解——四次挥手
    • 二、实验操作
      • 1、获取IP地址
      • 2、监听并抓包
      • 3、找到并分析三次握手的数据包
      • 4、找到并分析四次挥手的数据包
    • 三、补充
      • 1、wireshark各颜色的标识的含义?
      • 2、实验目的
      • 3、实验内容


一、基础知识点


  • 1、运输层两个重要协议的特点对比(TCP和UDP)

    • UDP协议(用户数据报协议):UDP协议是无连接且不保证可靠交付的,面向报文且没有拥塞控制,支持一对一的通信也支持一对多、多对多、多对一的交互通信。
    • TCP协议(传输控制协议):TCP协议面向连接且保证可靠交付,提供全双工通信,是面向字节流的点对点连接,将连接作为最基本的抽象。

  • 2、TCP报文的格式

在这里插入图片描述


  • 3、常见的TCP报文标识字段(FLAG字段)

    • 紧急URG:当标志字段(flag)的URG=1时,表示紧急指针字段有效,表明此数据包中有紧急数据,应该尽快传送。
    • 确认ACK:当且仅当ACK=1时,确认号字段才是有效的,反之无效。TCP规定,在连接建立以后所有传送的报文的ACK必须为置为1。
    • 推送PSH:当两个应用进程进行交互式通信时,将PSH设置为1使得报文在被接收方接收以后尽快推送并交付给应用进程,不再等到缓存填满以后再向上交付。
    • 复位RST:当RST=1时,表明TCP链接中出现严重差错,此时必须释放后重新建立连接。
    • 同步SYN:用来在建立连接时同步序列号,当SYN=1,ACK=0时表示这是一个请求建立连接的报文;当SYN=1,ACK=1时,表示接收方同意建立连接。
    • 终止FIN:表示停止、终止TCP链接,当FIN=1时表明此报文段的发送方已经完成数据的发送,申请释放TCP连接

  • 4、TCP连接的建立过程及理解——三次握手

    在这里插入图片描述

    • TCP的连接建立需要经历三次握手:第一次握手是由客户端发出,将SYN标志置1,申请与服务器端建立连接,仿佛是说“你好,聊天吗”;
    • 服务器端收到请求以后确认与其建立连接,回复一个确认数据包,SYN和ACK标志置1,这是第二次握手,仿佛是回复“可以,你说吧”;
    • 客户端收到来自服务器端的确认以后,对其确认再进行一次确认,将ACK标志置1,表示确认,仿佛是说“收到,那我开始说了”,至此完成第三次握手,TCP链接正式建立,客户端会向上层汇报,开始数据传送。

  • 5、TCP释放连接的过程及理解——四次挥手

    在这里插入图片描述
    • TCP链接的释放需要经历四次挥手:第一次挥手一般由最开始发起连接的一方(一般是客户端)主动提出,将FIN标志置1,表示提出终止连接的申请,部分数据包可能也会将ACK标志置1,可以理解为对之前所接受的数据进行确认,这是第一次挥手,仿佛是在跟服务器端说“我要挂了,你还有事吗”;
    • 在收到客户端的终止TCP连接申请以后,服务器端会将ACK标志置1发还客户端,表示对申请的确认,这是第二次挥手,仿佛是在回复“已经收到申请,你先别急,我再想想还有没有事,等一下再通知你”;
    • 完成第二次挥手以后,服务器端会向上汇报,通知应用进程停止接受数据,并确认是否还有尚未发送完成的数据,若无,则将FIN和ACK标志置1,发还给客户端,申请释放连接,这是第三次挥手,仿佛是在说“我这边没事了,你可以挂了”;
    • 客户端收到第三次挥手的数据包以后会发送对这个数据包的确认数据包,将ACK置1,表示确认断开连接,此时TCP连接将进入预关闭状态,客户端将设置一个时间等待计时器(TIME-WAIT timer)并等待2MSL时间确保服务器端彻底挂掉,防止“诈尸”,若过了2MSL时间以后服务器端没有任何数据包发送过来,客户端就能彻底确认服务器端已经正常释放连接,自己也就会随之释放连接,至此,四次挥手结束,TCP连接彻底被释放。

二、实验操作


  • 1、获取IP地址

使用控制台命令获取目标网站的IP地址,方便后续抓包的时候进行分析:输入ping xxxx
在这里插入图片描述

这里ping不到是因为我ping的是我们学校的官网,可能有设置了过滤ping命令。没关系,除了ping命令以外还可以使用nslookup命令:输入nslookup xxxx
在这里插入图片描述

有些出来的ip地址很奇怪很长,这个是ipv6的地址,较短的是ipv4的


  • 2、监听并抓包

打开wireshark,选择本机上网的接口进行监听,筛选条件设置为_ws.col.protocol==”TCP”,打开浏览器并访问目的网址(注意,此时后台的进程除了wireshark和浏览器以外的全都要关掉,防止产生不必要的数据包)


  • 3、找到并分析三次握手的数据包

    在这里插入图片描述在这里插入图片描述

    • 找到一个[SYN],一个[SYN ACK],还有一个[ACK]的就是三次握手的全部数据包了,这三个包不一定是连在一起的,要找自习一点,在wireshark的info列可以很清楚的看到。
    • 另外还要强调一点,在找数据包的时候不能只关注源地址和目的地址是否正确,要记住TCP协议是一个传输层的协议,传输层提供的是应用进程之间的逻辑通信,端口这一个概念在运输层是非常重要的,所以我们要看清楚源端口和目的端口,有时候本机会有多个进程(多个端口)和目标网站进行通信,每个端口就都会建立TCP连接,不同端口的包是不一样的,不论是三次握手还是四次挥手都要注意这一点。
    • 打开数据包,重点关注以下五个字段即可:
      • source port源端口
      • destination port目的端口
      • sequence number序列号:seq的值
      • acknowledgement number确认号:ack的值
      • flag标志字段:判断包的类型、含义
        在这里插入图片描述

  • 4、找到并分析四次挥手的数据包

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    • 一共四个包,两个[FIN ACK](也有可能不带ACK),两个[ACK],注意,一定是FIN ACK作为第一次挥手,然后接收方连发一个ACK和一个FIN ACK,最后发送方回一个ACK。
    • 注意端口号前后是否一致
    • 也有可能只抓到了三个包,这是因为当服务器端收到第一次挥手的包以后发现自己没有什么数据可以再发的了,于是就把第二次挥手和第三次挥手的数据包合并发送了,这种情况会抓到两个[FIN ACK]和一个[ACK]的包。
    • 注意,这四个包不一定是连在一起的,特别是在第一次挥手以后服务器端如果还有数据要发,则会在第一次挥手和第二次挥手的包之间产生其他的数据包,抓包结束在找数据包的时候比较费时间,一定要细心。只要四个包的目的端口和源端口都是那两个,而且seq和ack的值能够对得上,就说明这四个就是四次握手的包。

三、补充


  • 1、wireshark各颜色的标识的含义?

    在这里插入图片描述

  • 2、实验目的

熟悉网络协议分析的原理。
熟悉网络协议分析软件wireshark的使用。
加深对TCP连接建立三次握手过程、数据传输过程和释放过程(四次挥手)细节的掌握。
加深对TCP协议的理解。


  • 3、实验内容

学习使用网络协议分析软件wireshark。
捕捉所需要TCP报文段的三次握手和四次挥手的各个字段,并分析其内容。
分析TCP数据报头部各个字段

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1682992.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CTFshow之文件上传web入门151关-161关解密。包教包会!!!!

这段时间一直在搞文件上传相关的知识,正好把ctf的题目做做写写给自字做个总结! 不过有一个确定就是所有的测试全部是黑盒测试,无法从代码层面和大家解释,我找个时间把upload-labs靶场做一做给大家讲讲白盒的代码审计 一、实验准…

多台Centos快速区分,让Centos开机自动显示它的IP地址!

背景说明:当公司拥有多台Centos服务器,管理员很容易弄混淆导致不好区分,在这样的情况下我们可以写个简单脚本来实现开机自动显示它的IP地址,从而达到区分开来的结果! 首先我们来开下效果,登录之前的 下面是…

调试时JSON库一直提示 PDB找不到 使用需要对象文件来进行调试的 /DEBUG:Fastlink生成的

最近调试时一直提示上面的提示框,很是烦躁。 为什么会出现这个错误呢,我一直使用的是/DEBUG。出现原因没有找出来,理论上市使用了/DEBUG:Fastlink这个模式才会出,但是就是一直在报这个错误。 /DEBUG(生成调试信息&am…

Linux进程的地址空间

Linux进程的地址空间 1. 前言 在编写程序语言的代码时&#xff0c;打印输出一个变量的地址时&#xff0c;这个地址在内存中是以什么形式存在的&#xff1f;一个地址可以存储两个不同的值吗&#xff1f; 运行以下代码&#xff1a; #include <stdio.h> #include <un…

云和恩墨海外首秀在吉隆坡召开的2024中国智能科技与文化展览会

作为中马建交50周年官方重点推荐的活动之一&#xff0c;2024中国智能科技与文化展览会&#xff08;第四届&#xff09;于5月20至21日在毗邻吉隆坡双子塔的吉隆坡国际会展中心举办。本次展览会获得马来西亚科学技术创新部、马来西亚通讯部、中国驻马来西亚大使馆和马来西亚中华总…

向郭老师学习研发项目管理

学习研发项目管理思路 通过以下思路来学习研发项目管理&#xff1a; 1、研发项目管理分3级 2、研发项目管理分4类 3、研发项目管理分5大过程组 4、新产品开发项目生命周期分6个阶段 5、研发项目管理分10大知识体系 项目组合、项目集、简单项目3级管理 针对Portfolio组合…

融合基因组序列识别scATAC-seq的细胞类型

利用scATAC-seq技术进行单细胞分析&#xff0c;可以在单细胞分辨率下深入了解基因调控和表观遗传异质性&#xff0c;但由于数据的高维性和极端稀疏性&#xff0c;scATAC-seq的细胞注释仍然具有挑战性。现有的细胞注释方法大多集中在细胞峰矩阵上&#xff0c;没有充分利用潜在的…

列表的创建和删除

目录 使用赋值运算符直接创建列表 创建空列表 创建数值列表 删除列表 自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501\ 对于歌曲列表大家一定很熟悉&#xff0c;在列表中记录着要播放的歌曲名称…

精品UI响应式视频教程知识付费系统源码在线教育网络课程在线点播可二开分销分站功能

这是一款知识付费平台模板&#xff0c;后台可上传本地视频&#xff0c;批量上传视频连接&#xff0c; 视频后台可设计权限观看&#xff0c;免费试看时间时长&#xff0c;会员等级观看&#xff0c;付费观看等功能&#xff0c; 也带软件app权限下载&#xff0c;帮助知识教育和软件…

数据开放最全sql面试合集(leetcode)

关注公众号“大数据领航员"领取PDF版本和大数据面经 https://leetcode-cn.com/problemset/database/ 题目都是leetcode 上了可以点击题目会有相应的链接 由于个人比较喜欢用开窗函数&#xff0c;所以都优先用了开窗 &#xff0c;当然这些并不一定都是最优解&#xff0c…

【C++】多态(多态的原理)

在本篇博客中&#xff0c;作者将会带领你深入理解C中的多态。 声明&#xff01;&#xff01;&#xff01;本代码以及讲解都是在32位机器下进行完成的&#xff0c;64位机器下会有所不同&#xff0c;但大同小异。 一.多态的概念 什么是多态&#xff1f; 多态就是不同的对象去做…

patroni 部分源码阅读

问题1 /usr/local/lib/python3.9/site-packages/patroni/postgresql/init.py 964 contextmanager 965 def get_replication_connection_cursor(self, hostNone, port5432, **kwargs): 966 conn_kwargs self.config.replication.copy() 967 conn_kwar…

【Kubernetes】kubectl详解

陈述式资源管理方法&#xff1a; 1.kubernetes 集群管理集群资源的唯一入口是通过相应的方法调用 apiserver 的接口 2.kubectl 是官方的CLI命令行工具&#xff0c;用于与 apiserver 进行通信&#xff0c;将用户在命令行输入的命令&#xff0c;组织并转化为 apiserver 能识别的…

JavaWeb基础(HTML,CSS,JS)

这些知识用了三四天左右学完&#xff0c;因为是JavaWeb&#xff0c;并不是前端&#xff0c;所以只是够用&#xff0c;不是深入&#xff0c;但是这确实是学校一个学期交的东西&#xff08;JavaWeb课程&#xff09;。 总结一下网页分为三部分&#xff1a;HTML(内容结构),CSS&…

HTML | 在IDEA中配置Tomcat时遇到的一些问题的解决办法

目录 IDEA中没有web文件夹目录 Tomcat在哪里配置服务器 IDEA中没有web文件夹目录 首先说在IDEA中没有web这个文件夹的解决办法 在菜单栏中帮助中点击查找操作搜索添加框架支持&#xff08;因为我的IDEA会出现无法点击这个操作&#xff0c;所以我对该操作添加了快捷键&#xf…

linux系统内存持续飙高的排查方法

目录 前言&#xff1a; 1、查看系统内存的占用情况 2、找出占用内存高的进程 3、解决方法 4、补充&#xff1a;如果物理内存使用完了&#xff0c;会发生的情况 前言&#xff1a; 如果一台服务器内存使用率持续处于一个高峰值&#xff0c;服务器可能会出现响应慢问题。例如s…

03:PostgreSQL逻辑结构(表空间、数据库、模式、表、索引)

环境规划&#xff1a; 操作系统&#xff1a;CentOS 7.9 64bitPostgreSQL 版本&#xff1a;16.x 或 15.x安装用户&#xff1a;postgres软件安装目标路径&#xff1a;/usr/pgsql-<version>数据库数据目录&#xff1a;/pgdata 目录 表空间Tablespace 默认表空间 手动创建…

【Vue】性能优化

使用 key 对于通过循环生成的列表&#xff0c;应给每个列表项一个稳定且唯一的 key&#xff0c;这有利于在列表变动时&#xff0c;尽量少的删除和新增元素。 使用冻结的对象 冻结的对象&#xff08;Object.freeze(obj)&#xff09;不会被响应化&#xff0c;不可变。 使用函…

【贪心算法题目】

1. 柠檬水找零 这一个题目是一个比较简单的模拟算法&#xff0c;只需要根据手里的钱进行找零即可&#xff0c;对于贪心的这一点&#xff0c;主要是在20元钱找零的情况下&#xff0c;此时会出现两种情况&#xff1a;10 5 的组合 和 5 5 5 的组合&#xff0c;根据找零的特点&a…

通过管理系统完成商品属性维护

文章目录 1.数据库表设计1.商品属性表 2.renren-generator生成CRUD1.基本配置检查1.generator.properties2.application.yml 2.启动RenrenGeneratorApplication.java生成CRUD1.启动后访问localhost:812.生成商品属性表的crud 3.将crud代码集成到项目中1.解压&#xff0c;找到ma…