目  录

1、实验目的

2、实验环境

3、实验内容

3.1 利用wget下载新疆大学主页

3.2 使用wireshark分析TCP报文结构

3.3 使用wireshark分析建立连接的三次握手

3.4 使用wireshark分析释放连接的四次挥手

4、实验结果与分析

4.1 利用wget下载新疆大学主页

4.2 使用wireshark分析TCP报文结构

4.3 使用wireshark分析建立连接的三次握手

1. 第一次握手

2. 第二次握手

3. 第三次握手

4.4 使用wireshark分析释放连接的四次挥手

1. 第一次挥手

2. 第二次挥手

3. 第三次挥手

4. 第四次挥手

5、实验小结

5.1 问题与解决办法:

5.2 心得体会:


1、实验目的

        1、了解运输层TCP协议基本概念、报文结构

        2、分析TCP报文头部

        3、分析TCP连接建立过程、TCP连接释放

        4、掌握利用tcpdump和wireshark进行tcp协议分析技术


2、实验环境

        1、硬件要求:阿里云云主机ECS 一台、笔记本电脑一台

        2、软件要求:Linux/ Windows 操作系统


3、实验内容

        TCP是面向连接的、在不可靠的互联网络上提供可靠的端到端通信,是TCP/IP协议集的核心协议。

        TCP为了保证报文传输的可靠,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。

3.1 利用wget下载新疆大学主页

        利用wget下载新疆大学主页www.xju.edu.cn,与此同时使用tcpdump抓包。

3.2 使用wireshark分析TCP报文结构

        根据捕获的数据包,分析TCP报文结构由哪几部分组成,其功能是什么?

3.3 使用wireshark分析建立连接的三次握手

        根据捕获的数据包,分析建立连接的三次握手,将TCP协议中各字段名,字段长度,字段值,字段含义填入到对应表格中。

3.4 使用wireshark分析释放连接的四次挥手

        根据捕获的数据包,分析释放连接的四次挥手,将TCP协议中各字段名,字段长度,字段值,字段含义填入到对应表格中。


4、实验结果与分析

4.1 利用wget下载新疆大学主页

        1. 使用wget命令下载新疆大学主页www.xju.edu.cn。

wget www.xju.edu.cn

        2. 使用tcpdump命令抓取www.xju.edu.cn网站的数据包,并将所抓取的数据包保存在xju.cap文件中。

tcpdump host www.xju.edu.cn -w xju.cap

        3. 使用wireshark打开爬取的数据包文件xju.cap,查看所爬取的数据包的信息。

4.2 使用wireshark分析TCP报文结构

        1. 使用Ping命令查看网站www.xju.edu.cn的IP地址,查询后的IP地址为111.115.76.75。

Ping www.xju.edu.cn

        2. 通过在过滤栏中输入以下语句将使用TCP协议并且IP地址为111.115.76.75的数据包进行过滤。

tcp and ip.addr==111.115.76.75

        3. 根据捕获的数据包,分析TCP报文结构由哪几部分组成,其功能是什么。

        源端口(16位):通信发送方使用的端口号。

        目标端口(16位):通信接收方使用的端口号。

        序号(32位):用来确保数据可靠传输的唯一值。

        确认号(32位):接收方在响应时发送的数值。

        数据偏移(4位):标志数据包开始的位置,TCP 头部的长度。

        保留(6位):保留为今后使用,但目前应该置为0。

        紧急URG:数据包中承载的内容应该立即由 TCP 协议栈立即进行处理:当 URG=1 时,表明

        紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。

        确认ACK:确认收到的数据包:只有当 ACK=1 时,确认号字段才有效;当 ACK=0 时,确认号无效。

        推送PSH:数据包直接发送给应用,而不是缓存起来:接收 TCP 收到 PSH=1 的报文段,就尽快地交付接收应用进程,而不再等到整个缓存都填满了后再向上交付。

        复位RST:之前尝试的连接被关闭,(信号差,信号拥挤):当 RST=1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。

        同步SYN:发起连接的数据包:同步 SYN=1 表示这是一个连接请求或连接接受报文。

        终止FIN:连接成功,传输完毕之后,连接正在断开:用来释放一个连接,FIN=1 表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。

        窗口(16位):匹配缓存区的大小。

        校验和(16位):确认 TCP 数据段中的内容是否发送了变化。

        紧急指针(16位):明确显示数据之前的 16 进制序列号。

        选项:长度可变,最长可达40字节,当没有使用选项时,TCP的首部长度是20字节。

4.3 使用wireshark分析建立连接的三次握手

1. 第一次握手

        客户端将标志位 SYN 置为 1 ,随机产生一个值seq = X,并将该数据包发送给服务器,等待服务器确认。

        分析建立连接的第一次握手,将TCP协议中源端口、目的端口、序号、确认号、窗口、校验和及紧急指针的字段名,字段长度,字段值,字段含义填入到对应表格中。

2. 第二次握手

        服务器收到数据包后由标志位SYN = 1,知道客户端请求建立连接,服务器将标志位 SYN 和 ACK 都置为 1 ,ack= X + 1,随机产生一个值seq= Y,并将该数据包发送给客户端以确认连接请求。

        分析建立连接的第二次握手,将TCP协议中源端口、目的端口、序号、确认号、窗口、校验和及紧急指针的字段名,字段长度,字段值,字段含义填入到对应表格中。

3. 第三次握手

        客户端收到确认后,检查 ack是否为X + 1,ACK 是否为 1 ,如果正确则将标志位 ACK 置为 1 ,ack= Y + 1,并将该数据包发送给服务器,服务器检查 ACK 是否为1 ,如果正确则连接建立成功。

        分析建立连接的第三次握手,将TCP协议中源端口、目的端口、序号、确认号、窗口、校验和及紧急指针的字段名,字段长度,字段值,字段含义填入到对应表格中。

4.4 使用wireshark分析释放连接的四次挥手

1. 第一次挥手

        主动关闭方发送一个 FIN ,用来关闭主动方到被动关闭方的数据传送,也就是主动关闭方告诉被动关闭方:我已经不会再给你发送数据了(当然,在 FIN 包之前发送出去的数据,如果没有收到对应的 ACK 确认报文,主动关闭方依然会重发这些数据),但此时主动关闭方还可以接受数据。

        分析释放连接的第一次挥手,将TCP协议中源端口、目的端口、序号、确认号、窗口、校验和及紧急指针的字段名,字段长度,字段值,字段含义填入到对应表格中。

2. 第二次挥手

        被动关闭方收到 FIN 包后,发送一个 ACK 给对方,确认序号为:收到报文序号seq+收到报文所携带数据长度len+ 1 。上一个报文可能“捎带”了主动关闭方发送的最后一块数据,其长度用字段len来表示。

        分析释放连接的第二次挥手,将TCP协议中源端口、目的端口、序号、确认号、窗口、校验和及紧急指针的字段名,字段长度,字段值,字段含义填入到对应表格中。

3. 第三次挥手

        被动关闭方发送一个 FIN ,用来关闭被动关闭方到主动关闭方的数据传送,也就是告诉主动关闭方,我的数据也发送完了,不会再给你发送数据了。

        分析释放连接的第三次挥手,将TCP协议中源端口、目的端口、序号、确认号、窗口、校验和及紧急指针的字段名,字段长度,字段值,字段含义填入到对应表格中。

4. 第四次挥手

        主动关闭方收到 FIN 后,发送一个 ACK 给被动关闭方,确认序号为:收到报文的序号seq + 收到报文所携带数据长度len+ 1 ,至此,完成四次挥手。

        分析释放连接的第四次挥手,将TCP协议中源端口、目的端口、序号、确认号、窗口、校验和及紧急指针的字段名,字段长度,字段值,字段含义填入到对应表格中。


5、实验小结

5.1 问题与解决办法:

        1. 问题一:使用tcpdump进行数据包的抓取时出现如下提示此命令未找到:

解决方法:由于命令输入错误导致,数据包的抓取命令为tcpdump,而不是tcpdnmp,将对应命令进行更改后错误消失。

        2. 问题二:对指定网络接口的数据包进行抓取时出现如下提示语法错误:

解决方法:由于命令键入不完整所导致,指定网络接口所需要的参数是-i,在eth0前方添加-i后错误消失。

        3. 问题三:使用tcpdump抓取所有的数据包时一直在抓取,不能够自动停止抓包:

解决方法:使用Ctrl+c就可以终止运行的命令,进而就可以停止抓包。

        4. 问题四:使用Wireshark对抓取的数据包进行过滤时出现如下提示输入框出现红色:

解决方法:由于过滤命令输入错误,在过滤地址时使用ip.addr,将输入内容中的id.addr改为ip.addr后红色报错消失。

        5. 问题五:使用Wireshark对抓取的数据包进行多个条件同时成立过滤时出现如下提示输入框出现红色:

解决方法:由于多个条件同时成立时需要使用and进行连接,但是输入命令时并没有使用and进行连接所导致,在输入内容中加入and后红色报错消失。

5.2 心得体会:

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

        2、要控制 TCP 发送速率,不能发送得太快,以免数据来不及处理,也不能发送得太慢,以免浪费资源。

        3、在 TCP 中,发送端和接收端其实都维护着对应的窗口:分别为发送端窗口和接收端窗口。

        4、发送端窗口是由接收窗口剩余大小决定的。接收方会把当前接收窗口的剩余大小写入应答报文,发送端收到应答后根据该值和当前网络拥塞情况设置发送窗口的大小,所以发送窗口的大小是不断变化的,这个不断变化的窗口就叫做滑动窗口。

        5、拥塞控制作用于网络,目的是防止过多的数据拥塞网络,避免出现网络负载过大,带宽被大量占用的情况。

        6、建立连接需要三次握手,断开连接需要四次挥手。

        7、超时重传机制保证每一次传输的数据都是可靠的。

        8、滑动窗口动态调整发送端窗口大小,保证接收方来得及接收数据。

        9、拥塞窗口动态调整发送端窗口大小,防止过多的数据拥塞网络,出现网络带宽不够用的情况。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

知识 IP 的突围:从 “靠感觉” 到 “系统 + AI” 的变现跃迁

越来越多的知识付费从业者陷入 “努力无成果” 的困局:做了内容、上了课程,却没人看、没人买。核心问题不在于能力不足,而在于仍在用 “靠感觉” 的原始方式打造 IP。在流量内卷、节奏加快的当下,“内容情怀” 已撑不起一门生意&a…

4.Java创建对象有几种方式?

1.使用 new 关键字(最常用)通过调用类的构造函数直接实例化对象Person person new Person(); // 调用无参构造 Person person new Person("Alice", 25); // 调用有参构造2.反射机制(动态创建)利用Java反射 API 在运行…

【好题】洛谷 P1600 [NOIP 2016 提高组] 天天爱跑步(倍增LCA+桶)

前言没做出来,看了很多篇题解后AC了,感觉大部分题解讲得不清楚。题目思路结果有两种求法模拟跑步过程,统计每个节点能观察到的人数考虑每条路径会对哪些节点作出贡献(当前路径的玩家能被观察到)尝试第一种求法必须遍历…

valkey之网络管理架构深度解析

一、连接类型实现体系 valkey通过ConnectionType结构体构建了灵活的网络连接抽象,支持多种连接类型的统一管理。每种连接类型都通过填充该结构体的函数指针来实现特定功能,形成了面向接口的设计模式。1.1 socket连接 Socket连接提供了最基础的TCP/IP通信…

【解码文本世界的“隐形分界线”:Windows与Linux回车换行之谜】

在计算机的文本世界里,回车(Carriage Return,CR)和换行(Line Feed,LF)是两个看似简单却意义非凡的字符。它们如同文本中的“隐形分界线”,默默地划分着段落与行,影响着文…

【Project】ELK 7.17.16 日志分析系统部署

ELK 日志分析系统集群部署 本文档基于 Rocky Linux 9.4 系统,部署 ELK 7.17.16(长期支持版)集群 案例准备 1. 节点规划IP主机名部署组件角色说明192.168.100.150kafka01Elasticsearch、Kibana主节点(master) 可视化192…

分布式定时任务系列13:死循环是任务触发的银弹?

传送门 分布式定时任务系列1:XXL-job安装 分布式定时任务系列2:XXL-job使用 分布式定时任务系列3:任务执行引擎设计 分布式定时任务系列4:任务执行引擎设计续 分布式定时任务系列5:XXL-job中blockingQueue的应用 …

Flutter基础(前端教程①③-单例)

现实类比:公司打印机假设你们公司有一台共享打印机:非单例(重复创建):每个员工都自己买一台打印机放在工位上结果:浪费钱,占空间,难维护单例(唯一实例)&#…

力扣刷题 -- 965.单值二叉树

题目示例: 思路分析代码实现 bool isUnivalTree(struct TreeNode* root) {if(rootNULL){return true;}if(root->left && root->val ! root->left->val){return false;}if(root->right && root->val ! root->right->val){re…

uni-api交互反馈组件(showToast)的用法

欢迎来到我的UniApp技术专栏!🎉 在这里,我将与大家分享关于UniApp开发的实用技巧、最佳实践和项目经验。 专栏特色: 📱 跨平台开发一站式解决方案 🚀 从入门到精通的完整学习路径 💡 实战项目经…

借助它,在Web3投资赛道抢占先机

随着互联网技术的飞速发展,Web3的概念逐渐成为科技圈和投资界的热门话题。Web3代表着下一代互联网的发展方向,它强调去中心化、用户主权和数据隐私保护。在这一新兴领域,如何借助Web3技术抢占投资先机,成为许多投资者关注的焦点。…

验证大语言模型不会算数但可以编写算数的程序

摘要:本文通过几个实例测试了大语言模型在数学计算、排序、统计等方面的能力。结果显示,对于简单字符统计、排序等任务,大模型能正确生成实现代码,但当数据区分度降低时容易出错。在计算学生分数排名任务中,大模型生成…

概率论与数理统计(八)

参数估计 通过取样本,并用样本构造函数,达成估计分布函数参数的目的 矩估计法 本质:用样本的各阶矩代替总体的各阶矩,即取: E(X)X‾1n∑iXiE(X2)1n∑iXi2E(X)\overline{X}\dfrac{1}{n}\sum_i X_i\\ E(X^2)\dfrac{1}…

服务器后台崩溃的原因

当我们双十一活动零点拼命刷新却卡在支付完页面,游戏页面等不进去,公司系统瘫痪全体员工干瞪眼,服务器崩溃绝对是数字时代中的酷刑!那服务器为什么会说崩就崩,用户对于这种情况该如何进行避雷呢?服务器主要…

线程池与ThreadPoolExecutor源码解析(上)

一、线程池线程池(ThreadPool)是一种线程复用的机制。它维护着若干个线程,任务来了就复用这些线程去执行,任务做完线程不会销毁,而是回到池中等待下一个任务。为什么要用线程池?降低资源消耗:避…

Linux内核IP分片重组机制剖析:高效与安全的艺术

在IP网络通信中,当数据包超过MTU限制时,路由器会将其拆分为多个分片。这些分片到达目标主机后,内核必须高效、安全地重组原始数据包。Linux内核的net/ipv4/inet_fragment.c实现了一套精妙的分片管理框架,完美平衡了性能和安全性需求。本文将深入剖析其设计哲学与关键技术。…

相机模型和对极几何

一、相机模型 1.针孔相机模型-外参矩阵 1.世界坐标系到相机坐标系 世界坐标系:可以定义空间中任意一个位置,原点位置三个坐标轴方向坐标系姿态(X,Y,Z)相机坐标系:定义在相机上,原点是相机中心,z…

Git 常用命令与操作步骤

以下是 Git 常用命令与操作步骤 的整理&#xff0c;涵盖日常开发中最核心的场景&#xff0c;适合快速查阅和上手&#xff1a;1. 初始化与克隆仓库操作命令本地初始化仓库git init克隆远程仓库git clone <仓库URL> &#xff08;如 git clone https://gitlab.com/user/repo…

Leetcode-.283移动零

class Solution:def moveZeroes(self, nums: List[int]) -> None:"""Do not return anything, modify nums in-place instead."""pos0for i in range(len(nums)):if nums[i]!0:nums[pos],nums[i]nums[i],nums[pos]pos1本题运用双指针来写&…

在React中做过哪些性能优化?

1. 使用 React.memo 进行组件优化 问题:当父组件重新渲染时,子组件也会重新渲染,即使它的 props 没有变化。 解决方案:使用 React.memo 包裹子组件,让其只在 props 变化时才重新渲染。 const MyComponent = React.memo((props) => {// 子组件代码 }); 2. 使用 useCa…