互联网的构成(简述)-以太网协议-IP地址-ARP协议-UDP-TCP

互联网的构成

依旧来自即时通讯网,感谢分享,挂上原链:http://www.52im.net/thread-1095-1-1.html

在作者看来,互联网的实现分为五层来讲比较易于理解,在其他地方可能会解释称四层和七层。

image-20231212212541367

每一层都是为了完成一种功能,为了实现这些功能,大家都需要遵守相同的规则,这种规则就叫做协议。

互联网的每一层都定义了很多协议,这些就是互联网协议,它们是互联网的核心。

实体层

实体层就是把电脑连接起来的物理手段,即光缆、电缆、无线电波等。

它主要规定了网络的而一些电气特性,负责传送0和1的电信号。

链接层

将0和1的信号初步解读的层,以固定的数量分组电信号,规定信号位的意义。

以太网协议

最开始的时候有很多电信号分组方式,逐渐的,一种叫做以太网的协议占据了主导地位。

以太网规定:一组电信号构成和一个数据包,叫做帧,每一帧分为两个部分,标头和数据。

bbbfbfb317f1dd8b05db24ac0a1c110

标头包含数据包的一些说明项,比如发送者、接收者、数据类型等等;数据则是数据包的具体内容

标头的长度固定为18字节,数据的长度,最短是46字节,最长为1500字节。因此,整个帧最短为64字节,最长为1518字节。如果数据很长,就必须分割成多个帧进行发送。

MAC地址

以太网规定,连入网络的所欲设备,都必须具有网卡接口,数据包必须是从一块网卡,传送到另一块网卡。网卡的地址,就是数据包的发送地址和接收地址,这叫做MAC地址。

每块网卡出场的时候,都有一个全世界独一无二的MAC地址,长度是48个二进制位,通常用12个十六进制数表示。

351123f5db4498ce86534e7a28e1511

前6个十六进制是厂商编号,后6个是该场上的网卡流水号。有了MAC地址,就可以定位网卡和数据包的路径了。

广播

定义地址只是第一步,后面还有更多的步骤:

  • ***1)*首先:**一块网卡怎么会知道另一块网卡的MAC地址?
    回答是有一种ARP协议,可以解决这个问题。这个留到后面介绍,这里只需要知道,以太网数据包必须知道接收方的MAC地址,然后才能发送。
  • ***2)*其次:**就算有了MAC地址,系统怎样才能把数据包准确送到接收方?
    回答是以太网采用了一种很"原始"的方式,它不是把数据包准确送到接收方,而是向本网络内所有计算机发送,让每台计算机自己判断,是否为接收方。

网络编程懒人入门(一):快速理解网络通信协议(上篇)_6.jpg

上图中,1号计算机向2号计算机发送一个数据包,同一个子网络的3号、4号、5号计算机都会收到这个包。它们读取这个包的"标头",找到接收方的MAC地址,然后与自身的MAC地址相比较,如果两者相同,就接受这个包,做进一步处理,否则就丢弃这个包。这种发送方式就叫做"广播"(broadcasting)。

有了数据包的定义、网卡的MAC地址、广播的发送方式,"链接层"就可以在多台计算机之间传送数据了。

网络层

以太网协议采用广播方式发送数据包,所有成员都接受到,不仅效率低而且局限于发送者所在的子网络,毕竟你不能指望全世界的计算机全部连接在一个子网络中。

cd35b504e90de1ceaef0949832a168c

网络层是为了区分哪些MAC属于同一个子网络,哪些不是,同一个子网络就采用广播方式发送,否则采用路由方式发送。MAC地址只与厂商有关与其他无关,所以无法判断。

网络层就是引用一套新的地址,使得我们能够区分不同的计算机是否属于同一个子网络。这套地址就叫做网络地址,简称网址。

网络层出现之后,每台计算机就有了两种地址,一种MAC地址,一种网络地址,MAC地址是绑定于网卡上的,网络地址是管理员分配的,他们只是随机的组合在一起。

网络地址帮助我们确定计算机所在的子网络,MAC地址则将数据包送到该子网络中的目标网卡。

IP地址

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

目前采用的是IPv4和IPv6.

IPv4这个版本规定的是网络地址由32个二进制位组成:

0477568994e5361d27583bb5ee994d1

IPv6是4的升级版,已经有大量的公司全部升级至IPv6,IPv6是为了解决IPv4协议下的IP地址有限,以及升级一些性能的目的。下面的东西我们还是使用4作为基础讲。因为我也不会。

习惯上我们使用分成四段的十进制数来表示IP地址

从0.0.0.0一直到255.255.255.255

互联网上的每一台计算机,都会分配到一个IP地址。这个地址分成两个部分,前一部分代表网络,后一部分代表主机。

比如IP地址172.16.254.1,这是一个32位的地址,假定他的网络部分是前24位即(172.16.254),那么主机部分就是后八位(1).处于一个子网络的电脑,他们的IP地址网络部分必定是相同的。

但是由于我们无法确定一个IP地址的网络部分到底是前多少位,所以从IP地址上无法直接判断是否是在一个子网下。

这时候就需要另一个参数**:子网掩码**。

子网掩码就是表示子网络特征的一个参数,在形式上也是32位二进制数字。网络部分全为1,主机部分全为0。

这样的话使用IP地址和子网掩码进行与运算的话,就会保留网络部分,这时候就可以确定某几个IP是否在同一个子网下。

IP数据包

根据IP协议发送的数据就叫做IP数据包

IP数据包中包含IP地址信息,然后直接将IP数据包放进以太网数据包的Data部分,这就是互联网分层的好处,上层的变动不涉及下层的结构。

IP数据包也分为标头和数据两个部分

ARP协议

IP数据想要发送到另一台机器中,我们就需要知道对方的MAC地址和IP地址。通常情况下,IP地址是已知的,但MAC地址是未知的。

所以我们需要一种机制可以通过IP地址来获取MAC地址,这就是ARP协议。

  • 如果两台主机不在一个子网络,那么事实上就需要在包传送至两个子网络连接处的网关来处理。

  • 如果在一个子网下,那么就可以直接采用ARP协议来获取对方的MAC地址。

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

传输层

传输层指的是建立端口到端口的通信。

也就是说在我们的包通过网络层由一个主机发向另一个主机后,需要判断是主机上的哪个端口来接收该包,这个端口到端口的操作就由传输层来承担。

UDP协议

UDP协议非常简单,它的格式就是端口号信息加上传递的数据。还是由标头和数据两部分组成。

标头"部分主要定义了发出端口和接收端口,"数据"部分就是具体的内容。然后,把整个UDP数据包放入IP数据包的"数据"部分,而前面说过,IP数据包又是放在以太网数据包之中的,所以整个以太网数据包现在变成了下面这样:
网络编程懒人入门(一):快速理解网络通信协议(上篇)_12.jpg

UDP数据包非常简单,"标头"部分一共只有8个字节,总长度不超过65,535字节,正好放进一个IP数据包。

UDP协议不保证向上层协议提供消息传递,并且在发送后不会保留UDP消息的状态,所以UDP协议有时被称为不可靠的数据报协议。

但是,因为USP协议的简单轻量化,所以它简单轻量化。也就是:快!

所以一般情况下流媒体应用、语音交流和视频会议所使用的传输层协议就是UDP协议。

TCP协议

TCP协议是基于连接的,这是一个需要保持连接的传输协议。

在使用TCP协议时,必须先建立TCP连接并且在承诺书数据完毕之后,必须释放已经建立的TCP连接。

每一条TCP协议只能有两个端点,每一条TCP连接只能是点对点的。

TCP提供的是可靠的服务,通过TCP连接传送的数据,无差错、不丢失、不重复,并且按需到达。

哪哪都好,安全可靠。但是太稳了,所以会很慢,对比某UDP简单轻量化传输协议。

应用层

应用程序收到传输层的数据,就需要进行解读,应用层的作用就是规定应用程序的数据结构。

举例来说,TCP协议可以为各种各样的程序传递数据,比如Email、WWW、FTP等等。那么,必须有不同协议规定电子邮件、网页、FTP数据的格式,这些应用程序协议就构成了"应用层"。这是最高的一层,直接面对用户。它的数据就放在TCP数据包的"数据"部分。

因此,现在的以太网的数据包就变成下面这样:
网络编程懒人入门(一):快速理解网络通信协议(上篇)_13.jpg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值