一文读懂TCP/IP网络分层模型

网络模型有国际标准化组织定义的OSI七层网络模型和实际使用的TCP/IP五层网络模型。本文从应用开发的角度介绍TCP/IP网络模型,帮助大家更好的理解。

  • 一、为什么要分层?

下图是一个简化版的典型的网络模型图。客户端发送的数据可以有很多条路径到达服务器。并且数据传输中经历的节点、路径是完全无法控制的。

如果某个节点损毁,客户端需要被及时通知到,并进行重传。而在现实网络中,传输失败是一定存在的。一个包含很大数据量的消息,重传的开销会很大,并且传输失败的概率也会更高,因此需要将数据进行分块传输。

因为需要重传、需要分块,因此需要分层来处理这些事务。因此网络体系分层的本质原因,就是网络的不稳定

  • 二、具体分层

TCP/IP从上到下分为应用层、传输层、网络层和数据链路层。

应用层协议有HTTP、DNS、FTP、SMTP等。它们就是和应用打交道。所接触的数据都是完整的。

这些应用层协议需要发送数据都有一个共同的需求:数据分块。因此我们将这个功能的功能提取出来,形成传输层。

传输层主要将应用层丢过来的数据进行分块传输。并在接收数据时,将这些分块的数据拼装成完整的包,提交给上层协议。

这一层主要有TCP和UDP两种协议。

TCP是面向连接的协议,它通过建立连接、重传机制、数据排序、流量控制等特性保证数据稳定的传输。

UDP是无连接的协议,比如直播、打游戏,在网络环境不好时,丢掉几帧数据,是可以接受的。它只要负责将数据分块发出去即可。

传输层根据实际业务的不同而分出这两种策略。但是这两种策略也有共同的功能----传输数据。将这个功能提取出来,形成网络层。

网络层的功能,只负责数据的收发。上层有数据下来就发,收到数据就交给上层。数据编号、拆分、组装一概不管。它所要做的就是路由、寻址的事情。

我们知道现实世界的网络是由不同的硬件设备:网线、路由器、终端等等组成的实体网络。数据链路层,主要处理这些实体设备的通讯协议。

经过上面的分析,理想网络下只需要应用层和数据链路层就可以完成网络通讯。正是因为网络是不稳定的,而引入了传输层和网络层。让我们的数据能够在不稳定的网络环境中,进行稳定的传输。

三、TCP 长连接

长连接就是长时间保持连接。我们可能暂时没有数据要发送,未来某一时刻要发送数据,避免重复建立连接产生开销,而保持TCP连接先不释放。

但是,运营商在发现TCP连接长时间没有发送数据时,会主动帮我们断掉,以释放资源。要保持长连接就定期发送一小段无意义的数据,让运营商认为数据传递还在发生。这种方式就叫“心跳”。这就是我们保持长连接的技术。

关于“心跳”发送频率的设定是一个非常复杂的问题。因为发送的太频繁会产生额外开销,而发送频率不够又会被运营商切断连接。这需要我们对运行商和网络架构都非常熟悉,让连接存活性和网络功耗达到平衡。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值