Linux从青铜到王者第十四篇:Linux网络基础第一篇

Posted 森明帮大于黑虎帮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux从青铜到王者第十四篇:Linux网络基础第一篇相关的知识,希望对你有一定的参考价值。

系列文章目录



前言


一、计算机网络的发展过程

1.独立模式

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

2.网络互联模式

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

3.局域网LAN

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

4.广域网WAN

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

所谓 “局域网” 和 “广域网” 只是一个相对的概念.。像中国的广域网也可以看作一个比较大的局域网。

二、认识计算机网络协议

1.协议的概念

协议是双方约定同一种语言,进行沟通,计算机之间的传输媒介是光信号和电信号. 通过 “频率” 和 “强弱” 来表示 0 和 1 这样的信息. 要想传递各种不同的信
息, 就需要约定好双方的数据格式。

2.什么是网络协议

  • 协议总是指某一层的协议。准确地说,它是在同等层之间的实体通信时,有关通信规则和约定的集合就是该层协议,例如物理层协议、传输层协议、应用层协议。网络协议是通信双方,约定通信时使用的数据格式,进行网络通信。
  • 计算机生产厂商有很多。
  • 计算机操作系统, 也有很多。
  • 计算机网络硬件设备, 还是有很多。
  • 如何让这些不同厂商之间生产的计算机能够相互顺畅的通信? 就需要有人站出来, 约定一个共同的标准,大家都来遵守, 这就是 网络协议。

3.网络协议簇

指的是由很多网络协议组成的,称之为协议簇。

4.体系结构

体系结构规定了网络的分层,以及每一个分层需要完成的功能,以及每一个分层拥有的协议,还规定了每一个分层与自己上下层的关系。

5.OSI七层模型

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

6.TCP/IP五层(或四层)模型

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


7.网络传输基本流程


网络数据的转发需要先经历自己的网络协议栈,进而通过网络将数据转化为光电信号,传输到对端机器,对端机器收到数据之后,需要经历自己的机器网络协议栈的层层向上提交,一直将数据提交到应用层的应用程序当中。

  • 【问题】微信是否是应用程序?微信产生的数据是不是应用层数据?
  • 答:微信是应用程序,因为微信是工作在应用层的,微信产生的数据是应用层数据。

8.数据包的封装

  • 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame)。
  • 应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation)。
  • 首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息。
  • 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部, 根据首部中的 “上层协议字段” 将数据交给对应的上层协议处理。

在计算机网络中层次的划分很细致,每一层实现的功能也很复杂。为了能够更明确地说明此过程,将两台主机通信为实例进行分析讲解,如下图所示:

9.数据包的分用

数据被封装完毕后通过网络传输到接收方后,将进入数据的解封装过程,这将是封装的一个逆过程,如下图所示:

10.数据的封装和分用

11.各层间通信(一)

  • 发送方与接收方各层之间必须采用相同的协议才能建立连接,实现正常的通信。
  • 应用层之间必须采用相同的编码解码规则,才能保证用户信息传输的正确性。
  • 传输层之间必须采用相同的端口号与协议关系,才能保证上层应用进程间的通信。
  • 网络层之间必须采用相同的逻辑寻址过程才能保证数据不会传输到错误的目的地。
  • 数据链路层之间如果协议不同,接收方无法“理解”数据的内容。
  • 物理层之间必须硬件接口规格相同,否则接收不到信号。

12.各层间通信(二)

在实际的网络环境中,发送方和接受方之间会有很多的硬件设备起到中转的作用,在下图中假设了一种通信结构,在两台计算机之间增加了两台交换机和路由器,发送主机的数据会通过以下中间设备到达接受主机。

  • 分析步骤:
  • 发送主机按照前面讲解的内容进行数据封装。
  • 从发送主机物理网卡发出的电信号通过网线到达交换机,交换机将电信号转换成二进制数据送往交换机的数据链路层。交换机根据数据帧头部的MAC地址将数据智能转发到对应的路由器设备,在转发前要重新将二进制数据转换成物理的电信号。
  • 路由器接受到数据后,会拆掉数据链路层的MAC头部信息,将数据包送往网络层,路由器将检测数据包头部的目标IP地址信息,并根据该信息进行路由转发,将数据报文转发到下一路由器上,在转发前要重新封装新的MAC头部信息,并将数据转换成二进制。
  • 之后的过程与前面大同小异。简单来说就是路由器接受电信号,将电信号转换成二进制数据发往网络层,然后根据MAC地址和IP地址进行重新封装转换为电信号进行转发,然后对应的交换机接受电信号,然后根据MAC地址传送到接收主机的网卡中。

13.认识IP地址

  • IP协议有两个版本, IPv4和IPv6. 整个的课程, 凡是提到IP协议, 没有特殊说明的, 默认都是指IPv4。
  • IP地址是在IP协议中, 用来标识网络中不同主机的地址。
  • 对于IPv4来说, IP地址是一个4字节, 32位的整数。
  • 我们通常也使用 “点分十进制” 的字符串表示IP地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个字节, 范围是 0 - 255。
  • IP地址的作用:可以在网络当中唯一标识一台主机,一个公网IP地址只能被一台机器所占有,一个机器可以拥有多个IP地址。

14.认识MAC地址

  • MAC地址用来识别数据链路层中相连的节点。
  • 长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)。
  • 长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)。
  • 问题】对于接收方而言,所有的网络数据都是需要经历网络协议栈的,但是,怎么区分网络数据到底属于哪一个应用程序的。
  • 通过端口进行区分。

总结

以上就是今天要讲的内容,本文详细介绍了网络等基础知识的使用,网络提供了大量的方法供我们使用,非常的便捷,我们务必掌握。希望大家多多支持!另外如果上述有任何问题,请懂哥指教,不过没关系,主要是自己能坚持,更希望有一起学习的同学可以帮我指正,但是如果可以请温柔一点跟我讲,爱与和平是永远的主题,爱各位了。加油啊!

以上是关于Linux从青铜到王者第十四篇:Linux网络基础第一篇的主要内容,如果未能解决你的问题,请参考以下文章

C++从青铜到王者第十四篇:STL之stack类的初识和模拟实现

Love2d从青铜到王者第十四篇:Love2d之分享你的游戏(Distributing your game)

Linux从青铜到王者第二十三篇:Linux网络基础第四篇之kcp协议

C++从青铜到王者第二十四篇:C++的类型转换

Linux从青铜到王者第十五篇:Linux网络编程套接字两万字详解

Linux从青铜到王者第十八篇:Linux网络基础第二篇之TCP协议