问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

分布式系统中的通讯协议:TCP/IP与UDP/IP详解

创作时间:
作者:
@小白创作中心

分布式系统中的通讯协议:TCP/IP与UDP/IP详解

引用
CSDN
1.
https://blog.csdn.net/weixin_60669486/article/details/146144365

在分布式系统中,通讯协议是其核心组成部分。本文将深入探讨TCP/IP和UDP/IP通信协议,以及如何基于Java实现系统通讯。同时,还将介绍TCP流量整形、多任务处理优化、NIO概念以及组播协议等关键技术。

从集中式架构到分布式架构

分布式架构的核心在于分层设计,每一层都可能包含特定领域的服务。在分布式架构中,服务层之间需要进行频繁的通讯,这要求我们使用合适的通讯协议来确保数据的准确传输。

任务目标

在分布式系统中,远程通信是必不可少的。我们需要了解不同类型的数据传输方式,包括字节流、字节数组和Java对象。同时,还需要掌握两种主要的协议类型:TCP/IP协议和UDP/IP协议。

网络领域的基础知识

协议类型

  • TCP/UDP/multicast
  • IO(BIO、NIO、AIO)
  • Socket
  • NIO(Netty/Mina)
  • 序列化和反序列化

HTTP请求在网络中的传输过程

基于OSI的七层网络模型

  • 应用层
  • 表示层
  • 会话层
  • 传输层
  • 网络层
  • 数据链路层
  • 物理层

TCP/IP的四层概念模型

  • 网络接口层
  • 网络层
  • 传输层
  • 应用层

在网络通信中,数据包需要经过多个层次的封装和解封装。例如,TCP头用于标识协议,IP头用于标识目标地址,MAC头用于标识目标网卡。这些信息最终会被转换为字节流进行传输。

IP协议

IP协议提供了一组数据报文服务,每组服务都由网络统一处理和分发。IP头包含目的地址和源地址,但IP协议本身是不可靠的,可能会出现数据丢失、重复或无序的情况。

TCP与UDP协议

TCP可靠协议

TCP协议能够检测和恢复IP层提供的主机和主机通讯中可能发生的报文丢失、重复和错误的情况。它提供了可靠的字节流通道,确保数据的完整性和顺序性。

UDP不可靠协议

UDP协议不会对数据进行任何修复或重传,它提供了一个基于IP之上的尽力而为的数据报文服务。UDP适用于对实时性要求较高但对数据完整性要求不高的场景。

深入分析TCP/IP

DNS解析

DNS解析将域名转换为IP地址,然后通过网关进行数据传输。这个过程类似于打电话时的拨号过程。

三次握手

TCP通过三次握手建立一个可靠的连接。客户端发送SYN包,服务器回应SYN+ACK包,客户端最后发送ACK包确认连接建立。

四次挥手

TCP断开连接时需要进行四次挥手。客户端发送FIN包请求关闭,服务器发送ACK确认收到,服务器处理完所有数据后发送FIN包,客户端最后发送ACK确认关闭。

TCP流量控制

为了防止网络拥塞,TCP引入了滑动窗口机制。发送方根据接收方的缓冲区大小动态调整窗口大小,确保数据不会丢失。

使用TCP协议进行通讯

在现代编程语言中,TCP和UDP都是基于socket概念实现的。socket可以看作是一个抽象层,应用程序通过它来发送和接收消息。

BIO与NIO

BIO阻塞

BIO是一种同步阻塞I/O模型,每个客户端请求都会分配一个线程。在数据传输过程中,如果缓冲区被占用,会导致线程阻塞。

NIO非阻塞

NIO(New IO)是一种非阻塞I/O模型,通过事件机制实现解耦。服务端有一个多路复用器,可以轮询多个channel,当某个channel可读或可写时,就会触发相应的事件。

组播协议

单播协议

TCP和UDP都是基于点对点的通讯,可以称为单播协议。

广播

网络中的所有主机都可以收到一份数据副本。

多播

消息只发送给一个多播地址,只有订阅了这个地址的主机才能收到数据。

总结

分布式系统中的通讯协议是确保系统正常运行的关键。通过理解TCP/IP和UDP/IP协议,以及相关的IO模型和组播协议,我们可以更好地设计和优化分布式系统。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号