news 2026/6/9 22:23:46

网络原理初识

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
网络原理初识

目录

IP地址

概念

格式

端口号

概念

格式

协议

五元组

协议分层

OSI七层网络协议模型

TCP/IP五层网络模型

网络数据通信的基本流程

封装

1.应用程序层

2.传输层

3.网络层

4.数据链路层

5.物理层

分用

1.物理层

2.数据链路层

3.网络层

4.传输层

5.应用程序层

网络设备所在分层


IP地址

概念

IP地址主要用于标识网络主机、其他网络设备(如路由器)的网络地址。简单来说,ip地址就是用于定位主机的网络地址。

格式

IP地址是一个32位的二进制数,通常被分割为4个“8位2二进制数”(也就是4个字节),例如:01100100.00000100.00000101.00000110。

通常用“点分十进制”的方式表示。即a.b.c.d的形式(a,b,c,d都是0~255之间的十进制数),例如:上述地址表示为100.4.5.6

端口号

概念

在网络通信中,IP地址用于标识主机的网络地址,端口号可以标识主机发送数据,接受数据的进程。简单来说,端口号用于定位主机中的进程。

格式

端口号是范围为0~65535(两个字节)的数字,在网络通信中,进程可以通过绑定一个端口号,来发送及接收网络数据。

协议

协议即网络协议,网络协议是网络通信(即网络数据传输)经过的所有网络设备都必须共同遵循的一组约定和规则。如怎么建立连接、怎么相互识别。

协议最终体现为在网络上传输的数据包的格式。

五元组

在TCP/IP协议中,用五元组来标识一个网络通信:

  1. 源IP:标识主机
  2. 源端口号:标识源主机中该次通信发送数据的进程
  3. 目的IP:标识目的主机
  4. 目的端口号:标识目的主机中该次通信接收数据的进程
  5. 协议号:标识发送进程和接收进程双方约定的数据格式

五元组在网络通信中的作用,类似于发送快递:

协议分层

网络通信十分复杂,如果只设计一个协议,完成网络通信的方方面面,势必会让这个协议非常庞大且复杂。

所以我们把一个大的协议,拆分成若干个小的,功能单一的协议。

但是拆分完后的小的协议太多,不易管理。所以把这些小的协议归类分层,并规定,只有相邻两层协议之间可以进行交互:(不能跨层交互)

  • 上层协议可以调用下层协议
  • 下层协议可以给上层协议提供服务

这样做的好处有:

  1. 封装:上层协议,不需要了解下层协议的细节
  2. 解耦:分层之后,灵活替换其中的某一层,对于整体的工作过程影响较小

这个过程类似于打电话

OSI七层网络协议模型

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

OSI七层模型既复杂又不实用,实际上的网络分层方式是TCP/IP五层(四层)模型。

TCP/IP五层网络模型

  • 应用层:包裹拿到之后怎么用。负责应用程序间沟通
  • 传输层:任意两个设备之间的通信,不考虑中间过程,只考虑终点和起点。负责两台主机之间的数据传输
  • 网络层:任意两个设备之间通信的中间过程。负责地址管理和路由选择
  • 数据链路层:完成相邻两个设备之间的通信。负责设备间数据帧的传送和识别
  • 物理层:规定网络通信硬件设备符合的要求。负责光电信号的传输方式

该过程类似于网上购物:

  • 我买一件商品,拿到后该如何使用——应用层
  • 卖家只用关心,买家收件人的信息——传输层
  • 物流公司关心,包裹以怎样的路径传输——网络层
  • 快递小哥/货车司机关心,包裹怎样传给下一个节点——数据链路层

网络数据通信的基本流程

封装

数据从上层到下层,一步步添加包头的过程就是封装(不同于面向对象的封装概念)

1.应用程序层

应用程序在获取到用户的输入后,会构造一个应用层的数据包。

这个应用层数据包(结构化数据),会遵循应用层协议(开发这个应用程序的程序员规定的)

例如:我在qq上发送一条信息“hello”。qq应用程序可能就会将我的消息封装成如下的数据包:

构造完成之后,应用程序就会调用传输层的API(socket API),将数据传输给传输层

2.传输层

传输层拿到数据后,构造出“传输层数据段”,

传输层的协议主要包括两个:TCP和UDP

构造完的TCP数据段,继续调用网络层的API,把TCP数据段传输给网络层

3.网络层

网络层拿到数据后,构造出“网络层数据报”

网络层最主要的协议是IP协议

构造完的IP数据报,继续调用数据链路层的API,将IP数据报传输给数据链路层

4.数据链路层

数据链路层拿到数据后,构造出“数据链路层数据帧”

数据链路层的核心协议是,以太网

5.物理层

以太网将数据帧交给网卡这样的硬件设备

网卡就会将上述的数据帧的二进制数据,最终以光信号/电信号/电磁信号的方式传播出去。

分用

数据达到接收方主机后,逐层解析就是分用

1.物理层

数据达到接收方的网卡后,网卡将光电信号转化为二进制数字,再将其交给数据链路层。

数据链路层的协议决定了物理层的数据是怎么来的:例如以太网数据决定了数据是从网线光纤传来的,802.11协议决定了数据是从wifi来的

2.数据链路层

按照以太网协议进行解析,取出帧头和帧尾,剩下的载荷向上传递给网络层

帧头中就有专门的属性记录了网络层使用的是什么协议

3.网络层

按照IP协议进行解析,取出IP报头,剩下的载荷向上传递给传输层

IP报头中描述了传输层使用了什么协议,以及源IP/目的IP

4.传输层

按照TCP协议进行解析,取出TCP段头,剩下的载荷向上传递给应用层

TCP段头中记录了源端口号/目的端口号,这样就告知了我们数据要交给哪个应用程序

5.应用程序层

qq应用程序,按照qq的应用协议,解析应用层的数据包,取出其中的消息内容展示给用户

网络设备所在分层

  • 主机:工作过程涉及物理层——>应用层,在应用层方面,通过应用程序满足网络通信需求
    注意:操作系统涉及的是物理层——>传输层
  • 路由器:工作过程涉及物理层——>网络层,组建局域网,进行网络数据包转发
  • 交换机:工作过程涉及物理层——>数据链路层,对路由器接口的扩展,不需要考虑组网问题

传输数据的中间过程,也涉及到了封装分用

当主机的数据传输到交换机时:(二层转发)

交换机会完成物理层解析、数据链路层解析,然后重新构造出以太网数据帧,发送给下一个设备

当主机的数据传输到路由器时:(三层转发)

路由器会完成物理层解析、数据链路层解析、网络层解析,然后重新构造出IP数据报,发送给下一设备

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 19:39:50

Markdown+Jupyter双剑合璧:Miniconda-Python3.10下的高效写作体验

Markdown与Jupyter的协同革命:基于Miniconda-Python3.10的现代技术写作实践 在数据驱动的时代,一篇技术报告的价值不再仅仅取决于它的结论是否正确,而更在于其推理过程是否透明、可验证。我们常常看到这样的场景:研究人员提交了一…

作者头像 李华
网站建设 2026/6/10 10:56:24

【豆包】生图无水印下载js,豆包去除左上角水印js、豆包去水印浏览器扩展插件js、豆包去掉ai生成,豆包如何去掉水印,豆包去水印,豆包图片去水印下载

豆包ai去水印下载 // UserScript // name 豆包AI生图无水印下载 // namespace http://tampermonkey.net/ // version 1.0 // description 在豆包AI生图页面自动下载无水印原图 // author You // match https://www.doubao.com/* // match …

作者头像 李华
网站建设 2026/6/10 12:28:16

HTML可视化报告生成:Python脚本结合Miniconda环境输出

HTML可视化报告生成:Python脚本结合Miniconda环境输出 在数据科学、人工智能和工程研发的日常实践中,一个看似简单却频繁出现的任务正变得越来越关键——如何快速、准确、可复现地将实验结果转化为易于分享的技术报告。传统方式下,研究人员往…

作者头像 李华
网站建设 2026/6/10 14:48:10

hivesql 字段aa值 如何去掉前面的0

在Hive SQL中去除字段值的前导零,可以通过以下两种常用方法实现: 方法一:使用正则表达式替换(推荐) SELECT regexp_replace(aa, ^0, ) AS trimmed_aa FROM your_table;说明: ^0 正则表达式匹配字符串开头的…

作者头像 李华
网站建设 2026/6/9 23:24:14

Docker build阶段预装Miniconda与PyTorch最佳实践

Docker构建中预装Miniconda与PyTorch的工程实践 在AI项目日益复杂的今天,一个常见的痛点是:本地能跑通的模型,换到服务器或同事机器上却频频报错。这类“环境不一致”问题消耗了大量调试时间,尤其在团队协作、CI/CD流水线和生产部…

作者头像 李华
网站建设 2026/6/10 12:31:23

Pyenv which python定位Miniconda环境解释器

Pyenv 与 Miniconda 协同工作中的 Python 解释器定位问题解析 在人工智能和数据科学项目中,Python 环境的稳定性与可复现性直接决定了实验结果的可信度。随着团队协作加深、项目依赖复杂化,单一的 Python 安装已无法满足需求——我们不再只是写代码&…

作者头像 李华