【Linux】:Linux网络协议

news/2025/1/3 19:35:08/

再识协议
上面的内容,我们只是懂了一些基本概念,还是达不到我们的目标,下面我们再次重
新理解协议和协议分层。 为什么要有 TCP/IP 协议?
• 首先,即便是单机,你的计算机内部,其实都是存在协议的,比如:其他设备和
内存通信,会有内存协议。其他设备和磁盘通信,会有磁盘相关的协议,比如:
SATA,IDE,SCSI 等。只不过我们感知不到罢了。而且这些协议都在本地主机各自
的硬件中,通信的成本、问题比较少。
其次,网络通信最大的特点就是主机之间变远了。任何通信特征的变化,一定会
带来新的问题,有问题就得解决问题,所以需要新的协议咯
在这里插入图片描述
所以,为什么要有 TCP/IP 协议?本质就是通信主机距离变远了
什么是 TCP/IP 协议?
• TCP/IP 协议的本质是一种解决方案
• TCP/IP 协议能分层,前提是因为问题们本身能分层
TCP/IP 协议与操作系统的关系(宏观上,怎么实现的)
在这里插入图片描述
所以究竟什么是协议?
比特就业课
比特就业课
11 / 26
• 截止到目前,我们还没接触过任何协议,但是如何朴素的理解协议,我们已经可
以试试了。
• OS 源代码一般都是用 C/C++语言写的。
下面,仔细看看下面的图
在这里插入图片描述
问题:主机 B 能识别 data,并且准确提取 a=10,b=20,c=30 吗?
回答:答案是肯定的!因为双方都有同样的结构体类型 struct protocol。也就是说,
用同样的代码实现协议,用同样的自定义数据类型,天然就具有”共识“,能够识别
对方发来的数据,这不就是约定吗?
关于协议的朴素理解:所谓协议,就是通信双方都认识的结构化的数据类型
因为协议栈是分层的,所以,每层都有双方都有协议,同层之间,互相可以认识对
方的协议。
• 网络购物,快递单的例子

网络传输基本流程
局域网网络传输流程图
局域网(以太网为例)通信原理
• 首先回答,两台主机在同一个局域网,是否能够直接通信?是的
• 原理类似上课
• 每台主机在局域网上,要有唯一的标识来保证主机的唯一性:mac 地址
认识 MAC 地址
MAC 地址用来识别数据链路层中相连的节点; • 长度为 48 位, 及 6 个字节. 一般用 16 进制数字加上冒号的形式来表示(例如:
08:00:27:03:fb:19) • 在网卡出厂时就确定了, 不能修改. mac 地址通常是唯一的(虚拟机中的 mac 地
址不是真实的 mac 地址, 可能会冲突; 也有些网卡支持用户配置 mac 地址). 后面我们详细谈论数据链路层的时候,会谈 mac 帧协议,此处我们做一个了解即可。
在这里插入图片描述
以太网中,任何时刻,只允许一台机器向网络中发送数据
• 如果有多台同时发送,会发生数据干扰,我们称之为数据碰撞
• 所有发送数据的主机要进行碰撞检测和碰撞避免
• 没有交换机的情况下,一个以太网就是一个碰撞域
• 局域网通信的过程中,主机对收到的报文确认是否是发给自己的,是通过目标
mac 地址判定
• 这里可以试着从系统角度来理解局域网通信原理
初步明白了局域网通信原理,再来看同一个网段内的两台主机进行发送消息的过程
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
报头部分,就是对应协议层的结构体字段,我们一般叫做报头
• 除了报头,剩下的叫做有效载荷
• 故,报文 = 报头 + 有效载荷
然后,我们在明确一下不同层的完整报文的叫法
• 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做
数据报 (datagram),在链路层叫做帧(frame). • 应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部
(header),称为封装(Encapsulation). • 首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是
什么等信息. • 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部, 根据首部中的 “上层协议字段” 将数据交给对应的上层协议处理. 最后,在整体复盘一下:
在这里插入图片描述
在网络传输的过程中,数据不是直接发送给对方主机的,而是先要自定向下将数据交
付给下层协议,最后由底层发送,然后由对方主机的底层来进行接受,在自底向上进
行向上交付,下面是一张示意图。 数据包封装和分用
下图为数据封装的过程
在这里插入图片描述
在这里插入图片描述
跨网络传输流程图
网络中的地址管理 - 认识 IP 地址
IP 协议有两个版本, IPv4 和 IPv6. 我们整个的课程, 凡是提到 IP 协议, 没有特殊说明的, 默认都是指 IPv4
• IP 地址是在 IP 协议中, 用来标识网络中不同主机的地址; • 对于 IPv4 来说, IP 地址是一个 4 字节, 32 位的整数; • 我们通常也使用 “点分十进制” 的字符串表示 IP 地址, 例如 192.168.0.1 ; 用点
分割的每一个数字表示一个字节, 范围是 0 - 255;
跨网段的主机的数据传输. 数据从一台计算机到另一台计算机传输过程中要经过一个或
多个路由器. 下面是一张示意图
在这里插入图片描述
首先理解一下 IP 地址的意义
• 为什么要去目标主机,先要走路由器?
• 目的 IP 的意义
在这里插入图片描述
在这里插入图片描述
对比 IP 地址和 Mac 地址的区别
• IP 地址在整个路由过程中,一直不变(目前,我们只能这样说明,后面在修正) • Mac 地址一直在变
• 目的 IP 是一种长远目标,Mac 是下一阶段目标,目的 IP 是路径选择的重要依
据,mac 地址是局域网转发的重要依据
提炼 IP 网络的意义和网络通信的宏观流程
在这里插入图片描述
IP 网络层存在的意义:提供网络虚拟层,让世界的所有网络都是 IP 网络,屏蔽
最底层网络的差异


http://www.ppmy.cn/news/1559700.html

相关文章

.net core 的网络编程

Python基础 Python是一种广泛使用的高级编程语言,自1991年由荷兰程序员Guido van Rossum首次发布以来,Python就以其简洁易读的语法、强大的功能以及丰富的生态系统赢得了众多开发者的青睐。无论是在数据分析、人工智能、Web开发还是自动化脚本等领域&am…

Apache Commons Pool2—Java对象池的利器

在日常开发中,为了提高系统性能,避免重复创建和销毁资源,我们经常需要使用对象池技术。Apache Commons Pool2 是 Java 生态中一个强大且易用的对象池实现,它为我们提供了灵活的对象管理功能。本文将带你深入了解 Commons Pool2 的…

IS-2T2R存储器:AWS精度下降问题的解决方案

在本篇中,我们将介绍《An isolated symmetrical 2T2R cell enabling high precision and high density for RRAM-based in-memory computing》这篇文献,它提出了一种对称式的2T2R忆阻器结构,通过引入隔离晶体管解决了传统2T2R忆阻器非对称结构…

阿里云 ECS 服务器绑定多个公网IP

阿里云 ECS 服务器绑定多个公网IP 一、弹性公网IP绑定ECS服务器 单台ECS一般只能直接绑定一个弹性公网IP,但是可以绑定多张弹性网卡,如果把弹性公网IP绑定到弹性网卡上,那么单台ECS就能间接绑定多个弹性公网IP。但有的服务器系统镜像可能不…

【设计模式】装饰器模式(Decorator Pattern)

定义 装饰器模式&#xff08;Decorator Pattern&#xff09;是一种结构型设计模式。 装饰器模式通过创建一个装饰类&#xff0c;包装原始对象&#xff0c;并在保持原始对象接口不变的情况下&#xff0c;扩展其功能。 模式示例 #include <iostream> #include <strin…

Spring Cloud Alibaba2022之Sentinel总结

Spring Cloud Alibaba2022之Sentinel学习 Sentinel介绍 Sentinel是一个面向云原生微服务的流量控制、熔断降级组件。 Sentinel 分为两个部分&#xff1a; 核心库&#xff1a;&#xff08;Java 客户端&#xff09;不依赖任何框架/库&#xff0c;能够运行于所有 Java运行时环 …

使用WebRTC进行视频通信

一、WebRTC技术简介 什么是WebRTC&#xff1f; 是一种支持浏览器之间实时音频、视频和数据传输的开放源代码项目。它允许开发者在不需要任何第三方插件或软件的情况下实现点对点的实时通信。WebRTC已经成为现代Web应用中的关键技术&#xff0c;为开发者提供了强大的工具和API…

【2025最新计算机毕业设计】基于SpringBoot+Vue体育资讯系统(可定制,项目包括源码、文档、远程调试、免费答疑至毕业】

作者简介&#xff1a;✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流。✌ 主要内容&#xff1a;&#x1f31f;Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能…