购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.2 TCP/IP

3.2.1 TCP/IP具体含义

由于历史原因,目前互联网使用的都是TCP/IP。该协议将网络分为5层。与OSI七层模型的比较如图3.2所示,我们可以看到TCP/IP把应用层、表示层、会话层合并为应用层,其他几层都差不多。

图3.2 TCP/IP

一般来说,目前TCP/IP是4层架构,但是在某些场合,会把物理层拆分成数据链路层和物理层,从而变成5层架构。

从字面上理解,可能会有人认为TCP/IP是指TCP和IP两种。实际上,TCP/IP更多地是指以IP进行通信时必须用到的协议群统称,包含IP、ICMP、TCP、UDP、FTP、HTTP等。有时我们也称为TCP/IP群,如图3.3所示。

图3.3 TCP/IP群

3.2.2 IP

IP(Internet Protocol)又称网际协议,它负责Internet上网络之间的通信,并规定了将数据从一个网络传输到另一个网络应遵循的规则,是TCP/IP的核心。

IP是在我们日常生活中最常见的协议,每个计算机都必须有一个IP地址才能连接上网络。目前IP又分为IPv4和IPv6两个版本。

1.IPv4

网际协议第4版(Internet Protocol version 4,IPv4)使用32位来表示计算机的IP地址。为了直观点,更多的时候是用4组数字来表示,每一组数字在0到255。例如:192.160.1.60。

网络中通信的主机都必须有一个唯一的IP地址,而网络数据包也是通过IP地址来实现数据准确地发送到目标主机。但是由于IPv4采用32位来表示IP地址,其最大的IP地址数量有40多亿个。在早期的网络中,主机数量比较少,IPv4可以满足网络需求。但是随着互联网的壮大,接入的设备越来越多,IPv4的地址数量已经不够分配了。2019年11月26日,负责英国、欧洲、中东和部分中亚地区互联网资源分配的欧洲网络协调中心宣布,全球所有43亿个IPv4地址已全部分配完毕,这意味着没有更多的IPv4地址可以分配给ISP(网络服务提供商)和其他大型网络基础设施提供商。

2.IPv6

作为IPv4的“继任者”,IPv6发展计划早在1994年就在IETF会议上被正式提出。相比IPv4,IPv6最显著的变化是地址长度由32位增长到了128位。假如地球表面(含陆地和水面)都覆盖着计算机,那IPv6允许每平方米拥有7乘10的23次方个IP地址。这也意味着,IPv6能为物联网的海量设备提供足够的IP地址支持。

IPv6地址的128位(16字节)可以写成8个16位的无符号整数,每个整数用4个十六进制位表示,这些数之间用冒号(:)分开,例如:

686E:8C64:FFFF:FFFF:0:1180:96A:FFFF

3.端口号

事实上端口号并不属于IP,但是通常端口号和IP地址是成对出现的。单纯讨论IP地址而不讨论端口号是没有实际意义的。

在网络中的主机拥有唯一的IP地址,但是一台计算机上可以同时提供很多个服务,如数据库服务、FTP服务、Web服务等,我们就通过端口号来区别相同计算机所提供的这些不同的服务,如常见的端口号21表示的是FTP服务,端口号23表示的是Telnet服务,端口号25指的是SMTP服务等。端口号一般习惯使用4位整数表示,在同一台计算机上端口号不能重复,否则就会产生端口号冲突这样的情况。

故而在网络通信中,我们不仅需要知道对方主机的IP地址,还需要知道对方提供服务的端口号。

3.2.3 TCP和UDP

传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。

用户数据报协议(UDP,User Datagram Protocol)是一种为应用程序提供无须建立连接就可以发送封装的IP数据包的协议。

TCP和UDP是网络通信协议传输层的两种重要协议,互为补充,通常只是用来实现网络数据传输的功能。它们位于IP层之上,并利用IP实现网络数据传输,同时为应用层的各种协议(HTTP、FTP等)提供服务。

1.TCP

TCP是一种面向广域网的通信协议,目的是在跨越多个网络通信时,为两个通信端点提供一条具有下列特点的通信方式:

(1)基于流的方式。

(2)面向连接。

(3)可靠通信方式。

(4)在网络状况不佳的时候尽量降低系统由于重传带来的带宽开销。

(5)通信连接维护是面向通信的两个端点的,而不考虑中间网段和节点。

如果希望通过网络传输的数据是可靠的,且发出去的数据能得到对方的应答,那么应该使用TCP传输。

TCP一般分服务器和客户端,通信流程如图3.4所示。

图3.4 TCP通信流程

2.UDP

UDP是一个无连接协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。

在发送端,UDP传送数据的速度仅仅受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。

UDP没有客户端和服务器的概念,两个节点之间通信也不需要建立连接,如图3.5所示。

3.TCP和UDP的比较

UDP和TCP的主要区别是两者在如何实现信息的可靠传递方面不同。

TCP中包含了专门的传递保证机制,当数据接收方收到发送方传来的信息时,会自动向发送方发出确认消息;发送方只有在接收到该确认消息之后才继续传送其他信息,否则将一直等待直到收到确认信息为止。

与TCP不同,UDP并不提供数据传送的保证机制。如果在从发送方到接收方的传递过程中出现数据包丢失,协议本身并不能做出任何检测或提示。因此,通常人们把UDP称为不可靠的传输协议。

图3.5 UDP通信流程

通常TCP应用得比较广泛,但是在一些实时性要求比较高的场合,例如视频通话之类,一般使用UDP。

同时,在物联网应用中,对网络带宽需求较小,而对实时性要求高,大部分应用无须维持连接,需要低功耗,因此更多地选择UDP。

3.2.4 HTTP

HTTP位于应用层,是一个简单的请求—响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息及得到什么样的响应。是用于从WWW服务器传输超文本到本地浏览器的传输协议。

HTTP是典型的CS通信模型,由客户端主动发起连接,向服务器请求XML或者JSON数据,目前在PC、手机、Pad等终端上应用广泛。但是HTTP并不适用于物联网,主要有三大弊端:

(1)由于必须由设备主动向服务器发送数据,所以难以主动向设备推送数据。对于频繁操控的场景难以满足需求。

(2)安全性不高。HTTP是明文传输,在一些安全性要求高的物联网场景并不适合。

(3)HTTP需要占用过多的资源,对于一些小型嵌入式设备而言,是难以实现HTTP的。

3.2.5 MQTT

MQTT全称为Message Queuing Telemetry Transport(消息队列遥测传输)是一种基于发布/订阅范式的二进制“轻量级”消息协议,由IB公司发布。针对网络受限和嵌入式设备而设计的一种数据传输协议。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通信协议,其在物联网、小型设备、移动应用等方面有较广泛的应用。MQTT模型如图3.6所示。

图3.6 MQTT发布订阅模型

其中,MQTT分为服务器和客户端两种角色。

1.MQTT客户端

发布其他客户端可能会订阅的信息。

订阅其他客户端发布的消息。

退订或删除应用程序的消息。

断开与服务器连接。

2.MQTT服务器

接受来自客户的网络连接。

接受客户发布的应用信息。

处理来自客户端的订阅和退订请求。

向订阅的客户转发应用程序消息。

3.2.6 MAC地址

MAC地址(英语:Media Access Control Address),直译为媒体存取控制地址,也称为局域网地址(LAN Address)、MAC位址、以太网地址(Ethernet Address)或物理地址(Physical Address),它是一个用来确认网络设备位置的地址。

IP地址位于网络层,而MAC地址位于数据链路层。每个网卡都必须有唯一的MAC地址。IP地址是基于逻辑的,比较灵活,不受硬件的限制,用户可以自由更改。而MAC地址是基于物理的,与网卡进行绑定,能够标识具体的网络节点。

如果在互联网通信中,仅仅使用IP地址来标识每个主机,就会出现IP地址被盗用的问题。由于IP地址只是逻辑上的标识,任何人都能随意修改,因此不能用来具体标识一个用户。而MAC地址则不然,它是固化在网卡里面的,除非盗取硬件即网卡。

在具体的通信过程中,ARP把MAC地址和IP地址一一对应。当有发送给本地局域网内一台主机的数据包时,交换机首先将数据包接收下来,然后把数据包中的IP地址按照交换表中的对应关系映射成MAC地址,然后将数据包转发到对应的MAC地址的主机上去。这样一来,即使某台主机盗用了这个IP地址,但由于此主机没有对应的MAC地址,因此也不能收到数据包,发送过程和接收过程类似。

3.2.7 NAT

NAT全称是Network Address Translation,又叫网络地址转换。

我们前面讲了,IPv4大约有43亿个IP地址,而每个主机想要在网络上进行通信就必须有唯一的IP地址。而目前接入互联网的主机数量已经远远超过43亿个,这其中就是使用NAT技术解决IP地址不够用的问题。

NAT的实现原理是把整个互联网划分为公网和局域网两部分。公网上的每一台主机都分配有唯一的IP地址,而局域网内的主机想要访问互联网,就必须借用路由器进行地址转换,把局域网的IP地址转换成公网IP地址,如图3.7所示。

图3.7 NAT网络模型

因此,我们只需要保证公网的IP地址是唯一的,每个局域网内的IP地址也是唯一的即可。而不同局域网之间则可以使用相同的IP地址而不互相干扰。例如主机A和主机B的IP地址都是192.168.1.10。但是由于它们处于各自的局域网中,所以通信的时候不会产生冲突。

但是NAT也会带来一些问题,那就是不同局域网内的主机没办法直接通信,必须借由路由器进行转发。 NB+e72x2/QyBSgHj9jQkGVe1X5uIxcdd5YGZT+4GWD+4VBd5oT3bUg+uifi2K0Zc

点击中间区域
呼出菜单
上一章
目录
下一章
×