互联网的核心是一系列协议,总称为”互联网协议”,协议就是大家都遵守的规则。它们对电脑如何连接和组网,做出了详尽的规定。理解了这些协议,就理解了互联网的原理。五层架构依次是实体层、链路层、网络层、传输层、应用层,越往前月接近底层,越往后越接近用户。
实体层:就是把电脑连接起来的物理手段,可以用光缆、电缆、双绞线、无线电波等,规定了网络的0和1的电气特性
链路层:只有0和1没啥用,链接层在”实体层”的上方,确定了0和1的分组方式,来表达特定的信号,逐渐形成了以“以太网协议”位主要的电信号分组方式,这里又涉及mac地址,以太网规定,连入网络的所有设备,都必须具有”网卡”接口。数据包必须是从一块网卡传送到另一块网卡。网卡的地址,就是数据包的发送地址和接收地址,这叫做MAC地址。每块网卡出厂的时候,都有一个全世界独一无二的MAC地址。那么,怎么知道对方的mac地址然后给对方发送数据呢?ARP协议,可以解决这个问题,而传播方式则是“广播”,向本网络内所有计算机发送,让每台计算机自己判断,是否为接收方。
网络层:理论上说,只要知道对方的mac地址就可以发送数据了,但是以太网协议下采用“广播”的方式发送,且值对处于同一子网络的计算机生效,如果两台计算机不在同一个子网络,广播是传不过去的。这种设计是合理的,否则互联网上每一台计算机都会收到所有包,那会引起灾难。因此,必须找到一种方法,能够区分哪些MAC地址属于同一个子网络,哪些不是。如果是同一个子网络,就采用广播方式发送,否则就采用”路由”方式发送。这就导致了”网络层”的诞生。它的作用是引进一套新的地址,使得我们能够区分不同的计算机是否属于同一个子网络。这套地址就叫做”网络地址”,简称”网址”。规定网络地址的协议,叫做IP协议。如果两台主机在同一个子网络,那么我们可以用ARP协议,得到对方的MAC地址。如果两台主机不在同一个子网络,只能把数据包传送到两个子网络连接处的”网关”,让网关去处理。
传输层:同一台主机上有许多程序都需要用到网络,比如,你一边浏览网页,一边与朋友在线聊天。当一个数据包从互联网上发来的时候,你怎么知道,它是表示网页的内容,还是表示在线聊天的内容?也就是说,我们还需要一个参数,表示这个数据包到底供哪个程序(进程)使用。这个参数就叫做”端口”。每个数据包都发到主机的特定端口,所以不同的程序就能取到自己所需要的数据。UDP协议就是一种传输协议,优点是比较简单,容易实现,但是缺点是可靠性较差,一旦数据包发出,无法知道对方是否收到。为了解决这个问题,提高网络可靠性,TCP协议就诞生了。这个协议非常复杂,但可以近似认为,它就是有确认机制的UDP协议,每发出一个数据包都要求确认。如果有一个数据包遗失,就收不到确认,发出方就知道有必要重发这个数据包了。
应用层:“应用层”的作用,就是规定应用程序的数据格式。TCP协议可以为各种各样的程序传递数据,比如Email、WWW、FTP等等。那么,必须有不同协议规定电子邮件、网页、FTP数据的格式,这些应用程序协议就构成了”应用层”。