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

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 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给大家分享的内容,大家有收获的话可以分享下,想学习更多的话可以到微信公众号里找我,我等你哦。

相关文章
|
1月前
|
消息中间件 监控 数据管理
微服务架构:解析分布式系统的演进
微服务架构:解析分布式系统的演进
|
2月前
|
消息中间件 中间件 API
深入探讨微服务架构中的服务通信模式
随着微服务架构的普及,服务间的通信成为了系统设计的关键环节。本文将深入探讨微服务架构中的服务通信模式,包括同步通信和异步通信两大类,并对比其优缺点。我们还将介绍几种流行的通信技术,如REST、gRPC、消息队列等,并分析它们在实际应用中的适用场景。通过本文的阐述,读者将对微服务架构下的服务通信有一个全面而深刻的理解,为选择合适的通信模式提供指导。
|
7月前
|
存储 缓存 应用服务中间件
微服务架构间数据传输,我坚决反对用缓存!
微服务架构间数据传输,我坚决反对用缓存!
92 0
|
4月前
|
消息中间件 数据挖掘 Kafka
Kafka在微服务架构中的应用:实现高效通信与数据流动
微服务架构的兴起带来了分布式系统的复杂性,而Kafka作为一款强大的分布式消息系统,为微服务之间的通信和数据流动提供了理想的解决方案。本文将深入探讨Kafka在微服务架构中的应用,并通过丰富的示例代码,帮助大家更全面地理解和应用Kafka的强大功能。
|
6月前
|
安全 Java 编译器
使用 gRPC 构建高效可靠的微服务
在现代分布式系统中,构建高效可靠的微服务是一项关键任务。gRPC(Google Remote Procedure Call)提供了一种强大而灵活的方式来实现跨语言和跨平台的通信。本文将介绍 gRPC 的基本概念、架构以及其在构建微服务时的优势。
386 0
|
7月前
|
负载均衡 网络协议 数据可视化
架构解密从分布式到微服务:分布式系统的基石:TCP/IP
TCP/IP (Transmission Control Protocol/Internet Protocol,传输控制协议/互联网络协议)是Internet 的基本协议,简单地说,由底层的IP和TCP组成。TCP/IP的开发工作始于20世纪70年代,该协议是用于互联网的第一套协议。TCP/IP结合 DNS、路由协议等一系列相关协议,最终实现了网络之间任意两点间的数据通信问题。我们来看看在访问百度首页时,数据包是如何从计算机传送到百度的服务器上的。
|
7月前
|
JavaScript Go 数据格式
gRPC:微服务互通的桥梁
gRPC:微服务互通的桥梁
73 0
|
9月前
|
JSON 负载均衡 算法
分布式架构基石:RPC 理论篇
分布式架构基石:RPC 理论篇
148 0
|
11月前
|
消息中间件 存储 Kubernetes
「微服务架构」Kafka和Moskitto那个更适合微服务之间的通信?
「微服务架构」Kafka和Moskitto那个更适合微服务之间的通信?
|
存储 缓存 网络协议
架构解密从分布式到微服务:深入理解网络,NIO
我们知道,分布式系统的基础是网络。因此,网络编程是分布式软件工程师和架构师的必备技能之一,而且随着当前大数据和实时计算技术的兴起,高性能RPC架构与网络编程技术再次成为焦点