【Linux网络(一)】初始网络
目录
一、初始网络
二、网络为什么要进行分层
三、网络传输的基本流程
四、初始IP地址和MAC地址
一、初始网络
网络其实就是进程间通信的一种,跨网络通信是在不同主机上进行的(比如在西安要访问qq,而qq的服务器进程可能在深圳),而通信的复杂程度是和距离成正比的。跨网络通信需要解决一些问题:
1、如何处理网络中获取的数据?
2、在网络中丢包了怎么办?
3、怎样定位要访问的主机或者要访问的进程?
4、现实生活中有很多路由器可以当网络跳板,怎样知晓下一跳往哪走?
因此,为了解决上面的问题,要指定协议 协议的本质就是一层软件层
四层模型以及它们的协议:
- 应用层(HTTP协议)
- 传输层(TCP/UDP协议)
- 网络层(IP协议)
- 数据链路层(ARP协议)
物理层偏向硬件
二、网络为什么要进行分层
进行分层的原因:
- 场景复杂,分层有利于拆分复杂场景
- 功能解耦,便于后续进行构造维护
网络进行分层之后,不同层负责不同的功能,互相之间不会有干扰,并且每一层都有自己的协议,虽然现在大多数都是使用TCP/IP协议,但是不能保证未来是否会退出更优的协议,所以为了未来的可维护性,分层也是很有必要的。除此之外,一旦网络通信中出现了错误,分层就能很好的定位错误出现在哪一层,进而该善组件。
网络编程使用的是系统调用:
- 应用层对shell,应用软件
- 传输层和网络层对应OS
- 数据链路层对应的是驱动软件
- 物理层对应硬件
三、网络传输的基本流程
1、每一层都有自己的协议定制的方案
2、每一层都要有自己的协议报头(字段)
3、从上到下交付数据,需要添加报头
4、从下到上交付数据,需要去掉报头
由上图可以看出, 客户端和服务器的每一层使用的协议都是一样的,也就是说,在客户端的X层添加了协议报头的数据,在服务器的X层会使用同样的协议来拆解报头,使用这种方法可以让数据在客户端的X层和服务器X层看起来是一样的。 除此之外,数据在经过数据链路层之后,可能会经过多个路由器才能到达对方服务器。
报文= 报头 + 有效载荷
上层数据向下传送时,每一层都有自己的协议,要想对方的同一层根据协议解析数据,就要加一个报头。类似于快递要贴上订单号给每一个快递员或驿站传递信息,收到快递后要把订单号去掉,收到的数据中,多出来的部分就是协议报头
网络通信的本质就是:贯穿协议栈的过程 通信的过程就是不断地封装和解包的过程。
补充:
1、几乎任何层的协议,都要提供一种能力,将报头和有效载荷分离的能力
2、几乎任何层的协议,都要在报头中提供,决定将自己的有效载荷交付给上层的的哪一个协议的能力
以太网通信:
交换机---划分碰撞域 任何主机都可以向局域网中发数据,但是任何时刻只允许一台主机向局域网中发数据,避免碰撞。 局域网是共享资源
四、初始IP地址和MAC地址
认识IP地址:
IP协议有两个版本IPv4和IPv6 我们只说IPv4也是最常见的
- IP地址是IP协议中,用来标识网络中不同主机的地址
- 对于IPv4来说,IP地址是一个4字节,32位的整数
- 我们通常也使用 “点分十进制” 的字符串表示IP地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个字节, 范围是 0 - 255;
认识MAC地址:
-
MAC地址用来识别数据链路层中相连的节点;
-
长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
-
在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址)
IP地址和MAC地址的区别:
IP地址标识的是从当前主机到目标主机的起点与终点.而MAC地址标识的是从当前主机到目标主机的路程中,下一跳要往哪儿跳?我们用唐僧取经的例子来说明,唐僧从东土大唐去西天取经,那么源IP地址就是东土大唐,目的IP地址就是西天.而去西天可能要经过车迟国,黑风岭,火焰山,女儿国等地方,假设下一站是火焰山,那么目的MAC地址就是火焰山