一、网络发展

独立模式:计算机之间相互独立。

不同计算机之间想要交互数据需要由员工线下交互,效率低下。

网络基础_数据链路层

网络互联:多台计算机连接在一起,实现数据共享。

网络基础_数据链路层_02

局域网LAN:计算机数量更多了, 通过交换机和路由器连接在一起。

网络基础_数据_03

广域网WAN:将远隔千里的计算机都连接在一起。

网络基础_IP_04

对于我们国家来说,网络的发展,不仅仅是互联网公司在发展。还有做网络基础设施建设的公司(三大运营商)。

随着网络的发展,就会有新的设备诞生。比如说集线器、光纤、网线、调制解调器等等。

二、协议

数据从单台机器内传输到多台机器间传输,最大的变化就是距离变长了

距离边长导致了一些问题的产生:

  1. 数据在传输过程中丢包了怎么办?
  2. 如何保证数据能抵达想要到目的主机?
  3. 如何让我们的报文在经历了无数个设备之后,还能准确地把数据推送给目的主机。

想要解决这些问题,就需要协议

什么是协议?协议的本质就是一种约定。

网络一定要保证各种不同的机器都能够无障碍接入互联网。但是计算机生产厂商有很多、计算机操作系统也有很多、计算机网络硬件设备也非常多。如何让这些不同厂商之间生产的计算机能够相互顺畅的通信?就需要有人站出来, 约定一个共同的标准,大家都来遵守,这就是网络协议。网络协议涉及的范围非常广,在硬件上规定了所有硬件的电气特性,在软件上规定了所有软件的软件特性。

三、协议分层

两台主机在网络通信过程中会经过很多中间设备。


网络基础_数据链路层_05

数据在从主机A到主机B的过程中,是经历了一个一个的主机才到达了主机B,所以面临的第一个问题是:

a.如何保证把数据先转发给下一跳主机。


网络基础_数据链路层_06

主机A在把数据转发给下一跳时,下一跳的选择是多样的,所以面临的第二个问题是:

b.数据转发的过程中,如何选择下一跳以及目标主机的定位问题。


网络基础_数据链路层_07

假设解决了ab两个问题,还有第三个问题:

c.报文在转发过程中如果出现了错误,或者丢失,该怎么办呢?

假设解决了abc三个问题,此时已经能够把数据可靠地发送到主机B,数据到达主机B就结束了吗?并不是,主机B要如何处理这个数据呢?这个数据是下载的、还是要获取短视频的、或者查看某网页的?此时就需要解决第四个问题:

d.如何使用处理送达的数据。

上面这些问题,每一个问题都要有协议来解决,网络中有非常多的协议。

网络协议为了能更好地解决问题,把网络设计成了层状结构,每一层解决不同的问题。

网络基础_IP_08

1、OSI七层模型

  • OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范;
  • 把网络从逻辑上分为了7层. 每一层都有相关、相对应的物理设备,比如路由器,交换机;
  • OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输;
  • 它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整. 通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯;
  • 但是, 它既复杂又不实用; 所以我们按照TCP/IP四层模型来讲解 。

2、TCP/IP五层模型

  • 物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层。
  • 数据链路层: 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太网、令牌环网, 无线LAN等标准. 交换机(Switch)工作在数据链路层。
  • 网络层: 负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层。
  • 传输层: 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机。
  • 应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等. 我们的网络编程主要就是针对应用层。

网络协议纯软件部分被划分为四层,这四层被称为网络协议栈

网络基础_IP_09

一般而言:

  • 对于一台主机, 它的操作系统内核实现了从传输层到物理层的内容。
  • 对于一台路由器, 它实现了从网络层到物理层。
  • 对于一台交换机, 它实现了从数据链路层到物理层。
  • 对于集线器, 它只实现了物理层。

3、网络协议栈和操作系统的关系

网络协议栈和操作系统的关系非常密切。数据链路层实现在驱动层序中,网络层与传输层实现在内核中。我们想要使用网络协议栈,必须自上而下贯穿协议栈。为了让我们能够使用网络,网络会提供系统接口给我们操作 。

网络基础_IP_10

四、网络传输基本流程

在同一个局域网当中,两台主机可以直接通信

通信原理:

每台主机都有网卡,每张网卡都有MAC地址,MAC地址是全球唯一的。

在局域网中主机A给主机B发送一个报文,这个报文包含发送者主机A的MAC地址以及接收者主机B的MAC地址,局域网内的每一台主机都能收到这条报文,但是只有主机B的MAC地址能和报文上的接收者MAC地址对应,所以主机B会接收,主机C、主机D、主机E会丢弃报文。

网络基础_数据链路层_11

所以局域网通信的原理本质就是:在局域网内发消息可以被所有人收到,但是用了MAC地址来区分让谁接收。


在局域网内,如果同时有多台主机发消息,这种情况称之为数据碰撞,数据碰撞会导致报文的丢失或损坏,所以,一旦在主机发送数据后出现了数据碰撞,发送放的主机就需要执行碰撞避免的算法。

例如主机A和主机B同时发消息,发生了数据碰撞,那么主机A和主机B发的消息都报废了,两台主机就停止发送,然后休眠上随机长的时间,然后再重发。

我们把局域网也称之为碰撞域

所以,想要正确发送数据,任何时刻,就只允许一台主机在局域网中发消息

这种基于碰撞域、碰撞检测、碰撞避免的这种局域网通信它是基于概率的,把它称之为以太网

局域网本质就是一个临界资源、碰撞检测、避免、重发就是完成互斥访问。


用户想要发送信息给别人,这条信息必须一层层地向下交付,贯穿网络协议栈,不能直接发送给对方,每一层都会添加报头。最后经过数据链路层之后再通过以太网推送给对方主机。越靠近底层的报头一定是被封装到最越外侧,接收方会从下到上一层层解包再向上交付。

网络基础_数据链路层_12

除了应用层,报文都可以被分为两部分,分别是报头有效载荷,一般把应用层的报文叫做requestresponse,传输层的报文叫做数据段,网络层的报文叫做数据段,数据链路层的报文叫做数据帧

要封装报头,就一定要考虑到后面解包的问题:

  • 如何将报文中的报头和有效载荷进行分离。
  • 如何将自己的有效载荷交付给上一层协议。

每层协议都必须解决这两个问题。

五、IP地址与MAC地址

IP协议有两个版本, IPv4和IPv6. 我们整个的课程, 凡是提到IP协议, 没有特殊说明的, 默认都是指IPv4。

  • IP地址是在IP协议中, 用来标识网络中不同主机的地址。
  • 对于IPv4来说,IP地址是一个4字节, 32位的整数。
  • 我们通常也使用 "点分十进制" 的字符串表示IP地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个字节, 范围是 0 - 255。

IP地址分为公网IP与内网IP。

MAC地址。

  • MAC地址用来识别数据链路层中相连的节点。
  • 长度为48位, 即6个字节。一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)。
  • 在网卡出厂时就确定了, 不能修改。mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突。也有些网卡支持用户配置mac地址)。


为什么要有两种地址呢?

IP地址表示了报文从哪里来,到哪里去,是永远不变的。

网络基础_数据链路层_13

例如报文在主机D时,它是从主机A来,到主机B去。

网络基础_IP_14

等他到了主机E,依旧是从主机A来,到主机B去,不会改变。

MAC地址表示了报文上一站从哪里来,下一站到哪里去,会一直改变的。

网络基础_数据_15

例如报文在主机D时,它上一站从主机C来,下一站到主机E去。

网络基础_IP_14

等他到了主机E,那么它上一站从主机D来,下一站到主机F去,在一直改变。

IP地址的意义在于标识了报文的最终目的地,方便进行路径选择。MAC地址则是从这一跳到下一跳。

六、再谈网络传输的基本流程

跨网段的主机的文件传输. 数据从一台计算机到另一台计算机传输过程中要经过一个或多个设备。

下图主机A和主机B连接到了不同的网络,一个叫做以太网,一个叫做令牌环网。

在令牌环网中,有一种叫做令牌的数据,拥有令牌的主机才能够发送信息,发完之后可以把令牌转递给下一台主机,这个令牌,就类似一把互斥锁。

网络基础_数据链路层_17

在跨网络传输中,最底层的数据帧的报头是一直在改变的,mac地址一直在变化,IP报头则一直不变。

网络通信的基本轮廓如下:

网络基础_IP_18


完结。。。。。