bit::Shadow(⊙o⊙)头像
关注
开天辟地Linux网络部分——网络的产生、协议初识,网络中的信息传播,硬核底层解析封面图

开天辟地Linux网络部分——网络的产生、协议初识,网络中的信息传播,硬核底层解析

@bit::Shadow
✧(≖ ◡ ≖✿ 

目录

网络通识

协议的认识

OSI七层模型

五层模型结构(从下往上)

操作系统与网络协议栈

问题:

网络传输的基本流程

局域网(“以太网”为例)通信原理

MAC地址

MAC地址在远端传输的作用

发送数据

交换机的定位(了解)

底层视角下封装与解包、分用的链路图示

报头 有效载荷

各阶层处理后是数据名词

跨网络传输流程图(路由)

网络中的地址管理、认识IP地址

跨网络转接

转换机与路由器的理解

路由器实现转接图示

问题

网络通信的本质是什么?

端口号与IP

端口号与IP的关系

*端口号的独立性

问题


网络通识

互联网最初起源于美国的阿帕网🕸️。

网络的组成也并非我们认识的虚拟层其实可详细分:

网络起始的涵盖性并非全球化的而是由局域性不断扩展变得越来越广,形成了当下的全球性格局。因此局域网、广域网就是在这一相对基础上创立的。(也就是说没有决定的局域/广域,只有相对的局域/广域

网络是计算机间无线通信的方式。(这也就解释了一种说法:“只要你联网了,你的数据就拥有被窃取的风险”)

协议的认识

目的:减少通信成本,由于快速形成共识。(协议本质是一种约定)

OSI七层模型

OSI(Open System  Interconnection开发系统互联),称为开放式系统互联参考模型,是一个逻辑上的定义与规范。(由于部分上层难以实现,在实现层我们将其分为五层模型)

所谓的五层模型就是我们Linux网络部分的,应用层传输层网络层(互联网层)、数据链路层网卡层(物理层)。

五层模型结构(从下往上)

层序名称核心职责你日常会接触到的
5应用层为用户提供网络服务接口HTTP、SSH、DNS、FTP、Nginx配置文件
4传输层端到端的通信可靠性(端口/连接)TCP三次握手、UDP、端口号(80/443/22)、ss -tlnp
3网络层网络寻址和路由(IP地址)IP地址、子网掩码、路由表、ip routeping
2数据链路层同一物理链路内的帧传输(MAC地址)MAC地址、ARP、交换机、ip neigh(邻居表)
1物理层原始比特流的物理传输网线、光模块、Wi-Fi信号、ethtool看网卡状态

协议分层的理解

协议的本质也是软件信息互联,在设计上为遵循高内聚、低耦合的特性,协议也是被分作多层结构管理的。(可理解为同层之间通信需特定协议,大大降低了通信成本,发挥了协议的最大效益)

本地通信 VS 网络通信

处理此问题的根本原因来自于“是否有线传输”,本地通信是直接利用“线”传播而网络信息的传播是无线管理的。(因此诞生了网络协议分层解决层级化问题)

操作系统与网络协议栈

各操作系统是独立的但网络协议栈必须一致,为了保证通信的一致性。

在(传输层、网络层)"遵循TCP/IP标准"这个层面,大家是一致的(不然互联网就互通不了)但在"实现方式、性能优化、工具生态和管理接口"上,差异非常明显。

网络协议栈与系统的功能分布图

问题:

主机B能识别由主机A发送过来的数据(以一段结构体为例)并准确提取结构体内的数据吗?

答案是肯定的,因为双方具有同样的网络代码,同样的结构体类型struct protocol (协议)。也就是说,用同样的代码实现协议用同样的自定义数据类型,天然具备访问的资格。

协议:通信📡双方都认识的结构数据类型。

网络的构成:多种局域网通信协议+一种广域网通信标准。

网络传输的基本流程

局域网(“以太网”为例)通信原理

MAC地址

每台主机上,要有唯一的标识来保证主机的唯一性:mac地址

MAC地址用来识别数据链路层中相连的节点。
长度为48bits即6字节,一般用16进制 + 冒号或- 表示。
网卡是硬件载体,MAC地址是网卡的身份证号码
WIn下使用ipconfig /all查询。

MAC地址在远端传输的作用

远端传输MAC地址的核心作用就是——确保数据包能正确送达同一个局域网(广播域)内的下一跳设备,而不是直接送到最终目标机器。

发送数据

 特点:发出信息的主机会对信息进行标记,同一局域网主机下的主机都将看到这个信息用于与自己端号的比对,若不相符(即不是发送给我的),就会舍弃该信息。

每个被发送的数据在同一局域网下课被所有机器看到,但是处理与否取决于发送端设置的报文。

-以太网中,任何时刻只允许一台机器向网络中发送数据。
-若有多台同时发送,会发生数据干扰,称之为数据碰撞
-没有交换机的情况下,一个以太网就是一个碰撞域
-所有发送的主机都要进行碰撞检查和碰撞避免

交换机的定位(了解)

底层视角下封装与解包、分用的链路图示

注意:报头与有效载荷的定位

  • 各层拥有对应的协议(对应着处理原则);
  • 各层均会对上层来是学习加工添加/删除报头、重新定位了有效载荷
  • 网卡链接各主机间通信,解包分用是拆解报头的过程。

报头 有效载荷

细节一:

报头必须能做到与有效载荷分离的能力。
报头中必须包含如何将自己有效载荷交付给上层的那个具体协议。

细节二:

底层收到报文,但报文检查发现不是发给自己的,在数据链路层就会直接丢弃。
(抓包原理:设计网卡接收不随意舍弃)

各阶层处理后是数据名词

跨网络传输流程图(路由)

网络中的地址管理、认识IP地址

源IP地址与目标IP地址指传输的起点、终点IP索引。(src)
mac地址是短距离的转接,是局域网转发的重要依据。(dst)

跨网络转接

应用层---传输层---网络层---数据链路层---网卡 每向下一层据自己协议封装报头(含IP),用于解包的报头拆解原则与数据传输。

转换机与路由器的理解

交换机负责“在同一个网络内”高效转发数据(找MAC地址);路由器负责“在不同网络之间”指引路径(找IP地址)。两者是上下游合作关系,而不是替代关系。

路由器实现转接图示

问题

如何理解,转换机、路由器与传播过程中的“以太网、无限LAN、令牌环”关系与各自作用?

以太网、无线LAN、令牌环,它们是“介质访问控制”技术,定义了“数据如何在一段物理链路上传输”;而交换机/路由器是“转发设备”,负责把数据从一段链路搬到另一段链路。它们处在不同的抽象层次,但需要配合工作。

网络通信的本质是什么?

☆☆网络通信的本质是进程间通信。

端口号与IP

端口号(port)是传输层协议的内容。
端口号是一个2字节16位的整数。
端口号用来特异性标识一个进程,告诉当前这个数据要交给哪一个进程来处理。

端口号与IP的关系

IP定位哪一个主机端口号定位哪一个进程。

{源IP,源port,目标IP,目标port}

IP + port = 全网唯一一个进程《====》Socket(套接字技术)

*端口号的独立性

***端口号的目的是为了索引进程,所以端口号不具备唯一性***

理解:端口号的目的是“索引进程”,没错;但“不具备唯一性”是指:单独一个端口号,脱离了“协议类型(TCP/UDP)”和“网络地址(IP)”这两个上下文,是无法唯一确定一个进程的。端口号本身是一个“本地编号”,在不同协议、不同网络栈中可以复用。

问题

有了PID为何又引入端口号?

PID属于系统层面的概念标记进程的特定号码,通过它不仅可以从系统层面找到相应的进行也在系统层的设计中被广泛应用于系统内的通信标记。添加又一端口号,就相当于多创立了一套标准的与系统层解离的号码牌。解除了与系统的强耦合关系。

感谢支持,长期连载
欢迎关注

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/oooooooooooohd/article/details/163481579

文章来源crawl

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--