一、计算机网络体系结构
计算机网络体系结构是指计算机网络层次结构模型,它是各层的协议以及层次之间的端口的集合。关于计算机网络体系结构,一般有两种模型,分别为OSI七层参考模型和TCP/IP参考模型。(它们只是对网络结构的不同划分标准不同划分方法而已)。
这里我们只谈TCP/IP模型。
TCP/IP协议族按照层次由上到下,层层包装。
最上面的是应用层,这里面有http等我们熟悉的协议。
而第二层则是传输层,著名的TCP和UDP协议就在这个层次。
第三层是网络层,IP协议就在这里,它负责对数据加上IP地址和其他的数据以确定传输的目标。
第四层是数据链路层,这个层次为待传送的数据加入一个以太网协议头,并进行CRC编码,为最后的数据传输做准备。
这么我们简单粗糙的这样理解:这个网络体系结构就相当于人体结构,这4个层次就相当于人的“系统-器官-组织-细胞”的结构层次。
而网络进行一次数据传输就类似于人实现一个动作经过“神经系统-运动器官-相关组织-相关细胞”来实现,所以也是层层递进,从宏观到微观。
.
.
.
二、TCP连接
TCP是网络结构中传输层的一个协议。协议,简单理解就是某种规范,对数据的一种格式要求。
然而这里我们要谈论的重点不是协议对数据的格式规范(如下图),只作了解就好。这个规范相当于就是定义了“一种语言”,如果两个设备要进行TCP通信,就要遵守该协议的要求,使用相同的“语言”。
TCP连接的建立不是简单的一次连接就连上的,而是有一个“三次握手”的过程。
详情请参考另一位大佬的博文:TCP 详解,里面有对三次握手和四次分手的详细的通俗易懂的解释。
总结来说,TCP是一种协议,两个设备经过三次握手成功之后就建立了TCP连接,可以进行TCP通信,通信的“语言”必须符合TCP协议。对于esp8266的使用,知道这些就够了。
了解更多:
“TCP连接”究竟是什么意思?
TCP的三次握手与四次挥手(详解+动图)
什么是TCP/IP协议?
.
.
.
三、WIFI
WIFI有什么好讲的?
这里只补充一些名词概念就够了:
WIFI就是WIFI(/狗头),一个WIFI在空中所覆盖的范围叫做基本服务集BSS,提供WIFI信号的叫做无线接入点(AP,Access Point),而接收WIFI信号的叫做站点,或者移动站(STA,Station),WIFI接入点的标示叫做服务集标识符(SSID,Service Set Identifier),也就是我们通常所说的WIFI名。而每个AP也有一个地址,叫做基本服务集标识符(BSSID,Basic Service Set Identifier),也就是AP的Mac地址,用来区分不同的AP,比如同一个WIFI下连接了多个设备(手机啊、平板啊、笔记本啊),我们就可以通过BSSID来区分它们。
以上就是关于WIFI涉及到的一些可能会让接触esp8266的初学者一头雾水的名词。
.
.
.
四、IP地址&端口
1、IP地址
IP地址,就是给互联网上每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的32位的标识符。
其作用是,只有知道主机的IP地址,才能将消息发送给对应的主机。
表示方式为,IP地址 = {<网络号>, <主机号>}
可是,IP地址不是说是32位的标识符吗?为啥我们平时看见的都是类似于14.215.177.39之类的?
这就是“点分十进制”的表示方式:
了解更多:IP地址的基础知识
2、端口
这里讲的端口,指的是端口号。
以下是来自百度百科的定义:
所谓的端口,就好像是门牌号一样,客户端可以通过ip地址找到对应的服务器端,但是服务器端是有很多端口的,每个应用程序对应一个端口号,通过类似门牌号的端口号,客户端才能真正的访问到该服务器。为了对端口进行区分,将每个端口进行了编号,这就是端口号
也就是说,我们虽然能够通过ip地址进行主机和主机之间的通信,但是还不能实现进程和进程之间的通信。比如,我在电脑上通过QQ发送数据到好友的电脑,总不能把QQ发送的消息发到好友电脑里的微信里去了吧。所以要通过端口号来确定进程。
大概就这样。
.
.
.
五、TCP和UDP
emmm前面不是提到了吗怎么又在这里讲?
这里只简单的说明一下,前面说的TCP/IP不是单个协议,是一个计算机网络结构的模型,同时也是一个协议族,即一大堆协议的集合。
而这里提到的TCP和UDP,则是TCP/IP四层结构中传输层的两个协议。知道它是两个协议就好了。
.
.
.
六、客户端与服务器
TCP连接的建立采用客户服务器方式。主动发起连接建立的应用进程叫做客户端(client),而被动等待连接建立的应用进程叫做服务器(server)。
噗,就这样。
.
.
.
七、透传
什么是透传?透传即是透明传送,指传输方只负责将需要传送的数据传送到目的位置,同时保证传输的质量,当不对传输的数据内容进行处理。
比如,我发送一段数据{“现在的时间是 2019年11月11日 16:33:23 ,今天是星期一”},如果是透传,那么收到的数据就是原封不动的{“现在的时间是 2019年11月11日 16:33:23 ,今天是星期一”},而如果不是透传,可能会按照一定的规则对数据进行提取、修改,那么收到的数据可能就只能是{“2019 11 11 16 33 23 一”}。
但愿我讲明白了。