网络基础——传输层中的TCP,UDP和Wireshark抓包过程详解

2023-11-17

传输层

  • 传输层向上面的应用层提供通信服务,属于面向通信部分的最高层,也是用户功能中的最底层。传输层为相互通信的应用进程提供了逻辑通信。主要包括两个协议:TCP协议和UDP协议。
  • 传输层的主要作用:分段及封装应用层送来的数据;提供端到端的传输服务;在发送主机与接收主机之间构建逻辑通信。

1. 传输层中的端口号:

  • TCP/IP协议中的端口就是逻辑端口,通过不同的逻辑端口可以来区分不同的服务。一个IP地址的端口通过16bit进行编号,最多可以有65536个端口。端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535。
  • 那么规定这些端口有什么用呢?我们知道,一台拥有IP地址的主机可以提供许多服务,比如Web服务、FTP服务、SMTP服务等,这些服务完全可以通过1个IP地址来实现。那么,主机对于这些服务是怎样区分的呢?显然不能只靠IP地址,因为IP 地址与网络服务的关系是一对多的关系。实际上是通过“IP地址+端口号”(也称插口或套接字)来区分不同的服务的。

                  

1.1 >通过端口号识别应用:

一台计算机上同时可以运行多个应用程序。传输层协议正是利用这些端口号识别本机中正在进行通信的应用程序,并准确地将数据传输。

     

1.2> 通过 IP 地址、端口号、协议号进行通信识别:

仅凭目标端口号识别某一个通信是远远不够的。需要通过源IP地址,目的IP地址,协议号,源端口号和目的端口号这五个元素来识别一次通信。

            

 

1.3 >端口的范围:

  • 熟知端口(著名端口):由ICANN指派和控制,范围从0到1023,这些端口号一般固定分配给一些服务。比如21端口分配给FTP(文件传输协议)服务,25端口分配给SMTP(简单邮件传输协议)服务,80端口分配给HTTP服务,135端口分配给RPC(远程过程调用)服务等等。
  • 注册端口:1024-49151,IANA不指派也不控制,但须注册,这些端口多数没有明确的定义服务对象,不同程序可根据实际需要自己定义。
  • 动态端口(短暂端口):49152-65535,IANA不指派也不控制,无须注册。

2. TCP协议:

  • TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的(通讯双方交换数据之前必须建立连接)、可靠的(多种确保可靠性的机制)、基于字节流(8bit(1Byte)为最小单位构成的字节流)的传输层通信协议。
  • TCP作为一种面向连接的协议,只有确认通信的另一端存在时,才会进行数据的传输,TCP在传输的过程中,为了保证不发生丢包,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收,如果发送端实体在合理的往返时延内未收到确认,那么对应的数据包就被假设为已丢失将会被进行重传。TCP用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算校验和。确保数据的可靠传输。

2.1> TCP报文段头部信息分析:

TCP报文段的数据格式如下如所示:

      

用Wireshark抓取的头部信息如下:

    

接下来我们来分析每部分的含义和作用:

  • 源端口和目的端口——各占2字节。端口是运输层与应用层的服务接口,运输层的复用和分用功能都要通过端口才能实现。也表示数据从哪个进程来, 到哪个进程去。
  • 序号字段——占4字节。TCP连接中传送的数据流中的每一个字节都编上一个序号,序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。
  • 确认号字段——占 4 字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。
  • 首部长度——占 4 bit,可表示的最大十进制数值是15(一个单位为4字节),因此,TCP的首部长度的最大值是60字节。它指出 TCP 首部共有多少个4字节,首部长度可以在20~60字节之间。
  • 保留字段——占 6 bit,保留为今后使用,但目前应置为 0。
  • 紧急比特 URG —— 当 URG = 1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。
  • 确认比特 ACK —— 只有当 ACK = 1 时确认号字段才有效。当 ACK = 0 时,确认号无效。
  • 推送比特 PSH (PUSH) —— 接收 TCP 收到推送比特置 1 的报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付。
  • 复位比特 RST (ReSeT) —— 当 RST =1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。
  • 同步比特 SYN —— 同步比特 SYN 置为 1,就表示这是一个连接请求或连接接受报文
  • 终止比特 FIN (FINal) —— 用来释放一个连接。当FIN =1 时,表明此报文段的发送端的数据已发送完毕,并要求释放连接。
  • 窗口字段  —— 占2字节。窗口字段用来控制对方发送的数据量,单位为字节。TCP连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限。
  • 检验和 —— 占2字节。字段检验的范围包括首部和数据这两部分。在计算检验和时,要在 TCP 报文段的前面加上12字节的伪首部。
  • 紧急指针字段 ——占2字节。紧急指针指出在本报文段中的紧急数据的最后一个字节的序号。
  • 选项字段 —— 长度可变。TCP 只规定了一种选项,即最大报文段长度 MSS(Maximum Segment Size)。MSS 告诉对方 TCP:“我的缓存所能接收的报文段的数据字段的最大长度是 MSS 个字节。”
  • 填充字段 —— 这是为了使整个首部长度是 4 字节的整数倍。

2.2> TCP的三次握手:

TCP建立连接的过程称为三次握手,如下如所示:

 

通过Wireshark抓包来分析三次握手的过程:

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

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

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

2.3> TCP的四次挥手:

TCP断开连接的四次挥手,如下图所示:

技术分享图片

通过Wireshark抓包来分析四次挥手的过程:

第一次挥手:客户端给服务器发送TCP包,用来关闭客户端到服务器的数据传送。将标志位FIN和ACK置为1,如图,序号为Seq=318,确认序号为Ack=130。

第二次挥手:服务器收到FIN后,发回一个ACK(标志位ACK=1),确认序号为收到的序号加1,即Ack=318+1=319.
序号Seq为收到的确认序号130。

第三次挥手:服务器关闭与客户端的连接,发送一个FIN和ACK。标志位FIN和ACK置为1,序号为Seq=130,确认序号为Ack=319。(与第二次挥手的序号和确认号相同)

第四次挥手:客户端收到服务器发送的FIN之后,发回ACK确认(标志位ACK=1),确认序号为收到的序号加1,即130+1=131。
序号为收到的确认序号131。

3. UDP协议:

  • UDP是一种无连接,不可靠的协议。
  • 并且它是将应用程序发来的数据在收到的那一刻,立即按照原样发送到网络上的一种机制。即使是出现网络拥堵的情况,UDP 也无法进行流量控制等避免网络拥塞行为。
  • 此外,传输途中出现丢包,UDP 也不负责重发。甚至当包的到达顺序出现乱序时也没有纠正的功能。
  • UDP 常用于一下几个方面:1.包总量较少的通信(DNS、SNMP等);2.视频、音频等多媒体通信(即时通信);3.限定于 LAN 等特定网络中的应用通信;4.广播通信(广播、多播)。

UDP报文段头部信息分析:

UDP报文段的数据格式如下如所示:

        

用Wireshark抓取的头部信息如下:

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

网络基础——传输层中的TCP,UDP和Wireshark抓包过程详解 的相关文章

  • OSPF实验

    我们坠落 破碎 掉入深渊 但我们终会被托起 被治愈 我们无所畏惧 OSPF部分实验 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 没关系的 大家都会做错选择 会莫名其妙掉眼泪 走在路上会突然崩溃 但这并不影响我们去看
  • OSPF从初学到放弃 2.1

    本来要开开心心写博客的 结果刚刚看见之间知乎上的两个评论被要求修改 两篇评论都是关于同一个问题的 我都有理由怀疑是资本的力量太强大了 说好的舆论自由呢 一群骗子 好气好气好气 OSPF协议及作业 前言 一 OSPF是什么 仔细说一下 二 聊
  • 学习渗透,刚刚入坑——————基础知识了解

    今天学的很少但还是写写吧 我大一咋就没觉悟提前学习 大一整整四个月的寒假就让我躺废了 简单的说说我学到的知识 渗透测试 基础知识了解一下吧 最近的瓜很多 吃的真爽 孩子真是个神奇的存在 有的人因此得到祝福 有的人直接被封杀 当然这都拖了乐坛
  • DNS根服务器

    从抓包可以看出 DNS在传输层上使用了UDP协议 那它只用UDP吗 DNS的IPV4根域名只有13个 这里面其实有不少都部署在漂亮国 那是不是意味着 只要他们不高兴了 切断我们的访问 我们的网络就得瘫痪了呢 我们来展开今天的话题 DNS是基
  • Python中的网络通信

    概述 在我们平时生活工作中 常常会接触到网络通信的内容 不管你是普通的用户 还是通信行业内的开发人员 都无法避免与网络通信打交道 我在初步学习python的过程中 对python的网络通信问题做了总结 所以写下这篇文章作为记录 也希望能给其
  • 网络体系结构

    网络体系结构概述 1 网络协议 网络协议的三要素 语义 语法和同步 语法 规定通信双方彼此应该如何操作 即确定协议元素的格式 如 数据格式 信号平等规定 语义 规定通信双方要发出的控制信息 执行的动作和返回的应答等 包括用于调整和运行差错处
  • TCP拥塞控制技术 与BBR的加速原理

    什么是拥塞 拥塞现象 是指数据到达通信子网的过程中 某一部分的分组数量过多 使得该部分网络来不及处理 以致引起这部分乃至整个网络性能下降的现象 严重时会导致网络陷入死锁 这种现象好比公路上常见的交通拥挤 当节假日公路车辆大量增加时 道路拥堵
  • golang实现p2p之UDP打洞

    当今互联网到处存在着一些中间件 MIddleBoxes 如NAT和防火墙 导致两个 不在同一内网 中的客户端无法直接通信 这些问题即便是到了IPV6时代也会存在 因为即使不需要NAT 但还有其他中间件如防火墙阻挡了链接的建立 目前部署的中间
  • tcp第三次握手ack均是1?

    本人做了tcp连接测试 但是结果和网络中其他人的说法有点不一致 测试使用了命令 tcpdump s1用网卡ens33抓取端口好为80的网络数据包 tcpdump nn i ens33 port 80 s2访问百度 建立3次连接请求数据 cu
  • 【网络基础】通俗易懂的了解HTTPS的整体过程

    文章目录 前言 HTTP 各个版本 结构 请求 请求行 请求头 请求体 响应 响应行 响应头 响应体 HTTPS 对称加密 非对称加密 对称和非对称结合加密 CA证书中级大发 证书 对称和非对称结合加密 证书关系链 拓展知识 证书的合法性验
  • 路由器OSPF动态路由配置(扩展版)

    实验7 路由器OSPF动态路由配置 扩展版 使用软件 Cisco Packet Tracer Student Multilayer Switch0 Switch gt Switch gt en Switch conf t Switch co
  • 2021-12-21 网工基础(十三) STP的选举规则、STP的接口状态、边缘端口、生成树版本的进化、链路聚合技术原理与配置

    一 STP的选举规则 1 在交换网络中选举一个根桥 Root Bridge 比较Bridge ID桥ID 优先级 MAC地址 越小越优 为了确保交换网络的稳定 建议提前规划STP组网 并将规划为根桥的交换机的桥优先级设置为最小值0 2 在每
  • 渗透学习 Linux基础知识

    你生来就值得被爱 这点你无需质疑 小白入坑学废集2 Linux 介绍 什么是Linux Linux系统结构 Linux常见发行版本 版本问题 磁盘分区表示 硬盘和分区结构 目录结构 目录名 Linux系统常用命令 命令行编辑的几个辅助操作
  • SSRF——服务端请求伪造

    什么是SSRF 服务器端请求伪造 SSRF 是指攻击者能够从易受攻击的Web应用程序发送精心设计的请求的对其他网站进行攻击 利用一个可发起网络请求的服务当作跳板来攻击其他服务 ssrf有什么作用 一般用于探测内网端口及信息 查看文件 甚至可
  • 2022-01-12 网工基础(二十)GRE原理与配置 VRRP原理与配置

    一 GRE原理与配置 IPSec VPN 用于在两个端点之间提供安全的 IP 通信 但只能加密并传播单播数据无法加密和传输语音 视频 动态路由协议信息等组播数据流量 通用路由封装协议 GRE Generic Routing Encapsul
  • PHP反序列化漏洞——云演

    昨天搞了搞掌控的反序列化 突然想到当时打CTF时老师给我们冲了个云演的靶场 就去看了看 也有反序列化漏洞 顺手搞搞加深一下印象 第一题 点进去后是这样的 还记得昨天的 php中有一类特殊的方法叫 Magic function 魔术方法 这里
  • Win7下使用Putty代替超级终端通过COM串口连接开发板方法

    1 如果电脑 笔记本 没有串口接口 则需要使用一个 USB Serial 转换线 这里使用 prolific usb serial USB 串口转换线 首先需要在win7上安装对应的 USB 串口转换线 驱动程序 PL2303 Prolif
  • 网络基础-传输层协议-TCP/UDP

    TCP UDP 谈一谈端口号 为什么会有端口号 端口号划分 一个进程可以bind多个端口号吗 一个端口号可以被多个进程bind吗 UDP 协议格式 udp协议的特点 无连接 不可靠 面向数据报 UDP缓冲区 TCP 协议格式 在这里插入图片
  • TCP协议(三次握手)

    TCP Transmission Control Protocol 协议的全称是传输控制协议 它负责为不同终端系统的应用进程之间提供面向连接的通信服务 即TCP协议能够对自己提供的连接实施控制 它是一种可靠的传输层协议 一 TCP协议简介
  • 网络基础——传输层中的TCP,UDP和Wireshark抓包过程详解

    传输层 传输层向上面的应用层提供通信服务 属于面向通信部分的最高层 也是用户功能中的最底层 传输层为相互通信的应用进程提供了逻辑通信 主要包括两个协议 TCP协议和UDP协议 传输层的主要作用 分段及封装应用层送来的数据 提供端到端的传输服

随机推荐

  • TS2769: Property 'xxx' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttribute...

    用TypeScript开发React项目 在父子组件间传值时发生错误提示 class Page extends React Component render return div div
  • vue组件利用css var(--变量)实现动态修改伪类属性(::before、::after)

    如图所示 1 我们可以利用此属性实现vue组件动态传值 修改例如 before after等 伪类的背景色 背景图等属性值 因为vue利用无法直接在css中使用data里的变量 利用var 变量名 以及style中定义变量 其实此步是模仿
  • Coordinate attention,SE,CBAM

    1 SE 因为普通卷积难以建模信道关系 SE考虑通道的相互依赖关系增强模型对信息通道的敏感性 同时全局平均池化可以帮助模型捕获全局信息 然而SE只考虑了内部通道信息而忽略了位置信息的重要性 输入X首先经过全局平均池化 然后经过全连接层来捕获
  • 静态类和动态类的区别和使用

    1 静态类中的静态方法可以通过类名直接调用静态方法 不需要实例化对象 但是无法和Spring容器中的bean进行交互 例如 Slf4j public class ExcelUtil public static
  • 动态链接

    动态链接 命令 gcc static 产生静态库 shared 产生共享库 readelf d 查看 dynamic段的内容 ldd 查看一个程序主模块或一个共享库依赖于哪些共享库 一 静态链接和动态链接的优缺点 静态链接 空间的浪费 静态
  • Arduino结合HX711实现8路信号采集称重

    说明 使用两块Arduino实现8路Sensor同时采集 并输出控制信号 写作目的主要是为了作为学习笔记 Arduino Sensor接线图 1 双机通讯连线图 2 HX711和Sensor的连线图 3 将8个Sensor的SCK全部接到r
  • 键盘输入_bp

    依据惯例 仍然感谢出处 来自程序员的暴击 https space bilibili com 128373173 学习了下 这个说了个什么呢 人到达灯附近 显示提示文字 按F键开灯和关灯切换 远离灯时 提示文字消失 不能切换灯的切换开关状态
  • QT编译报错无法解析的外部符号

    QT编译报错无法解析的外部符号 特征 头文件 有几个槽函数 提示有多少个无法解析的外部符号 注释掉宏Q OBJECT 可以编译通过 可能原因 1 对应的cpp文件没有加入项目中 2 cpp文件 右键属性 为 自定义工具 没有进行编译 修改为
  • 华为、华三、锐捷、飞塔、山石的抓包命令

    一 华为的抓包命令 1 基本概念 华为的抓包行为称之为镜像端口 也就是说将需要抓取的接口上 称为镜像端口 的流量复制一份到另一个接口上 工程师进行流量观察的端口 称为观察端口 如下图所示 2 华为镜像端口分类 1 本地镜像端口 也就是观察端
  • Django框架:优缺点、实用场景及与Flask、FastAPI的对比

    Django是一个使用Python语言编写的高级Web框架 它提供了快速开发 可重用和可维护的Web应用程序所需的一切组件 在本文中 我们将探讨Django的get和post请求 优缺点 实用场景以及与Flask FastAPI的对比 Dj
  • windows中如何将收藏夹里的下载链接加入到开始

    windows中如何将收藏夹里的下载链接加入到开始 以windows 7为例 设置方法如下 1 右击工具栏 属性 2 开始菜单 自定义 下拉至下载 点中显示为链接 确定 3 可以看到 下载已经看到了
  • C# 泛型详解(泛型类,方法,接口,委托,约束,反射 )

    目录 一 什么是泛型 二 为什么要用泛型 三 泛型和Object类型的区别 四 泛型类 五 泛型方法 六 泛型接口 七 泛型委托 八 泛型约束 九 泛型配合反射 结束 一 什么是泛型 先看一段介绍 泛型 Generic 是将不确定的类型预先
  • 天梯题集——多项式A除以B(多项式除法,递归与循环的效率比较)

    多项式A除以B 多项式除法 这里就不展开介绍多项式除法 只需将多项式看成一个整体就类似于整数除法 x3 1 x 1 x2 x 1 多项式除法的演示图 解题思路 模拟 A B 多项式除法 方案一 递归 include
  • 抗渗等级p6是什么意思_混凝土p6是什么意思

    展开全部 40是混凝土的强度等62616964757a686964616fe58685e5aeb931333431356664级 P6是抗渗混凝土按抗渗压力 抗渗混凝土按抗渗压力不同分为P6 P8 P10 P12和大于P12共5个等级 抗渗
  • 面试题目搜集(5)

    本博客的 面试题目搜集系列不错 1 面试题目搜集1 2 面试题目搜集2 3 面试题目搜集3 4 面试题目搜集4 5 面试题目搜集5 6 面试题目搜集6 1 反着打印链表 递归实现 include
  • 详解pytorch之tensor的拼接

    tensor经常需要进行拼接 拆分与调换维度 比如通道拼接 比如通道调至最后一个维度等 本文的目的是详细讨论一下具体是怎么拼接的 如果本来就理解这其中的原理的童鞋就不用往下看了 肯定觉得啰嗦了 拼接即两个tensor按某一维度进行拼接 分两
  • Android App内存泄漏原理、检测及修改方案

    目录 JVM工作原理 运行时数据区 垃圾回收 Garbage Collection 如何判断对象为垃圾对象 垃圾回收算法 四种引用类型 什么是内存泄露 为什么会有内存泄露 Android 中导致内存泄漏的常见场景 检查策略 实例分析 内部类
  • python+VTK环境搭建:安装及用PyQt5创建一个包含三维模型的交互窗口

    一 VTK简介及安装 1 1 VTK介绍 Vtk visualization toolkit 是一个开源的免费软件系统 主要用于三维计算机图形学 图像处理和可视化 Vtk是在面向对象原理的基础上设计和实现的 它的内核是用C 构建的 包含有大
  • 手写体数字识别例程——LeNet-5模型

    上一篇博客中介绍了Caffe环境的搭建 本片博客中介绍一下 在caffe中训练的第一个CNN模型LeNet 5 如果存在不正确的地方欢迎指正 该例程用的数据集是MNIST 该数据集中包含60000个训练集和10000个测试集 使用的CNN模
  • 网络基础——传输层中的TCP,UDP和Wireshark抓包过程详解

    传输层 传输层向上面的应用层提供通信服务 属于面向通信部分的最高层 也是用户功能中的最底层 传输层为相互通信的应用进程提供了逻辑通信 主要包括两个协议 TCP协议和UDP协议 传输层的主要作用 分段及封装应用层送来的数据 提供端到端的传输服