计算机网络基础

1.计算机网络背景

1.1局域网和广域网

起初,计算机以单机模式被广泛使用(这种方式也叫独立模式)。但是单机模式有很大的缺陷,就是数据无法共享。

假设现在有三台主机,分别存储一部分客户的数据。现在我们需要对这些数据做处理,那么我们只能等一台计算机处理完之后将数据传递给下一个计算机,而下一个计算机在没有收到数据之前,一直处于等待状态。这样效率十分低下,于是提出了网络的概念。

有人将这几台计算机连接到一起,将数据放到服务器中集中管理,每台计算机也就可以共享这些数据了。

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

上面那种网络模型被称作为局域网,局域网多了之后,就需要将局域网也连接起来,这样就可以让更多的主机之间通信,于是有了交换机和路由器,交换机的作用是在局域网内将数据从一台主机转发到另一台主机上;路由器的作用是将两个局域网连接起来。

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

就这样,局域网也越来越多,后来就形成了广域网。

广域网之间也是由路由器连接起来的。(广域网和局域网只是一个相对的概念)

1.2协议

协议本质上就是一种约定,例如摩斯密码,他就是通过一些列的点和划组成的,不同的点数和划数代表着不同的意思,如果你遵守了摩斯密码的协议,那么你就能将摩斯密码翻译出来。

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

而最开始的网络时代,计算机生产厂商有很多;计算机操作系统, 也有很多;计算机网络硬件设备, 还是有很多;如何让这些不同厂商之间生产的计算机能够相互顺畅的通信? 就需要有人站出来, 约定一个共同的标准,大家都来遵守, 这就是网络协议;所以最终就是比拼哪家公司指定的协议更好,更出色。

这是有人可能会问了,别人制定了好的协议我就必须要遵守吗?是的,如果你设计出了一款操作系统,即使非常好用,但是没有遵守网络协议,你就传播不到网上,也就不会有人知道你的操作系统有多好用。

协议指定的目的其实也是为了网络能更好的发展。在网络传输中我们需要考虑一些问题,1.数据丢包了怎么办。2.如何找到目标主机的位置。3.如果保证数据在这么多个设备中传输,还能准确的把数据交给目标主机。这些都是协议要帮我们解决的。

1.3协议分层

就以打电话举例子

我们平时打电话时看起来是将信息直接传递给对方,但是实际上不是的,设计师将你说的话转到电话机中,再由电话机通过电话机协议传送到对方的电话机上,而对方是从对方的电话机中读取了。这个过程中,我们实现了分层,在语言层中,你不会关心这个电话是怎么把数据交给对方的。你只要把你要说的话交给电话机,他就能帮你完成任务。

电话机分层的例子中我们能看出分层的好处:

1. 将层与层之间进行解耦,每一层只要做好每一层的任务即可,其他层的事情不关心。

2. 增加了可维护性,如果不分层,中间出现了某一个问题则需要把整个流程都检查一遍,分层后只要检查出错的那一层即可,大大减少了维护成本。

3. 同一层我们都认为是和对方直接通信的

所以在网络的设计上我们也采用了分层模式。

1.4 OSI七层模型

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

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

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

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

TCP/IP的五层协议将OSI七层模型简化到了五层,应用层,表示层,会话层统称为应用层。

每一层都需要解决不同的问题。例如,我们现在在网络传输中遇到了几个问题需要解决。

  • 1.数据报文出现错误,甚至丢失如何处理
  • 2.如何定位目标主机,路径如何选择
  • 3.怎么将数据交给下一跳主机
  • 4.收到数据后,我如何使用收到的数据

2.网络传输基本流程

我们先来了解一个概念,什么叫做报头。

当我们收到一个快递的时候,我们会发现,除了我们买的商品,还会有一个多出来的部分——快递单,我们想要的只是商品,为什么给我们多发了一个快递单,其实这个快递单只是为了能将商品交到你的手中,对你来说这个快递单已经没有用处了(因为你已经收到了),在这里例子中,快递单就是报头,也就是网络传输中多出来的那一部分。有效载荷是商品,出了报头以外的东西。

因为每一层有各种协议,每种协议需要解决不同的问题。而协议解决问题就是通过传递报头的形式解决的。


2.1同一个网段内的两台主机进行文件传输.

使用TCP/IP协议进行通信

用户将数据交给应用层,从应用层开始,每一层都要添加协议报头信息,并将数据继续向下交付。数据封装完毕之后,通过局域网发送给对端主机。对端主机收到数据后,对应层会将数据进行解包与分用,并向上交付。

例如:对端主机的链路层收到数据后,先将我方的链路层报头提取出来,再将剩下的数据交给上面的网络层。网络层将我方网络层的报头提取出来,继续向上交付。

所以,在数据传输过程中,该数据要自顶向下贯穿协议栈完成对数据的封装。这个过程中,每一层都会添加对应报头。接受数据的一方,需要自定向上贯穿协议栈完成数据的解包和分用,每一层会提取对应的报头信息

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

下面是封装的过程

下面是数据分用的过过程

每一层需要提取报头信息。但是每一层如何一个数据中哪些是报头,哪些是有效载荷呢。获取报头通常有两种方法:

  1. 定长报头。报头大小固定(当收到数据时,直接提取前n个字节就是报头)
  2. 自描述字段,报头中提供一个字段表示报头大小(因为报头大小可能会改变,但是前n个字节的内容一定不会变,所以在不会变的字段中加入一个字段表示整个报头大小)

如何知道将有效载荷交给上一层的哪一个协议

因为每一层可能有多种协议,只有找到正确的协议才能成功解读报头信息。实际上,每种协议的报头中都会有一个字段表示要交给上层哪个协议,我们将这个字段提取出来即可。

局域网内如何将数据从一个主机发送到另一个主机

假设局域网内有五台主机,A想要将数据发送给D,其实是要将数据给所有主机都发一份,其他主机收到数据后,识别到这不是发给我的就自动丢弃了,就像教室里,老师让张三站起来回答问题。全部同学都听见了,只不过听到不是找我的就自动丢弃了。

每台主机如何判断数据是不是发给自己的。

局域网中使用MAC帧发送数据。MAC帧中有两个字段,一个是源MAC,一个是目的MAC,MAC地址是一个48位序列,每个网卡出厂时设置,全球唯一。所以每台主机收到MAC帧后判断目的MAC和自己的MAC是否一样就能判断数据是否是发送给自己的。

2.2跨网段的主机的文件传输

数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器

如果PC1想要和PC5通信,就需要通过交换机,将数据传送欸路由器,再由路由器传送到对端主机中。

倘若在通信的两个局域网采用的是不同的通信标准怎么办。当传送到路由器时,会在数据链路层将以太网对应的报头解包,然后将数据向上交付给网络层,网络层经过数据分析后,向下交付给数据链路层,数据链路层再封装对应的令牌环网报头,然后发送另一个局域网即可。

路由器如何找到对方局域网

上面那个例子只有两个网段,但是在实际的网络中,非常复杂,一个路由器可能会级联多个局域网,那路由器是如何精准的找到接收方在哪个局域网中呢。

在学习这个问题之前我们先了解一下IP地址。IP地址是在IP协议中, 用来标识网络中不同主机的地址。

PC1的IP地址是192.168.1.2,而PC5的IP地址是198.168.2.3,在发送数据时,我们在网络层会填写上源IP和目的IP,当路由器收到你的数据时,他会在网络层提取出对应的IP地址,通过路由表查询就可以得知该数据应该发往哪个路由表。

将前面的内容连起来差不多就是这样一个过程。

而在局域网中,又有多个路由器。如下:

3.网络中的地址管理

3.1认识IP地址

  • P协议有两个版本, IPv4和IPv6. 我们整个的课程, 凡是提到IP协议, 没有特殊说明的, 默认都是指IPv4
  • IP地址是在IP协议中, 用来标识网络中不同主机的地址;
  • 对于IPv4来说, IP地址是一个4字节, 32位的整数;
  • 我们通常也使用 "点分十进制" 的字符串表示IP地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个字节, 范围是 0 - 255;

3.2认识MAC地址

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

如何区分这两个地址呢。以唐僧取经为例。

在这个过程中IP地址是一只不变的,但是MAC地址一直在变。

IP地址提供的是方向,而MAC地址提供的是可选路径。

  • 25
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值