网络协议入门:TCP/IP五层模型如何实现全球数据传输?

news2025/6/5 2:57:18

在这里插入图片描述

🔍 开发者资源导航 🔍
🏷️ 博客主页: 个人主页
📚 专栏订阅: JavaEE全栈专栏

内容:

    • 网络初识
      • 什么是网络?
      • 关键概念
      • 认识协议
      • 五元组
    • 协议分层
      • OSI七层模型
      • TCP/IP五层(四层)协议模型
      • 各个设备涉及的层次
    • 通信基本流程
      • 传出数据
      • 知识补充
      • 传入数据

网络初识

什么是网络?

你有没有想过,我们每天依赖的互联网,最初是如何诞生的?

从两个设备间最简单的电流信号,到办公室里的局域网,再到如今覆盖全球的互联网——这条连接之路,远比我们想象的更精彩。

最初,工程师们只是想让两台计算机"对话",用简单的协议和物理线路传输数据;后来,随着设备增多,局域网(LAN)诞生了,让一个房间、一栋楼里的机器能彼此通信;而今天,TCP/IP协议族像一种"世界语",让地球任意角落的设备都能瞬间连接。

关键概念

路由器:连接各个网络节点的中转器。

交换机:一般的路由器只有两三个插口,交换机是路由器的扩展器,可以增加路由器的接口数量,相当于“插排”的作用。

ip地址:在网络中一台设备的所在位置,这个地址并不固定。

端口号:一个设备中可能有多个程序同时使用网络,端口号的作用就是用来区分谁是谁。

认识协议

网络协议是通信双方对于发送/接受数据格式的约定,我的数据怎么发,你就怎么来解析,只有双方同时遵守同一个协议,通信才是有意义的。

通信就好像是两个人在沟通,我只会汉语,你只会阿拉伯语,我们双方通过自己的语言解析收到的是一团乱码,彼此之间谁也听不懂谁在说什么,而如果我们约定使用同一个语言,我们直接的交流才是有意义的。

五元组

进行一次网络通信,涉及到五个非常关键的信息:源IP、 源端口、目的IP、目的端口、协议类型。

网络通过信息知道此次通信中:信息从哪里来,要到哪里去,用的什么格式进行传输。

协议分层

一个大的协议往往需要包含很多的内容,为了管理起来方便,通常会将一个大的协议拆成功能单一的小协议来进行管理。而再将这些协议按照功能划分,就可以得到分层的效果。

分层之后,只有两个相邻的层次之间可以进行交互,上次协议可以调用下层协议,下层协议为上层协议提供服务,协议之间不能夸层交互。

优点:

封装:上层协议不需要了解下层协议的内容,用到下一层时只需要调用接口即可。
解耦合:如果某一层需要替换或者修改,对其他层影响较小

OSI七层模型

OSI:即Open System Interconnection,开放系统互连。

OSI将网络协议从逻辑上分为了七层,但是因为这套分层体系太复杂了,因此只存在于教科书上。

在这里插入图片描述

TCP/IP五层(四层)协议模型

TCP/IP五层(四层)协议模型是上一个模型的简化版,实际中使用的的也较多。
在这里插入图片描述

在协议模型中越接近硬件部分、系统内核部分就越底层,越软件越高层。

按照从低到高该模型分为:

物理层:

物理层规定了网络通信中的一些硬件设备符合的要求,例如:网线、wifi、光纤等。

数据链路层:

完成两个相邻的设备之间如何进行通信,通过网线把设备连到路由器/交换机上。

先考虑一小步,把两个设备连起来,数据链路层是基于物理层实现的。

网络层:

两个任意的设备如何进行通信,这两个设备可能隔着很多个交换机和路由器。

网络层基于数据链路层实现。

传输层

任意两个设备之间的通信,不考虑中间过程,只看起点和终点。

应用层:

拿到包裹也就是传输信号后该怎么使用。

在应用时物理层我们考虑的⽐较少。因此很多时候会把数据链路层和物理层合在一起,也可以称为 TCP/IP四层模型。

各个设备涉及的层次

主机:物理层->应用层 通过应用程序满足通信要求。

路由器:物理层->网络层 组建局域网进行网络数据包的转发。

交换机:物理层->数据链路层 对路由器接口的扩展,不需要考虑组网的问题。

通信基本流程

传出数据

1.应用层

在获取用户的数据后,首先根据应用层的协议构造出一个应用层的数据包,应用层的协议往往是由程序员自己定义的,而这个数据也往往是结构化的数据,例如json格式的数据。

在发送和接受数据是要经过两个过程:

序列化: 把结构化的数据转换成二进制的比特流。

反序列化: 把二进制的比特流转换成结构化数据。

这么做的目的是为了数据可以进行传输,毕竟现在的数据传输都是二进制的嘛~

2.传输层

应用层将数据传递给传输层,传输层拿到数据之后,构造出“传输层数据包”,传输层的协议主要是TCP以及UDP。

这里假设我们使用的是TCP协议~

TCP数据包 = TCP报头 + TCP载荷。

tcp报头包含源端口/目的端口以及其他很多信息,并且记录应用层使用的协议,而TCP载荷则是应用层传给它的数据包。

3.网络层

传输层传给网络层后,网络层接着对数据包进行处理,网络层使用的最主要的协议是IP协议,处理方式与上述类似,继续增添标签。

IP数据包 = IP报头 + IP载荷。

ip报头包含源ip/目的ip以及其他很多信息,并且记录传输层用的什么协议,IP载荷则是整个传输层的数据包。

4.数据链路层

数据链路层在网络层的基础上继续加工,该层主要的协议是“以太网”协议,和之前不同的是它不仅加了一个头还加了一个尾巴。

以太网数据帧 = 帧头 + 载荷 + 帧尾。

每个协议并不会关心他们的载荷,只需要添加标签即可,这也是协议分层的好处之一。

5.物理层

网卡将上述的二进制数据以各种信号的形式传播出去。

上述过程虽然复杂,但是对于计算机来说是一个极快的过程。
在这里插入图片描述

知识补充

上述的关键性名词并不严谨。

TCP数据使用的是段,UDP使用的是报,IP使用的是包,而以太网使用的是帧。

工作中并不会明确区分这些概念,混用即可。

传入数据

如果说传出数据是从上到下的一个封装过程,那么传入数据就是一个封装的逆向过程。

1.物理层

数据被传入到网卡,解析为二进制数据,并将其传入到数据链路层。

2.数据链路层

根据以太网协议进行解析,将帧头和帧尾取出,将剩下的载荷往上传递给网络层。

3.网络层

按照IP协议进行解析,取出IP报头,剩下的继续传递给传输层。

4.传输层

按照TCP协议进行解析,取出TCP报头,剩下的继续传递给应用层。

5.应用层

解析应用层数据拿到关键信息,将其展示到界面上。

上述提到过每一层的报头会记录其上一层使用的协议类型,因此拿到数据时可以知道用什么协议进行解析。


感谢各位的观看Thanks♪(・ω・)ノ,如果觉得满意的话留个关注再走吧。

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

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

相关文章

Docker安装Redis集群(3主3从+动态扩容、缩容)保姆级教程含踩坑及安装中遇到的问题解决

前言 部署集群前,我们需要先掌握Redis分布式存储的核心算法。了解这些算法能帮助我们在实际工作中做出合理选择,同时清晰认识各方案的优缺点。 一、分布式存储算法 我们通过一道大厂面试题来进行阐述。 如下:1-2亿条数据需要缓存&#xff…

企业级 AI 开发新范式:Spring AI 深度解析与实践

一、Spring AI 的核心架构与设计哲学 1.1 技术定位与价值主张 Spring AI 作为 Spring 生态系统的重要组成部分,其核心使命是将人工智能能力无缝注入企业级 Java 应用。它通过标准化的 API 抽象和 Spring Boot 的自动装配机制,让开发者能够以熟悉的 Spr…

如何用docker部署ELK?

环境: ELK 8.8.0 Ubuntu20.04 问题描述: 如何用docker部署ELK? 解决方案: 一、环境准备 (一)主机设置 安装 Docker Engine :版本需为 18.06.0 或更新。可通过命令 docker --version 检查…

Redis最佳实践——安全与稳定性保障之高可用架构详解

全面详解 Java 中 Redis 在电商应用的高可用架构设计 一、高可用架构核心模型 1. 多层级高可用体系 #mermaid-svg-Ffzq72Onkv7wgNKQ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Ffzq72Onkv7wgNKQ .error-icon{f…

【Python 算法零基础 4.排序 ⑥ 快速排序】

既有锦绣前程可奔赴,亦有往日岁月可回首 —— 25.5.25 选择排序回顾 ① 遍历数组:从索引 0 到 n-1(n 为数组长度)。 ② 每轮确定最小值:假设当前索引 i 为最小值索引 min_index。从 i1 到 n-1 遍历,若找到…

Go 即时通讯系统:日志模块重构,并从main函数开始

重构logger 上次写的logger.go过于繁琐,有很多没用到的功能;重构后只提供了简洁的日志接口,支持日志轮转、多级别日志记录等功能,并采用单例模式确保全局只有一个日志实例 全局变量 var (once sync.Once // 用于实现…

MYSQL MGR高可用

1,MYSQL MGR高可用是什么 简单来说,MySQL MGR 的核心目标就是:确保数据库服务在部分节点(服务器)发生故障时,整个数据库集群依然能够继续提供读写服务,最大限度地减少停机时间。 2. 核心优势 v…

阿里通义实验室突破空间音频新纪元!OmniAudio让360°全景视频“声”临其境

在虚拟现实和沉浸式娱乐快速发展的今天,视觉体验已经远远不够,声音的沉浸感成为打动用户的关键。然而,传统的视频配音技术往往停留在“平面”的音频层面,难以提供真正的空间感。阿里巴巴通义实验室(Qwen Lab&#xff0…

异步上传石墨文件进度条前端展示记录(采用Redis中String数据结构实现-苏东坡版本)

昔者,有客临门,亟需自石墨文库中撷取卷帙若干。此等文册,非止一卷,乃累牍连篇,亟需批量转置。然吾辈虑及用户体验,当效东坡"腹有诗书气自华"之雅意,使操作如行云流水,遂定…

处理知识库文件_编写powershell脚本文件_批量转换其他格式文件到pdf文件---人工智能工作笔记0249

最近在做部门知识库,选用的dify,作为rag的工具,但是经过多个对比,最后发现, 比较好用的是,纳米搜索,但是可惜纳米搜索无法在内网使用,无法把知识库放到本地,导致 有信息…

rtpmixsound:实现音频混音攻击!全参数详细教程!Kali Linux教程!

简介 一种将预先录制的音频与指定目标音频流中的音频(即 RTP)实时混合的工具。 一款用于将预先录制的音频与指定目标音频流中的音频(即 RTP)实时混合的工具。该工具创建于 2006 年 8 月至 9 月之间。该工具名为 rtpmixsound。它…

【计算机网络】第3章:传输层—面向连接的传输:TCP

目录 一、PPT 二、总结 TCP(传输控制协议)详解 1. 概述 核心特性: 2. TCP报文段结构 关键字段说明: 3. TCP连接管理 3.1 三次握手(建立连接) 3.2 四次挥手(终止连接) 4. 可…

《信号与系统》--期末总结V1.0

《信号与系统》–期末总结V1.0 学习链接 入门:【拯救期末】期末必备!8小时速成信号与系统!【拯救期末】期末必备!8小时速成信号与系统!_哔哩哔哩_bilibili 精通:2022浙江大学信号与系统(含配…

mac笔记本如何快捷键截图后自动复制到粘贴板

前提:之前只会进行部分区域截图操作(commandshift4)操作,截图后发现未自动保存在剪贴板,还要进行一步手动复制到剪贴板的操作。 mac笔记本如何快捷键截图后自动复制到粘贴板 截取 Mac 屏幕的一部分并将其自动复制到剪…

高考加油!UI界面生成器!

这个高考助力标语生成器具有以下特点: 视觉设计:采用了蓝色为主色调,搭配渐变背景和圆形装饰元素,营造出宁静而充满希望的氛围,非常适合高考主题。 标语生成:内置了超过 100 条精心挑选的高考加油标语&a…

window ollama部署模型

注意去官网下载ollama,这个win和linux差别不大,win下载exe,linux用官网提供的curl命令 模型下载表:deepseek-r1 使用命令:Ollama API 交互 | 菜鸟教程 示例: 1.查看已加载模型: 2.文本生成接口 curl -X POST http://localhost:11434/v1/completions -H "Conte…

用mediamtx搭建简易rtmp,rtsp视频服务器

简述: 平常测试的时候搭建rtmp服务器很麻烦,这个mediamtx服务器,只要下载就能运行,不用安装、编译、配置等,简单易用、ffmpeg推流、vlc拉流 基础环境: vmware17,centos10 64位,wi…

ubuntu安装devkitPro

建议开个魔法 wget https://apt.devkitpro.org/install-devkitpro-pacman chmod x ./install-devkitpro-pacman sudo ./install-devkitpro-pacman(下面这句如果报错也没事) sudo ln -s /proc/self/mounts /etc/mtab往~.bashrc添加 export DEVKITPRO/o…

Linux(10)——第二个小程序(自制shell)

目录 ​编辑 一、引言与动机 📝背景 📝主要内容概括 二、全局数据 三、环境变量的初始化 ✅ 代码实现 四、构造动态提示符 ✅ 打印提示符函数 ✅ 提示符生成函数 ✅获取用户名函数 ✅获取主机名函数 ✅获取当前目录名函数 五、命令的读取与…

代码随想录算法训练营 Day59 图论Ⅸ dijkstra优化版 bellman_ford

图论 题目 47. 参加科学大会(第六期模拟笔试) 改进版本的 dijkstra 算法(堆优化版本) 朴素版本的 dijkstra 算法解法的时间复杂度为 O ( n 2 ) O(n^2) O(n2) 时间复杂度与 n 有关系,与边无关系 类似于 prim 对应点多…