一台计算机时如何将数据发给另一台计算机的?--五层协议模型

首先从OSI的五层协议说起

在这里插入图片描述

1.物理层

一台计算机要与另一台计算机通信,首先得把两台计算机连起来,物理层就负责这个功能,例如通过双绞线和光缆等物理媒介。连起来之后,然后在计算机之间通过高低电平来传送电信号。

在物理层上所传数据的单位是比特,发送方发送1或0时,接收方应当收到1或0,而不是0或1,因此,物理层要考虑用多大的电压表示“1”或“0”,以及接收方如何识别出发送方所发送的比特。物理层还要确定连接电缆的插头应当由多少根引脚以及各引脚如何连接。解释比特所代表的意思,并不是物理层的任务,另外,传递信息所利用的物理媒介并不在物理层协议之内而是在物理层协议的外面。

2.数据链路层

物理层只是负责连起来,可以传送数据,但是如果传送一大堆的0101111110000011110011这样的数字,也不知道是什么意思。因此,需要指定一套规则来制定0,1的传送。于是,有了以太网协议
以太网协议
以太网协议规定,一组电信号构成一个数据包。这个数据包称之为“帧”,每一个帧由帧头(head)和数据(data)两部分组成。即每一帧包括数据和必要的控制信息(如同步信息,地址信息,差错控制等)。

数据链路层将网络层交下来的IP数据包组装成帧,在两个相邻节点间的链路上传输帧。

在这里插入图片描述
这里简单解释下链路数据链路的意思:
链路(link)就是从一个节点到相邻节点的一段物理线路(有线和无线),而中间没有任何其他的交换节点。在进行数据通信时,两台计算机之间的通信路径往往要经过许多段这样的链路,可见链路只是一条路径的组成部分。
数据链路(data link)则是另一个概念。当需要在一条线路上传送数据时,除了必须要有一条物理线路外,还必须有一些必要的通信协议来控制这些数据的传输。若把实现这些协议的硬件的软件加到链路上,就构成了数据链路。现在最常用的方法时使用网络适配器(既有硬件也有软件)来实现这些协议。

在接收数据时,控制信息使接收端能够知道一个帧从哪个比特开始和到哪个比特结束,控制信息还使接收端能够检测到所受到的帧中有无差错。若发现有差错,数据链路层就简单地丢弃这个出了差错的帧,以免继续传输浪费网络资源。如果需要改正数据在数据链路层传输时出现的差错,那么就要采用可靠的传输协议来纠正出现的差错。
数据链路层协议由许多种,但有三个基本问题是共同的,分别是封装成帧,透明传输和差错检测。

帧的大小一般为64-1518个字节,假如需要传送的数据很大的话,则分成读个帧来传输,其中表头部分是固定的,为18个字节。但是,将一台计算机的数据通过物理层和数据链路层发送给另一台计算机,究竟时发送给谁的,计算机之间如何区分,得有一个唯一的标识。MAC地址出现了。

MAC地址
连入每一个网络的计算机都会有一个网卡接口,每一个网卡都会有一个唯一的地址,这个地址就成为MAC地址。计算机之间的数据传送,就是通过MAC地址来唯一寻找,传送的。MAC地址由48个字节构成,在网卡生产时就被唯一标识了。
广播与APR协议
当计算机A连着多台计算机B,C和D或者更多时,即使知道了接收方的MAC地址,那么要怎么给它传送数据呢?虽然A知道的B的MAC地址,却不知道它在哪条线路上。
在同一个子网中,计算机A要向计算机B发送一个数据包,这个数据包中会包含这接收方的MAC地址,当发送时,计算机A时通过广播的方式发送的,这时同一个子网的B,C和D 都会收到这个数据包,收到这个数据包的计算机会把这个MAC地址取出来与自身的MAC地址对比,若相同接受这个数据包,否则就丢弃这个数据包。这种发送方式就称为广播。

还有一个问题是计算机A是如何知道计算机B的MAC地址的呢?有一个APR协议,通过这个协议,我们可以知道子网中其他计算机的MAC地址。地址解析协议APR涉及到IP地址,后面将会在网络层进行分析。

3.网络层

网络层向上只提供简单灵活的,无连接的,尽最大努力交付的数据报服务,这里的数据报或IP数据报就是分组。网络在发送分组时不需要先简历连接。每一个分组(也就是IP数据报)独立发送,与其前后的分组无关,不进行编号。即网络层不提供服务质量的承诺。通俗的说,网络层的作用就是帮我们找到另一台计算即在哪里,是否处于同一个子网等。

当在广播的时候,说到了子网这个关键词。我们所处的网络是由无数个子网构成的,广播的时候,只有同一个子网里面的计算机能够收到。

如何区分哪些MAC地址是属于同一个子网呢?加入是同一个子网,就通过广播的方式传送数据,如果不是一个子网,就会把数据发给网关,让网关进行转发。为了解决这个问题,有了IP协议。

IP协议
网络层负责为分组交换网上的不同主机提供通信服务。在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组或包进行传送,网络层使用IP协议,分组也称IP数据报。网络层另一个主要的任务就是要选择合适的路由,使源主机运输层所传下来的分组能够通过网络中的路由器找到目的主机。
IP地址就是给互联网上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的32位的标识符,IP地址现在由互联网名字和数字分配机构ICANN进行分配。
分类的IP地址就是将IP地址划分为若干个固定类,每一类地址都由两个固定长度的字段组成,起哄第一个字段是网络号(net-id),它标志主机(或)路由器所连接到的网络。一个网络号在整个互联网范围内必须是唯一的。第二个字段是主机号(host-id),它标志该主机(或路由器)。一台主机号在他前面的网络号所知名的网络范围内必须是唯一的。
这种两级IP地址可以记为:

					IP地址 ::=  { <网络号>,<主机号>}

在这里插入图片描述
这个IP地址由32位的二进制组成,一般把它分成四段的十进制表示,地址范围为:0.0.0.0~255.255.255.255。并且主机号部分与网络号部分的所占的二进制位数是不固定的。
假如两台计算机的网络号部分是一样的,我们就说这两台计算机处于同一个子网中。例如两个IP:192.168.1.1和192.168.1.2,假如这两个IP的网络号部分都是占24位,主机号部分占8位,那么它们的网络号都是192.168.1,即处于同一个子网中。
如何判断一个IP的网络号部分和主机号部分各占多少二进制位数呢?子网掩码的作用就在于此。
子网掩码与IP地址一样也是32位二进制,不过它规定网络号部分全部为1,主机号部分规定为全部为0。也就是说,如果以上两个IP都是网络号部分占24位,主机号部分占8位的话,那么它们的子网掩码都为11111111,11111111,11111111,00000000,即255.255.255.0.
子网掩码的好处就是:不管网络有没有划分子网,只要把子网掩码和IP地址进行逐位相“与”运算(AND),就可以得出网络地址来,这样就可以知道两个IP是否处于同一个子网中。

地址解析协议APR

在这里插入图片描述

假如两台计算机处于同一个子网中,计算机A要给计算机B发送数据时,可通过APR协议来获得计算机B的MAC地址。
APR协议也是通过广播的形式给子网中的计算机发送数据包,这个数据包中包含接收方的IP地址,计算机B,C和D收到这个数据包后,会取出这个IP与自身的IP地址进行比较,若相同,则把自身的MAC地址回复给对方,否则丢弃这个数据包。这样计算机A就知道计算机B的MAC地址了。

这里有一个问题是知道了MAC地址后,发送数据是通过广播的形式发送,询问MAC地址也是通过广播的形式发送。如何区分是要询问地址还是传送数据呢?在询问MAC地址的数据包中,在对方MAC地址这一栏中,填的是一个特数的MAC地址,其他计算机看到这个MAC地址,就知道是想干什么了。

假设两台计算机不是处于同一个子网中,就把数据包发送给网关,让网关进行转发传送。

DNS服务器
我们是如何知道对方的IP地址呢?当计算机A要发送数据给计算机B时,当然是我们输入的一个IP地址,但是大部分时候我们都是输入的一个域名,例如访问百度,我们输入www.baidu.com这个域名,其实这各个时候DNS服务器帮助我们解析 这个域名,并传回域名对应的IP地址。

4.传输层

在这里插入图片描述
通过物理层,数据链路层和网络层,我们已经将数据成功的从计算机A传到了计算机B,可是,计算机B里各种各样的应用程序,如何知道这些数据是传给谁的呢?
网络层为主机之间提供逻辑通信,而运输层为应用进程直接按提供端到端的逻辑通信。
解决如何知道数据是传送给计算机B的哪个进程的问题就是在运输层使用协议端口号,简称为端口(port)。意思是,虽然通信的终点是应用进程,但只要把所传送的报文交到目的主机的某个合适的端口,剩下的工作就由TCP或UDP来完成。

可能会觉得输入IP的时候并没有给定端口号,其实对于有些传输协议已经默认了端口号,例如http的是端口号是80,这些端口信息包含在数据包里。

也就是说,互联网上的计算机通信采用客户-服务器方式。客户在发起通信请求时,必须先知道对方的IP和端口号。因此运输层的端口号又分为两类:
1)服务器端使用的端口号,这里分为两类,一类叫做熟知端口号或系统端口号,数值为0~1023。可在www.iana.com查到。IANA把这些端口号指派给了TCP/IP最重要的一些应用程序,让所有的用户都知道。

在这里插入图片描述
另一类叫做登记端口号,数值为1024~49151,可按IANA规定的手续登记。
2)客户端使用的端口号,数值为49152~65535。这类端口号留给客户进程选择短暂使用,又叫短暂端口号。通信结束时,刚才使用过的客户端口号就不复存在,这个端口号可供其他客户进程使用。

TCP/IP运输层的两个主要协议时用户数据报协议UDP和传输控制协议TCP。

在这里插入图片描述

5. 应用层

应用层是体系结构中的最高层,应用层的任务是通过应用进程间的交互来完成特定网络任务。意思是当计算机收到传过来的数据,这些数据可能由不同的格式,因此需要指定这些数据的格式规定。应用层协议定义的是应用进程间通信和交互的规则。对于不同的网络应用需要不同的不同的应用层协议。如域名系统DNS,支持万维网应用的HTTP协议,支持电子邮件的SMTP协议等。
例如常见的HTTP数据包中,就会指定这些数据是是么格式的文件了。

参考《计算机网络》第七版和微信公众号:帅地玩编程。仅供自己学习用途。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值