TCP/UDP、封装与解封装

2023-05-16

目录

传输类型

网络里面三层架构

TCP/IP模型

OSI模型

TCP/IP模型   掌握

TCP/IP模型当中重点

数据传递过程中的封装和解封装

封装

解封装

 TCP/UDP

ICMP

ICMP错误报告

ICMP重定向

典型应用

PING应用

PING常用的配置参数说明如下

TRACERT应用

TRACERT常用的配置参数如下:


传输类型

单工:始终只能完成一个方向的数据传输(传输只有一个方向)
半双工:同一时间只能完成一个方向的数据传输(同一时间只能一个方向进行传输)
全双工:同一时间可以完成两个方向的数据传输(同一时间可以进行双向传输)

注意:同一物理链路上相连的两台设备的双工模式必须保持一致

自协商模式下,配置双工模式
执行命令negotiation auto 
缺省情况下,以太网接口的双工模式是和对端接口协商得到的。

非自协商模式下,配置双工模式
执行命令undo negotiation auto 
执行命令duplex { full | half },配置以太网接口的双工模式。
缺省情况下,以太网接口的双工模式为全双工。


网络里面三层架构

    核心层:主要用于高速流量的转发
    汇聚层(分布层)主要把我们接入流量汇聚起来给核心层
    接入层:接入终端设备

 

TCP/IP模型

OSI模型

TCP/IP模型   掌握

目前应用比较广泛的是TCP/IP模型

 

TCP/IP模型当中重点

应用层

应用层协议=传输层协议+端口号。

TCP协议+23端口=telnet协议(应用层)

常用的应用层协议:Telnet协议、dns协议等

传输层

 端口号(16bit):代表一个主机的不同服务

                              范围0—65535(其中0-1023是知名端口;1024-65535可以任意使用)

源端口(Sport)一般源端口是随机产生的

目的端口(Dport)一般目的端口是知名端口

web服务:80端口
telnet服务:23端口
ssh服务:22端口

dns服务:53端口
FTP服务:21端口

网络层

简称为三层,三层逻辑地址,可以变化的比如:192.168.1.1

网络设备主要是靠IP地址进行访问

源IP地址(SIP)

目的IP地址(DIP)

一般情况下,在数据包的传递过程中SIP和DIP不会发生变化。

数据链路层

简称二层,二层里面有一个物理地址 比如:

MAC地址 48bit,指的就是每一个网络设备生产之后就会有唯一MAC地址。

源MAC地址(SMAC)

目的MAC地址(DMAC)

一般情况下 在数据包的传递过程中 SMAC和DMAC是不断变化的

MAC地址由两部分组成,分别是供应商代码和序列号。其中前24位代表该供应商代码,由IEEE管理和分配。剩下的24位序列号由厂商自己分配。

物理层

网线(光纤)通过比特流进行传输。

数据传递过程中的封装和解封装

封装

数据包在发送的时候 进行的一个动作 叫做封装

APP头部 数据
UDP头部 APP头部 数据
IP头部 UDP头部 APP头部 数据
以太网头部 IP头部 UDP头部 APP头部 数据
就会变成比特流传输传输给对端 

总结:逐渐加头部的过程 是从应用封装到物理层

解封装

当服务器接收数据流量的时候 我这边会进行解分装
首先会接收比特流
IP头部 UDP头部 APP头部 数据
UDP头部 APP头部 数据
APP头部 数据
数据

总结:逐渐去掉头部的过程 是从物理层解封装到应用层

 TCP/UDP

TCP协议
    传输控制协议 可靠协议
    三次握手
A发送SYN
B回复SYN+ACK
A回复ACK
    四次分手
A发送FIN
B回复ACK
B发送FIN
A回复ACK

UDP协议
    用户数据协议 不可靠协议

ICMP

ICMP(Internet Control Message Protocol)是网络层的一个重要协议

ICMP作用:是一个网络层协议 用于收集现网诊断信息 包括数据包的连通性或者网络故障点

CMP使用两种报文 一个Echo-request(请求报文) 另一个是Echo-reply报文(响应报文)

 

ICMP错误报告

ICMP定义了各种错误消息,用于诊断网络连接性问题;根据这些错误消息,源设备可以判断出数据传输失败的原因。比如,如果网络中发生了环路,导致报文在网络中循环,最终TTL超时,这种情况下网络设备会发送TTL超时消息给发送端设备。又比如如果目的不可达,则中间的网络设备会发送目的不可达消息给发送端设备。

小结:

注意:ICMP定义了多种消息类型,用于不同的场景
有些消息不需要Code字段来描述具体类型参数,仅用Type字段表示消息类型。
有些ICMP消息使用Type字段定义消息大类,用Code字段表示消息的具体类型。

ICMP重定向

主机A希望发送报文到服务器A,于是根据配置的默认网关地址向网关RTB发送报文。网关RTB收到报文后,检查报文信息,发现报文应该转发到与源主机在同一网段的另一个网关设备RTA,因为此转发路径是更优的路径。所以RTB会向主机发送一个Redirect消息,通知主机直接向另一个网关RTA发送该报文。主机收到Redirect消息后,向RTA发送报文,RTA会将报文转发给服务器A

发生重定向的条件:
第一:同接口进出
第二:满足第二条源和下一跳同网段
第三:路由器RTB发出的重定向报文

典型应用

PING应用

Ping是检测网络连通性的常用工具,同时也能够收集其他相关信息

PING常用的配置参数说明如下

-a(source-ip-address)参数

指定发送ICMP ECHO-REQUEST报文的源IP地址。如果不指定源IP地址,将采用出接口的IP地址作为ICMP ECHO-REQUEST报文发送的源地址。

现在全网已经互通了,我们在R1上面验证一下ping命令的参数

<R1>ping 3.3.3.3
  PING 3.3.3.3: 56  data bytes, press CTRL_C to break
    Reply from 3.3.3.3: bytes=56 Sequence=1 ttl=254 time=40 ms
    Reply from 3.3.3.3: bytes=56 Sequence=2 ttl=254 time=30 ms
    Reply from 3.3.3.3: bytes=56 Sequence=3 ttl=254 time=30 ms
    Reply from 3.3.3.3: bytes=56 Sequence=4 ttl=254 time=30 ms
    Reply from 3.3.3.3: bytes=56 Sequence=5 ttl=254 time=20 ms

  --- 3.3.3.3 ping statistics ---
    5 packet(s) transmitted
    5 packet(s) received
    0.00% packet loss
round-trip min/avg/max = 20/30/40 ms

在R1上查看到达3.3.3.3路由的出接口为R1的G0/0/0接口

<R1>display ip routing-table 3.3.3.3
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Table : Public
Summary Count : 1
Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

        3.3.3.3/32  Static  60   0          RD   12.1.1.2        GigabitEthernet
0/0/0

所以:默认情况下,R1访问目标地址的时候,所携带的源IP地址是12.1.1.1即自己的接口IP地址作为源IP地址访问目标IP地址
验证-a参数的用法:

<R1>ping -a 1.1.1.1 3.3.3.3
  PING 3.3.3.3: 56  data bytes, press CTRL_C to break
    Reply from 3.3.3.3: bytes=56 Sequence=1 ttl=254 time=20 ms
    Reply from 3.3.3.3: bytes=56 Sequence=2 ttl=254 time=30 ms
    Reply from 3.3.3.3: bytes=56 Sequence=3 ttl=254 time=30 ms
    Reply from 3.3.3.3: bytes=56 Sequence=4 ttl=254 time=30 ms
    Reply from 3.3.3.3: bytes=56 Sequence=5 ttl=254 time=30 ms

  --- 3.3.3.3 ping statistics ---
    5 packet(s) transmitted
    5 packet(s) received
    0.00% packet loss
    round-trip min/avg/max = 20/28/30 ms

<R1>

R1访问目标地址的时候,所携带的源IP地址是1.1.1.1即自己的loopback 0地址

-c(count)参数

指定发送ICMP ECHO-REQUEST报文次数。缺省情况下发送5个ICMP ECHO-REQUEST报文。

<R1>ping -c 1000 3.3.3.3
  PING 3.3.3.3: 56  data bytes, press CTRL_C to break
    Reply from 3.3.3.3: bytes=56 Sequence=1 ttl=254 time=40 ms
    Reply from 3.3.3.3: bytes=56 Sequence=2 ttl=254 time=20 ms
    Reply from 3.3.3.3: bytes=56 Sequence=3 ttl=254 time=20 ms
    Reply from 3.3.3.3: bytes=56 Sequence=4 ttl=254 time=30 ms
    Reply from 3.3.3.3: bytes=56 Sequence=5 ttl=254 time=40 ms
    Reply from 3.3.3.3: bytes=56 Sequence=6 ttl=254 time=30 ms
    Reply from 3.3.3.3: bytes=56 Sequence=7 ttl=254 time=20 ms
    Reply from 3.3.3.3: bytes=56 Sequence=8 ttl=254 time=30 ms
    Reply from 3.3.3.3: bytes=56 Sequence=9 ttl=254 time=30 ms
    Reply from 3.3.3.3: bytes=56 Sequence=10 ttl=254 time=30 ms
    Reply from 3.3.3.3: bytes=56 Sequence=11 ttl=254 time=20 ms
    Reply from 3.3.3.3: bytes=56 Sequence=12 ttl=254 time=30 ms
    Reply from 3.3.3.3: bytes=56 Sequence=13 ttl=254 time=30 ms
    Reply from 3.3.3.3: bytes=56 Sequence=14 ttl=254 time=30 ms

  --- 3.3.3.3 ping statistics ---
    14 packet(s) transmitted
    14 packet(s) received
    0.00% packet loss
    round-trip min/avg/max = 20/28/40 ms

<R1>

-h(ttl-value)参数

指定TTL的值。缺省值是255。

<R1>ping -h 1 3.3.3.3
  PING 3.3.3.3: 56  data bytes, press CTRL_C to break
    Request time out
    Request time out
    Request time out
    Request time out
    Request time out

  --- 3.3.3.3 ping statistics ---
    5 packet(s) transmitted
    0 packet(s) received
    100.00% packet loss

<R1>ping -h 2 3.3.3.3
  PING 3.3.3.3: 56  data bytes, press CTRL_C to break
    Reply from 3.3.3.3: bytes=56 Sequence=1 ttl=254 time=30 ms
    Reply from 3.3.3.3: bytes=56 Sequence=2 ttl=254 time=30 ms
    Reply from 3.3.3.3: bytes=56 Sequence=3 ttl=254 time=30 ms
    Reply from 3.3.3.3: bytes=56 Sequence=4 ttl=254 time=30 ms
    Reply from 3.3.3.3: bytes=56 Sequence=5 ttl=254 time=40 ms

  --- 3.3.3.3 ping statistics ---
    5 packet(s) transmitted
    5 packet(s) received
    0.00% packet loss
    round-trip min/avg/max = 30/32/40 ms

-t(timeout)参数

指定发送完ICMP ECHO-REQUEST后,等待ICMP ECHO-REPLY的超时时间。

<R1>ping -t 31 3.3.3.3
  PING 3.3.3.3: 56  data bytes, press CTRL_C to break
    Reply from 3.3.3.3: bytes=56 Sequence=1 ttl=254 time=30 ms
    Reply from 3.3.3.3: bytes=56 Sequence=2 ttl=254 time=30 ms
    Request time out
    Request time out
    Reply from 3.3.3.3: bytes=56 Sequence=5 ttl=254 time=20 ms

  --- 3.3.3.3 ping statistics ---
    5 packet(s) transmitted
    3 packet(s) received
    40.00% packet loss
    round-trip min/avg/max = 20/26/30 ms

注意:ping命令的输出信息中包括目的地址、ICMP报文长度、序号、TTL值、以及往返时间。序号是包含在Echo回复消息(Type=0)中的可变参数字段,TTL和往返时间包含在消息的IP头中。

TRACERT应用

Tracert是检测网络丢包及时延的有效手段,同时可以帮助管理员发现网络中的路由环路。

<RTA>tracert 30.0.0.2
Tracert to 30.0.0.2(30.0.0.2), max hops:30, packet length:40, press CTRL_C to break 
 1 10.0.0.2 130 ms  50 ms  40 ms 
 2 20.0.0.2 80 ms  60 ms  80 ms
 3 30.0.0.2 80 ms  60 ms  70 ms 

TRACERT常用的配置参数如下:

-a (source-ip-address)参数

指定tracert报文的源地址。

-f (first-ttl)参数

指定初始TTL。缺省值是1。

-m (max-ttl)参数

指定最大TTL。缺省值是30。

-name参数

使能显示每一跳的主机名。

-p (port)参数

指定目的主机的UDP端口号。

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

TCP/UDP、封装与解封装 的相关文章

  • 【光线追踪系列一】PPM输出;自定义vec3;光线、简单相机及天空采样

    本次光线追踪系列从基础重新开始 xff0c 主要参照 Ray Tracing in One Weekend xff0c 具体实现代码框架见 https github com RayTracing raytracing github io 本
  • 服务器总线协议_第一章----I2C总线协议入门

    目录 一 概述 二 首先了解一下I2C的I O结构 三 其次了解一下I2C的时序 第一部分 xff1a 起始停止信号简介 第二部分 xff1a I2C的时序部分要求 第三部分 xff1a I2C的一帧数据的格式 四 最终问与答 1 xff0
  • 服务器总线协议_第二章----I2C总线协议进阶

    敬请期待 xff0c 预计8月1日发布 xff0c 需要请加个关注
  • 服务器总线协议_第三章----SVID电源管理协议

    目录 一 概述 二 SVID协议组成方式 三 SVID协议拓扑要求 四 SVID如何判别读写 Master读操作 Master写操作 五 问与答 1 xff09 SVID有没有特殊的要求 xff1f 一 概述 首先先了解一下SVID的全称
  • PM_Sync的作用

    目录 一 先来了解一下PM Sync的全称 xff1a 一 PM Sync简介 PM Sync xff1a Power Management synchronization 同步电源管理 在知道这个信号的作用之前需要先来了解一下 ADR 二
  • si4438使用stm32f103配置调试成功!

    刚拿到si4438时候在网上找了一大波资源 xff0c 发现能使用的并没有多少 xff0c 于是自己配置一发 经过不懈努力配置成功 xff0c 现在将一些配置过程分享给大家 xff01 源码已上传 尽情下载 xff01 1 首先打开工程文件
  • 教你如何使用stm32发送一帧数据(结构体中的数据)

    在这篇文章中我介绍一下如何通过串口发送一帧存在结构体中的数据 通过串口接受一帧数据请参考的我博客中的文章 教你如何使用stm32接收一帧数据 xff01 一 xff1a 在 h首先定义一个结构体 typedef struct uint8 t
  • 浅谈线性稳压电源和开关稳压电源(开关电源)

    目前现有电源主要分为两大类 xff1a 线性稳压电源和开关稳压电源 xff08 开关电源 xff09 线性稳压电源 线性稳压电源经过变压 整流 滤波 稳压实现电源稳压 优点 xff1a 稳定性好 xff0c 瞬态响应速度快 xff0c 可靠
  • c++ #define 用法

    1 用于表示将两个参数连在一起 xff0c 其中宏的 前后空格会被省略 define CONNA a b a b define CONNB a b a b int main string a 61 CONNA 34 one 34 34 tw
  • MySQL第五课 Table has no partition for value

    场景 MySQL由于安全性要求 xff0c 版本升级之后 xff0c 执行插入数据出现Table has no partition for value 错误 已有版本5 7 20 log升级到5 7 26 log 说明 建表过程中 xff0
  • DSP数据安全平台

    数据安全平台 xff08 DSP xff0c Data Security Platforms xff09 的概念来源于Gartner的 2021数据安全技术成熟度曲线 xff0c DSP定义为以数据安全为中心的产品和服务 xff0c 旨在跨
  • c++ 数学库

    链接 link
  • vscode使用restClient实现各种http请求

    vscode使用restClient实现各种http请求 一 xff0c 安装插件 首先 xff0c 我们要在vscode的扩展中 xff0c 搜索rest Client xff0c 然后安装它 xff0c 这里我已经安装过了 安装后 xf
  • K210和STM32串口通信(亲测有效)

    声明 最近想做一个K210数字识别和寻迹 xff0c 方便完成2021年电赛F题 xff0c 完成了数字训练和脱机运行就想赶紧进行一次通信 xff0c 调了好几天 郁闷 xff0b 自闭几天 按照官方的历程看 xff0c 配置的没问题但是会
  • 简单Rabbitmq 发送消息和接收消息

    简单Rabbitmq 发送消息和接收消息 1 先在Rabbitmq配置文件中预先创建好交换器 xff0c 队列 xff0c 路由等信息 2 创建生产者发送消息 64 Autowired private RabbitTemplate rabb
  • Elasticsearch(ES6)------(4) ES设置用户名密码访问

    Elasticsearch ES xff08 1 xff09 下载 安装 43 kibana 下载 xff08 2 xff09 本机多节点启动 43 ElasticSearch head插件使用 xff08 3 xff09 索引 文档概念和
  • Elasticsearch(ES6) --根据条件修改字段值

    POST index name doc update by query 34 query 34 34 match 34 34 version 34 34 12 22 34 34 script 34 34 inline 34 34 ctx s
  • redis限流使用lua脚本

    lua脚本 xff0c 计数器限流 5秒内限流10次 64 param key 64 return public boolean acquire String key long now 61 System currentTimeMillis
  • ES6分页from+size、search_after两种查询

    1 from 43 size 分页查询 64 RequestMapping value 61 34 get 34 method 61 RequestMethod GET public BaseResponse lt List lt Obje
  • 使用activiti总结--bpmn画流程图

    假期结束 xff0c 赶紧总结一下前几天使用的Activiti工作流的一些方法 简单介绍一下Activiti Activiti一套完整的方便的业务流程管理 xff08 BPM xff09 框架 xff0c 它是覆盖了业务流程管理 工作流 服

随机推荐

  • clock函数 使用以及问题

    使用 clock 函数是一个计算程序运行时间 xff08 其实简略的理解为占用CPU的使用时间 xff09 其实如果使用sleep函数 xff0c 程序是放弃CPU的使用权 xff0c 直到某个时间的到来 xff0c 当然就不会存在占用CP
  • 使用activiti总结--发布,办理,查询

    接上一篇文章 xff0c 使用创建好的流程图 xff0c 总结一下activiti发布到查询使用的方法和测试代码 流程图 1 引用配置文件 activiti cfg xml xff0c 不引用或者引用失败的话在创建流引擎的时候会报空指针异常
  • Could not open JDBC Connection for transaction

    操做 xff1a 访问20次数据库没问题 xff0c 超过20次调用后报如下错误 详细报错 xff1a org springframework transaction CannotCreateTransactionException Cou
  • 【可信计算】第八次课:可信软件栈编程开发

    TPM2开源软件包 目前在github上TPM2开源软件一共包含六个项目tpm2 tools tpm2 tss tpm2 pkcs11 tpm2 tss engine tpm2 abrmd tpm2 totp 1 tpm2 tools 这一
  • 国赛----可见光室内定位

    初期试探 拿到题目后 xff0c 反复读了题目 首先队内结合网上资料形成了两种方案 xff0c 原理相同就是利用光信号到达的强度来定位 两者差距在于算法不同而已 xff0c 一种利用计算得出位置 xff0c 另一种就是经过测量得到一种位置与
  • 各种Arduino外部中断程序

    一 中断 Interrupt 的基本概念 中断 xff08 Interrupt xff09 是计算机的一个重要概念 xff0c 现代计算机普遍采用中断技术 什么是中断呢 xff1f CPU执行时原本是按程序指令一条一条向下顺序执行的 但如果
  • PX4通过参数脚本给飞控导入参数

    PX4通过参数脚本给飞控导入参数 先找一架正常能飞的无人机连接地面站 在参数页面右上角点击工具 gt 保存到文件 保存的时候文件名注明参数的相关信息 然后将需要加载参数的无人机连接至地面站 xff0c 注意需要加载参数的无人机必须和保存的参
  • 深蓝 运动规划

    文章目录 CH1 Introduction一 Motion Planning 概念二 Front end xff1a Path finding1 Search based methods2 Sampling based methods3 K
  • 接收机/DTU 安装调试 读取gps数据

    文章目录 一 整体连接图二 DTU配置三 接收机设置 在这里记录一下 xff0c 实验室平台上 xff0c 安装gps接收机和配置的一些步骤 一 整体连接图 二 DTU配置 首先 DTU 需要通过 COM 口和电脑端连接 xff0c 注意这
  • OOQP 安装和使用

    OOQP 安装和使用 1 安装2 使用 1 安装 需要先安装 blas 和 ma27 BLAS xff1a span class token builtin class name cd span my lib span class toke
  • 系统指标

    目录 1 cpu xxx 1 1 cpu空闲率cpu idle cpu idle表示除硬盘IO等待时间以外其它等待时间 xff0c 这个值越大 xff0c 表示cpu越空闲 xff0c 还可以执行更多的任务 xff0c 反之亦然 xff0c
  • stm32 MPU6050 6轴姿态传感器的介绍与DMP的应用

    最近应用到三轴姿态传感器 xff0c 因为之前有MPU6050 xff08 6轴传感器 xff0c 这是6轴的 xff09 xff0c 进行搭配使用 xff0c 通过三轴姿态传感器进行舵机的角度调整 内容来源学习正点原子的教程 xff09
  • 室内外融合北斗+uwb终端数据监听和发送控制方法

    UDP接收GNGGA报文同时转发UDP报文的方法 span class token keyword package span span class token class name Frame span span class token p
  • Ubuntu使用终端命令安装谷歌Chrome浏览器

    使用命令行安装谷歌浏览器稳定版 span class token function sudo span span class token function wget span http www linuxidc com files repo
  • 无人机PX4使用动捕系统mocap的位置实现控制+MAVROS

    动捕系统Optitrack xff0c 有很高的定位精度 xff0c 能够给无人机提供比较精确的位置信息 xff0c 因此如果实验室有条件 xff0c 都可以买一套动捕系统 动捕系统的原理 xff1a 光学式动作捕捉依靠一整套精密而复杂的光
  • Optitrack使用ros完成实时接收刚体的位置与四元数信息

    1 Opitrack系统标定 工作环境 xff1a 运行Motive的Windows主机 和一台安装有ROS的ubuntu电脑 标定步骤 1 准备 优化捕获设置 xff1b 2 在相机预览窗口 xff08 Camera Preview xf
  • RoboMaster机甲大师比赛入门?我们从STM32开始!

    同步博客地址 xff1a 从STM32开始的RoboMaster生活 xff1a 入门篇 项目 amp 教程仓库 xff1a STM32 RoboMaster 1 0 STM32是什么 1 1 定义 ST 43 M 43 32 61 STM
  • C++头文件定义类的方法

    新手在写C 43 43 程序定义类的时候 xff0c 可能会犯一个错误 xff0c 就是在main函数文件里定义很多类 xff0c 一个文件中包含很多函数 xff0c 这样程序看起来很冗杂 今天总结一下如何在C 43 43 中使用头文件来定
  • 相机光学(十五)——如何提高相机标定的精度

    为了提高单目相机标定的精度 xff0c 认真看了张正友标定法的原文 xff0c 并且学习过网上一些牛人的方法 xff0c 但是大部分时候说的很笼统 xff0c 自己把这些经验总结起来并都测试了一下 xff0c 感觉靠谱的结论列出如下 xff
  • TCP/UDP、封装与解封装

    目录 传输类型 网络里面三层架构 TCP IP模型 OSI模型 TCP IP模型 掌握 TCP IP模型当中重点 数据传递过程中的封装和解封装 封装 解封装 TCP UDP ICMP ICMP错误报告 ICMP重定向 典型应用 PING应用