【Linux】网络基础篇

网络基础

1. 网络的发展历程

人们在利用计算机工作时,通常都需要多人协作,所以免不了要进行数据交互。没有网络的话数据就需要人来拷贝,这样效率大大降低,所以慢慢的网络就出来了。

计算机网络模型图

上图就是计算机网络的雏形,一台机器用来共享数据,其他人通过网线连接到该机器。

1.1 局域网

局域网又叫LAN。几台计算机可以由交换机连接在一起形成局域网,多个局域网之间可以由路由器连接在一起实现跨局域网通信,形成一个更大的局域网。

1.2 广域网

广域网WLAN:将相隔千里的计算机都连接在一起,就可以称为广域网。广域网和局域网是相对的概念,一个比较大的局域网就可以称为广域网。

两台主机不在同一个网段,它们之间用路由器连接,就可以将整体称为广域网。
广域网WLAN

只要在同一个网段内就在一个局域网,广域网就没有这么明确的定义了,甚至会折中出“城域网”的概念。

 

2. 网络协议的概念

计算机协议本质就是由程序员做出一种约定,是网络通信的双方必须遵守的规则,并根据协议发出各种信息,对方做出对应的响应。

计算机的生产商有很多,操作系统也很多,网络设备也很多,如何让不同的网络设备之间能相互通信呢?那么所有设备都必须遵循同一个标准,这个标准就是网络协议。

2.1 理解协议分层

先看一个打电话的例子, 使用同一种语言的互相通信,不管底层的通信设备如何变化,都能转化成同一种语言。

层状结构是一种很优秀的设计,它一定程度上实现了”解耦“,实现了解耦后,任何一层都可以进行替换,即便在某层中出现BUG,也可以将问题聚焦到指定的一层中,不会影响到其他层。

那具体协议与协议之间是怎么分层的呢?不同的软件实现的协议分层是有差别的。

从软件分层的角度看,软件就是代码和数据的集合,也就是各种函数和各种对象,在代码上从逻辑角度进行分层,层与层直接存在交互,数据在层之间进行流动,这就是软件分层的策略。

2.2 OSI七层模型

OSI组织设计了一个七层网络模型,是一个逻辑上定义的规范,实际上并不真实存在。

OSI七层模型

实际中将规范落地的时候,并没有完全遵照该模型,定义出来了真实的TCP/IP五层(或四层)协议。

2.3 TCP/IP四层模型

TCP/IP模型是在工程实践中真实存在的模型,TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇. TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求.

TCP/IP是纯软件的协议:自底向上分别是数据链路层、网络层、传输层、应用层。物理层我们不作考虑,因此称TCP/IP四层协议。

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

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

模型层解释
物理层负责光电信号的传递,决定了物理层面的概念。
数据链路层负责设备之间的数据帧的传送和识别,如帧同步、冲突检测、数据校验。
网络层负责地址管理和路由选择,通过路由规划出两台主机之间的数据传输路线。
传输层负责两台主机之间的数据传输,确保数据的传输。
应用层负责应用程序间沟通,如SMTP、FTP、Telnet。

网络在哪里呢?

网络协议栈也是分层的,它是贯穿于计算机体系结构的一个软件,尤其是TCP/IP协议栈,是属于操作系统的一部分。

  • 应用层是操作系统之上的应用程序,属于用户进程,由用户使用。
  • 传输层和网络层是操作系统内核的两层网络协议栈。
  • 链路层是操作系统之下的网络设备的驱动程序。
  • 物理层是硬件设备,不做考虑。

网络模型的概念

 

3. 网络传输的流程

发送端将数据分成小的数据包,每个数据包都包括源地址、目标地址、控制信息和实际数据。

数据包从发送端传输到网络上的第一台路由器。路由器会读取数据包中的目标地址信息并参照自己的路由表,将数据包转发给最近的下一台路由器,直到抵达目标主机。

数据包在网络中传输可能会经历许多台路由器,为了确保数据包能够按照正确的顺序抵达目标主机,每个数据包都包括了一个序列号。
当数据包到达目标主机时,目标主机会检查源地址、目标地址和序列号等信息。如果这些信息都正确,目标主机会确认数据包已经准确无误地到达,并向发送端发送确认信息。

发送端收到确认信息后,会将剩余的数据包重复以上传输过程,直到所有的数据包都被成功接收。这样,经过多次数据包的传输,最终完成了网络传输的过程。
在这里插入图片描述

我们以TCP/IP协议的通信过程为例认识一下网络传输的基本过程。

3.1 局域网通信

先看局域网中两台主机通信的示意图,左右两边各是一台主机:

数据从一台主机到另一台主机,不是直接从应用层“飞到”另一台主机的应用层。而是经过如下的步骤:

  1. 数据从应用层产生,自顶向下经过传输层、网络层、链路层,最后到达以太网(物理层)
  2. 在网线中传输到另一台联网主机上,自底向上经过链路层、网络层、传输层,最后到达应用层。
封装解包分用
  • 数据自顶向下到达一个协议栈时,需要添加当前栈的报头,这个过程叫封装
  • 数据自底向上到达一个协议栈时,需要拿去当前栈的报头,这个过程叫解包
  • TCP_IP协议局域网通信过程

如图所示,同等的协议栈层会拿到同样的协议报文,这意味着可以忽略底层实现,仿佛是对等的协议栈直接进行通信

实际上并不是,这就是封装的好处,不需要考虑底层的实现。

报头的理解

报头类似于快递单上的快递信息。

报头用来指导当前层进行某种协议,传输层的报头指导如何传输,网络层的报头指导路径选择,链路层的报头指导如何转发。

报文由两部分组成报头和有效载荷,只有当前层的报头被认为是报头,之后的都是有效载荷。

报头也是数据,是一种结构化的数据,在语言角度就是位段:

struct my_hdr {
	unsigned int src:16;
    unsigned int dst:16;
    unsigned int type:8;
    unsigned int len:24;
}

封装就是将报头变量拷贝到有效载荷的前面,解包就是用报头指针向后加一即可。

几乎每一层协议的报头字段中,都要包含两种字段:

  1. 明确报头和有效载荷的边界,将有效载荷交给上层协议栈的过程叫做解包。
  2. 报文的有效载荷选择交给上层哪一种协议叫做分用。

3.2 局域网通信原理

局域网通信类似于上课,在课堂上老师单独和某位同学交流,虽然只是叫该同学一个人,但教室内的所有同学都听到对话,只是默认不予回答。

局域网内的网络资源被所有设备共享,一台主机发出信息,局域网内所有的设备都会收到。只不过报文的报头中包含目标设备的MAC地址,其他设备就会识别到不是发给自己的,就会将报文直接丢弃。同时发送报文会导致数据碰撞,所以任何时刻都只能有一台主机在局域网中发送消息。每台主机都有碰撞检测和碰撞避免的算法,如果发生碰撞,后者会延迟发送。

所有主机任何时刻都可能向局域网内发送数据,局域网网络就是临界资源,需要互斥访问,所以只要不停向局域网内发送数据,就是攻击该局域网。

3.3 广域网通信

两台主机跨网络,进行广域网通信的过程示意图如下:

两台主机跨网络,进行广域网通信是需要路由器的,左边是以太网,右边是令牌环,甚至是无线LAN。

虽然两边主机不在同一个局域网,但两边主机和路由器算在一个局域网,本质还是局域网通信。

IP地址和MAC地址

在网络中存在两种地址,一个是IP地址,一个是MAC地址。

认识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地址上一站从哪来,下一站到哪去持续变化

IP地址对MAC地址的变化具有指导意义。

IP层报头会封装目的IP地址,就是目标主机的IP,链路层报头会封装目的MAC地址,该MAC地址只能是路由器的MAC地址。

如图所示,在数据链路层,经路由器一直在进行解包和封装。源主机发的和路由器及目的主机收的报文都是一样的,故IP层及向上部分,可以忽略底层的差异。

  • 26
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SuhyOvO

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值