Linux网络
对网络的理解
在网络传输中存在的问题:
- 找到我们所需要传输的主机
- 解决远距离数据传输丢失的问题
- 怎么进行数据转发,路径选择的问题
有问题,就有解决方案;
我们把相同性质的问题放在一起,做出解决方案
解决方案设计成为层状结构,层内部高内聚,层于层之间低耦合。
层状结构有利于减少后期维护成本,只需要对某一层的错误进行处理
在Linux中一切皆属于文件,网卡资源也被划分为文件,以文件的方式进行管理。
传输层和网络层都属于操作系统层。
操作系统种类很多,但是网络只能有一种(因为TCP/IP协议必需相同)。
OSI七层模型
- 应用层
网络服务与最终用户的一个接口 各种应用程序协议 协议有:HTTP(超文本传输协议) FTP(文本传输协议) TFTP(简单文件传输协议)
SMTP(简单邮件传输协议) SNMP(简单网络管理协议) DNS(域名系统) TELNET(远程终端协议)
HTTPS(超文本传输安全协议) POP3(邮局协议版本3 ) DHCP(动态主机配置协议)
- 表示层
数据的表示、安全、压缩。(在五层模型里面已经合并到了应用层) 信息的语法语义以及他们的关联,如加密解密、转换翻译、压缩解压
格式有,JPEG、ASCll、EBCDIC、加密格式等 [2] 如LPP(轻量级表示协议)
- 会话层
建立、管理、终止会话。(在五层模型里面已经合并到了应用层) 不同机器上的用户之间建立及管理会话
对应主机进程,指本地主机与远程主机正在进行的会话 安全协议:SSL(安全套接字层协议)、TLS(安全传输层协议)
- 传输层
定义传输数据的协议端口号,以及流控和差错校验。
接受上一层数据,在必要的时候把数据进行切割,并将这些数据交给网络层,并保证这些数据段有效到达对端 协议有:TCP
UDP,数据包一旦离开网卡即进入网络传输层
- 网络层
进行逻辑地址寻址,实现不同网络之间的路径选择。 控制子网的运行,如逻辑编址、分组传输、路由选择 协议有:ICMP(互联网控制信息协议)
IGMP(组管理协议) IP(IPV4 IPV6)(互联网协议) 安全协议、路由协议(vrrp虚拟路由冗余)
- 数据链路层
建立逻辑连接、进行硬件地址寻址、差错校验 [3] 等功能。(由底层网络定义协议)
将比特组合成字节进而组合成帧,用MAC地址访问介质,错误发现但不能纠正。 物理寻址、同时将原始比特流转变为逻辑传输线路
地址解析协议:ARP、PARP(反向地址转换协议)
- 物理层
建立、维护、断开物理连接。(由底层网络定义协议) 机械、电子、定时接口通信信道上的原始比特流传输 TCP/IP
层级模型结构,应用层之间的协议通过逐级调用传输层(Transport layer)、网络层(NetworkLayer)和物理数据链路层(Physical Data Link)而可以实现应用层的应用程序通信互联。
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地址)