架构解密从分布式到微服务:分布式系统的基石:TCP/IP

简介: TCP/IP (Transmission Control Protocol/Internet Protocol,传输控制协议/互联网络协议)是Internet 的基本协议,简单地说,由底层的IP和TCP组成。TCP/IP的开发工作始于20世纪70年代,该协议是用于互联网的第一套协议。TCP/IP结合 DNS、路由协议等一系列相关协议,最终实现了网络之间任意两点间的数据通信问题。我们来看看在访问百度首页时,数据包是如何从计算机传送到百度的服务器上的。

分布式系统的基石:TCP/IP

TCP/IP (Transmission Control Protocol/Internet Protocol,传输控制协议/互联网络协议)是Internet 的基本协议,简单地说,由底层的IP和TCP组成。TCP/IP的开发工作始于20世纪70年代,该协议是用于互联网的第一套协议。TCP/IP结合 DNS、路由协议等一系列相关协议,最终实现了网络之间任意两点间的数据通信问题。我们来看看在访问百度首页时,数据包是如何从计算机传送到百度的服务器上的。

在命令行中运行 ipconfig/all,查看到当前计算机配置的TCP/IP参数,可以看到默认网关和DNS服务器的信息,如下所示。

在浏览器中输入http://baidu.com,浏览器会发现URL的主机部分有一个域名(domain name),就查找我们的本机配置的 DNS服务器16.110.135.52,用UDP向 DNS服务器发送DNS查询命令,DNS 服务器在获取查询命令后从数据库中查询该域名所对应的主机的IP地址。我们可以通过在命令行中运行nslookup来完成同样的查询结果。下图解释了目前依然被广泛使用的基于DNS的负载均衡机制的原理。

当浏览器获知220.181.111.85是 baidu.com的IP地址时,就向这个地址的80端口发起TCP连接,由于220.181.111.85这个地址不是计算机所在的局域网,而是广域网的一个地址,所以此时,另外一个重要概念“路由”产生了。互联网是多个相互隔离的小网络无限延伸而组成的一个大网,路由器负责将多个网络连接,并相互交换路由表信息来确定一个IP报文要经过哪个路由器的端口发出到另外一个互联的子网。为了防止一个数据包在转发过程中形成死循环,IP包中的TTL的字段每经过路由器转发一次就会减一,当TTL为零时被丢弃,认为网络不可达,一般默认最大跳数为30。在通常情况下,只有网络管理员和路由器知道一个报文应该被转发给哪一个互联的下一个路由器,但在网络产生问题以后,我们需要追踪是哪里出了问题,此时,tracert就成了排查此问题的重要工具。

tracert利用ICMP来确定一个IP报文到达目标地址所经过的路由器节点,程序发出的前3个数据包的TTL值是1,之后3个是2,依此类推,便得到一连串数据包路径,路径上的每一个IP地址都是一个路由器的IP。

从上图来看,数据包首先被发往网关(本机发现百度的IP地址不是本机所在局域网的网络,就将报文发给网关处理),网关之后继续进行转发。但不幸的是遍布网络的很多防火墙、路由器等设备屏蔽了ICMP报文,于是我们看到7以后的跳数都是未知的。另外,被广泛使用的 Ping命令也是采用ICMP来实现的,因此,Ping 不通主机不代表主机不是存活的,但大多数时候,两者还是等价的,特别是在企业内部的网络中。

通过上面的解释,我们初步明白了IP报文的路由问题,接下来著名的Socket出场了。Socket是一个P地址与端口的组合,代表计算机上的一个远程通信接口,本地的一个Socket与远程的一个Socket建立连接的过程,就是著名的3次握手过程,一旦连接建立,数据流就可以穿越网络并进行双向通信了。以上面的例子来说,百度的Web服务器有一个进程绑定在80端口的Socket 上,用来接收我们发起的HTTP请求并将请求的响应转换为HTML文本流返回给浏览器,浏览器则通过解析HTML标签,完成可视化的页面展现,最终我们看到百度搜索的主页。但实际上,这个过程还是极为复杂的。

本文给大家讲解的内容是架构解密从分布式到微服务:深入理解网络,分布式系统的基石: TCP/IP

本文就是愿天堂没有BUG给大家分享的内容,大家有收获的话可以分享下,想学习更多的话可以到微信公众号里找我,我等你哦。

相关文章
|
9天前
|
关系型数据库 Apache 微服务
《聊聊分布式》分布式系统基石:深入理解CAP理论及其工程实践
CAP理论指出分布式系统中一致性、可用性、分区容错性三者不可兼得,必须根据业务需求进行权衡。实际应用中,不同场景选择不同策略:金融系统重一致(CP),社交应用重可用(AP),内网系统可选CA。现代架构更趋向动态调整与混合策略,灵活应对复杂需求。
|
1月前
|
存储 安全 Java
管理 Spring 微服务中的分布式会话
在微服务架构中,管理分布式会话是确保用户体验一致性和系统可扩展性的关键挑战。本文探讨了在 Spring 框架下实现分布式会话管理的多种方法,包括集中式会话存储和客户端会话存储(如 Cookie),并分析了它们的优缺点。同时,文章还涵盖了与分布式会话相关的安全考虑,如数据加密、令牌验证、安全 Cookie 政策以及服务间身份验证。此外,文中强调了分布式会话在提升系统可扩展性、增强可用性、实现数据一致性及优化资源利用方面的显著优势。通过合理选择会话管理策略,结合 Spring 提供的强大工具,开发人员可以在保证系统鲁棒性的同时,提供无缝的用户体验。
|
2月前
|
监控 Java API
Spring Boot 3.2 结合 Spring Cloud 微服务架构实操指南 现代分布式应用系统构建实战教程
Spring Boot 3.2 + Spring Cloud 2023.0 微服务架构实践摘要 本文基于Spring Boot 3.2.5和Spring Cloud 2023.0.1最新稳定版本,演示现代微服务架构的构建过程。主要内容包括: 技术栈选择:采用Spring Cloud Netflix Eureka 4.1.0作为服务注册中心,Resilience4j 2.1.0替代Hystrix实现熔断机制,配合OpenFeign和Gateway等组件。 核心实操步骤: 搭建Eureka注册中心服务 构建商品
487 3
|
3月前
|
人工智能 Kubernetes 数据可视化
Kubernetes下的分布式采集系统设计与实战:趋势监测失效引发的架构进化
本文回顾了一次关键词监测任务在容器集群中失效的全过程,分析了中转IP复用、调度节奏和异常处理等隐性风险,并提出通过解耦架构、动态IP分发和行为模拟优化采集策略,最终实现稳定高效的数据抓取与分析。
Kubernetes下的分布式采集系统设计与实战:趋势监测失效引发的架构进化
|
9天前
|
缓存 Cloud Native 中间件
《聊聊分布式》从单体到分布式:电商系统架构演进之路
本文系统阐述了电商平台从单体到分布式架构的演进历程,剖析了单体架构的局限性与分布式架构的优势,结合淘宝、京东等真实案例,深入探讨了服务拆分、数据库分片、中间件体系等关键技术实践,并总结了渐进式迁移策略与核心经验,为大型应用架构升级提供了全面参考。
|
6天前
|
消息中间件 运维 监控
《聊聊分布式》BASE理论 分布式系统可用性与一致性的工程平衡艺术
BASE理论是对CAP定理中可用性与分区容错性的实践延伸,通过“基本可用、软状态、最终一致性”三大核心,解决分布式系统中ACID模型的性能瓶颈。它以业务为导向,在保证系统高可用的同时,合理放宽强一致性要求,并借助补偿机制、消息队列等技术实现数据最终一致,广泛应用于电商、社交、外卖等大规模互联网场景。
|
9天前
|
算法 NoSQL 关系型数据库
《聊聊分布式》分布式系统核心概念
分布式系统由多节点协同工作,突破单机瓶颈,提升可用性与扩展性。CAP定理指出一致性、可用性、分区容错性三者不可兼得,BASE理论通过基本可用、软状态、最终一致性实现工程平衡,共识算法如Raft保障数据一致与系统可靠。
|
9天前
|
负载均衡 Java API
《深入理解Spring》Spring Cloud 构建分布式系统的微服务全家桶
Spring Cloud为微服务架构提供一站式解决方案,涵盖服务注册、配置管理、负载均衡、熔断限流等核心功能,助力开发者构建高可用、易扩展的分布式系统,并持续向云原生演进。
|
24天前
|
存储 NoSQL 前端开发
【赵渝强老师】MongoDB的分布式存储架构
MongoDB分片通过将数据分布到多台服务器,实现海量数据的高效存储与读写。其架构包含路由、配置服务器和分片服务器,支持水平扩展,结合复制集保障高可用性,适用于大规模生产环境。
161 1

热门文章

最新文章