阮一峰互联网协议入门
互联网的核心是一系列协议,它们对电脑如何连接和组网,做出了详细规定。
一、五层模型
OSI七层模型(由上至下):应用层、表示层、会话层、传输层、网络层、数据链路层、物理层
OSI五层模型(由上至下):应用层、传输层、网络层、链接层、实体层
互联网的实现,每一层都有自己的功能,每一层都靠下一层的支持。越下面的层越靠近硬件,越上面的层越靠近用户。
每一层功能的实现都依赖于相应的协议。
二、实体层
光缆、电缆、双绞线、无线电波等构成了“实体层”,它是将电脑连接起来的物理手段,规定了网络的电气特性,作用是传送0和1的电信号。
三、链接层
在实体层之上,用于确定0和1电信号的分组方式。(0和1电信号的本质是高低电平)
3.1 以太网协议
“链接层”的协议是“以太网协议”。
以太网协议规定,一组电信号构成一个数据包,叫做“帧”。
“Head”包含一些说明项:发送者、接收者、数据类型等。len=18字节
“Data”包含数据包的具体内容。46<len<1500字节
所以,每帧的长度 64<len<1518,若数据超过该长度,需分割成多个帧。
3.2 MAC地址
以太网规定,连入网络的所有设备,都必须具有"网卡"接口。数据包必须是从一块网卡,传送到另一块网卡。网卡的地址,就是数据包的发送地址和接收地址,即MAC地址。
每个网卡都有独一无二的MAC地址。
3.3 广播
发送者网卡通过ARP协议(网络层的一种协议)获得接受者MAC地址,然后采用“广播”的形式,向本网络内所有计算机发送数据包,让每台计算机自己判断,是否为接收方。
四、网络层
链接层通过广播的方式,根据MAC地址,可以实现子网内的数据传输,但是ARP下一无法获得不同子网之间的MAC地址。
“网络层”的作用是引进一套新的地址,用于区分不同计算机是否属于同一个子网。该地址称为“网络地址”,即“网址”。
网络层的出现,计算机有了两个地址,一个是网络地址,一个是MAC地址,二者无任何关系。网址用于确定计算机所属的子网,MAC地址用于确定目标网卡。
4.1 IP协议
规定网络地址的协议,叫做IP协议。它所定义的地址,就被称为IP地址。
互联网中每台计算机都会分配到一个IP地址,IP地址分为两部分,前半部分代表子网,后半部分代表组网中的主机。
通常观察IP地址即可确定两台电脑是否属于同一子网,更准确的方式是通过“子网掩码”,方法是将两个IP地址与子网掩码分别进行与运算,如果结果相同,就表明它们在同一个子网络中,否则就不是。
根据IP协议发送的数据,就叫做IP数据包。
"Head"部分包含IP地址,“Data”部门包含数据内容。
所以,以太网数据包变成了这样:
4.2 ARP协议
传输数据包必须同时知道IP地址和MAC地址,IP地址通常是已知的,怎么知道MAC地址呢?
分为两种情况:
第一种,发送者与接收者属同一子网。ARP协议发出一个数据包,其中包含它所要查询主机的IP地址,在对方的MAC地址这一栏,填的是FF:FF:FF:FF:FF:FF,表示这是一个"广播"地址。它所在子网络的每一台主机,都会收到这个数据包,从中取出IP地址,与自身的IP地址进行比较。如果两者相同,都做出回复,向对方报告自己的MAC地址,否则就丢弃这个包。
第二种,发送者与接收者属不同子网。只能把数据包传送到两个子网络连接处的"网关"(gateway),让网关去处理。
五、传输层
"传输层"的功能,就是建立"端口到端口"的通信。相比之下,"网络层"的功能是建立"主机到主机"的通信。只要确定主机和端口,我们就能实现程序之间的交流。
5.1 UDP协议
UDP协议是建立端口到端口通信最简单的协议。
“Head”部门包含发送端口和接收端口。
“Data”部分包含具体的内容。
所以以太网数据包就是这样:
5.2 TCP协议
UDP协议简单、易实现,但可靠性差,无法确定对方是否收到数据。
TCP协议可以认为是有确认机制的UDP协议,每发出一个数据包都要求确认。如果有一个数据包遗失,就收不到确认,发送方就知道有必要重发这个数据包。
TCP数据包和UDP数据包一样,都是内嵌在IP数据包的"数据"部分。
六、应用层
"应用层"的作用,就是规定应用程序的数据格式。
常见的应用层协议有:http(超文本传输协议)、https、DNS(域名系统协议)、FTP(文件传输协议)、Telnet(远程终端协议)、SMTP(简单邮件传送协议)、POP3(邮件读取协议)
因此,最终以太网数据包如下:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。