网络 :网络基础【网络框架认识】
网络 :网络基础【对网络的认识】
- (一)网络发展
- (二)协议
- 1、协议是什么?
- 2、协议分层
- 3、OSI七层模型
- 4、TCP/IP五层(或四层)模型
- 5、系统与网络的关系
- 6、总结
- (三)网络传输流程
- 1、网络传输流程图
- 2、数据包封装和分用
- 3、局域网内通信原理
- 4、以太网(物理层)通信原理
- 5、认识令牌环和路由器
- (四)网络中的地址管理
- **IP地址**
- **MAC地址**
- 两者之间的关系
(一)网络发展
在以前计算机通信的中是十分不便的,如下图:
将终端1处理完的数据存到软盘中再给终端2去进行处理,再将终端2处理完的数据继续存到软盘中给终端3进行处理(这一切都是人工来将数据进行传输),这十分繁琐并且不适合远距离的传输。
为了解决计算机之间通信的问题,便有了网络。
网络互联: 多台计算机连接在一起,完成数据的共享。
局域网LAN: 计算机数量更多了, 通过交换机和路由器连接在一起:
广域网WAN: 将远隔千里的计算机都连在一起;
所谓 “局域网” 和 “广域网” 只是一个相对的概念. 比如, 我们有 “天朝特色” 的广域网, 也可以看做一个比较大的局域网.
(二)协议
1、协议是什么?
- “协议” 是一种约定,这种协议便于计算机之间的通信。
- 计算机之间的传输媒介是光信号和电信号. 通过 “频率” 和 “强弱” 来表示 0 和 1 这样的信息. 要想传递各种不同的信息, 就需要约定好双方的数据格式。
计算机生产厂商有很多;
计算机操作系统, 也有很多;
计算机网络硬件设备, 还是有很多;
如何让这些不同厂商之间生产的计算机能够相互顺畅的通信? 就需要有人站出来, 约定一个共同的标准,
大家都来遵守, 这就是 网络协议;
2、协议分层
下面这是一个打电话例子:
在这个例子中, 我们的协议只有两层; 但是实际的网络通信会更加复杂, 需要分更多的层次.
分层模式优点:
- 高内聚
- 低耦合
3、OSI七层模型
基于 网络分层 的设计思想,诞生了著名的 OSI七层网络模型
- OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范
- 把网络从逻辑上分为了7层. 每一层都有相关、相对应的物理设备,比如路由器,交换机;
- OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输
- 它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整. 通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯
但是, 它既复杂又不实用; 所以我们按照TCP/IP四层模型
4、TCP/IP五层(或四层)模型
TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇.
TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求.
- 物理层:
负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层. - 数据链路层:
负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太网、令牌环网, 无线LAN等标准. 交换机(Switch)工作在数据链路层. - 网络层:
负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层. - 传输层:
负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机. - 应用层:
负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等. 我们的网络编程主要就是针对应用层
物理层我们考虑的比较少. 因此很多时候也可以称为 TCP/IP四层模型.
一般而言
对于一台主机, 它的操作系统内核实现了从传输层到物理层的内容;
对于一台路由器, 它实现了从网络层到物理层;
对于一台交换机, 它实现了从数据链路层到物理层;
对于集线器, 它只实现了物理层;
但是并不绝对. 很多交换机也实现了网络层的转发; 很多路由器也实现了部分传输层的内容(比如端口转发);
5、系统与网络的关系
系统、网络 不分家,看似设计复杂的网络标准模型其实和系统设计有着千丝万缕的联系。
网络本质上是挂接至文件系统中的一个重要子功能
系统可以有很多种,但网络中的核心协议栈必须一致,无论是哪种系统,如果核心协议栈不一致,就无法进行网络通信。
通信:本质就是贯穿,而我们体会到的是层与层之间的通信,但实际的本质是贯穿后通信(不管从上往下贯穿还是从下往上贯穿)。
6、总结
- 不同操作系统的进程管理、文件管理、内存管理、驱动管理的实现方式可能是不一样的。比如Windows和Linux实现多线程的方式是不一样的,Linux当中的线程是用轻量级进程模拟的,而Windows当中是有真正意义上的线程的。
- 而协议栈是网络标准组织定义的,是具有全球性质的,所有的操作系统都必须支持。也就是说,虽然客户端和服务端可能使用的是不同种类的操作系统,但每个操作系统实现网络协议栈的方法包括各种细节都是一样的,因此双方对数据进行的封包和解包操作都是一样的。
用户在应用层的各种请求最终会下达给操作系统,操作系统除了进程管理、文件管理、内存管理、驱动管理之外,还有一个内嵌的软件协议栈,协议栈将用户的数据进行各种封包后,通过网卡将数据传递到网络中,数据在网络内部经过各种路由器转发,最终将数据都传送到了目标的服务器中。
此外,对端服务器也有自己的协议栈,对端服务器将拿到数据通过协议栈进行各种解包操作后上交给应用层,在对端服务器的应用层就有一个对应的软件服务器。
(三)网络传输流程
1、网络传输流程图
同一个网段内的两台主机进行文件传输
两台计算机通过TCP/IP协议通讯过程:
跨网段的主机的文件传输. 数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器.
2、数据包封装和分用
TCP/IP模型中的不同层都有自己的协议,而协议最直观的表现部分叫做 「协议报头」
协议报头 在数据传输过程中,用于承载一些控制信息;协议报头 提供了关于数据包或帧的元信息,以便在网络中正确地路由、传递和处理数据
对于同层来说,协议是用来解决问题的,问题解决后,会用自己的 协议报头 将数据打包,传给下层;或者把自己本层的协议报头与有效载荷分离后,把有效载荷传给上层。
- 传给下层时:解决完问题后,将上层传过来的有效载荷,与自己层的协议打包后,继续传给下一层,这个过程称为 封装
- 传给上层时:上层得到的是一个自己能看懂的数据包,把自己本层的协议分离后,把有效载荷继续往上传就好了,这个过程称为 分用
封装 与 分用 是不同网络层中必须面对的重要问题,只有把这两个问题解决了,整个传输过程才会通畅,关于更多实现细节可以接着往下看
不同的协议层对数据包有不同的称谓
- ,在传输层叫做段(segment)
- 在网络层叫做数据报 (datagram)
- 在链路层叫做帧(frame).
应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装
(Encapsulation).
首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息.
数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部, 根据首部中的 “上层协议字段” 将数据交给对应的上层协议处理.
下图为数据分用的过程
总的来说:
- 每一层都有自己的协议报头
- 向下传输时,每一层都要有将自己的「协议报头」与「有效载荷」封装,传给下一层的能力
- 向上传输时,每一层都要有将自己的「协议报头」与「有效载荷」分离,识别并交付给上一层的能力
- 在逻辑上,同一层中使用的都是同一个协议,都认为自己在于对端直接通信
3、局域网内通信原理
通信过程:应用层将自己的 协议报头 与用户想发送的 信息 封装成一个 数据包,传给下一层,传输层将自己的 协议报头 与 数据包 封装成一个新的 数据包,传给下一层,不断重复,直到 数据包 来到对端主机网络中;链路层从数据包中分离出 有效载荷,向上交付,网络层同样需要分离出 有效载荷,向上交付,最终 有效载荷 为 主机A 发送的 信息,成功交给了 主机B
4、以太网(物理层)通信原理
以太 这个名词源于物理学中的 以太假说:认为光在太空中通过 以太 传播,但物理实验证明其根本不存在,最终沦为物理学界的笑柄。而我们网络中正是通过 光电信号 传输数据的(光电信号中有光),因此就把该标准称为 以太网,用来 “致敬” 物理学。
实际上我们发送的每一个数据包信息到网络中去的时候,所有在以太网内的主机都会收到这个数据包,但是所有主机回去匹配这个数据包,所以唯一的一个主机收到这个数据包。如图:
以太网数据碰撞
既然局域网中的数据包可以被所有人收到,也就意味着通信过程可能被干扰,就比如同时向湖面丢石头,产生的波纹之间会相互影响,导致自己的波纹 丢失/混乱。为了解决这个问题那么就有了碰撞避免的算法,也就是多台主机等一个随机数的时间再发送数据和报文,这样每台主机的发送时间各不相同,那么就大大减少了数据碰撞的问题。碰撞域和碰撞避免。
除了碰撞避免算法,交换机也可以有效避免数据碰撞问题
当源主机发送信息给目标主机时,交换机会检测 目标主机 和 源主机 是否 在同一侧 ,若在同一侧交换机会阻挡信息发送到另一侧 有效避免数据碰撞。
数据安全问题
因为在以太网通信的过程中,一台主机向另一台主机发送数据的时候,其结果是该局域网中每一台主机均接收到发送的报文,但每台主机的网卡在接收这些报文发现目标地址不是自己的话就直接将报文进行丢弃了。但网卡既有正常模式,也有混杂模式,接收主机都要往上解析报头看一看的,这就会造成数据被其他主机窃取。为了解决这个问题,我们会在用户层发送信息的时候对信息进行加密,这样就可以保护数据的安全。
5、认识令牌环和路由器
- 路由器 主要工作在 网络层,但它也具备 数据链路层、物理层 的工作能力,并且 路由器 也可以可以看作一台 主机(节点),作为远端通信的桥梁,路由器 至少需要级联两个子网,至少要提供两个网络接口
- 令牌环 是局域网中实现通信的另一种方法,存在一个 令牌,该局域网中的主机轮流持有,只有持有 令牌 的主机才能发出信息,令牌环 目的也是确保任何时刻都只有一台主机发送信息(类似锁)
当不同底层网络实现通信图如下:
假设客户 要 发送信息给服务器,客户的数据会经过以太网,然后以太网再经过路由器,而路由器再发送数据给令牌环,然后数据才被服务器收到。
(四)网络中的地址管理
IP地址
IP协议有两个版本, IPv4和IPv6. 我们整个的课程, 凡是提到IP协议, 没有特殊说明的, 默认都是指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 地址会改变,随着传输距离的增加,MAC 地址改变的次数也会增加。
例如:
当 主机A 将数据包交给路由器时,路由器分析 IP 地址得知需要将数据包转交给 主机B,于是数据包中的 目的 MAC 地址 会变成 MAC-主机B,主机B 收到数据包后,经过不断解包分用,主机B 将会收到 主机A 发送的信息
总结:
所以 IP 地址 用来表示始发地与目的地,MAC 地址 用来表示途中需要经过的中转区间,通常把 MAC 地址 的改变称为 下一跳,就是从一个 子网 跳转到另一个 子网 中
IP 地址 和 MAC 地址 共同协作,确保数据能够从源设备传输到目的设备。IP 地址 提供了端到端的逻辑标识,而 MAC 地址 则在局域网中提供了物理设备之间的唯一标识。这种分层的设计有助于网络的灵活性和可扩展性
在整个网络传输流程里,IP 地址作为高层协议的一部分维持稳定;而 MAC 地址则依据实际路径调整频繁变化,确保每一阶段都能找到正确的邻近接续装置来继续传递信息直至抵达终点
在Linux中 我们可以输入ifconfig
指令查看对应的IP 和 MAC 地址。
ether 表示 以太 ,当前局域网中采用了以太网 的通信方式。