目录
1、协议:
2、OSI 七层 模型:
3、TCP/IP 五层 / 四层 协议
3.1、为什么要有TCP / IP 协议?
3.1.1、主机之间变远产生的问题:
3.1.2、TCP/IP协议于操作系统的关系
4、局域网
4.1、Mac
4.1.1 在Linux内使用指令 ifconfig 进行Mac地址的查看
4.2、数据碰撞
4.3、封装与解包
5、跨网络传输 与 IP
5.1 、在Linux内使用指令 ifconfig 进行Mac地址的查看
5.2 、路由器与跨网络传输
5.3、跨网络运输也需要从上到下的封装和解包
6、IP和Mac的区别
1、协议:
协议,一种约定,计算机之间的传输媒介是光信号和电信号,通过 "频率" 和 "强弱" 来表示 0 和 1 这样的信息,要想传递各种不同的信息, 就需要约定好双方的数据格式。
2、OSI 七层 模型:
- OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型, 是一个逻辑上的定义和规范;
- 把网络从逻辑上分为了7层. 每一层都有相关、相对应的物理设备,比如路由器,交换机;
- OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输;
- 它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整. 通过七 个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯;
- 但是, 它既复杂又不实用;
- 其实在网络的角度,OSI定的协议七层模型是非常完善的,但是在实际操作的过程中,会话层、表示层、是不可能接入到操作系统的,且会话层、表示层的模型构造十分的复杂,具体表现不能用一层来进行实现,内部还需要进行多次的分层结构。
- 所以最终在工程的实践中,最终落地的是五层协议。
3、TCP/IP 五层 / 四层 协议
TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇. TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。
- 物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆 (现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决 定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层。
- 数据链路层: 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测 到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太 网、令牌环网, 无线LAN等标准. 交换机(Switch)工作在数据链路层。
- 网络层: 负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规 划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层。
- 传输层: 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标 主机。
- 应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问 协议(Telnet)等. 我们的网络编程主要就是针对应用层。
物理层我们考虑的比较少. 因此很多时候也可以称为 TCP/IP四层模型。
一般而言:
- 对于一台主机, 它的操作系统内核实现了从传输层到物理层的内容;
- 对于一台路由器, 它实现了从网络层到物理层;
- 对于一台交换机, 它实现了从数据链路层到物理层;
- 对于集线器, 它只实现了物理层;
但是并不绝对. 很多交换机也实现了网络层的转发; 很多路由器也实现了部分传输层的内容(比如端口转发);
3.1、为什么要有TCP / IP 协议?
首先,即使是单机,计算机的内部也是存在各种各样的协议,比如:其他设备和内存通信时会有内存协议;其他设备和磁盘进行通信,会有磁盘协议。
其次,网络通信的最大特点也是最大的问题:主机之间的距离变远了,任何通信特征的变化一定会带来新的问题,有问题就必须要解决问题,所以就需要产生新的协议。
3.1.1、主机之间变远产生的问题:
1、如何将数据发送到路由器?
2、如何把数据发送到对应的主机上?(网络上主机太多了,如何进行定位要发送到的主机?
3、数据发送后,如果丢失了怎么办?
4、发送数据只是手段,不是目的,使用数据才是目的?接收到数据的主机将如何处理数据?如何使用数据?
以上都需要使用协议进行解决,所以TCP/IP协议的本质就是一种解决方案,而为什么需要有TCP/IP协议的原因就是主机之间的距离变远了。
3.1.2、TCP/IP协议于操作系统的关系
在TCP/IP 协议的五层分层模型中,传输层和网络层都是在操作系统内部进行实现的,所以网络层和传输层都必须要遵守TCP/IP协议栈的规矩,即便是两个不同的操作系统,它们内部的传输层和网络层都必须要遵守TCP/IP协议,因为这事关之后的网络通讯、操作系统互相通讯的问题。
4、局域网
局域网(Local Area Network,简称LAN)是一种在有限区域内(如一个学校、一栋大楼、一个企业或一个家庭内部)将各种计算机、外设、数据库等互相连接起来,实现资源共享和信息交换的计算机网络。局域网具有覆盖范围小、传输速率高、误码率低、易于配置和管理等特点。
简单来说,局域网就是使用了同一个网络线路的,就是局域网
4.1、Mac
局域网是能够进行直接通信的,而在通信的过程中,每一台主机都需要有一个唯一的标识符:Mac
1、MAC地址(Media Access Control Address)是一个用于唯一标识网络上每个设备的物理地址
2、MAC地址是48位长的二进制数,以及6个字节,一般用16进制数字加锁冒号的形式来表示,例如:08:00:27:03:fb:19
3、在局域网中,当设备需要与其他设备通信时,它们会使用MAC地址来识别对方。
4、MAC地址主要用于局域网内的链路层通信,用来识别数据链路层中相连的节点;。当数据包从一台设备发送到另一台设备时,它们首先在局域网内使用MAC地址进行传输。
5、MAC地址是唯一的值,在出厂之前就设置好了,且是集成于网卡的,在计算机开机时,会根据协议将网卡内部的mac地址读取到操作系统中。
4.1.1 在Linux内使用指令 ifconfig 进行Mac地址的查看
4.2、数据碰撞
以太网中,任何时刻,只允许一台机器向网络中发送数据
如果有多台同时发送,会发生数据干扰,我们称之为数据碰撞
所有发送数据的主机要进行碰撞检测和碰撞避免,例如:例如让发送数据的主机进行一段时间的休眠,同时休眠的时候,可以让其他的主机进行数据的发送。
没有交换机的情况下,一个以太网就是一个碰撞域
局域网通信的过程中,主机对收到的报文确认是否是发给自己的,是通过目标Mac地址判定
4.3、封装与解包
- 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链 路层叫做帧(frame)
- 应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装 (Encapsulation)
- 首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息
- 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部, 根据首部中的 "上层协议 字段" 将数据交给对应的上层协议处理.
对于每一层增加的封装,我们可以称作报头,当每一层的报头进入下一层后,这些报头会和数据 合体变成一个有效的荷载,而新一层的封装变成了新的报头。
如上图所示,网络数据之间的传输正是从用户将数据输入应用层,随后由应用层开始进行一层一层的往下进行封装,直到数据链路层,通过局域网之间的Mac地址的联系将封装的数据进入另一个主机当中,由主机2的数据链路层开始,一层一层的往上将数据进行解包,直到另一个用户获取到,用户A输入的数据。
这个过程看似简单,但实际上还是有问题产生的:那就是每一层解包报头后,剩下的有效荷载,应该交给上层哪一种协议? (每一层都有许多的协议,如下图所示)
5、跨网络传输 与 IP
- IP协议有两个版本, IPv4和IPv6. 我们整个的课程, 凡是提到IP协议, 没有特殊说明的, 默认都是指IPv4
- 对于IPv4来说, IP地址是一个4字节, 32位的整数;
- 我们通常也使用 "点分十进制" 的字符串表示IP地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个 字节, 范围是 0 - 255;
5.1 、在Linux内使用指令 ifconfig 进行Mac地址的查看
5.2 、路由器与跨网络传输
跨网段的主机 的数据传输,这些传输的数据从一台计算机到另一台计算机 传输的过程需要经过一个或多个路由器,如下图所示:
如果路由器要进行数据 的跨网络传输则至少需要集联两种网络,链接两个网络,所以路由器可以配上多张网卡,如下图所示,左边是以太网网卡,右边是令牌环网网卡。
5.3、跨网络运输也需要从上到下的封装和解包
如图所示,传递数据要 有 起始地址 和 最终的地址,这两个地址都在报文内部。
数据从上到下要进行封装,也就是添加报头,但是在网络层还需要进行一个操作,就是路由操作。
因为要进行跨网络操作传输操作,所以传输的数据 并不是传输给当前局域网内部的,所以它会把数据推送给路由器
路由的操作并不是判断数据该去哪里,而是判断数据最终进入的地方是否是当前局域网内部
但是数据也并不是直接由路由操作从网络层交给路由器,而是先向下进行交付继续封装,也就是添加报头。
且这个报头内部要添加路由器网卡地址,然后将整个报文进入当前局域网,让路由器进行接收
然后让路由器确认报文,让路由器的网络层进行解包。
同时路由器的网络层 也需要进行一个路由的功能,当查询到数据要进入的地址是另一个直连的网段,则会解包后的报文,再度进行封装,然后传递给另一个局域网,让那个局域网对报文进行解包。
6、IP和Mac的区别
1、唯一性:
- IP地址:在全局范围内(除非使用私有地址)必须是唯一的,但可以被管理员更改或重新分配。
- Mac地址:每个网络设备的Mac地址都是唯一的,且不可更改,由制造商在设备制造时分配。
2、可变性:
- IP地址:具有可变性,可以根据需要进行更改或重新分配。
- Mac地址:具有固定不变性,一旦分配就不能被用户更改。
3、层次与位置:
- IP地址:位于网络层,用于标识逻辑网络上的设备和主机,支持跨网络通信。
- Mac地址:位于数据链路层,主要用于标识局域网内的物理设备,不能跨越不同网络。
4、长度与表示:
- IP地址:目前主流是32位长(IPv4),也有128位长(IPv6),通常用十进制点分表示法表示。
- Mac地址:由48位二进制数组成,通常用16进制表示,并且通常以冒号分隔的六组两位16进制数表示。
5、表示形式:
- IP地址:IP 表示的是传输的数据 最终抵达的地址
- Mac地址:Mac 表示的是传输的数据 需要进入的下一个阶段时,该阶段所处在的地址