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

本文涉及的产品
云解析 DNS,旗舰版 1个月
云解析DNS,个人版 1个月
全局流量管理 GTM,标准版 1个月
简介: 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服务器的信息,如下所示。

image

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

image

当浏览器获知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。

image

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

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

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

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

相关文章
|
1天前
|
安全 Java 应用服务中间件
全网最新架构实战文档:高并发+分布式+微服务+SpringBoot+Nginx
关于一线互联网大厂网站的一些特点:用户多,分布广泛、大流量,高并发、海量数据,服务高可用、安全环境恶劣,易受网络攻击、功能多,变更快,频繁发布、从小到大,渐进发展、以用户为中心。
|
3天前
|
前端开发 Java API
深度|低代码开发平台和微服务架构的优势与挑战
低代码开发平台和微服务架构是当前软件开发领域的两个热门话题。它们都是为了更高效、更灵活地构建和开发应用程序而出现的解决方案。本文将以一款基于微服务架构的OneCode引擎为案例来探讨低代码开发平台和微服务架构的优势和挑战。
|
3天前
|
负载均衡 容灾 应用服务中间件
微服务OR单体架构
微服务OR单体架构 争议
|
4天前
|
负载均衡 Dubbo 应用服务中间件
阿里微服务架构到底多牛逼:深入解析Apache Dubbo与实战
在Apache Dubbo (以下简称Dubbo)重新开源之前,Dubbo已经被很多公司广泛用于生产环境并获得了良好的反馈,很多公司内部也会建立私有分支自己维护,其中Dubbox 就是基于Dubbo分支进行扩展并二次维护的。重新开源后,社区维护的Dubbo版本进行了大量“bug fix" .和特性支持,收到了大量Dubbo用户的支持和参与。编写本书的想法是在开源后提出来的,因此本书取名《深入理解Apache Dubbo与实战》。
|
4天前
|
运维 架构师 Java
T3架构师耗时4个月肝出一份PDF,带你立足实战落地微服务架构
目前微服务的现状是概念多于实践,管理和架构人员往往不知道如何落地微服务,《微服务架构实战》从软件工程的角度切入,融入了作者多年的管理及架构经验,内容完全基于实际经验所得,直击痛处。通过阅读本书,开发人员能够实现微服务的快速落地。
|
5天前
|
运维 Cloud Native Serverless
MSE Serverless 正式商用,构建低成本高弹性的微服务架构
MSE Serverless 正式商用,构建低成本高弹性的微服务架构
|
7天前
|
监控 安全 数据可视化
智慧工地云平台,微服务架构,java源码
智慧工地云平台,微服务架构,java源码
29 0
|
8天前
|
监控 安全 数据可视化
SaaS化大型微服务架构智慧工地云平台源码
SaaS化大型微服务架构智慧工地云平台源码
22 0
|
8天前
|
监控 安全 Java
【Spring Cloud 】基于微服务架构的智慧工地监管平台源码带APP
【Spring Cloud 】基于微服务架构的智慧工地监管平台源码带APP
31 0
|
8天前
|
Kubernetes Java 微服务
Spring Boot与Kubernetes结合:构建高可靠、高性能的微服务架构
Spring Boot与Kubernetes结合:构建高可靠、高性能的微服务架构
29 0
推荐文章
更多