【物联网】基础篇 互联网协议学习

大家好,我是皮皮猫吖。
每文一言: 一棵树的树冠越是向往高处的太阳,它的根越是得深入黑暗的地底。


本篇文章:

学习物联网知识,我们需要学习一些关于互联网的知识。本篇文章主要是互联网的学习,为后期学习物联网打下基础。跟随皮皮猫吖的脚步,进入互联网知识的学习。

正文如下:

一、互联网协议:

协议: 网络设备之间进行通讯的语言。
互联网协议: 在互联网上进行的通讯叫做互联网协议。
互联网协议也可以说是TCP/IP协议。
TCP/IP协议被划分为四层:
【物联网】基础篇 互联网协议学习

二、链路层(Ethernet,WiFi…):

链路层主要的作用:
实现设备之间的物理链接。(可联网的设备依靠某种方式连入网络网)
例子:
WiFi就是链路层协议的一种。
WiFi让我们的手机和互联网连接到了一起。
重要知识:
ESP8266通过WiFi联网有三种工作方式:

1)接入点模式
【物联网】基础篇 互联网协议学习
ESP8266可以构建一个WiFi网络,手机、PC可以通过WiFi名,密码连接到ESP8266创建的网络中,此时手机和PC连接着同一个网络,可以实现通信。此时的网路是一个局域网

2)无线终端模式:
【物联网】基础篇 互联网协议学习
ESP8266可以像手机一样,可以连接家里面的WiFi,然后就连上网络了,可以访问互联网,此时的ESP8266工作模式是无线终端模式。

3)混合模式:
【物联网】基础篇 互联网协议学习
混合模式是接入点模式和无线终端模式混合进行的。

三、网络层(IP)

1)IP地址
尽管设备可以通过链路层联网,但是光有链路层还无法实现设备之间的数据通讯。因为网络设备没有明确的标识。网络设备无从知晓要向谁传输数据,也无法确定从何处获取数据。

通俗的例子:
网上购物,我们需要提供给商家我们的收货地址,商家在快递单上填写收货地址,快递发送到我们提供的地址上。同时,如果我们想要退货的话,我们需要通过商家拿到退货地址,快递帮我们寄到指定的地址。人与人之间的交流需要依靠地址,那么互联网中设备之间的通讯也是需要地址的。此时的地址就是IP地址。

所以,每一台网络设备都有独立的地址,数据在这些独立的地址之间进行传输。网络设备的地址是什么?就是IP地址。

网络层的作用就是通过IP协议为互联网提供IP地址。

有了IP地址还不够,为了确保网络中的IP地址不重复,需要 DHCP服务器来实现IP地址分配

每个设备拥有了独立的IP地址之后,设备之间就可以实现通信了。

2)IP协议的版本:IPv4,IPv6
IPv6是IPv4的升级版本,目前IPv4地址已经分配完了,所以开始实行IPv6版本的IP协议。

但是现在大多数的网络系统还是IPv4,这里的话,我主要介绍下IPv4版本的IP地址。(我只会IPv4,IPv6我还没有学习,以后会有)

IPv4版本的IP地址由4个数字组成,如192.168.0.100这个IP地址由两部分组成。前三个数字(192.168.0)是设备连接的本地局域网(路由器构建的局域网)地址。最后一个数字100是该设备在局域网中的地址编号,是路由器默认分配的。

例子:
一个手机,一台电脑和一个NodeMCU开发板。现在将这三台设备同时连接到家中的WiFi路由器。家中的WiFi路由器会通过它内置的DHCP服务器功能为这三台设备各自分配一个独立的IP地址。假设我们的NodeMCU IP地址是192.168.0.2,手机是192.168.0.3,电脑是192.168.0.4。到这里,我们的手机,电脑和NodeMCU就可以使用各自的IP地址彼此收发数据了。
【物联网】基础篇 互联网协议学习
3)如何查看自己电脑的IP地址:

  1. 按下键盘上面的win+R,出现下图,点击确定
    【物联网】基础篇 互联网协议学习
  2. 输入:ipconfig,出现下图:
    【物联网】基础篇 互联网协议学习

4)默认网关:

通俗的例子:
当我们需要出国的时候,我们一定需要拿的是护照,因为我们出国的时候需要经过海关,在海关的时候,需要查证护照,海关是连接国与国之间的关口。

类比到网络中,网关就是连接网络与网络之间的关口。
此时,家中的路由器就是一个网关:负责家里面的网络(自己构建的局域网)与外面网络之间的通讯。
【物联网】基础篇 互联网协议学习
拓展:

上图,此时的网络只是路由器构建的一个局域网。并且,此时的设备是无法对互联网进行访问的。我们需要把路由器接入到中国移动服务器(这只是一种方式)。中国移动服务器连接的是互联网,这样我们的设备才可以和互联网进行通讯。

注意:

路由器接入中国移动服务器,中间是需要经过很多服务器的,这里只是一个简图,设备联网远比这个复杂的多。(大家以后慢慢会懂)
【物联网】基础篇 互联网协议学习
5)子网掩码

与网络设备相同,网络本身也有自己的地址。

如果我们将网络与网络叠加就可以编织成一张无限大的网,而组成这张大网的每一个小网都可以被称作子网络。通常我们家中的网络是不需要多个子网络的。但是对于大型企业或工业项目,由于联网设备数量很大,一个子网无法满足需求。这时我们就可以将多个网络连接在一起形成一张巨型网络。那么当这些子网组成“大网”后,为了便于网络管理,我们为每一个组成大网的子网络都分配一个独立的地址,这个地址就是子网地址。

【物联网】基础篇 互联网协议学习

图中,三台设备的IP地址有一个共同点。它们IP地址的前三位都是相同的,即192.168.0。这就是子网地址。剩余的一位数字是不相同的,最后一位数字就是当前设备在该网络中的独立序号。

是不是前三位就是子网地址呢?而最后一位是设备号呢?不是的。

问题:
如何知道哪一个是子网地址,哪一个是设备号呢?

求子网地址和设备号需要用到子网掩码。

上述实例中,我们的IP地址的前三位是子网地址,这是因为我们对网络设备进行设置的时候,预先设置好子网掩码是255.255.255.0。这个子网掩码也是4个数字组成的。

问题: 如何根据IP地址和子网掩码得到子网地址和设备序号呢?
【物联网】基础篇 互联网协议学习
解决办法:
IP地址和子网掩码进行逐位进行或操作,得到的就是子网地址
根据子网地址和IP地址,就可以得到设备序号。

这样就可以清楚的分辨IP地址,子网地址,子网掩码了。

6)MAC地址和ARP
网络设备之间要是实现通讯,设备之间不光要知道彼此的IP地址,还要知道设备的MAC地址。

网络中的每一个设备都有一个独立的MAC地址。这个MAC地址是固化在网络设备硬件中的。我们可以通过系统设置或工具软件改变MAC地址,但这也仅仅是临时的修改,而不是真正将设备硬件的MAC地址进行永久性的更改。如果想永久性的修改MAC地址,那就要借助硬件产商所提供的工具软件了。

例子:
【物联网】基础篇 互联网协议学习
如果ESP8266想要发送数据给网络中的手机。首先需要知道手机的IP地址,还需要知道手机的MAC地址。

问题:
ESP8266、手机、PC都是第一次连入WiFi,从未互相通讯,不知道彼此的MAC地址?

解决办法:

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码了。接下来他们就可以愉快的网络通讯了。这种让两台完全不认识彼此的设备获取到对方IP和MAC地址的协议就是ARP了。

四、传输层(TCP,UDP)

TCP协议:

特点:

  • 稳定,传输速度相对较慢
  • 保证所有的数据都能被接收端接收
  • 数据的传输顺序不会被打乱
  • 传输数据如有损坏则重发受损数据

TCP协议应用领域:
电子邮件、文件传输

UDP协议
特点:

  • 快,相对于TCP快一点
  • 不保证所有数据都能被接收端接收
  • 数据一旦受损,UDP协议将抛弃受损数据
  • 有数据损坏不会重发受损数据

UDP协议应用领域
在线语音/视频、网游

五、应用层(HTTP,FTP…)

应用层有很多的协议,最常见的是HTTP协议。它常被用来传输网页数据。

HTTP协议:
HTTP协议由请求响应构成。

HTTP请求:

当你在浏览器输入:www.****.com这一网址并按下回车,这时候浏览器会把这个操作转换成一个HTTP请求。

这个HTTP请求主要分为两大部分:一部分是请求头,一部分是请求体。 此次只关注请求头的内容,请求体的内容不过多赘述,如果想要学习请求体的请自行查阅资料。

这是请求行和请求头的内容:
【物联网】基础篇 互联网协议学习
请看请求行的内容:
这个请求是:能否获得服务器信息:
GET / HTTP/1.1
GET: 读取请求(读取服务器中的某些信息)
/: 请求的内容是网站的首页信息
HTTP/1.1: 协议的版本是1.1
请看请求头的内容:
HOST:www.****.com: 请求的是www.****.com网站的主机

这个请求是:能否向服务器发送信息
POST / HTTP/1.1
HOST:www.baidu.com
解释: 向www.baidu.com发送信息,使用的HTTP协议是1.1版本

HTTP1.0定义了三种请求方法:
GET,POST,HEAD
HTTP1.1新增了物种请求方法:
OPTIONS,PUT,DELETE,TRACE,CONNECT

【物联网】基础篇 互联网协议学习
分别是:
操作系统版本
网页支持的编程语言
浏览器支持的语言:中文
浏览器支持的压缩信息编码格式
当服务器发送信息之后,是否和电脑继续保持连接,此处是继续保持连接

HTTP响应:
【物联网】基础篇 互联网协议学习
状态行:
HTTP/1.1 200 OK
HTTP/1.1: 响应的HTTP协议版本为1.1
HTTP几种常见服务器响应状态码:

100~199: 成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程。

200~299: 成功接收请求并已完成整个处理过程。常用200

300~399: 完成请求,客户需进一步细化请求。

400~499: 客户端的请求有错误,常用404和403(403的含义是权限不够,服务器拒绝访问。)

500~599: 服务器端出现错误,常用500

这里的200表示的是:服务器找到了HTTP请求的网页

响应头:

第一行:服务器的响应时间,时间的格式是:GMT标准的时间,不是背景时间
【物联网】基础篇 互联网协议学习
通过这一行响应头的信息。我们的浏览器就会知道,在这一个响应的响应体部分都是HTML网页代码。浏览器会做好准备,将网页代码编译成我们可以读懂的格式呈现在浏览器中。

通俗的例子:

假设某一个响应头中“Content-Type” 类型是”image/png”。这就意味着该响应体中的信息是一个png格式的图片,那么浏览器也就会按照png的解码方式将图片呈现在我们的面前。

六、DNS(域名系统)

当我们使用浏览器访问某一个网站时,实际上我们是通过浏览器向网站服务器发送HTTP请求。然而网站服务器的IP地址很难记忆,为了解决IP地址不好记这一问题,DNS派上了用场。

通俗化解释:
我们可以把DNS看作是一个巨型电话本。电话本中的联系人一栏就是网站的域名,而电话本中的电话号码一栏则是这些网站的IP地址。有了DNS我们就可以使用简单易记的域名来访问网站了。

例子:
我们用****网站来举例吧,每当我们在浏览器中输入域名www.****.com并按下回车后,这时浏览器首先会向DNS服务器发送请求,请求的内容大致如下:“亲爱的DNS服务器,菜鸡皮皮猫吖主人想访问一个域名是www.****.com的网站。麻烦您把这个域名的网站服务器IP地址告诉我好吗?” DNS服务器在接收到这一请求后,会做出以下应答:“亲爱的浏览器,您要的网站服务器ip地址是47.95.164.112。” 浏览器在接收到这一IP地址后,就开始向这个IP地址所对应的网站服务器正式发出HTTP GET请求了。

如图:
【物联网】基础篇 互联网协议学习


参考:
http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/internet-basics/

完结,撒花…

这次的算是技术文档了,是参考下面的网站里面的大佬总结的,其中也有自己的理解。皮皮猫技术有限,无法自己写出如此高质量的技术文章。仍要继续加油,持续更新物联网知识中…

作者:皮皮猫吖