概述

五层模型

互联网协议 - 图1

层与协议

实体层

把电脑连接起来的物理手段。主要规定了网络的一些电气特性,作用是负责传送0和1的电信号。

链接层

在“实体层”的上方,确定了0和1的分组方法。

以太网协议

互联网协议 - 图2
规定:一组电信号构成一个数据包,叫做“帧”(Frame)。
每一帧分为两个部分:标头(Head)和数据(Data)。

标头:包含数据包的一些说明项,比如发送者,接受者,数据类型等等

数据:数据包的具体内容

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

MAC地址

物理地址和局域网地址
数据包的发送和接受地址,就叫做MAC地址。
每块网卡都有全世界独一无二的MAC地址,长度为48个二进制位,通常用12个十六进制数表示
前6个十六进制数是厂商编号,后6个是该厂商的网卡流水号。

广播

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

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

网络层

网络层的诞生。作用是引进一套新的地址,使得我们能够区分不同的计算机是否属于同一个子网络。
这套地址就叫做“网络地址”,称为“网址”。
网络地址帮助我们确定计算机所在的子网络,MAC地址则将数据包送到该子网络中的目标网卡。因此,从逻辑上可以推断,必定是先处理网络地址,然后再处理MAC地址。

IP协议

规定网络地址的协议,叫做IP协议。
其所定义的地址,就叫做IP地址。
IPv4:网络地址由32个二进制位组成
作用:为每一台计算机分配IP地址,还有确定哪些地址在同一个子网络。

子网掩码

子网络特征参数
它在形式上等同于IP地址,也是一个32位二进制数字,它的网络部分全部为1,主机部分全部为0。比如,IP地址172.16.254.1,如果已知网络部分是前24位,主机部分是后8位,那么子网络掩码就是11111111.11111111.11111111.00000000,写成十进制就是255.255.255.0。


知道”子网掩码”,我们就能判断,任意两个IP地址是否处在同一个子网络。方法是将两个IP地址与子网掩码分别进行AND运算(两个数位都为1,运算结果为1,否则为0),然后比较结果是否相同,如果是的话,就表明它们在同一个子网络中,否则就不是。

IP数据包

根据IP协议发的数据,就叫做IP数据包。
放入以太网数据包
互联网协议 - 图4

ARP协议

可以获得同一个子网络内的主机MAC地址,可以把数据包发送到任意一台主机之上。
ARP地址包含在以太网数据包中。

传输层

端口

就是每个使用网卡的程序的编号。
每个数据包都发到主机的特定端口,所以不同程序就能取到自己需要的数据。
“端口”是0到65535之间的一个整数,正好16个二进制位。0到1023的端口被系统占用,用户只能选用大于1023的端口。不管是浏览网页还是在线聊天,应用程序会随机选用一个端口,然后与服务器的相应端口联系。
“传输层”的功能,就是建立”端口到端口”的通信。相比之下,”网络层”的功能是建立”主机到主机”的通信。只要确定主机和端口,我们就能实现程序之间的交流。

UDP协议

需要在数据包中加入端口信息,就需要UDP协议
几乎就是在数据前面,加上端口号。
简单易实现,可靠性差。无法知道对方是否收到。
互联网协议 - 图5

TCP协议

近似于有确认机制的UDP协议,每发出一个数据包都要求确认。
如果有一个数据包遗失,收不到确认,发出方就知道要重发这个数据包了。
因此,TCP协议能够确保数据不会遗失。缺点是过程复杂,实现困难,消耗较多的资源。

应用层

作用就是规定应用程序的数据格式。
互联网协议 - 图6