天各⼀⽅的两台计算机是如何到对⽅并进⾏数据传输的?这⼀切要从计算机⽹络中五层模型开始讲起。五层模型有以下这些
了解五层模型基本上就知道⼀台计算机如何把数据发送给另⼀台计算机了。不过标题也说了,这是⼩⽩级别,⽂章会省略许多繁琐的细节。
⼀、物理层
如果两台计算机要通信,⾸先需要的就是把两台计算机⽤线链接起来,例如⽤光纤、电缆、双绞线等。就像这样⼦
建⽴链接的⽬的就是为了通信。由于计算机之间只能传输0和1这样⼦的电信号,所以我们发送给其他计算机的数据最终都会转化成⼀⼤串只包含0和1这样的电信号。
⼆、数据链路层
由于发送过来的数据是⼀串只包含0和1的电信号,我们根本看不懂,需要⼀些规定来识别这些电信号。只需要将发过来的数据加头加尾封装成帧就能完成标识了。变成下⾯这样⼦
帧⾸部⾥的信息主要是:要发送给谁,谁发送的,等等。帧尾部就是数据接收结束的信息。
帧的数据部分也就是你要发送给对⽅的信息。当然如果你的数据⽐较⼤的话,会被封装成多个帧进⾏发送。
要发送给谁,需要有个标识把。这个标识就是MAC地址。对⽅的MAC地址和⾃⼰的MAC地址存放的位置都是在帧⾸部。
MAC地址(也叫物理地址):
电脑IP地址在哪里看在计算机⾥存在于⽹卡中
⽹络中每台设备都有⼀个唯⼀的⽹络标识,这个⽹络标识叫MAC地址或⽹卡地址。这个地址是由⽹络设备制造商⽣产时写在硬件内部的。
假如知道对⽅的MAC地址,计算机A要怎样发送信息给计算机B呢?要知道计算机A不⽌连着计算机B,还连着其他计算机。就像这样⼦
计算机A并不知道计算机B在哪⾥,所以只能把信息发送给所有计算机,这种⼀次给多台计算机发送数据的⽅式我们称为⼴播。计算机收到数据后看⼀下帧头⾥的MAC地址,如果和⾃⼰的⼀样就接收,如
果不⼀样就丢弃。就像我们平时听到的⼴播⼀样,如果⼴播⾥喊的是⾃⼰的名字,我们就回应,如果不是⾃⼰的名字,就直接忽略。
不过现在还有个问题,我们并不知道对⽅的MAC地址是什么。
我们要怎么在那么多个MAC地址到我们要的那⼀个呢?这个时候需要通过ARP协议来对⽅的MAC地址。ARP协议的功能是通过对⽅IP地址获取对⽅MAC地址。不过IP地址是在⽹络层。在链路层这⾥只需要知道通过ARP协议可以获得MAC地址就⾏了。
三、⽹络层
说到⽹络层就得先讲⼀下⼦⽹,前⾯也讲到了⼦⽹。我们所处的⽹络是由⽆数的⼦⽹组成的。把⼀个⼤的⽹络划分成⼩的⽹络就叫做⼦⽹划分,划分出来的⼩的⽹络就叫做⼦⽹。
那为什么要进⾏⼦⽹划分呢?试想⼀下如果不进⾏⼦⽹划分的话,计算机A每发送⼀条数据,⽹络(范围很⼤)上的其他计算机都会收到这条数据,这样⼦想想就觉得不恰当,⼜⽐如反过来说,全世界的计算机都发送⼀条信息,你的计算机都会收到这条信息,我想你的计算机分分钟崩溃。所以需要进⾏⼦⽹划分。
⼦⽹划分的好处可以这样⼦来看。计算机A发送⼀条数据给计算机B,⼀开始只有⾃⼰所在的⼦⽹⾥的
计算机能够收到这条数据,如果计算机B在⾃⼰所在的⼦⽹⾥,就将数据发送给计算机B,如果不在的话,就会将数据发送给⽹关,让⽹关进⾏转发。
那么如何判断对⽅计算机是否和⾃⼰的计算机是否在同⼀个⼦⽹呢?这就需要⽤到IP协议了。
IP协议规定⽹络上所有的设备都必须有⼀个独⼀⽆⼆的IP地址。
IP地址是⼀个32位的⼆进制数,通常被分割为4个“8位⼆进制数”。IP地址通常⽤“点分⼗进制”表⽰成(d)的形式,其中,a,b,c,d都是0~255之间的⼗进制整数。例:点分⼗进IP地址(100.4.5.6),实际上是32位⼆进制数(01100100.00000100.00000101.00000110)。
每台计算机都有⼀个IP地址,这个IP地址被分为两部分,前⾯⼀部分代表⽹络部分,后⾯⼀部分代表主机部分。并且⽹络部分和主机部分所占⽤的⼆进制位是不固定的。
如果两台计算机的⽹络部分⼀样,我们就说这两台计算机在同⼀个⼦⽹中。例如192.168.6.1和192.168.6.2,假如这两个IP地址的⽹络部分为24位,主机部分则为8位。它们的⽹络部分都为192.168.6。所以它们处于同⼀个⼦⽹中。
那如何知道⽹络部分和主机部分占⼏位。
这需要另⼀个东西---⼦⽹掩码。
⼦⽹掩码和ip地址⼀样是32位(具有⼀⼀对应的关系),⽹络部分对应的⼦⽹掩码都是1,主机部分对应的⼦⽹掩码都是0。如上们的ip地址。⽹络部分为24位的话对应的⼦⽹掩码就是11111111.11111111.11111111.00000000,即255.255.255.0。
⽤⼦⽹掩码和ip地址进⾏与(and)运算就可以知道⽹络部分是什么。
知道了⽹络部分怎么来,但我们还不知道IP地址是怎么来的。其实IP地址是我们⾃⼰输⼊的。就⽐如我们要访问百度,我们⼀般在地址栏中输⼊www.baidu 这个域名从⽽访问百度,那这个和IP地址有什么关系呢?表⾯上我们输⼊的是www.baidu ,实际上是会经过⼀个DNS域名系统帮助我们将其解析成IP地址39.156.69.79。⽤域名访问⽹站和⽤ip地址访问⽹站效果是⼀样的。
有了ip协议的知识之后,再来看⼀下ARP协议。
ARP协议是通过IP地址得到MAC地址的⼀种协议。也是以⼴播的形式发送⼀个数据包,数据包⾥包含对⽅的IP地址,⾸先需要判断对⽅的IP 地址和⾃⼰的IP地址是否在同⼀个⼦⽹中,如果不在⼀个⽹关⾥,需要交给⽹关进⾏转发。如果在同⼀个⽹关⾥,只需要再判断数据包⾥的IP地址是否和⾃⼰的IP地址⼀样就⾏了,如果和⾃⼰的IP地址⼀样,就把⾃⼰的MAC地址发回给对⽅,如果不是,就丢弃。
就像这样⼦
四、传输层
每台电脑上都有很多的应⽤程序,我们⽬前还不知道是哪个应⽤程序应该接受数据,所以引⼊端⼝这个词。传输层提供了主机应⽤程序之间的端到端的服务。端即为端⼝。我们访问百度的时候似乎不需要输⼊端⼝号啊,其实访问百度的时候采⽤的是默认端⼝80,像http这类域名⽤的都是端⼝80。
五、应⽤层
应⽤层可以为⽤户提供具体服务,是与我们最紧密相关的⼀层。我们从传输层收到的数据格式有很多,例如.txt.jpg,png.mp4等等。⽽应⽤层就是帮助我们完成分析这些数据格式。
六、最后⽤⼏幅图来总结⼀下以上内容。
应⽤层:
⼀开始只有计算机A向计算机B之间通信
计算机B收到101101101011后根本就看不懂。
数据链路层:
于是链路层上场了,将数据封装成帧
这下计算机B收到信息后总算能看出⼀点头绪了。
但之后不久计算机A⼜连了计算机C和计算机D。
计算机A此时⼜想发送信息给计算机B。计算机C和计算机D并不想接受计算机A发给计算机B的信息。于是产⽣了MAC地址来进⾏处理,当计算机C和计算机D发现MAC地址和⾃⼰的MAC地址不⼀样时就将数据包抛弃。
⽹络层:
但是计算机A并不知道计算机B的MAC地址是啥。于是产⽣了ARP协议。通过ARP协议能够获取计算机B的MAC地址。ARP协议是通过IP地址得到MAC地址的⼀种协议。
就这样计算机A得到了计算机B的MAC地址,于是可以开始进⾏数据交流了。
如果觉得有收获,不妨花个⼏秒钟点个赞,欢迎关注我的玩编程地码农,⽬前专注写数据结构与算法和计算机基础等相关知识。
发布评论