【Linux网络】网络基础(一)

这篇具有很好参考价值的文章主要介绍了【Linux网络】网络基础(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 网络背景


1.1 网络发展

Internet的最早起源于美国国防部高级研究计划署DARPA(Defence Advanced Research Projects Agency)的前身ARPAnet(阿帕网),该网于1969年投入使用。由此,ARPAnet成为现代计算机网络诞生的标志。
从六十年代起,由ARPA提供经费,联合计算机公司和大学共同研制而发展起来的ARPAnet网络。最初,ARPAnet主要是用于军事研究目的,它主要是基于这样的指导思想:网络必须经受得住故障的考验而维持正常的工作,一旦发生战争,当网络的某一部分因遭受攻击而失去工作能力时,网络的其他部分应能维持正常的通信工作。ARPAnet在技术上的另一个重大贡献是TCP/IP协议簇的开发和利用。作为Internet的早期骨干网,ARPAnet的试验并奠定了Internet存在和发展的基础,较好地解决了异种机网络互联的一系列理论和技术问题。
1983年,ARPAnet分裂为两部分,ARPAnet和纯军事用的MILNET。同时,局域网和广域网的产生和逢勃发展对Internet的进一步发展起了重要的作用。其中最引人注目的是美国国家科学基金会 NSF(National Science Foundation)建立的NSFnet。NSF在全美国建立了按地区划分的计算机广域网并将这些地区网络和超级计算机中心互联起来。

独立模式:早期,计算机之间是相互独立的。
【Linux网络】网络基础(一),Linux,linux,网络,php

网络互联:一开始是由于军事需要,将多台计算机连接在一起,完成数据共享。
【Linux网络】网络基础(一),Linux,linux,网络,php

1.2 局域网和广域网

局域网(Local Area Network),简称LAN,是指在某一区域内由多台计算机互联成的计算机组。
【Linux网络】网络基础(一),Linux,linux,网络,php

广域网(Wide Area Network),简称WAN,是一种跨越大的、地域性的计算机网络的集合。通常跨越省、市,甚至一个国家。广域网包括大大小小不同的子网,子网可以是局域网,也可以是小型的广域网。
【Linux网络】网络基础(一),Linux,linux,网络,php

局域网和广域网只是相对来说的。
比如:局域网是在某一区域内的,而广域网要跨越较大的地域,那么如何来界定这个区域呢?例如,一家大型公司的国内总公司位于北京,而分公司遍布全国各地,如果该公司将所有的分公司都通过网络联接在一起,那么一个分公司就是一个局域网,而整个总公司网络就是一个广域网。
如果这个公司在全球范围内每个国家都有相应的总公司,而真正的总公司在美国,前者的就是局域网,后者就是广域网。

2 认识“协议”


计算机生产厂商有很多;
计算机操作系统, 也有很多;
计算机网络硬件设备, 还是有很多;
如何让这些不同厂商之间生产的计算机能够相互顺畅的通信? 就需要有人站出来, 约定一个共同的标准, 大家都来遵守, 这就是网络协议。

举个生活中的例子:
现在有一个场景下,只能说汉语。
A同学只会说汉语,B同学只会说英语,C同学也只会说汉语。
那么A同学和B同学之间就无法进行正常的沟通,A同学能和C同学进行沟通。如果一群人都说汉语,那么B同学在这个大环境下只能被迫遵守使用汉语这个约定,否则无法正常进行沟通。

同样地,在计算机网络中,如果有人不遵守相关的协议,那么就无法进行正常通信。

网络协议为计算机网络中进行数据交换而建立的规则、标准或约定的集合。

例如,网络中一个微机用户和一个大型主机的操作员进行通信,由于这两个数据终端所用字符集不同,因此操作员所输入的命令彼此不认识。为了能进行通信,规定每个终端都要将各自字符集中的字符先变换为标准字符集的字符后,才进入网络传送,到达目的终端之后,再变换为该终端字符集的字符。当然,对于不相容终端,除了需变换字符集字符外还需转换其他特性,如显示格式、行长、行数、屏幕滚动方式等也需作相应的变换。

2.1 网络协议分层(高内聚,低耦合思想)

2.1.1 高内聚,低耦合简单理解

先了解一下 什么是高内聚,什么是低耦合。
从字面来看,内聚,是一个模块内部各成分之间相关联程度的度量
耦合,两个或多个事物之间相互影响的程度。
那么高内聚,低耦合简单理解来说就是:
一个模块内部各成分之间相关联程度非常高,而模块与模块之间的影响程度是非常低的。

2.1.2 协议分层的简单例子

来看一个打电话的简单例子
【Linux网络】网络基础(一),Linux,linux,网络,php
这里有两个协议,一个是汉语协议,一个是电话机协议。
如果用“高内聚,低耦合思想”去设计的话,就要把它们分为两个模块,一个模块是“语言层”,一个模块是“通信设备层”。
分层的好处是便于封装,封装了语言层,那么只需要提供相应的接口给用户使用即可。封装了通信设备层,也同理。
每一层都只关注自己同层的功能,只使用下层的接口,任何一层出现问题,都不会直接影响另一层,减少后期开发者的维护成本。
从逻辑上来讲每层之间是直接在和同层之间进行通信的。
但是从物理上来讲,需要用到一方需要从上层传到底层,再由底层传到另一方的底层,另一方的底层再从下往上接收信息。

下图展示了当一层协议发生变化时,不会影响到下一层
【Linux网络】网络基础(一),Linux,linux,网络,php

3 OSI七层模型


OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,
是一个逻辑上的定义和规范;

把网络从逻辑上分为了7层. 每一层都有相关、相对应的物理设备,比如路由器,交换机;
OSI七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输;

它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整. 通过七 个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯;

但是, 它既复杂又不实用; 所以我们按照TCP/IP四层模型来讲解.

【Linux网络】网络基础(一),Linux,linux,网络,php
【Linux网络】网络基础(一),Linux,linux,网络,php

3.1 TCP/IP五层(或四层)模型

TCP/IP全称是“Transmission Control Protocol/Internet Protocol”,中文意思为“传输控制协议/网际协议”。TCP/IP协议不仅仅指的是TCP和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇,只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。

TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。

物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等,集线器(Hub)工作在物理层.

数据链路层(网卡层): 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太 网、令牌环网, 无线LAN等标准,网卡层的标准可以不一样。交换机(Switch)工作在数据链路层.

网络层: 负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层.

传输层: 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机.

应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等.
网络编程主要就是针对应用层.

如下图所示:由OSI七层模型简化的TCP/IP五层模型
因为物理层用的比较少,也称为TCP/IP四层模型
【Linux网络】网络基础(一),Linux,linux,网络,php

对于一台主机, 它的操作系统内核实现了从传输层到物理层的内容;

对于一台路由器, 它实现了从网络层到物理层;

对于一台交换机, 它实现了从数据链路层到物理层;

对于集线器, 它只实现了物理层;
但是并不绝对. 很多交换机也实现了网络层的转发; 很多路由器也实现了部分传输层的内容(比如端口转发);

3.2 网络与系统不分家

操作系统包含了进程管理,文件系统,内存管理,驱动管理。教科书或者教学过程中,把网络和系统分开了。其实不应该分开,因为整个网络协议栈中最核心的部分(传输层和网络层)是属于操作系统层面的,由于Linux下一切皆文件,网络协议是隶属于的文件系统中的,所以网络与系统是不分家的。
但是操作系统可以有很多类型,处理文件系统的方案不同,而操作系统中的网络协议只能有一种,这也就是要分开教学的原因。

TCP/IP这个名称的由来也是因为网络协议栈中最核心的部分(传输层和网络层)最具有代表性的协议是TCP和IP。

4 网络传输基本流程


在整个TCP/IP模型中,每一层发送的数据包由数据和协议组成。
协议叫做报头,数据叫做有效载荷。
数据包=报头+有效载荷

发送数据,每一层都要对接收到的数据进行添加报头,这一行为叫做封装。
接收数据,每一层需要对接收到的数据进行报头和数据的分离,这一行为叫做分用。

不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链 路层叫做帧(frame).

应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装 (Encapsulation).

首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息.

数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部, 根据首部中的 “上层协议 字段” 将数据交给对应的上层协议处理.

4.1 对封装的理解

下图是数据封装过程:
【Linux网络】网络基础(一),Linux,linux,网络,php

封装:从应用层到物理层,每一层都要在上数据加上数据报头
数据报头中包含了报头多长,载荷有多长,上层协议是什么等信息,方便接收方解包。

4.2 分用的理解

下图是分用的过程:
【Linux网络】网络基础(一),Linux,linux,网络,php

分用:封装的逆过程,从物理层到应用层,按照协议解包后,再发给上层对应的协议。上层协议很多,要用对应的协议进行解包。

4.3 同一局域网内两台主机进行文件传输

4.3.1局域网通信原理

局域网中所有主机都可以通讯,一个主机发数据,所有主机都能收到。在链路层,有一个mac地址,用来唯一标识一个网卡。

怎么实现定位?

在链路层会将目标主机的mac地址添加在报头中。
发送的数据每一台主机都能收到,当主机收到数据,会进行解包,在链路层会分析报头的mac地址,是否与当前主机的mac地址匹配。不匹配的主机将数据丢弃,匹配的主机会继续往上解包数据。

局域网通讯原理

经过一层,都会要给数据加上报头,最终发送出数据。在局域网中的数据都能收到数据,收到数据的主机会在链路层分析报头是否与当前主机mac地址匹配,不匹配将数据丢弃,匹配继续向上解包,每次向上发送数据要确定是发送给哪个协议。最终会在应用层收到最终的数据。

如果多台主机同时往局域网中发送数据时,会发生数据碰撞,会导致数据变成垃圾数据,导致没法进行通信。在链路层会检测数据碰撞的垃圾数据,然后会让源主机重发数据。在计算机中有一种算法可以避免冲突。
广播:mac地址设为全1,所有主机都匹配。

【Linux网络】网络基础(一),Linux,linux,网络,php

【Linux网络】网络基础(一),Linux,linux,网络,php

4.4 同一网段两主机进行数据传输

跨网段的主机的文件传输. 数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器。
【Linux网络】网络基础(一),Linux,linux,网络,php
路由器横跨两个局域网,是两个局域网的主机。 于是路由器可以收到一个局域网的数据,再向另外一个局域网发送数据。
【Linux网络】网络基础(一),Linux,linux,网络,php

5 网络中的地址管理

认识IP地址

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地址).

在Linux中可使用ifconfig命令来查看
【Linux网络】网络基础(一),Linux,linux,网络,php文章来源地址https://www.toymoban.com/news/detail-544018.html

到了这里,关于【Linux网络】网络基础(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Linux网络编程】网络基础一

    从今天开始我们将要从系统横跨到网络的学习了,因此有些书我们就可以读起来了。 操作系统 原理: 《操作系统精髓与设计原理》、《现代操作系统》 Linux原理方面的书 : 《Linux内核设计与实现》–陈莉君、《深入理解Linux内核》(选读–不作为重点) Linux编程方面的书: 《

    2024年04月15日
    浏览(58)
  • linux 网络基础配置

    将Linux主机接入到网络,需要配置网络相关设置一般包括如下内容: 主机名 iP/netmask (ip地址,网关) 路由:默认网关 网络连接状态 DNS服务器 (主DNS服务器     次DNS服务器       第三个DNS服务器) 网关 route   -n  IP地址 ifconfig     或     ip  a DNS服务器 cat   /etc/resolv.c

    2024年01月23日
    浏览(39)
  • linux 网络基础

    目录 一、查看网卡 二、创建虚拟网卡 三、修改主机名 四、管理路由表  五、管理端口  六、网络通信 七、配置网卡                             一、查看网卡 命令:ifconfig :查看当前可用设备 主要查看ip地址和mac地址   ifconfig +设备名:表示查看指定设备状态   ifcon

    2024年02月05日
    浏览(45)
  • Linux网络基础

    “协议” 是一种约定。 举个栗子,你和好友之间提前约好在某个地方见面,这件事只有你们俩知晓,当到了约定的时间,你们俩一定会去目的地会和; 重点是这种约定只有双方知晓 打电话为例 两个用户进行远距离沟通,单单使用语言二者不可能进行沟通,而仅使用通信设

    2024年02月10日
    浏览(67)
  • Linux网络基础-3

    在上一篇网络基础的博客当中,我们对应用层协议--HTTP协议进行了详解,接下来我们对传输层协议进行详解 目录 1.传输层协议 2.UDP协议 2.1协议内容 2.2协议格式 2.3协议特性 3.TCP协议 3.1协议内容 3.2协议格式 3.3协议特性 3.3.1三次握手建立连接 3.3.2四次挥手断开连接 3.3.3稳定连接

    2024年02月05日
    浏览(52)
  • 【Linux】网络基础

    🍎 作者: 阿润菜菜 📖 专栏: Linux系统网络编程 我们知道一台计算机里面有很多的硬件,正是这些硬件之间互相配合协同工作才能让我们的计算机健康的运行,当然这里面也离不开软件对硬件的管理。 假设我们脑洞大一点,把计算机里面的各个硬件拉出来,各自放到很远

    2024年02月15日
    浏览(70)
  • Linux初识网络基础

    目录 网络发展  认识“协议 ” 网络协议  OSI七层模型: TCP/IP五层(或四层)模型 网络传输基本流程 网络传输流程图: 数据包封装和封用   网络中的地址 认识IP地址: 认识MAC地址: 1.独立模式:各个计算机互相独立,各个电脑保存各自数据 2.网络互联:多态计算机连接在

    2024年02月14日
    浏览(72)
  • 【Linux】网络基础2

    满足日常需求的应用程序都是在应用层 1.1 协议 协议是一种约定。 socket api 在读写程序的时候都是按照字符串的方式发送的,如果传输一些结构化数据该怎么办? 只要保证一端发送数据的时候,在另一端能够正确的解析。这就是 应用层协议 1.2 HTTP 协议 HTTP协议(超文本传输

    2024年02月13日
    浏览(47)
  • Linux网络基础-6

    本篇博客时Linux网络章节的最后一片博客,在大致了解完网络的基础内容之后,我们对除物理层之外的其他四层网络内容逐一进行的大致介绍,包括HTTP协议,UDP/TCP协议,IP协议和以太网协议。我们在此基础上,新介绍几种典型协议。 ICMP(Internet控制消息协议)是一种网络层协

    2024年02月07日
    浏览(33)
  • Linux网络编程 网络基础知识

    目录 1.网络的历史和协议的分成 2.网络互联促成了TCP/IP协议的产生 3.网络的体系结构 4.TCP/IP协议族体系 5.网络各层的协议解释 6.网络的封包和拆包 7.网络预备知识      Internet-\\\"冷战\\\"的产物 1957年十月和十一月,前苏联先后欧两颗”Spuinik”卫星上天 1958年美国总统艾森豪威尔向

    2024年02月10日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包