【DataCom基础01】基于TCP/IP模型理解数据通信过程

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

【DataCom基础01】基于TCP/IP模型理解数据通信过程

1、回顾TCP/IP模型

在这里插入图片描述

什么是数据网络(Data Network)? 简单来说,数据网络的基础就是一个由各种设备搭建起来的一张网,常见的设备有:

路由器,交换机,防火墙,负载均衡器,IDS/IPS,VPN等等。数据网络最基本的功能就是实现不同节点之间的数据互通,也就是数据通信

TCP/IP模型是当今IP网络的基础,它将整个数据通信的任务划分为不同的功能层次(Layer),每一个层次都有其所定义的功能,以及对应的协议。打个比方,对于一家公司而言,公司的一笔业务需要其各个部门相互协同工作才能完成,部门与部门之间既相互独立,但又需要相互配合,可以借用这种思路来理解TCP/IP参考模型。分层参考模型的设计是非常经典的理念:

  • 层次化的模型设计将网络的通信过程划分为更小、更简单的部件,因此有助于各个部件的独立开发、设计和故障排除;
  • 层与层之间相互独立,又相互依赖,每一层都有该层的功能、以及定义的协议标准。层与层之间相互配合,共同完成数据通信的过程;
  • 通过组件的标准化,允许多个供应商进行开发;
  • 通过定义在模型的每一层应该实现什么功能,鼓励产业的标准化;
  • 允许各种类型的网络硬件和软件相互通信。
    在这里插入图片描述

上面这张图显示的就是每个层次对应的代表性协议。

2、理解数据通信过程

在这里插入图片描述

根据上图所示的网络拓扑(Topology),我们来分析一下PC访问Server的WEB服务的详细通信过程。在阐述过程中,我们聚焦的重点是利用TCP/IP参考模型理解通信过程,因此可能会忽略部分技术细节,例如DNS、TCP三次握手等,这些技术细节在这里暂不做讨论。现在你要换一种视野来看待这个“世界”了,想像一下上图所示的终端和路由器都是一个个的“TCP/IP通信模型”,事实上,整个过程的宏观层面如下:

在这里插入图片描述

我们一步一步的来分析:

  1. PC的用户在WEB浏览器中访问Server的WEB服务(这里我们暂且不去关注底层的HTTP交互、DNS交互等细节。重点看通信过程部分),PC的这次操作将触发HTTP应用为用户构造一个应用数据(如下图所示)。当然这个数据最终要传递到Server并“递交”到Server的HTTP应用来处理,但是HTTP不关系数据是怎么传、怎么寻址、怎么做差错校验等等,这些事情都交由专门的Layer来完成,所以HTTP应用数据还得经过一番“折腾”才能从PC传到Server,OK,Let’s Go!

在这里插入图片描述

  1. 由于HTTP基于TCP,因此这个应用数据会交由TCP/IP模型中的传输层(也就是第4层)进一步的处理。在该层,上层的HTTP应用的数据会被封装上一个TCP的头部(可以简单的理解为套了一个TCP的信封),在TCP头部中我们重点关注两个字段(信封上写的东西),一个是源端口号,另一个是目的端口号,源端口号是随机产生的端口号(是PC本地专门用于本次HTTP会话的临时端口),目的端口号为80(HTTP服务对应的默认端口号是80)。然后这个数据段(Segment)将被交给下一层去处理。

在这里插入图片描述

  1. 下一层是网络层,处于这个层的IP协议会为这个上层(传输层)下来的数据段封装上一个IP头部 (相当于在之前TCP的信封上又套了一个信封,如下图所示),以便于该数据能够在IP网络中被网络设备从源端转发(路由)到目的端。在IP头中我们重点关注源IP地址、目的IP地址和协议号这三个字段。其中源IP地址填写的是PC自己的IP地址192.168.1.1 ,目的IP地址填写的是Server的IP地址192.168.2.1 ,而协议号字段则存放的是值6,这个值是一个众所周知(Well-Known)也就是行业约定的值,该值对应上层协议类型为TCP,表示这个IP头后面封装的上层协议是TCP协议(形象点的描述是,协议字段用于表示这个IP信封里面装的是一个TCP信封)。搞定之后,这个数据被交给下一层进行处理。

在这里插入图片描述

  1. 为了让这个IP数据包(Packet)能够在数据链路上进行传输,还要给数据包封装上一个数据链路层的头部,以便该数据能够在链路上被顺利传输到链路对端。由于我们这里是以太网链路,因此上层下来的IP数据包被封装上一个以太网的数据帧头(再增加一个信封)。这个数据帧头中写入的源MAC地址为PC的网卡MAC,那么目的MAC呢?PC知道,数据的目的地是192.168.2.1这个IP,而本机的IP是192.168.1.1/24。显然,目的网段和自己并不在一个网段,因此需要借助自己的网关,让网关来帮助自己将数据包转发出去。那首先得把数据转发到网关吧?因此,此处目的MAC地址填写的就是网关192.168.1.254对应的MAC地址。但是初始情况下,PC可能并没有192.168.1.254的MAC信息,所以,它会发送一个ARP广播来请求192.168.1.254的MAC,R1的GE0/0/0口会接收到这个ARP请求并且回送ARP响应。另外,以太网数据帧头的类型字段会填写上0x0800这个值,表示我这个数据帧后头封装的是一个IP包。好了废了老大劲儿,这个数据帧(Frame)终于搞定了:

在这里插入图片描述

  1. 值得一提的是,事实上在物理链路中传输的是比特(bit)流,或者是电气化的脉冲。只不过为了方便理解和更加直观的分析,我们往往会以IP包或者数据帧的形式来阐述通信的过程。所以从物理上来说,最终这个以太网数据帧变成了一堆的0101010101从网线传到了路由器R1上。

在这里插入图片描述

  1. 路由器R1在收到这一串010101后,会先将它们还原成数据帧。然后采用相应的机制检查一下数据帧在传输过程中是否会损坏,如果没有损坏,那么就瞅瞅数据帧头部里面的目的MAC地址,看看目的MAC地址是不是R1收到这个数据帧的GE0/0/0口的MAC。结果发现正正好是自己的MAC,它很高兴,这个数据帧是给它的,于是它继续查看了数据帧头部的类型字段,发现是0x0800,明白了这个数据帧信封里面装的是IP包,接着它将以太网数据帧头剥掉或者说是解封装,然后将里面的数据移交给上层IP协议继续进行处理。

在这里插入图片描述

  1. ​ 现在R1的IP协议栈接着处理这个报文:

在这里插入图片描述

它会先校验一下数据在传输的过程中,IP头部有没有受损,如果没有,它就查看IP头中的目的IP地址字段,结果发现目的IP地址是192.168.2.1,并不是自己的IP地址——原来这个数据包是发给别人的啊。于是,它开始拿着这个目的IP地址192.168.2.1到自己的地图(路由表)里去查找,去看看有没有到192.168.2.1这个目的地的路径,结果发现是有的,并且这个路由条目指示它把数据包从它自己的GE0/0/1口发送出去交给192.168.12.2这个IP。于是乎,它也不再继续去IP头包裹里面的东东了,而是乖乖的讲IP数据往下层提交,给数据链路层去处理。

  1. 现在R1的数据链路层继续处理上层下来的IP包,它将为这个IP包封装上一个新的以太网帧头部,帧头中添加的源MAC地址位R1的GE0/0/1的MAC地址:0018-0011-0002,目的MAC地址是这个数据包即将交给的下一个路由器R2 192.168.12.2这个接口的MAC地址,当然初始情况下,R1也是不知道这个MAC的,因此又是一轮ARP广播并且最终拿到这个MAC地址:0018-0022-0001,于是它将这个值填写在目的MAC字段中。完成了新的数据帧头部封装后,R1把这个数据帧变成010101并通过电气信号传递给了R2。

在这里插入图片描述

  1. R2收到这些010101后,同样的,还是先将其还原成数据帧,然后看到数据帧头,发现目的MAC填写的就是自己接口的MAC地址,并且帧头的类型字段值是0x0800(指示上层协议是IP协议,也就是数据帧头内封装的是一个IP包),于是将数据帧头剥去,将里头的IP数据包交给IP协议去处理。
  2. 而IP协议在处理的过程中发现,目的IP地址并非是本路由器上的IP,于是它也就知道了,这个数据包不是发给它自己的。R2就拿着这个目的IP地址 192.168.2.1在自己的路由表中查,结果发现,R2的GE0/0/1口就连着192.168.2.0/24网络,原来家门口就是了。于是它将这个IP包交还给下层协议去处理。

在这里插入图片描述

  1. 接下来又是重新封装数据帧,R2为这个IP包封装上一个新的数据帧头部,帧头中,源MAC为R2的GE0/0/1口的MAC,目的MAC是192.168.2.1这个IP地址对应的MAC,如果ARP表里已经有192.168.2.1对应的MAC信息的话,则直接将MAC地址写入到目的MAC地址中,如果没有则使用ARP广播去请求。另外,帧头中类型字段依然填写的是0x0800。最终,R2将这个数据帧发送给了Server。

在这里插入图片描述

  1. 千辛万苦,终于数据帧是到了Server。Server首先也是把010110的比特流还原成数据帧,然后做帧的完整性校验看看帧头是否损坏,如果没有,则继续查看数据帧的目的MAC,结果发现就是自己的网卡MAC,于是再查看帧的类型字段,发现是0x0800,知道这里头是IP包,于是将帧头剥去,将内层的IP数据包给上层的IP协议进行处理。IP收到这个数据包后,首先也是检验这个IP包头是否有损坏,如果没有,那再查看目的IP地址,发现目的IP正是自己网卡的IP 192.168.2.1。于是,它知道这个就是发送给自己的IP包,因此继续查看IP包头中的协议字段,发现协议字段填的是6这个值。哦,原来这个IP包头后面封装的是TCP的数据啊,因此将IP包头剥去,奖里面的TCP数据交给上层的TCP协议进行处理。而TCP在处理这个数据的时候,发现TCP头部中目的端口号是80,而Server本地的TCP80 端口号是开放的,并且是开放给HTTP应用了,接着它将TCP头部剥去,将里面的DATA给到了HTTP应用。好了,终于从PC发送出来的HTTP应用数据,到达了目的地-Server的HTTP应用手中。

在这里插入图片描述

HCIA-Datacom 核心知识点:网络参考模型(OSI/TCP/IP 网络参考模型是HCIA-Datacom认证的核心基础,重点介绍了OSI七层模型TCP/IP五层模型。OSI模型通过"All People Session Transport Network DataLink Physical"口诀记忆,每层功能用生活场景理解更直观。实际网络多采用TCP/IP对等模型,传输层的TCP(可靠)和UDP(快速)协议各有适用场景。掌握各层PDU(数据段/包/帧)和关键协议是排障基础,如网络层丢包、数据链路层帧错误。模型标准化使设备互通、排障高效,建议通过实验搭 阅读详情

相关推荐

【信息科学与工程学】【通信工程】第八十六篇 通信网络设备及通信网络组网的所有学科知识01

编号001类型网络虚拟化与覆盖技术网络领域数据中心网络子领域大二层网络 / 网络虚拟化核心数学方程式/算法模型核心算法:VXLAN封装与解封装。关键在于24位VNI(虚拟网络标识符)到物理网络的三层IP地址的映射。封装:收到原始以太帧后,为其添加 VXLAN 头部(含 VNI)、外层 UDP 头(目的端口 4789)、外层 IP 头(源 IP 为本地 VTEP IP,目的 IP 为对端 VTEP IP)以及外层 MAC 头。解封装:对端 收到报文后,剥离外层头部,根据内层帧的目的 MAC 和 VNI 进行二

weixin_49199313的博客 639

华为认证 HCIA/HCIP/HCIE 全面解析(2025 版)

IGP高级特性、BGP高级特性、网络安全技术,网络安全技术,MPLS VPN原理与配置,MPLS L3VPN跨域,IPv6,QoS,广域网,SRv6,SegmentRouting,SSH原理与实践,实验lab讲解..…IP网络基础,局域网技术,广域网技术,路由技术,网络安全,产品知识,网络管理,IPv6技术,网络搭建,网络故障排除,华为路由交换设备的安装和调试...这些岗位对技术要求较高,但薪资水平和职业发展空间也相对较好,尤其是如果你拥有多项认证(例如:数通+云计算,或者安全+网络),你的竞争力会更强。

hcie-0001 1万+

Cognex读码器和DataMan软件常规操作步骤记录

今天是2023-05-18,实验室常规测试,顺便记录一下康耐视读码器DM280X的TCP通讯相关设置步骤。官网地址:https://www.cognex.cn/zh-cn。到这里DataMan软件读码的TCP通讯数据收发就完成设置了。默认作TCP通讯的服务器。

BIGFISH2019的博客 1万+

吃透传输层:UDP 无连接、TCP 可靠传输、套接字函数、粘包问题详解

应答机制:TCP为发送的数据进行编号,发送数据时,报文头部的序列号是这包数据的第一个数据的编号;滑动窗口机制:缓冲区,保存已发送并收到应答的数据、已发送未收到应答的数据、未发送但在对方处理范围。粘包:发送端发送速度太快,接收端处理速度比较慢,导致数据在缓冲区缓存,应用层读出数据。捎带应答机制:ACK可以和应用层发送的数据一起发出,表示对上包数据的响应。:网络抓包工具,可以抓取经过网卡的网络数据,从而分析网络问题和网络数据。延迟应答机制:TCP可以发送多组数据,发送的同时等待应答。

2401_83194029的博客 526

UDP和TCP中的网络编程

本文介绍了传输层的两种协议UDP和TCP的特点及Java网络编程实现。UDP是无连接、不可靠传输的协议,面向数据报;TCP是有连接、可靠传输的协议,面向字节流。文章详细演示了如何使用Java实现UDP和TCP的回显服务器/客户端以及翻译字典服务器/客户端,包括服务器接收请求、处理响应、返回结果的完整流程。重点分析了TCP编程中缓冲区刷新、资源释放和多线程处理等注意事项。通过具体代码示例,展示了两种协议在网络编程中的实际应用和差异。

CJH20050707的博客 215

【计算机网络 | 传输层6:TCP 三次握手:为什么建立连接需要三次?】

客户:SYN,公布初始序号 x服务器:SYN+ACK,确认 x,并公布初始序号 y客户:ACK,确认 y这个过程让双方确认连接意图,交换并确认各自的初始序号,协商后续通信能力,并初始化连接所需状态。第三次握手尤其重要,因为它让服务器确认自己的 SYN 已被客户接收,避免仅凭迟到的旧请求就把连接误认为已经建立。连接建立后,双方便可在两个方向独立发送数据。但数据传输结束时,一个方向停止发送并不代表另一个方向也立刻结束。

DdigitalNomad的博客 435

IP网络

属于分片。

keyipatience的博客 578

DDoS攻击溯源实战:三步用IP查询锁定攻击源ASN和地理位置

开服首日遭遇DDoS攻击?别急着封IP!通过三步法:采集攻击IP → 批量查询ASN、地域、网络类型等字段 → 按ASN聚合溯源,可快速锁定攻击源。实战中,某游戏公司仅用5秒识别83%攻击来自同一云厂商ASN,封堵后3分钟内流量从40Gbps降至5Gbps。关键在于部署内网离线库、建立白名单与风险评分阈值,避免误封并实现自动化处置。真正高效的是“聚源而非逐个封”,让防御更精准、更合规。

2401_87347940的博客 102

开源 lwIP:单片机上的轻量 TCP/IP 协议栈

我们要的是 Linux 那套完整网络世界,还是一份能塞进 MCU 的、可裁剪的 TCP/IP?lwIP 把路走窄了,也走实了:窄在不做通用 OS 网络子系统;实在无数量产固件里默默转发每一包。它不靠刷星证明自己,靠的是——你打开厂商工程时,头文件里已经写着lwip。厂商/官方 echo 例程 → 读懂lwipopts.h→ ping 通 → 一条 TCP/UDP → 再叠 MQTT/HTTP。别第一天就对吞吐和 TLS 一起开战——先让协议栈在板上「活着」。

buhuidage的博客 126

AI Agent为什么越来越需要固定出口IP?从API白名单到生产环境网络管理

过去提到静态 IP,很多人首先想到的是服务器或者远程访问。现在它的应用范围已经越来越广。特别是在 AI Agent、API 集成、SaaS、云服务和自动化任务越来越多的情况下,固定出口 IP 本身正在成为一种网络管理能力。让出站网络更加可预测。对于需要 IP 白名单、来源控制、安全审计或者长期稳定连接的业务,这一点尤其重要。这个服务出去的时候,别人能不能明确知道它是谁?当答案是“需要”的时候,固定出口 IP 往往就值得纳入架构设计。

2501_92822196的博客 223

CCTGA启动“银狐”专项打击,两批恶意IP全公开

要回答这个问题,得先从它的“身世”说起。“银狐”黑产团伙(又称“游蛇”“谷堕大盗”)自2018年前后便开始活跃,且并非固守一隅,而是一直在持续进化、迭代攻击手法。早期,主要靠仿冒下载站、搜索引擎恶意推广、钓鱼邮件和微信群文件广撒网,将木马伪装成“金税四期”、“季度违纪名单”、“裁员补偿方案”、“会议通知”等极具诱导性的文件名,精准锁定财务、HR等高价值岗位人员。一旦中招,便会植入Gh0st、Win0s、DcRat等远控木马,实现对目标电脑的文件下发、进程操控、屏幕监控、键盘记录乃至敏感信息窃取。

juminfo的博客 201

IT920X 技术解析:AV-over-IP SoC的片载DDR与引脚兼容设计

ITE的IT920X系列通过片载DDR与BGA-283引脚兼容复用架构,在单芯片内集成800MHz ARM内核、视觉无损编解码硬件、千兆以太网MAC与多路USB控制器,依靠CAT5e网线完成HDMI音视频与USB信号的IP透传,同时主流型号共用同一PCB底板,支持延长器与视频墙等多类应用。IT920X依靠片载DDR与引脚兼容复用架构,减少外部存储器件,同时依靠一套PCB底板完成多档位产品硬件开发,降低AV-over-IP产品BOM与版本迭代调试工作量。I2S、I2C与UART低速控制线应远离高速差分区域。

ccbw16的博客 247

SSRF 从入门到实战(中篇):过滤绕过(IP 马甲与 302 跳转)

接上篇。上篇我们把无过滤的 SSRF 跑通了,但真实世界没这么"裸"——开发者会加过滤。

2303_82039857的博客 398

TCP并发服务器:多进程 多线程 IO多路复用(select poll epoll)

单循环服务器:一次只能处理一个客户端任务的服务器。并发服务器:能够同时处理多个客户端任务的服务器。(一对多)

yxg0505的博客 201

TCP 收发机制、连接管理与Socket 状态机介绍

本文系统讲解 TCP 数据收发的滑动窗口管控、超时与快速重传、前缀确认等核心机制,解析三次握手建连与四次挥手断连的流程逻辑,介绍三类套接字的功能定位,梳理建连与断连全过程的状态机流转原理。

Brookty的博客 545

做IP归属地查询时总是查不准?IP纯净度检测实战:从“查归属地“到识别“脏IP“的四个维度

说白了,IP纯净度就是IP在网络世界的"信用记录"。反过来,机房IP、共享出口、代理通道,或者被拿去刷单、批量注册、跑垃圾流量的,都算"脏"。除了这四个,真人概率(real)和秒拨概率(mb_rate)也是有用的补充信号:真人概率趋近0说明是机器流量,秒拨概率高说明是轮换代理。所以这两年风控普遍从静态黑名单转向风险画像:不再问"这个IP有没有案底",而是实时看"它从哪来、是什么类型、正在被用来干什么"。多数IP归属地查询只能告诉你"它在哪个城市",真正决定一个IP该不该被放行的,是它的纯净度。

TechWayfarer的博客 477

ARM CoreLink IP Overview

(与内存控制/SMMU协同)

IC验证及芯片SOC知识分享 265

网络编程 Day2】TCP 通信核心:三次握手、核心 API、C/S 架构与粘包问题全梳理

面向连接:通信前必须通过三次握手建立连接,通信结束通过四次挥手断开可靠传输:有确认机制、超时重传、排序、流量控制、拥塞控制,保证数据不丢、不乱、不重复面向字节流:数据被看作连续的字节流,没有消息边界,会出现粘包全双工:同一个连接建立后,双方可以同时发送和接收数据,两条数据流独立TCP 连接有两条独立的数据流(A→B 和 B→A),可以同时收发,互不干扰。同一个 fd 既能调用 send 也能调用 recv,这就是全双工。TCP 是面向字节流的,没有消息边界。

2401_89475491的博客 822

【Socket 进阶之路】第 3 章 TCP 三次握手 & 四次挥手深度剖析|连接建立、断开、状态机、TIME_WAIT 核心工程问题

【摘要】本文深入解析TCP连接状态流转机制,涵盖三次握手/四次挥手全流程及工程实践要点。核心内容包括:1)三次握手建立连接时的序列号协商与状态转换;2)四次挥手的双向独立关闭特性,重点分析TIME_WAIT(主动方2MSL等待)和CLOSE_WAIT(被动方未close)的成因与解决方案;3)RST强制断连场景及SIGPIPE信号处理;4)端口复用(SO_REUSEADDR)解决服务重启时的地址占用问题。文章提供ss/netstat等调试命令,强调异常处理、资源释放等工业级实践,为后续粘包处理章节奠定基础

u011697185的专栏 270
上一篇: win 10 搭建简易WEB 指南(so-easy)
下一篇: OceanStor 5600 V5 【硬盘故障】
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值