Linux网络基础(一)

认识协议

协议是一种约定 。计算机协议就是计算机之间的约定。这种约定用来减少通信成本

网络分层结构------网络与操作系统之间的关系

软件分层

举例:

1.用户不能直接操作内核功能,需要操作系统提供的系统调用接口进行访问,这个系统调用接口 就是一个软件层

2.进程与物理地址之间的虚拟地址空间 就是一个软件层

任何问题都可以添加一层软件层来解决。

为什么要有分层结构?

层和层之间是松耦合的,可以随时替换和方便维护。

网络分层

为什么要存在网络?主要解决什么问题?

各种主机变远了,他们之间需要相互通信,会引发新的问题,比如 1.可靠性问题 2.主机定位问题 3.数据报局域网转发的问题 4.如何使用数据的问题 等等,为了解决这些问题,需要网络协议(tcp/ip协议)------可以理解为一种解决方案。

为什么要有网络分层?

解决以上的问题,需要有网络协议,那么什么是一种好的网络协议呢(解决方案)?松耦合,可拓展,方便维护,所以应当把网络协议设计成层状结构。

网络分层是什么?如下

OSI七层网络模型

OSI(Open System Interconnection)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义与规范。

分层编号 分层名称 核心功能 高频协议/技术 设备/组件 数据单位 关联知识点
7 应用层 1. 为应用程序提供网络服务接口; 2. 定义应用层协议(规定应用间通信的格式与语义)。 HTTP/HTTPS、FTP、SMTP/POP3、DNS 应用程序(如浏览器、邮件客户端)、服务器应用 数据(Data) 1. DNS的域名解析过程(递归/迭代查询); 2. HTTP请求/响应报文结构; 3. FTP的主动/被动模式。
6 表示层 1. 数据格式转换(如ASCII与Unicode编码转换); 2. 数据加密/解密、压缩/解压缩。 SSL/TLS(仅需掌握"提供传输层安全",不考具体算法) 操作系统中的编码/加密模块 数据(Data) 1. 表示层的"翻译"作用(屏蔽不同设备的数据格式差异); 2. SSL/TLS与HTTPS的关联(加密HTTP数据)。
5 会话层 1. 建立、管理、终止应用程序间的通信会话; 2. 提供会话同步(如断点续传的会话恢复)。 RPC(远程过程调用,仅需掌握"实现跨主机程序调用") 操作系统会话管理模块 数据(Data) 1. 会话层与传输层的区别(传输层管"端到端传输",会话层管"应用间会话逻辑"); 2. 会话终止的两种方式(正常关闭/异常中断)。
4 传输层 1. 端到端(进程到进程)的通信寻址(通过端口号); 2. 提供两种传输服务: - TCP:可靠、面向连接、字节流、流量/拥塞控制; - UDP:不可靠、无连接、数据报、快速传输。 TCP、UDP、知名端口号(如HTTP 80、HTTPS 443、DNS 53) 操作系统TCP/UDP协议栈、防火墙(基于端口过滤) 段(Segment,TCP) 报(Datagram,UDP) 1. TCP三次握手/四次挥手过程及状态; 2. TCP流量控制(滑动窗口)与拥塞控制(慢开始、拥塞避免); 3. UDP的适用场景(如DNS、视频通话)。
3 网络层 1. 主机到主机的通信寻址(通过IP地址); 2. 路由选择(确定数据从源主机到目标主机的路径); 3. 分组转发(将数据包从一个网络转发到另一个网络)。 IP(IPv4/IPv6)、ICMP(控制报文,如ping)、ARP(IP转MAC)、路由协议(OSPF/RIP,仅需掌握"动态路由"概念) 路由器、三层交换机(支持IP路由)、防火墙(基于IP过滤) 数据包(Packet) 1. IPv4地址分类(A/B/C类)与子网划分; 2. ICMP的差错报告与查询功能(如ping用ICMP请求/响应); 3. ARP的工作过程(局域网内IP到MAC的映射)。
2 数据链路层 1. 链路到链路的通信(局域网内设备间); 2. 帧封装(添加MAC头部/尾部)与差错检测(CRC校验); 3. MAC寻址(通过MAC地址定位局域网设备); 4. 流量控制(如滑动窗口,仅需掌握"链路层流量控制"概念)。 以太网(Ethernet)、PPP(点对点协议,如拨号上网)、CRC(差错检测算法) 二层交换机(基于MAC转发)、网桥、网卡(含MAC地址) 帧(Frame) 1. 交换机的转发原理(MAC地址表学习、泛洪/转发/丢弃); 2. CRC的差错检测机制(仅检错,不纠错); 3. 数据链路层与物理层的区别(物理层管"信号传输",数据链路层管"帧封装与差错控制")。
1 物理层 1. 定义物理介质(网线、光纤、无线电)的接口标准(如RJ45、LC接口); 2. 实现二进制比特流与物理信号的转换(如电信号、光信号); 3. 比特同步(确保发送方与接收方的比特速率一致)。 以太网物理层标准(如10BASE-T、100BASE-T)、Wi-Fi物理层(仅需掌握"无线信号传输") 集线器(HUB,共享带宽)、网线/光纤、网卡物理接口、无线路由器(无线信号发射) 比特(Bit) 1. 物理层的"透明传输"概念(比特流通过物理介质时,不受介质特性影响); 2. 集线器与交换机的区别(集线器不分发,交换机基于MAC分发)。

落地实现实际上只有5层------5,6,7层合并为应用层。

4层软件层,1层是物理层。

TCP/IP五层网络模型

分层名称 核心功能 解决的问题
应用层 负责应用程序之间,整合原OSI表示层和会话层功能。 (网络编程主要针对应用层) 如何使用数据的问题
传输层 负责两台主机之间的数据传输 可靠性问题
网络层 负责地址管理和路由选择 路由器工作在网络层 主机定位的问题
数据链路层 负责设备之间的数据帧的传送和识别 交换机工作在数据链路层 数据报局域网转发的问题
物理层 负责光/电信号的传输方式 集线器工作在物理层

网络与操作系统之间的关系

站在语言角度,重新理解协议

协议就是双方都能识别的数据结构

网络传输的基本流程

局域网通信

在同一个局域网中的主机,能不能直接通信呢?能。

原理是什么?

以太网通信原理 ------本质就是"先广播,后过滤 "

在以太网通信场景中,当某一主机发送单播数据帧时,该数据帧的信号会覆盖其所在广播域内的所有主机(或通过交换机泛洪触达所有主机),即所有主机的网卡均能接收到该物理信号;但仅当主机网卡检测到数据帧头部的 "目标 MAC 地址 " 与自身 MAC 地址 完全一致时,才会将该帧向上传递至数据链路层及上层协议进行后续处理,其他主机则会在网卡硬件层面或数据链路层直接丢弃该帧,不进行进一步处理。

简单的说就是,某一个主机发送消息时,所有的主机都能收到,但是不处理,只有发送的目标mac地址的主机进行处理

关于Mac地址

MAC 地址(Media Access Control Address,介质访问控制地址)是网络设备的唯一物理标识,相当于设备在数据链路层的 "身份证",核心作用是确保以太网帧能在局域网中精准投递到目标设备。

关于碰撞检测

当同一共享信道中的多台主机要发送信号时,不会直接发送,而是先通过 "载波监听" 判断信道是否空闲:

  1. 若信道空闲,多台主机可能同时开始发送 ,此时会产生数据冲突
  2. 冲突会被所有参与发送的主机 "边发边听" 检测到;
  3. 检测到冲突后,这些主机会立即停止发送,并发送 "冲突信号" 告知全网;
  4. 等待一段随机时长后,再重新尝试监听信道、发送信号,避免再次冲突。

当主机数变多时,这些数据更容易发生碰撞,导致了主机在局域网中通信变慢。

两台主机局域网通信的宏观认识

封装

什么是报文?
报文 = 协议报头 + 有效载荷

报文在每一层都有不同的名字,如下。

解包与分用

局域网通信宏观认识

物理上 :用户发送的消息,从应用层自上而下封装 到物理层,再通过以太网传递到另一台主机,再从该主机上从物理层自下而上解包 到应用层,传递到另一个用户。

逻辑上 :同层协议,都可以认为自己在和对方直接通信。

两台主机在不同的局域网通信

IP 地址网络层 的逻辑地址,32位数字,xxx.xxx.xxx.xxx(点分十进制),用于在 "跨网络" 环境中定位设备 ------ 相当于给设备在互联网或局域网中分配的"逻辑门牌号",确保数据能从源设备经过多个网络(如路由器转发)准确送达目标设备

MAC 地址数据链路层 的物理地址,固定 6 字节(48 位),通常以十六进制表示,每 2 位为一组,xx:xx:xx:xx:xx:xx,由设备的网络接口卡(NIC,如网卡、无线网卡)厂商烧录在硬件中,相当于设备的"物理身份证",用于在 "同一局域网内" 实现设备间的直接通信。

mac地址只能在同一个局域网内使用,跨局域网使用时mac地址会被路由器换掉。

路由器至少要横跨两个网络,例子中路由器横跨了两个局域网有两套mac地址

链路层添加的协议报头包含了源mac和目标mac (MAC 地址的 "局域网内点对点" 定位),用于指示在同一个局域网中起始位置和终止位置(这里终止位置是路由器,他的作用是转发到另一个局域网),而非直接定位最终目标。

IP层添加的协议报头包含了源IP和目标IP (IP 地址的 "互联网全局端到端" 定位),用于定位整个互联网中最终源主机最终目标主机

在"主机A的IP层→主机A链路层→以太网→路由器→令牌环网→主机B链路层→主机B的IP层 "过程中仅仅改变了包含源mac与目标mac的协议报头(改变"局部目标 "),不改变源IP与目标IP的协议报头(不改变"总目标 ")

所以有结论:IP层向上所有主机的协议没有差别,但IP层向下不同局域网的报头差别比较大(但是可以由路由器屏蔽掉)。

相关推荐
闲人编程3 小时前
Python在网络安全中的应用:编写一个简单的端口扫描器
网络·python·web安全·硬件·端口·codecapsule·扫描器
你想考研啊4 小时前
linux安装jdk和tomcat和并自启动
java·linux·tomcat
习惯就好zz6 小时前
WSL2 安装Ubuntu卡在安装进度0%无响应问题解决
linux·windows·ubuntu·wsl·wsl2
机器学习之心6 小时前
基于双向时序卷积网络(BiTCN)与支持向量机(SVM)混合模型的时间序列预测代码Matlab源码
网络·支持向量机·matlab
躲猫猫的喵喵7 小时前
Ubuntu2204降内核版本
linux·运维·服务器·ubuntu
昌sit!7 小时前
Linux系统性基础学习笔记
linux·笔记·学习
zdslovezy8 小时前
CentOS 系统升级 OpenSSH 和 OpenSSL 的完整方案
linux·运维·centos
止水编程 water_proof8 小时前
Java-HTTP响应以及HTTPS(下)
网络·网络协议·http
HIT_Weston8 小时前
18、【Ubuntu】【远程开发】技术方案分析:私网ip掩码
linux·tcp/ip·ubuntu