从网络分层角度探究计算机之间的数据传输

目录

物理层---比特流

数据链路层---帧

1、以太网协议

2、MAC地址

3、广播

网络层---数据包

1、IP协议

2、子网掩码

3、ARP协议

4、DNS服务器

传输层---报文段

应用层---数据


对于互联网数据传送的分层模型通常的有七层、五层和四层。

本文从五层模型入手,自底向上探究计算机之间的数据如何传输。

物理层---比特流

本层顾名思义,就是通过物理设备(光纤、电缆、双绞线)将计算机连接起来,传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后在转化为1、0,也就是我们常说的数模转换与模数转换)。

数据链路层---帧

数据链路层工作在物理层之上,负责将这些0,1制定传输的规则,然后另一方按照相应的规则进行解读。

1、以太网协议

以太网协议规定,一组电信号构成一组数组包,我们把这个数据包称为“”。每一帧由标头(Head)数据(Data)两部分组成。

帧最大的长度为1518个字节,最小为64个字节,倘若传送的数据很大就要分成多个帧来传送。

2、MAC地址

连入网络的每一台计算机都会有网卡接口,每一个网卡都会有一个地址叫做MAC地址,它是区分计算机与计算机之间不同的一个唯一标识。计算机之间的数据传送,就是通过MAC地址来唯一寻找、传送的。MAC地址在网卡生产是就被唯一标识了。

3、广播

计算机A知道计算机B的MAC地址,但是A连接了很多计算机,无法知道计算机B具体分布在哪边的线路上,所以要通过广播的方式把数据发送给计算机B,结束到广播的计算机会把自身的MAC地址与数据包的MAC地址进行对比,如果符合则接受,不符合便丢弃。

网络层---数据包

网络层负责帮助我们区分MAC地址是否在同一个子网中。如果是同一子网就用广播的方式把数据发送给对方,如果不是同一子网

就把数据包发给网关,让网关帮忙转发。

1、IP协议

IP协议有两种版本,一种是IPv4,另一种是IPv6。不过我们目前大多数用的还是IPv4,我们现在也只讨论IPv4这个版本的协议。

这个IP地址由32为的二进制数组成,我们一般把它分成4段的十进制表示,地址范围为0.0.0.0~255.255.255.255。

每一台想要联网的计算机都会有一个IP地址。这个IP地址被分为两部分,前面一部分代表网络部分,后面一部分代表主机部分。并且网络部分和主机部分的二进制位数是不固定的。

假如两台计算机的网络部分是一模一样的,我们就说这两台计算机是处于同一个子网中。例如192.168.43.1和192.168.43.2,假如这两个IP地址的网络部分为24位,主机部分为8位。那么他们的网络部分都为192.168.43,所以他们处于同一个子网中。

2、子网掩码

可是问题来了,你怎么知道网络部分是占几位。也就是说,单单从两台计算机的IP地址,我们是无法判断他们的是否处于同一个子网中的。

这就引申出了另一个关键词————子网掩码。子网掩码和IP地址一样也是32位二进制数,不过它的网络部分规定全部为1,主机部分规定全部为0.也就是说,假如上面那两个IP地址的网络部分为24为,主机部分为8为的话,那他们的子网掩码都为11111111.11111111.11111111.00000000,即255.255.255.0。

那有了子码掩码,如何来判端IP地址是否处于同一个子网中呢。显然,知道了子码掩码,相当于我们知道了网络部分是几位,主机部分是几位。我们只需要把IP地址与它的子码掩码做与(and)运算,然后把各自的结果进行比较就行了,如果比较的结果相同,则代表是同一个子网,否则不是同一个子网。

例如,192.168.43.1和192.168.43.2的子码掩码都为255.255.255.0,把IP与子码掩码相与,可以得到他们都为192.168.43.0,进而他们处于同一个子网中。

3、ARP协议

计算机A是如何知道计算机B的MAC地址的呢?这个时候就得由ARP协议这个家伙来解决了。

ARP协议也是通过广播的形式给同一个子网中的每台电脑发送一个数据包(当然,这个数据包会包含接收方的IP地址)。对方收到这个数据包之后,会取出IP地址与自身的对比,如果相同,则把自己的MAC地址回复给对方,否则就丢弃这个数据包。这样,计算机A就能知道计算机B的MAC地址了。

发送数据和询问对方的MAC地址都是是通过广播的形式发送,那其他计算机怎么知道你是要传送数据还是要询问MAC地址呢?其实在询问MAC地址的数据包中,在对方的MAC地址这一栏中,填的是一个特殊的MAC地址,其他计算机看到这个特殊的MAC地址之后,就能知道广播想干嘛了。

4、DNS服务器

DNS服务器会帮我们把域名解析为对应的IP地址。

传输层---报文段

虽然我们已经把数据成功从计算机A传送到计算机B了,可是,计算机B里面有各种各样的应用程序?计算机不知道要把这些数据给谁,之时候端口(Port)派上用场啦,我们可以通过一个端口,以供特定的应用程序来接受处理

传输层的功能就是建立端口到端口的通信。相比网络层的功能是建立主机到主机的通信。

在这一层定义了两个端到端的协议:传输控制协议(TCP, Transmission Control Protocol)和用户数据报协议(UDP, User Datagram Protocol)。

TCP面向连接的协议,它提供可靠的报文传输和对上层应用的连接服务。为此,除了基本的数据传输外,它还有可靠性保证、流量控制、多路复用、优先权和安全性控制等功能。

UDP面向无连接的不可靠传输的协议,主要用于不需要 TCP 的排序和流量控制等功能的应用程序

应用层---数据

然我们收到了传输层传来的数据,可是这些传过来的数据五花八门,有html格式的,有mp4格式的,各种各样。你确定你能看的懂?

因此我们需要指定这些数据的格式规则,收到后才好解读渲染。而应用层的功能,就是用来规定应用程序的数据格式的。

应用层(Application Layer)包含所有的高层协议,包括:

虚拟终端协议(TELNET,TELecommunications NETwork)、

文件传输协议(FTP, File Transfer Protocol)、

电子邮件传输协议(SMTP, Simple Mail Transfer Protocol)、

域名服务(DNS, Domain NameService)、

网上新闻传输协议(NNTP, Net News Transfer Protocol)

超文本传送协议(HTTP, HyperText Transfer Protocol)等。
 

参考的文章来源

发布了129 篇原创文章 · 获赞 9 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_41808387/article/details/104556807