网络协议头分析及抓包三次挥手四次握手

news2024/9/27 15:33:53
数据的封装与传递过程

思考:

  1. 应用层调用send后,是如何把数据发送到另一台机器的某个进程的。
  2. 接收的设备收到数据包后,如何处理给应用层?

MTU :

       Maximum Transmit Unit 最大传输单元

       物理接口(数据链路层)提供给上层(网络层(IP层))最大一次传输数据的大小。

       规定了数据链路层所能传送最大数据长度

       以太网为例,缺省MTU=1500字节,这是以太网接口对IP层的约束

       如果IP层<=1500字节需要发送,只需要一个IP包就可以

       如果IP层>1500字节需要发送,需要分片才能发送(分片:帧)

限制数据包大小的协议是什么协议:MTU  MSS

MSS:

       Maximum Segment Size 最大报文长度

       TCP提交给IP层最大分段大小,指TCP报文所允许传送数据部分最大长度。

       不包含TCP头,MSS式TCP来限制应用层最大发送字节数。

       如果MTU=1500,则MSS = 1500-20(IP header)-20(TCP header) =1460字节

       如果应用有2000字节要发,需要2 Segment

       第一个TCP Segment = 1460 第二个TCP Segment = 540

wireshark与包头分析

1. wireshark使用

1. 安装

wireshark的官方下载网站:www.wireshark.org/

	    1. 安装  
          sudo apt-get update
		   sudo apt-get install wireshark
		2. 运行
			sudo wireshark
		3. 过滤
			tcp.port == 8888
		4. 抓的是流经eth0网卡的数据
			服务器端代码运行在ubuntu
			客户端代码运行在windows下
			
		ip.addr == 192.168.1.31

注:抓包的过程,就是抓网卡流经的一些数据。启动时不加sudo找不到网卡,没有办法找到内容。
 如何抓包:1.启动wireshark 。//filter-》过滤器
	    2.想抓流经eth0网卡的数据,就点击一下eth0.
		3.想找到我想抓的数据,需要用到filter
    //在这之前,需要将ubuntu的ip修改固定ip和windows在同一网段。
		4.在filter,输入:tcp port==8888,回车查找端口号为8888的流经的数据。
		//通过端口号进行的过滤,也可通过ip(通过Expression按键可以查看过滤方式)

2.  wireshark 抓包

  • 开始抓包

开始界面

  1.  wireshark是捕获机器上的某一块网卡的网络包,当你的机器上有多块网卡的时候,你需要选择一个网卡。
  2. 双击需要的网卡,开始抓包
  • Wireshark 窗口介绍

3. wireshark与对应的OSI七层模型

2. 包头分析

2.1 以太网头

以太网中封装了源mac地址以及目的mac地址,还有ip类型,以太网又称之为mac头

0X0800 只接收发往本机的mac的ip类型的数据帧 

0X0806 只接收发往本机的ARP类型的数据帧

0x8035 只接受发往本机的RARP类型的数据帧

0X0003  接收发往本机的MAC所有类型:ip,arp,rarp数据帧,接收从本机发出去的数据帧,

 混杂模式打开的情况下,会接收到非发往本地的MAC数据帧

2.2 IP头

IP头中需要掌握用于拆包的部分:id flags fregment_offset

两个IP地址:源IP与目的IP地址。

TTL:time to live, 指定数据帧可以最多经过几个路由器。当数据帧被目标方接收后,TTL清除为0.

Linux TTL:64   Winodws:TTL 128

2.3UDP头

2.4 TCP头

Seq:序列号,占4个字节,用于给数据段进行编号的。所有非应答包的数据段,都有seq。

Ack:应答号,用于应答非应答包(握手包,挥手包,数据包)。告诉对方下一次从这个seq编号发送数据包。

SYN:握手包,连接的时候产生的包

FIN:挥手包,断开连接产生的包

PSH:数据包,传输数据时候产生的包

ACK:应答包

PSH      Ack = Seq+len;

SYN FIN    Ack = Seq+1;

2.5 三次握手(重点!!!)

三次握手的发起方,肯定是客户端

  1. 第一次握手:客户端发送SYN包(SYN=1, seq=0)给服务器,并进入SYN_SENT状态,等待服务器返回确认包。
  2. 第二次握手:服务器接收到SYN包,确认客户端的SYN,发送ACK包(ACK=1 , ack=1),同时发送一个SYN包(SYN=1, seq=0),并进入SYN_RCVD状态。
  3. 第三次握手:客户端接收到服务器的SYN包,以及ACK包,进入establish状态,同时向服务器发送ACK包(ACK=1, ack=1)。此时三次握手包发送完毕,服务器也进入establish状态
2.6 四次挥手(重点!!!)

四次挥手的发起方可能是服务器,也可能是客户端

  1. 第一次挥手,主动关闭方发送一个FIN包(FIN=1, seq = u)给被动方,进入FIN_WAIT_1状态;
  2. 第二次挥手:被动方接收到FIN包,给主动方发送一个ACK包(ACK=1, ack=u+1);并进入CLOKSE_WAIT状态。主动方接受到ACK包后,进入FIN_WAIT_2状态。如果有数据没有发送完毕,则继续发送,直到发送完毕为止;
  3. 第三次挥手:被动方发送一个FIN包(FIN=1, seq=w),进入LAST_ACK状态.
  4. 第四次挥手:主动关闭方收到FIN包,回复一个ACK包(ACK=1, ack=w+1)。被动关闭方收到主动关闭方的ACK后关闭连接。主动关闭方超时等待一会

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

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

相关文章

vmware workstation pro 17.5 安装 macos 13.5.2 虚拟机超详细图文教程

前言 本文很细&#xff0c;甚至有点墨迹&#xff0c;主要为了方便从来没用过 vmware 的新人&#xff0c;其实大部分步骤和正常安装虚拟机没有区别&#xff0c;详细贴图以方便大家对比细节 参考文章 感谢大佬们的无私分享 https://blog.csdn.net/qq_19731521/article/details…

Linux下非root用户安装CUDA

目录 前言 参考链接 步骤 一. 首先&#xff0c;需要查看系统版本&#xff1a; 二. 安装包下载。 下载CUDA&#xff1a; cuDNN下载 三. 开始安装CUDA和cuDNN 安装CUDA 修改环境变量 安装 cuDNN 查看是否安装成功&#xff0c;输入nvcc -V 前言 由于一些代码实现&…

基于社会群体算法优化概率神经网络PNN的分类预测 - 附代码

基于社会群体算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于社会群体算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于社会群体优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神…

Google大法好

Google Search Central 前言&#xff1a; google的搜索方式&#xff1a; Google 是一款全自动搜索引擎&#xff0c;会使用名为“网页抓取工具”的软件定期探索网络&#xff0c;以找出可添加到 Google 索引中的网站。实际上&#xff0c;Google 搜索结果中收录的大多数网站都不…

BGP的基础知识

BGP——边界网关协议 IGP——内部网关协议——OSPF、RIP、ISIS EGP——外部网关协议——EGP、BGP 边界网关协议BGP是一种实现自治系统AS之间的路由可达&#xff0c;并选择最佳路由的路径矢量路由协议。目前在IPV4环境下主要使用BGPV4&#xff0c;目前市场上也存在BGPV4&…

uniapp优化h5项目-摇树优化,gzip压缩和删除console.log

1.摇树优化 勾选摇树优化,打包删除死代码 2.gzip压缩和删除console.log 安装插件webpack和compression-webpack-plugin webpack插件 npm install webpack4.46.0 --save-devcompression-webpack-plugin插件 npm install compression-webpack-plugin6.1.1 --save-devconst Com…

java+ 如何动态配置业务规则组

思路 1. 实现在页面上的动态配置规则组&#xff08;2张数据表枚举类serviceimplaction&#xff09; 2. 从数据库中表staffmoverules&#xff08;规则明细表&#xff09;或者staffmovetyperule&#xff08;规则组表&#xff09; &#xff0c;根据传入类型&#xff0c;取出规则编…

[C/C++]数据结构 栈和队列()

一:栈 1.1 栈的概念及结构 栈是一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作,进行数据插入和删除操作的一端称为栈顶,另一端称为栈底,栈中的数据元素遵守先进后出的原则. 压栈:栈的插入操作叫做进栈/压栈/入栈,将数据插入栈顶 出栈:栈的删除操作也叫出…

自学嵌入式,已经会用stm32做各种小东西了

自学嵌入式&#xff0c;已经会用stm32做各种小东西了 1、stm32 工程中&#xff0c;定义一个变量&#xff0c;记录复位次数&#xff0c;即复位一次变量加一。要求不许用备份寄存器和 flash 保存信息。本题只讨论不断电热启动情况&#xff0c;至于冷启动&#xff0c;不在此讨论。…

整理MLAI学习路径图

干货分享&#xff1a; 下面给出一个笔者自己整理的GitHub仓库&#xff1a;https://github.com/isLinXu/awesome-road-map&#xff0c;里面包含了一些可供参考的学习路径和思维导图&#xff0c;并整理微软、meta、谷歌、Kaggle以及华为、百度、阿里、腾讯、讯飞等相关的学习资源…

stm32入门建议跳过固件库去学习hal库吗?

stm32入门建议跳过固件库去学习hal库吗? 如果要以单片机作为以后的工作方向&#xff0c;建议还是深入了解一下单片机的原理与机制&#xff0c;比如串口收发的时候&#xff0c;内部的寄存器是怎么工作的&#xff0c;中断又是怎么工作的&#xff0c;然后我们又是怎么进行中断处…

【广州华锐互动】自然灾害科普3D体验展厅:培养安全意识,共创美好未来

在人类历史的进程中&#xff0c;灾难始终是我们不可避免的挑战。地震、洪水、火灾等自然灾害无情地摧毁我们的家园&#xff0c;带走我们的亲人。然而&#xff0c;随着科技的进步&#xff0c;我们已经有了更多的手段来预防和应对这些灾难。在这个背景下&#xff0c;自然灾害科普…

嵌入式系统中相关的高质量开源项目

关于GitHub&#xff0c;可能很多人误以为这是互联网人的专属&#xff0c;其实并不是&#xff0c;那上面嵌入式相关的开源项目是有很多的。现分享一些高星开源项目&#xff08;像RT-Thread、AWTK等大家都熟知的就不介绍了&#xff09;&#xff1a;Avem 项目链接&#xff1a; ht…

实力进阶,教你使用thinkphp6开发一款商城系统

0.开篇 你好&#xff01;很高兴你能点开这个教程&#xff0c;相信你对这个教程有了那么一点点兴趣&#xff0c;接下来占用你一点点时间&#xff0c;邀你浏览一下本章内容&#xff0c;希望能够让你更加有兴趣去学完这个教程。 作者我是一名九零后程序员&#xff0c;搬砖了好几…

山西电力市场日前价格预测【2023-11-19】

1.日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2023-11-19&#xff09;山西电力市场全天平均日前电价为591.63元/MWh。其中&#xff0c;最高日前电价为1500.00元/MWh&#xff0c;预计出现在16:45~20:45。最低日前电价为268.57元/MWh&#x…

简朴博客系统测试报告

文章目录 一. 项目简介二. 测试概要三. 测试环境四. 测试执行概况及功能测试1. 手工测试1.1 手动测试用例编写1.2 执行的部分测试用例 2. 自动化测试Selenium2.1 编写测试用例2.2 自动化测试代码 3. 测试结果 五. 发现的问题 一. 项目简介 简朴博客系统是采用前后端分离的方式…

美国经典人工智能教材第3版出版!

美国经典人工智能教材&#xff0c;人工智能的百科全书《人工智能》&#xff08;第3版&#xff09;出版&#xff01;新增深度学习及人工智能编程等内容&#xff0c;理论阐释结合动手实践。 人工智能 第3版 关于作者 史蒂芬.卢奇&#xff08;Stephen Lucci&#xff09;拥有纽约…

FreeRtos 任务切换深入分析

一、背景知识&#xff1a; 1、任务切换包含三个基本流程&#xff1a;保护现场、更新TCB、恢复现场并跳转 2、freertos的任务切换是在xPortPendSVHandler 中断函数中完成的 3、中断函数在调用之前&#xff0c;硬件已经保存了r0,r1,r2,r3,r12,r14(LR),r15(pc)&#xff0c;恢复…

深入理解Linux网络笔记(七):异常TCP连接建立情况、如何查看是否有连接队列溢出发生

本文为《深入理解Linux网络》学习笔记&#xff0c;使用的Linux源码版本是3.10&#xff0c;网卡驱动默认采用的都是Intel的igb网卡驱动 Linux源码在线阅读&#xff1a;https://elixir.bootlin.com/linux/v3.10/source 5、深度理解TCP连接建立过程&#xff08;二&#xff09; 4&…

顺序表(数据结构与算法)

✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅ ✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨ &#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1…