计算机网络基础

 

 

 

阮老师的好文章【必读20遍】http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.html

 

本文章是读基于阮大佬文章上我的一些迷惑和解迷。

 

物理层(实体层)

1.物理层的功能

2.对于物理层最好理解一下信道的三种通信方式

3.信道复用技术

数据链路层

为什么要有数据链路?原来的链路(传输媒体)不也能发送01吗?

为什么要分组?

怎么分组?

MAC地址

广播

网络层

IP协议

IP数据包

ARP协议

传输层

应用层

 

 

 

根据功能和协议的不同划分成五层。

 

 

 

物理层(实体层)

 

说明:物理层它就是把电脑连接起来的物理手段。它主要规定了网络的一些电气特性,作用是负责传送0和1的电信号。【阮老师】

 

1.物理层的功能

 把计算机通过一些传输媒体【双绞线、电缆、光缆、无线电波】相互串联起来

 传输数字比特流,即电信号(二进制数据)、模拟信号等【物理层的电器特性

 

当计算机上输入的不管是汉字还是英文或者其他文字,最终都会经过系列编码变换最后变为二进制数据0和1,进入传输媒体,进行传输。

 

2.对于物理层最好理解一下信道的三种通信方式

 单向通信

 双向交替通信

 双向同时通信

 

3.信道复用技术

 频分复用:所有用户在同样的时间占用不同的带宽资源

 时分复用:所有用户在不同的时间占用同样的频带宽度

 统计时分复用:统计时分复用是一种改进的时分复用,提高了信道的利用率

 波分复用:光的频分复用

 码分复用:码分多址,每一个用户可以在相同时间使用相同频带进行通信【最常用】。

 

 

 

数据链路层

 

说明:不管物理层经过怎么的传输媒体,它传输的内容只能是二进制的0和1,单纯的0和1没有任何意义,必须规定解读方式:多少个电信号算一组?每个信号位有何意义?【阮老师】

 

为什么要有数据链路?原来的链路(传输媒体)不也能发送0和1吗?

在原始的物理线路上传输数据信号是有差错的。

设计数据链路层的主要目的就是在原始的、有差错的物理传输路线的基础上,采取差错检测与流量控制等方法,向网络提供高质量的服务。说白了就是在物理链路上加了一些逻辑程序控制,去过滤一些垃圾帧,就变成了数据链路层。

 

为什么要分组?

看到说明里的文字,我就想起了无间道,这就像是无间道里陈永仁通过敲击手上的石膏给黄警官传递信息一样,你光传递给我信息没用,还要告诉我你多少个嘟嘟嘟算是一个文字,这一组嘟嘟嘟表示的文字意义是啥?但是我又有疑问了,你为什么要分组?分组有啥好处?我们假如说不分组,假如我要传递一个2G的图片,根据物理层所说的传递2G的图片我要独自占用某个信道,而且我还要花很长时间去占用,如果我占用了这个信道,那么其他用户就不能在占用,即使这个用户仅仅是发送很小的数据也不行,因为你一旦抢占了我占用的信道,我的2G图片传输过程就会中断,这可能造成我的数据丢失!不得不重新开始传递!多可怕啊!不说别人抢断,假如我传输过程中对方计算机死机,就会中断传输,也会造成我的数据丢失!说到这我觉得不得不采用分组了,如果不采用分组,互联网上的数据传输效率你可想而知。采用分组后,我们把一张2G的图片分为N个数据单元,发送给对方。

现在我们采用分组了,但是怎么分组?分的太细,传输过于频繁,分的过大,万一丢失,在重传花的流量和时间也就越多,多少个0和1作为一个数据单元才能保证不多不少,即使丢失了也没关系,还可以重传这一个小的数据单元,早期每家公司的分法不一样,我们下面在说。假如说现在分也分好了,那就该怎么传递了,这一张2G图片的N个数据单元,发送到物理层,由于物理层的传输是通过传输媒体传递电信号的,N个数据单元涌入物理层,要发往哪?发给谁?可能这个数据单元走的是这一条道,下一刻这个通道关闭了,下一个数据单元就要走另一个通道,谁先到达,谁后到达也不一定,可能某个数据单元在发送过程受到干扰导致数据丢失该怎么办?数据单元传重复了怎么办?前一个数据单元怎么和后一个数据单元怎么按照最开始拆分单元的顺序在组合起来?可见分组不仅仅是把数据咔咔咔切几块传出去,还要定义更多的东西才行。

为了更好的统一,我们在数据链路层将数据单元称之为“帧”,在每层数据单元的称呼不一样,为了不混淆,所以做了区分,比如说在数据链路层叫做帧,到了网络层就叫做数据包,在传输层通过UDP传输的叫数据报,通过TCP传输的叫数据段,只是为了区分而已。

我们对帧了解一下,可能每一种协议定义的帧的形式是不一样的,不过都不会差别太多,我们来看一张简略的帧图:

在这张帧图中Data部分就是你要传输的数据,而帧首部和帧尾部一般是用来检测这个帧是否是一个完整的帧,如果帧数据出现丢失,就可能没有帧未部,帧首和帧尾,这叫做差错检测。

我们在来看一张ppp协议的帧图:

 

PPP协议中的帧图中首部的第一个字符和尾部的最后一个字符是标志字段,标志一个帧的开始和结束,标志字段是一个帧的定界符。连续的两个帧之间只需要用一个标志字段,如果连续两个标志字段,就表示一个空帧,应当丢弃。首部的字段A为地址字段,C为控制字段,协议为2字节的协议字段,若为0xC021,则信息字段是PPP链路控制协议LCP的数据,而0x8021表示这是网络层的控制数据。

看到这两种帧,我上面对于数据单元抛出的一系列问好,你至少也能解个一二了吧,差错检测利用帧的首尾标志位解决,发往哪?暂且由帧首部的地址信息解决(真正发出去可能还需要更多信息,比如说IP地址等,后面再说),还要三个问题就是帧丢失怎么办?帧重复怎么办?怎么把帧有序的组合起来?

帧丢失:[#1][#3]   //丢失了帧2 帧重复:[#1][#2][#2][#3] //帧2重复 帧失序:[#2][#1][#3] //帧的顺序出现错误

在最古老的时候,人们的观点是在差错检测的基础上增加帧编号、确认和重传机制,也就是说我发送一个帧给对方,对方如果受到这个帧就告诉我我收到了,没受到就告诉我重传直到我受到它确认收到的信息,我就不在重发了。而有了帧编号,不管我先发哪一个帧都不怕,只要按照编号排序一下即可。但是这种效率太低了!只是在古老时网络速度信号不好的情况,随着科技的发展,现在网络发展已经极大完善,出现以上三种情况的概率理论上可以认为是0,即100%传输正确。

但也有超乎意料嘛!因特网采用了区分对待:

①对于通信质量良好的有线传输链路,数据链路层协议不使用确认和重传机制,要求数据链路层向上提供可靠数据传输服务。如果传输数据时出现了差错则交给上层协议(例如运输层TCP协议)来完成。利用上层TCP协议传输我不说你也明白,TCP意为着什么。到底哪些情况才会导致丢失和迟到,一张图说明一切:

至此对于帧顺序,帧重复,帧丢失的问题都一目了然了,帧顺序对于网速极好的你根本不用担心,它是顺序发送的,对于不好的,则采用上层协议TCP,采用发送确认在发送在确认的方式保证发送的帧连续,帧重复上图自己看,对于帧丢失,极好网络情况下不存在的,不好的就采用TCP也是不存在的。

 

②对于通信质量较差的无线传输链路,数据链路层使用确认和重传机制,要求数据链路层向上提供可靠传输服务。在无线传输中举例如下:

// 避退算法 (1) 在发送第一帧之前检测到信道处于忙态。 (2) 每一次重传。 (3) 每一次的成功发送后再要发送下一帧。

无线传输中,也就是说它并不会重复发送帧,而是监听着信道是否忙?不忙我就发,忙了我就等,确保我每次发出去就成功,成功后在发下一帧。

到此,为什么分组,分组出现的哪些问题,怎样解决这些问题都一一说明了,接下来我们看当下最流行的分组方式怎么分组的。

 

怎么分组?

早期的时候,每家公司都有自己的分组方式,逐渐地,一种叫做"以太网"(Ethernet)的协议,占据了主导地位。以太网协议的分组方式:

在阮一峰老师的这张图里,很精简明了,以上我们说了一张关于PPP协议的帧格式,我们来细分一下阮老师的这张图。

以太网采用MAC帧的格式:

也就是说在Head里封装了一些MAC地址信息(MAC地址我就不多说了),还有发送数据的类型,类型字段用来标志上一层使用的是什么协议,以便把MAC帧的数据上交给上一层的这个协议。例如:当类型字段的值是0x0800时,就表示上层使用的时IP数据报。若类型字段的值为0x8137,则表示该帧是由Novell IPX(提供分组寻址和选择路由的功能)发过来的。

至此,怎么分组我也扯完了。

 

MAC地址

计算机的唯一标识。

 

广播

广播只能在同一子网内。某主机向该子网内所有计算机发送信息,然后由受到信息的每一台计算机判断这条信息是不是自己的,是自己的就收下,不是就丢弃。

 

 

网络层

数据链路层的广播无法满足不在同一子网内的数据传输,所有再次划分出了网络层

 

 MAC地址         IP地址信息

 

IP协议

规定网络地址的协议,叫做IP协议。它所定义的地址,就被称为IP地址。

 

IP数据包

上图

 

ARP协议

IP地址得到MAC地址。网络层的IP协议是可以实现将信息从一个子网络发往另一个子网络【到达网关处】,但是到了另一个子网络后【网关处】怎么找到这个子网络里的某台主机,这就需要使用ARP协议了,使用ARP协议可以得到对方的MAC地址。

ARP协议也是发送一个数据包(包含在以太网数据包中),其中包含它所要查询主机的IP地址,在对方的MAC地址这一栏,填的是FF:FF:FF:FF:FF:FF,表示这是一个"广播"地址。它所在子网络的每一台主机,都会收到这个数据包,从中取出IP地址,与自身的IP地址进行比较。如果两者相同,都做出回复,向对方报告自己的MAC地址,否则就丢弃这个包。

说白了就是由网关向这个子网内的所有主机发送这个以太网数据包,某个主机发现自己的IP地址和数据包中的地址一致就报告自己的MAC地址,完事后这台主机就可以接收到这个数据包了。

 

 

传输层

由网络层找到某网络上的某台计算机,这台计算机上的应用程序可能成百上千,到底数据发给哪个程序?再次划分出了传输层

 MAC地址     IP地址                端口号

 

 

应用层

规定应用程序的数据格式,知道格式才了解Data

 

前进时,请别遗忘了身后的脚印。
原文地址:https://www.cnblogs.com/liudaihuablogs/p/10737676.html