互联网的构成
依旧来自即时通讯网,感谢分享,挂上原链:http://www.52im.net/thread-1095-1-1.html
在作者看来,互联网的实现分为五层来讲比较易于理解,在其他地方可能会解释称四层和七层。
每一层都是为了完成一种功能,为了实现这些功能,大家都需要遵守相同的规则,这种规则就叫做协议。
互联网的每一层都定义了很多协议,这些就是互联网协议,它们是互联网的核心。
实体层
实体层就是把电脑连接起来的物理手段,即光缆、电缆、无线电波等。
它主要规定了网络的而一些电气特性,负责传送0和1的电信号。
链接层
将0和1的信号初步解读的层,以固定的数量分组电信号,规定信号位的意义。
以太网协议
最开始的时候有很多电信号分组方式,逐渐的,一种叫做以太网的协议占据了主导地位。
以太网规定:一组电信号构成和一个数据包,叫做帧,每一帧分为两个部分,标头和数据。
标头包含数据包的一些说明项,比如发送者、接收者、数据类型等等;数据则是数据包的具体内容
标头的长度固定为18字节,数据的长度,最短是46字节,最长为1500字节。因此,整个帧最短为64字节,最长为1518字节。如果数据很长,就必须分割成多个帧进行发送。
MAC地址
以太网规定,连入网络的所欲设备,都必须具有网卡接口,数据包必须是从一块网卡,传送到另一块网卡。网卡的地址,就是数据包的发送地址和接收地址,这叫做MAC地址。
每块网卡出场的时候,都有一个全世界独一无二的MAC地址,长度是48个二进制位,通常用12个十六进制数表示。
前6个十六进制是厂商编号,后6个是该场上的网卡流水号。有了MAC地址,就可以定位网卡和数据包的路径了。
广播
定义地址只是第一步,后面还有更多的步骤:
- ***1)*首先:**一块网卡怎么会知道另一块网卡的MAC地址?
回答是有一种ARP协议,可以解决这个问题。这个留到后面介绍,这里只需要知道,以太网数据包必须知道接收方的MAC地址,然后才能发送。 - ***2)*其次:**就算有了MAC地址,系统怎样才能把数据包准确送到接收方?
回答是以太网采用了一种很"原始"的方式,它不是把数据包准确送到接收方,而是向本网络内所有计算机发送,让每台计算机自己判断,是否为接收方。
上图中,1号计算机向2号计算机发送一个数据包,同一个子网络的3号、4号、5号计算机都会收到这个包。它们读取这个包的"标头",找到接收方的MAC地址,然后与自身的MAC地址相比较,如果两者相同,就接受这个包,做进一步处理,否则就丢弃这个包。这种发送方式就叫做"广播"(broadcasting)。
有了数据包的定义、网卡的MAC地址、广播的发送方式,"链接层"就可以在多台计算机之间传送数据了。
网络层
以太网协议采用广播方式发送数据包,所有成员都接受到,不仅效率低而且局限于发送者所在的子网络,毕竟你不能指望全世界的计算机全部连接在一个子网络中。
网络层是为了区分哪些MAC属于同一个子网络,哪些不是,同一个子网络就采用广播方式发送,否则采用路由方式发送。MAC地址只与厂商有关与其他无关,所以无法判断。
网络层就是引用一套新的地址,使得我们能够区分不同的计算机是否属于同一个子网络。这套地址就叫做网络地址,简称网址。
网络层出现之后,每台计算机就有了两种地址,一种MAC地址,一种网络地址,MAC地址是绑定于网卡上的,网络地址是管理员分配的,他们只是随机的组合在一起。
网络地址帮助我们确定计算机所在的子网络,MAC地址则将数据包送到该子网络中的目标网卡。
IP地址
规定网络地址的协议叫做IP协议,所定义的地址就叫做IP地址。
目前采用的是IPv4和IPv6.
IPv4这个版本规定的是网络地址由32个二进制位组成:
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数据包又是放在以太网数据包之中的,所以整个以太网数据包现在变成了下面这样:
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数据包的"数据"部分。
因此,现在的以太网的数据包就变成下面这样: