Linux网络
对网络的理解
在网络传输中存在的问题:
- 找到我们所需要传输的主机
- 解决远距离数据传输丢失的问题
- 怎么进行数据转发,路径选择的问题
有问题,就有解决方案;
我们把相同性质的问题放在一起,做出解决方案
解决方案设计成为层状结构,层内部高内聚,层于层之间低耦合。
层状结构有利于减少后期维护成本,只需要对某一层的错误进行处理
在Linux中一切皆属于文件,网卡资源也被划分为文件,以文件的方式进行管理。
传输层和网络层都属于操作系统层。
操作系统种类很多,但是网络只能有一种(因为TCP/IP协议必需相同)。
OSI七层模型
- 应用层
- 表示层
- 会话层
- 传输层
- 网络层
- 数据链路层
- 物理层
TCP/IP五层(或四层)模型
- 物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层.
- 数据链路层: 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太网、令牌环网, 无线LAN等标准. 交换机(Switch)工作在数据链路层.
- 网络层: 负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层.
- 传输层: 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机.
- 应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)
网络传输基本流程
同一局域网中的传输流程
不同局域网中的传输流程
路由器作用在网络(IP)层
数据包封装和分用
应用层数据通过协议栈发到网络上时,每一次往下时,每层协议都要加上一个数据哦报头(header),称为封装。
当数据包到达目的主机,往上解包时,每过一层协议都会消去对应的报头,称为分用。
MAC地址和IP地址的区别
在数据传输过程中,存在两套地址,分别是MAC和IP
IP地址存在的出发点和结束点(目的主机)的地址。
MAC地址存储的是中转地址:
在原距离传输的过程中,我们需要经过很多的中转站(路由器),我们的MAC地址就是储存的是我们需要去的下一个中转站的地址。
认识IP地址
IP协议有两个版本, IPv4和IPv6. 我们整个的课程, 凡是提到IP协议, 没有特殊说明的, 默认都是指IPv4
- IP地址是在IP协议中, 用来标识网络中不同主机的地址;
- 对于IPv4来说, IP地址是一个4字节, 32位的整数;
- 我们通常也使用 “点分十进制” 的字符串表示IP地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个字节, 范围是 0 - 255,如192.192.0.0;
IPv6是16位,128字节;
认识MAC地址
MAC地址用来识别数据链路层中相连的节点;
- 长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
- 在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可
- 能会冲突; 也有些网卡支持用户配置mac地址)