【网络编程】第一章 网络基础(协议+OSI+TCPIP+网络传输的流程+IP地址+MAC地址)

news2025/7/19 2:03:49

🏆个人主页:企鹅不叫的博客

​ 🌈专栏

  • C语言初阶和进阶
  • C项目
  • Leetcode刷题
  • 初阶数据结构与算法
  • C++初阶和进阶
  • 《深入理解计算机操作系统》
  • 《高质量C/C++编程》
  • Linux

⭐️ 博主码云gitee链接:代码仓库地址

⚡若有帮助可以【关注+点赞+收藏】,大家一起进步!

💙系列文章💙


文章目录

  • 💙系列文章💙
  • 💎一、网络概念
    • 🏆1.网络发展
    • 🏆2.协议
      • 协议分层
      • OSI七层
      • TCP/IP五层
  • 💎二、网络传输的基本流程
    • 🏆1.数据包装和分用
    • 🏆2.局域网通信
    • 🏆3.跨网络通信
  • 💎三、网络中的地址管理
    • 🏆1.IP地址
    • 🏆2.MAC地址
    • 🏆3.过指令查看IP和MAC


💎一、网络概念

🏆1.网络发展

独立模式: 计算机最开始是以单机模式被广泛使用的。每一台计算机都是独立的,之间不能够进行数据共享与通信

网络互联: 计算机之间可以链接在一起,完成数据共享,计算机之间还可以进行相互通信

局域网(LAN): 一片区域内的计算机通过路由器和交换机连接在一起,可以用来相互通信的计算机数量增多

广域网(WAN): 多个局域网通过路由器连接起来,构成一个广域网,也可以说是一个更大的局域网

🏆2.协议

协议就是一种 “约定”。它是多方协商出来的一种通信方案,达成一种“共识”。

协议的好处:

  • 统一标准,通信双方能够通过某种标识把数据识别出来
  • 提高通信的效率和可靠性

协议分层

协议分层的好处:

  • 每一层做不同的工作,下一层为上一层提供特定的服务,同一层之间交互使用相同的“协议”
  • 同一层之间进行交互会使用下一层提供的服务(接口服务),且不会关心下一层的实现细节,层与层之间通过接口实现通信,实现了“解耦”

协议分层的本质: 实现将层与层之间进行解耦,保证代码的可维护性和可扩展性,在分层情况下,将某层的协议进行替换后,通信双方之间是不会受到影响的

OSI七层

在这里插入图片描述

TCP/IP五层

TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。

  • 物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub,加强信号,让数据传的更远)工作在物理层.
  • 数据链路层: 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太网、令牌环网, 无线LAN等标准. 交换机(Switch)工作在数据链路层.
  • 网络层: 负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层.
  • 传输层: 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机.
  • 应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等. 我们的网络编程主要就是针对应用层

在这里插入图片描述

总结:

  • 应用层解决的传输数据的目的,根据特定的通信目的,进行数据分析与处理,达到某种业务性的目的
  • 传输层和网络层处理数据传输遇到的问题,保证数据的可靠性
  • 数据链路层和物理层负责数据真正发送的过程,完成以太网和局域网的通信
  • 下三成处理的是通信细节,应用层处理的是业务细节

一般而言

  • 对于一台主机, 它的操作系统内核实现了从传输层到物理层的内容
  • 对于一台路由器, 它实现了从网络层到物理层(有些可到应用层)
  • 对于一台交换机, 它实现了从数据链路层到物理层
  • 对于集线器, 它只实现了物理层

💎二、网络传输的基本流程

🏆1.数据包装和分用

  • 不同协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。
  • 应用层数据通过协议栈发到网络上,每层协议都要加上一个数据首部(header),称为封装(Encapsulation)。
  • 首部信息中包含了一些类似于首部有多长,载荷(payload)有多长,上层协议是什么等信息。
  • 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中的“上层协议字段”将数据交给对应的上层协议处理。

解释:

  • 每一协议层的数据包 = 报头+有效载荷
  • 将数据中除当前层的报头以外的数据叫做“有效载荷”
  • 报头:每一层都有应的报头来当前层
  • 数据的封装、解包、分用:
    • 数据封装,实际就是不断给数据加上各种对应的报头,这些报头里面填充的就是对应的各种协议细节。
    • 数据解包,将数据包中的报头有效载荷分离。
    • 数据分用:自底向上,要确认自己的有效载荷交付给上层的那个协议

将报头和有效负载分离:

1.定长报头。报头的长度是确定的,这样就可以实现二者分离。
2.自定义描述符字段。报头中添加一个字段,表示报头的长度。

数据封装:

在这里插入图片描述

数据分用:

在这里插入图片描述

🏆2.局域网通信

在这里插入图片描述

数据在自身协议栈自顶向下进行封装:

  • 数据包交给应用层,应用层添加上对应的应用层协议报头,然后把整个数据包向下交付给传输层
  • 传输层再添加上对应的传输层协议报头,然后把整个数据包向下交付给网络层
  • 网络层再添加上对应的网络层协议报头,然后把整个数据包向下交付给数据链路层
  • 数据链路层再添加上对应的数据链路层协议报头,然后把整个数据包通过网络交付给对端数据链路层

数据在对端协议栈自底向上进行分用:

  • 数据链路层将数据包的报头和有效载荷进行解包分离,然后将有效载荷交付给上层的网络层
  • 网络层将数据包的报头和有效载荷进行解包分离,然后将有效载荷交付给上层的传输层
  • 传输层将数据包的报头和有效载荷进行解包分离,然后将有效载荷交付给上层的应用层
  • 应用层将数据包的报头和有效载荷进行解包分离,将最后的数据进行相关处理然后交付给用户

每个主机如何判断该数据是否是发送给自己的?

在数据链路层,有一个MAC地址(48位),网卡硬件地址或者序列号,是全球唯一的,用来标识主机的唯一性。每一个主机在收到一个MAC数据后,都会提取该数据中的目标主机MAC地址,与自己的MAC地址进行比对,如果相同就收下,如果不相同就将数据丢掉。

局域网内进行数据广播

机发送数据时,将MAC地址设置为一个广播地址(1),这样所有的主机收到该数据后都会对该数据进行处理

局域网通信原理:

同一局域网中的所有主机在通信时,使用的都是一个共同的通信信道,因此如果局域网内的多台主机同时进行通信,此时这些数据之间就可能会相互干扰。

一个局域网可以看作是一个碰撞域,如果某个主机发送出去的数据与其他主机发送的数据之间产生了干扰,我们就称这两台主机在该碰撞域中发生了碰撞。

如何判断是否发生碰撞:当该主机收到该数据后就可以将其与之前发送出去的数据进行对比,如果发现收到的数据与之前发送出去的数据不相同,则说明在发送过程中发生了碰撞, 撞检检测

碰撞处理:数据发生碰撞后,发送方不会立即将数据进行重写发送,而是等一段数据,在重新发生,这就是碰撞避免算法

🏆3.跨网络通信

跨网络通信就是分别处于不同局域网的两台主机之间进行通信,两个局域网之间是通过路由器进行通信的

在这里插入图片描述

路由器其实是通过IP地址来确定数据的转发方向的,因特网上的每台计算机都有一个唯一的IP地址,当路由器需要将一个局域网的数据转发到另一个局域网时,在路由器的链路层会先将数据的在当前局域网对应的底层报头去掉,然后将剩下的数据向上交付给网络层,此时在网络层就可以获取到该数据对应的目的IP地址,然后路由器就可以根据该IP地址在路由表当中进行查找,最终就能够确认该数据应该发送到哪一个局域网。

通过IP地址屏蔽了底层协议的差异,不需要关心底层使用的是哪种通信协议,只要有源IP地址和目的IP地址才可以将数据转发出去

💎三、网络中的地址管理

🏆1.IP地址

  • IP地址是在IP协议中, 用来标识网络中不同主机的地址;
  • 对于IPv4来说, IP地址是一个4字节, 32位的整数;
  • 我们通常也使用 “点分十进制” 的字符串表示IP地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个字节, 范围是 0 - 255;

🏆2.MAC地址

  • MAC地址用来识别数据链路层中相连的节点;
  • 长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
  • 在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址)

🏆3.过指令查看IP和MAC

ifconfig 可以查看主机的网络信息

在这里插入图片描述


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

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

相关文章

onnx-modifier使用

文章目录**0、作用和功能****1、准备****2、界面介绍****3、注意tips**onnx-modifier基于流行的模型可视化工具 Netron 和轻量级Web应用框架 flask 开发。希望它能给社区带来一些贡献0、作用和功能 经常作为不同框架模型转化的中间文件,拿到ONNX文件,想…

KMP算法【一句话概括什么是KMP】【手写 求next数组】【手写匹配过程】

这里写自定义目录标题1. 什么是KMP算法2. next数组的表示含义怎么算3. 匹配过程例题——KMP字符串1. 什么是KMP算法 KMP算法:给定abcabm字符串和abcabcabm字符串,求前面字符串在后面字符串出现的位置,我们从头开始依次遍历,当遍历…

Supervisor - 用户进程监控利器

Supervisor Supervisor 是一个客户端/服务器系统,允许用户在UNIX操作系统上监视、控制用户进程。从定义里面分析包含两层意思。 监控进程 - 监控进程状态 确定当前进程是否发生异常控制进程 - 针对进程异常情况 控制进程的行为 如重启当前进程 Supervisor 通过 F…

神经网络和深度学习-logistic回归

logistic回归 logistic回归常用于分类问题 ,根据输入的x来估计属于不同类的概率为多少,满足分布,即所有类的概率总和为1 在torchvison包中提供了一些常用的数据集,供我们使用,例如:Mnist数据集 Cifar-10数…

力扣算法入门刷题2

12、删除排序链表中的重复元素 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 输入:head [1,1,2] 输出:[1,2[ //链表结构 public class ListNode {* int val;* List…

【情感识别】BP神经网络语音情感识别【含Matlab源码 349期】

⛄一、BP神经网络语音情感识别简介 0 引言 随着科技的迅速发展, 人机交互显得尤为重要。语音是语言的载体, 是人与人之间交流的重要媒介。相较于其它交流方式而言, 语音交流更加直接、便捷。近年来, 随着人机交互研究的不断深入, 语音情感识别更成为了学术界研究的热点, 其涉及…

3年测试经验,投了300多份简历,没公司要我...

前言 软件测试行业3年多经验,学历大专自考本科,主要测试方向web,PC端,wap站,小程序公众号都测试过,app也测过一些,C端B端都有,除功能外,接口性能也有涉猎,但…

一条命令能实现前端本地代码和打包仓库的自动化提交?

背景: 先介绍我们原本的代码上线流程:首先发布仓和代码仓(dev和master分支对应测试和生产环境)独立,每次修复或新增功能,首先需要提交改动到代码仓(fork),然后打包代码&…

TI Sitara系列 AM64x开发板——FreeRTOS、Baremetal案例开发案例

前 言 3 1 开发环境搭建 2 CCS工程编译与加载 3 FreeRTOS与Baremetal案例 评估板简介 创龙科技TL62x-EVM是一款基于TI Sitara系列AM62x单/双/四核ARM Cortex-A53 + 单核ARM Cortex-M4F异构多核处理器设计的高性能低功耗工业评估板,由核心板和评估底板组成。处理器ARM Cor…

SpringCloud之微服务实用篇2

在之前我们学习微服务中的两个组件,一个是注册中心,一个负载均衡器。今天,我们主要学习三个内容,分别是:Nacos配置管理、Feign远程调用、Gateway服务网关。 目录 一、Nacos配置管理 1.1、Nacos实现配置管理 1.2、微…

Redis持久化策略AOF、RDB详解及源码分析

写在前面 以下内容是基于Redis 6.2.6 版本整理总结 一、Redis为什么要持久化 Redis 是一个内存数据库,就是将数据库中的内容保存在内存中,这与传统的MySQL,Oracle等关系型数据库直接将内容保存到硬盘中相比,内存数据库的读写效…

数论简单问题

数论基本问题约数个数问题约数之和问题1-n中所有1-n因子的数量n!分解后某个质因子的个数欧拉函数公式法求欧拉函数线性筛求欧拉函数欧拉函数在线性筛中的三种情况:欧拉定理逆元费马定理求逆元快速幂求逆元扩展欧几里得算法扩展欧几里得算法证明扩展欧几里得的应用中…

消息队列 - RabbitMQ

1. 名词解释 Producer:生产者 Broker:接收和分发消息的应用 Connection:生产者和消费者与 Broker 之间的 TCP 连接 Channel:信道;在 Connection 内部建立的逻辑连接,每个 Channel 之间是相互隔离的。相…

第十四届模拟赛第二期试题【Java解析】

目录 ✏️写在前面 ✨历史回顾 🎈第一题(二进制API) 代码: 思路: 🎈第二题(闰年问题/时间API) 代码1: 思路1: 代码2: 思路2&#xff1a…

【计算机网络】数据链路层:使用点对点信道的数据链路层

数据链路层信道类型: (1)点对点信道:使用一对一的点对点通信方式 (2)广播信道:使用一对多的广播通信方式。 必须使用专用的共享信道协议来协调主机数据发送。 链路:从一个节点到相邻节点的一…

TCP的三次握手和四次挥手

目录:smile_cat:基础知识回顾1、运输层概述2、端口号3、复用与分用:smiley_cat:重点知识来袭1、TCP和UDP2、三次握手3、四次挥手4、TCP报文段首部格式文章参考来源: TCP的三次握手和挥手–飞天小牛肉20-1-tcp连接——初始化序列号(ISN)_网络安全-CSDN博客_初始序列…

掌握分布式环境缓存更新策略,提高缓存与数据库数据一致性

概述 随着时代的发展,服务系统架构也已经由最初的单体架构转变为分布式、微服务架构模式。 从数据体量上来看,各系统存储的数据量越来越大,数据的查询性能越来越低。 此时,就需要我们不断的进行优化,最常用的就是引入…

NVIDIA RTX3090上安装tensorflow-gpu 1.12.0

目录 项目场景: 问题描述1 CUDA版本不匹配,需要重新安装 解决方案1: 额外安装其他版本的CUDA,并实现版本自由切换。 问题描述2: 1. cuDNN包解压后的cudnn.h文件无法复制到目标文件夹中 2. 如何查看是否会到最初…

计算机系统基础期末复习

C语言代码如下&#xff1a; void fun(int n){ int x n*12;int y n/32; }请将其中计算的部分优化为位运算、移位运算和加法运算的结合。 x n8n4 (n<<3)(n<<2) x (n(n>>31) & 0x1F)>>5 设32位的位串为x(x类型为unsigned int)&#xff0c;现要…

python dingding --- 钉钉机器人API

dingding — 钉钉机器人 github 源码地址&#xff1a;https://github.com/zly717216/dingding 一、模块介绍 版本号 dingding: V1.0.0 功能 当前版本支持群机器人相关API调用&#xff0c;包括发送文本消息、文本链接、markdown、整体跳转 ActionCard、独立跳转 ActionCar…