计算机之间通信原理---CSDN观后感

一、前言

      计算机之间通信,主要通过网络通信的5层模型。即

应用层(Application Layer)

传输层(Transport Layer)

网络层(Network Layer)

数据链路层(Datalink Layer)

物理层(Physical Layer)

  它们可以理解为逐层依赖,其中物理层为基础。

二 、物理层

    两台计算机要同信,最基础的是相连,即通过光纤、电缆、双绞线等介质连接,这样才可以在两个计算机之间通过高低电频来传送最基础的0、1电信号。

三、数据链路层

    上接物理层理解,物理层只传送0、1电信号,如果传送的0、1毫无规则,计算机是无法识别的,因此必须制定规则来进行01的传输,比如以太网协议,

01、以太网协议

    以太网协议主要用来规定多少个电信号为一组,也叫一个数据包,或者帧。每个帧由表头(Head)和数据(Data)构成,大小一般为64-1518字节,数据量大就多帧传送。每帧的大小不一,所以必须就表头部分进行固定(否则计算机无法判断哪是表头,并且表头固定18个字节),表头部分主要存放该帧的发送者,接受者,等信息。数据部分则存放发起者要给接收者的内容。

    通过一台计算机发送出去的一帧数据,如何保证另一台计算机能准确接收呢,(一个计算机不可能只连接一个计算机),这个就需要对计算机进行区分,确定一个唯一标识,即MAC地址。

02、MAC地址

    连入网络的计算机均有一个网卡接口,每个网卡接口都有一个唯一的地址,即MAC地址,由48个字节组成,在网卡生产时就被唯一标识

03、广播和ARP协议

    (1)广播

           假设计算机A同时连着计算机B、C、D,A虽然知道计算机B的MAC地址,但是在同一子网中,如何将数据传送给B呢,一种方式就是广播,即A发送一个数据包,中间包含B的MAC地址,B、C、D接收后,会取出其中的MAC地址与自己进行比对,如果相同则进行接收,否则丢弃不理,类似于广播找人,叫到你的名字,你才会答应一样。

    (2)ARP协议

            上接上面的扩展考虑,就是A是如何知道B的MAC地址的呢?即通过ARP协议解决。

四、网络层

  上接数据链路层内容,可以理解什么是子网?我们所处的网络,实际上是由各种各样的子网构成。如果不划分子网,那么可以理解为,计算机A广播一个数据包给计算机B,其他所有计算机都要接受一遍并进行舍弃,那么每台计算机都会奔溃。对于同一个子网中的计算机,可以通过MAC地址确定广播信息,那么又是如何确定每个MAC地址属于哪个子网呢?并且不同子网中的数据如何发送,这就通过网关,先发送给网关,然后让网关进行转发,这就需要一个IP协议。

(1)IP协议

        通用的IP协议,也是为了确定一个地址,叫IP地址。通用的有IPv4和IPv6两种。

       IPv4地址,由 32 位的二进制数组成,我们一般把它分成 4 段的十进制表示,地址范围为 0.0.0.0~255.255.255.255。其中前面部分是代表网络,后面部分代表主机,两者长度并不固定。如果两个计算机的网络部分一样,可以认为其处于同一子网中,例如192.168.43.1 和 192.168.43.2,如果网络部分为24位,主机部分为8位,则其网络部分为192.168.43,可以理解成同一子网。

但是无法仅仅通过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,进而他们处于同一个子网中。

(2)ARP协议

上接IP内容,有了两台计算机的 IP 地址与子网掩码,我们就可以判断出它们是否处于同一个子网之中了。

ARP 协议也是通过广播的形式给同一个子网中的每台电脑发送一个数据包(当然,这个数据包会包含接收方的 IP 地址,可以理解为在同一子网中无差别询问)。

对方收到这个数据包之后,会取出 IP 地址与自身的对比,如果相同,则把自己的 MAC 地址回复给对方,否则就丢弃这个数据包。这样,计算机 A 就能知道计算机 B 的 MAC 地址了。

既然计算机A询问对方MAC地址通过广播,发送数据给对方也通过广播,那么计算机B如何判断对方是发数据,还是问要MAC地址,其实询问 MAC 地址的数据包中,在对方的 MAC 地址这一栏中,填的是一个特殊的 MAC 地址,其他计算机看到这个特殊的 MAC 地址之后,就能知道广播想干嘛了。(可以理解为,计算机A发了一个数据包,其中包含了特殊的含义,即把你MAC告诉我,计算机B收到后即广播出自己的MAC供对方)

如果在不同的子网中,要想发送数据给对方,则通过网关转发。

(3)DNS服务器

我们是如何知道对方计算机的 IP 地址的呢?相当于我要和另一台计算机中的进行对话,则需要对方的IP,例如访问百度,我们必须知道百度的IP(可以理解百度是一台很大的计算机),但是大多数时候我们不会直接记住IP,而是访问百度是输入www.baidu.com 这个域名。当我们输入这个域名时,会有一个叫做 DNS 服务器的家伙来帮我们解析这个域名,然后返回这个域名对应的 IP 给我们。

因此,网络层的功能就是让我们在茫茫人海中,能够找到另一台计算机在哪里,是否属于同一个子网等。

五、传输层

通过物理层、数据链路层以及网络层的互相帮助,我们已经把数据成功从计算机 A 传送到计算机 B 了,可是,计算机 B 里面有各种各样的应用程序,计算机该如何知道这些数据是给谁的呢?

这个时候,就需要端口(Port)来进行区分,也就是说,我们在从计算机 A 传数据给计算表B的时候,还得指定一个端口,以供特定的应用程序来接受处理。

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

也就是说,只有有了 IP 和端口,我们才能进行准确着通信。这个时候可能有人会说,我输入 IP 地址的时候并没有指定一个端口啊。那是因为,我们使用的某些协议,已经默认了端口号,例如 http 的传输默认端口是 80,这些端口信息也会包含在数据包里的。

传输层最常见的两大协议是 TCP 协议和 UDP 协议,其中 TCP 协议与 UDP 最大的不同就是 TCP 提供可靠的传输,而 UDP 提供的是不可靠传输。

六、应用层

应用层是最接近我们的一个层,我们通过各种协议接收来的数据,会有各种各样的格式,例如,html格式、mp4、JPG、等等,如何通过计算机的不同软件,翻译成我们人能看懂的东西,比如文字、图片、视频、音频等视觉听觉效果。

这个时候我们就需要再指定不同的格式和协议进行渲染。

因此我们需要指定这些数据的格式规则,收到后才好解读渲染。例如我们最常见的 Http 数据包中,就会指定该数据包是 什么格式的文件了。

 

七、总结

以上内容来源于微信公众号所看内容,非原创,文中已指定《计算机网络:自顶向下》这本书,感谢作者的心血付出和大力推荐。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值