参考太极创客的课程资料添加链接描述
TCP/IP协议簇
在网络系统中,为了保证通信设备之间能正确地进行通信,必须使用一种双方都能够理解的语言,这种语言被称为“协议”。
TCP/IP协议簇是Internet的基础,也是当今最流行的组网形式。TCP/IP是一组协议的代名词。
TCP/IP协议被划分为4层,分别是:
ESP8266三种工作模式(链路层)
链路层的主要作用是实现设备之间的物理链接。举例来说,我们日常使用的WiFi就是链路层的一种。
模式1 – 无线终端模式(Wireless Station)
如下图所示,ESP8266可通过WiFi连接无线路由器。这与用您的手机通过WiFi连接无线路由器的模式相同。
模式2 – 接入点模式(Access Point, 也称 AP)
ESP8266也可以建立WiFi网络供其它设备连接。当ESP8266以此模式运行时,我们可以使用手机搜索ESP8266所发出的WiFi网络并进行连接。
模式3 – 混合模式(Wireless Station + AP)
所谓混合模式即以上两种模式的混合。
网络层
IP地址
举例来说,我们有一个手机,一台电脑和一个NodeMCU开发板。如下图所示,现在我们将这三台设备同时连接到家中的WiFi路由器。家中的WiFi路由器会通过它内置的DHCP服务器功能为这三台设备分配一个独立的IP地址。假设我们的NodeMCU IP地址是192.168.0.2,手机是192.168.0.3,电脑是192.168.0.4。到这里,我们的手机,电脑和NodeMCU就可以使用各自的IP地址彼此收发数据了。
子网掩码(Subnet Mask)
与网络设备相同,网络本身也有自己的地址。
怎么看一个IP地址的子网地址是多少呢,要看其子网掩码对应为1的部分,例如IP地址为192.168.0.2,子网掩码为255.255.255.0,转为二进制数为11111111.11111111.11111111.00000000,可以看到子网掩码二进制数对应为1的部分属于子网地址,所以结合ip地址和子网掩码,可以得出,这个ip地址的子网地址为192.168.0,2是设备序号。
MAC地址和ARP协议
网络设备间要想实现通讯,设备之间不光要知道彼此的IP地址,还要知道设备的MAC地址(也叫MAC码)。
esp8266要发送数据给网络中的手机,不仅要知道ip地址,还要知道mac地址,刚连入wifi,手机和esp8266互相是不知道对方的mac地址的,所以,一开始esp8266给手机发送数据时,esp8266会向网络中的所有设备发送广播,这条广播信息的内容大概是这样的。“各位网络中的兄弟姐妹,我是住在IP地址192.168.0.2的设备。我的MAC码是AB-CD。我现在要发送数据给住在IP地址192.168.0.3的设备。请192.168.0.3地址的设备告知你的MAC码。” (注意:现实中的MAC码肯定不是AB-CD这 4个字母构成的。这里为了便于您的理解而将MAC地址进行了简化。)
如果手机听到了这条广播就会回复一条信息给ESP8266,大概的信息是这样的:“你好!我是住在192.168.0.3的设备。我的MAC码是EF-GH。”发送这条信息的同时,手机也会把ESP8266所拥有的IP地址以及MAC码记录下来,以备后用。
到这里,ESP8266和手机就彼此知道了对方的IP地址和MAC码了。接下来他们就可以愉快的网络通(Liao)讯(Tian)了。这种让两台完全不认识彼此的设备获取到对方IP和MAC地址的协议就是ARP了。
具体可以看看这篇文章:添加链接描述
传输层
TCP协议
TCP协议可以更好的保证数据传输的准确性,但是传输速度比UDP协议而言要慢一些。TCP协议的特点是可以保证所有数据都能被接收端接收,数据的传输顺序也不会被打乱,而且如有数据损坏则重发受损数据。基于以上功能特点,TCP通常用于电子邮件及文件上传等。
UDP协议
UDP协议并不能保证所有数据都被接收端所接受。一旦出现数据受损的情况,UDP协议将会抛弃受损的数据。这些数据一旦被抛弃将会永久性的消失,发送端不会因为数据受损而重新发送。因此UDP协议远不如TCP协议可靠。但是既然是这样,为何还有人会选择UDP协议呢?这是因为UDP比TCP速度快。因此UDP协议通常用于网络游戏以及语音聊天或视频聊天应用。