Linux(9)

一.网络发展

独立模式

网络互联: 多台计算机连接在一起, 完成数据共享

而在网络互联的基础上就产生了局域网,城域网、广域网它们是采用地理范围划分的

二.初识协议

协议本质是为了解决通信的某种问题,所以哪里有问题哪里就需要协议,协议落在计算机是通过结构体对象实现的,因此就会在原先的基础上加上内容,即包快递的箱子。

三.网络协议初始

协议为什么分层,两个原因:问题是分层的,内容太多了

分层的要求是高内聚(相同层),低耦合(不同层),分层的好处就是方便维护

四.OSI模型和TCP/IP模型

4.1 OSI模型

  • OSI(Open System Interconnection,开放系统互连)七层网络模型 称为开放式系统互联参考模型,是一个逻辑上的定义和规范
  • 把网络从逻辑上分为了7层
  • OSI 七层模型是一种框架性的设计方法 ,其最主要的功能就是帮助不同类型的主机实现数据传输。
  • 它的最大优点是将服务、接口和协议这三个概念明确地区分开来概念清楚,理论也比较完整 ,通过七个层次化的结构模型使不同的系统、不同的网络之间实现可靠通信。
  • 但是,它既复杂又不实用 ;所以我们按照TCP/IP 四层模型来讲解。

4.2 TCP/IP五层(或四层)模型

TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇.

每一层都依赖其下一层提供的服务来完成数据的传输:上层将数据交给下层,下层为其封装并负责传递。
T****CP/IP 协议族通常采用四层模型:应用层、传输层、网络层和网络接口层(物理层+数据链路层)。

在教学中,有时会将其与 OSI 模型结合,形成五层结构(加入物理层),便于理解。

重点:TCP/IP 原生是四层模型;五层结构是教学简化。

  • 物理层:负责光/电信号的传输方式,如双绞线、同轴电缆、光纤、Wi-Fi 电磁波等。它决定了最大传输速率、距离和抗干扰能力。集线器(Hub)工作在物理层。
  • 数据链路层:负责相邻节点间的数据帧传输与识别,包括帧同步、差错校验等。以太网、无线 LAN 等属于该层标准。交换机(Switch)工作在数据链路层。(注:冲突检测仅用于早期共享介质以太网,现代交换网络已不使用。)
  • 网络层:负责地址管理与路由选择,如 IP 协议通过 IP 地址标识主机,并利用路由表规划传输路径。路由器(Router)工作在网络层。
  • 传输层:负责端到端的数据传输,如 TCP 提供可靠传输服务。
  • 应用层:负责应用程序间的通信,如 SMTP、FTP、HTTP 等。网络编程主要面向应用层。

五.网络传输流程图

同网段

报文 = 报头(协议) + 有效载荷(从上层获取的),通信的过程本质是不断封装和解包

知识补充

  1. 几乎任何层的协议,都要提供一种能力,将报头和有效载荷分离的能力

  2. 几乎任何层的协议,都要在报头中提供,决定将自己的有效载荷交付给上层的哪一个协议的能力(分用后面会解释这个意思)

以太网通信概念

早期以太网(如使用同轴电缆或集线器)采用共享总线结构 :数据广播到总线上,所有设备监听,通过 MAC 地址过滤 ;同一时间仅一台主机可发送 ,否则发生碰撞,需重传 ------这种共享介质区域称为碰撞域

但现代以太网使用交换机每个端口独享带宽 ,帧被定向转发 ,工作在全双工模式已消除碰撞域不再依赖 CSMA/CD(冲突检测)

不同网段

跨网段的主机的文件传输. 数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器.

**令牌环网:**只有持有令牌的主机才能发送信息

IP与MAC区别: IP记录"从哪里,到哪去"全程不变 ,MAC记录"上一站从哪来,下一站到哪去"会不断变化

IP 协议屏蔽了底层网络的差异化,靠的就是工作在 IP 层的路由器,这样就实现以太网和令牌环网的通信,因为路由器会不断脱和穿新的MAC

六.数据包封装、解包、分用

数据包的不同称呼

  • 传输层叫做数据段
  • 网络层叫做数据报
  • 链路层叫做数据帧

封装
应用层数据通过协议栈发送到网络时,每层协议都会在其上添加一个协议首部(有时还有尾部),这个过程称为封装。

首部中通常包含本层所需的控制信息,如上层协议标识、数据长度、校验码等,用于接收端正确解封装和处理。

解包
解包是指接收方在协议栈中自下而上逐层剥离协议首部,还原出原始应用数据的过程。

分用

分用是指接收端在解封装时,根据当前层协议首部中的标识信息 (如协议号、端口号等),将数据正确交付给上一层对应的协议或应用程序

7.认识IP地址和MAC地址

关于这部分网络知识就讲到这了,内容还是比较简单的,不过后面还会带来进阶的,比较这一章的协议只是大概讲了它是什么,后面会带来更详细的讲解!

相关推荐
浩瀚地学15 小时前
【Java】常用API(二)
java·开发语言·经验分享·笔记·学习
chao_66666615 小时前
解决 PowerShell 中文乱码问题
网络·学习·powershell
喵了meme15 小时前
Linux学习日记24:Linux网络编程基础
linux·网络·学习
BullSmall15 小时前
《庄子》导读
学习
HL_风神15 小时前
设计原则之迪米特
c++·学习·设计模式
HL_风神15 小时前
设计原则之合成复用
c++·学习·设计模式
whlqjn_121116 小时前
linux下使用SHC对Shell脚本进行封装和源码隐藏
linux·centos
weixin_4624462316 小时前
K8s 集群部署基础:Linux 三节点 SSH 互信(免密登录)配置指南
linux·kubernetes·ssh
Hard but lovely17 小时前
Linux: 线程同步-- 基于条件变量 &&生产消费模型
linux·开发语言·c++