在第 1 章内容的讲解中我们也已经提到,在对一个分布式系统进行架构设计的过程中,往往会在系统的可用性和数据一致性之间进行反复的权衡,于是就产生了一系列的一致性协议。
为了解决分布式一致性问题,在长期的探索研究过程中,涌现出了一大批经典的一致性协议和算法,其中最著名的就是二阶段提交协议、三阶段提交协议和Paxos算法了。
本章将着重向读者介绍二阶段和三阶段提交协议的设计与算法实现流程,指出它们各自的优缺点,同时重点介绍Paxos算法。
在第 1 章内容的讲解中我们也已经提到,在对一个分布式系统进行架构设计的过程中,往往会在系统的可用性和数据一致性之间进行反复的权衡,于是就产生了一系列的一致性协议。
为了解决分布式一致性问题,在长期的探索研究过程中,涌现出了一大批经典的一致性协议和算法,其中最著名的就是二阶段提交协议、三阶段提交协议和Paxos算法了。
本章将着重向读者介绍二阶段和三阶段提交协议的设计与算法实现流程,指出它们各自的优缺点,同时重点介绍Paxos算法。
HTTP(Hypertext Transfer Protocol)是一种用于传输超文本的协议,它是 Web 的基础,也是互联网通信的基础之一。在 HTTP 协议下,客户端和服务器之间通过交换请求和响应消息进行通信。以下是HTTP基础概念的详细介绍:
HTTP最初由Tim Berners-Lee在1991年发明,最初版本是0.9,只支持文本传输,没有请求头、响应头等内容。之后的1.0版本加入了请求头、响应头、状态码、缓存等机制。到了1999年,HTTP 1.1被正式发布,增加了很多新的特性,如持久连接、分块传输编码等。目前最新的版本是HTTP/2和HTTP/3。
如果想进一步深入学习HTTP协议,建议可以从以下几个方面入手:
学习HTTP协议规范:HTTP协议规范是HTTP协议的权威参考文献,它定义了HTTP协议的各种语法、语义和约定。学习HTTP协议规范可以帮助你全面、深入地理解HTTP协议的原理和机制。
实践HTTP协议:通过编写HTTP协议的客户端和服务器,可以更好地理解HTTP协议的工作原理。可以使用各种编程语言和开发框架,例如Python、Java、Node.js等,实现HTTP协议的客户端和服务器。
深入了解HTTP的特性和应用:HTTP协议不仅仅是一种通信协议,它还有许多特性和应用。例如,HTTP缓存、HTTP/2协议、RESTful API、WebSockets等等。了解这些特性和应用,可以帮助你更好地理解HTTP协议的实际应用场景和工作原理。
参加HTTP相关的社区和活动:参加HTTP相关的社区和活动,例如HTTP Working Group、HTTP Archive等等,可以了解到HTTP协议的最新发展和研究成果,与同行交流经验和思路。
这个技术时隶属于系统知识中的,目前 99.999% 的程序员的理解都很浅显。
但是这部分的知识是深入学习必备的原理知识之一。
《TCP/IP 详解》
更易读的书籍:
《TCP/IP 网络编程》
《图解 TCP/IP》
《The TCP/IP Guide》
《Wireshark 数据包分析实战》
TCP/IP 指传输控制协议/网际协议(Transmission Control Protocol / Internet Protocol)。
一、TCP 使用固定的连接
TCP 用于应用程序之间的通信。
当应用程序希望通过 TCP 与另一个应用程序通信时,它会发送一个通信请求。这个请求必须被送到一个确切的地址。在双方握手之后,
TCP 将在两个应用程序之间建立一个全双工的通信。
最近花了些时间在学习TCP/IP协议上,首要原因是由于本人长期以来对TCP/IP的认识就只限于三次握手四次分手上,所以希望深入了解一下。
再者,TCP/IP和Linux系统层级的很多设计都可以用于中间件系统架构上,比如说TCP 拥塞控制算法也可以用于以响应时间来限流的中间件。
更深一层,像TCP/IP协议这种基础知识和原理性的技术,都是经过长时间的考验的,都是前人智慧的结晶,可以给大家很多启示和帮助。
本文中会出现一些缩写,因为篇幅问题,无法每个都进行解释,如果你不明白它的含义,请自己去搜索了解,做一个主动寻求知识的人。
TCP协议有两个比较重要的控制算法,一个是流量控制,另一个就是阻塞控制。
Loopback Interface 是回环接口,可允许运行在同一台主机上的程序和服务器程序通过TCP/IP进行通讯。
loopback 口是给路由器赋予一个具有IP地址的逻辑接口,这个接口的特点是总是up,不会随着物理接口的状态而变化。
一个路由器有两个Token ring口,路由器启动了DLSw与远方路由器通信。
DLSw需要穿过WAN建立一条隧道传输用户数据,在路由器上要定义这条隧道的local ip address和remote ip address。
在定义local ip地址时,选用任何token ring接口地址都不是太好,因为物理接口可能由于各种原因down,这就影响了另外的token ring口通过DLSw的通信。所以,在这种情况下,用loopback口的IP地址作为local ip是很好的。
TCP 是一种提供可靠性交付的协议。
也就是说,通过 TCP 连接传输的数据,无差错、不丢失、不重复、并且按序到达。
但是在网络中相连两端之间的介质,是复杂的,并不确保数据的可靠性交付,那么 TCP 是怎么样解决问题的?
TCP 是通过下面几个特性保证数据传输的可靠性:
序列号和确认应答信号
超时重发控制
连接管理
滑动窗口控制
流量控制
拥塞控制
TCP 提供面向有连接的通信传输,面向有连接是指在传送数据之前必须先建立连接,数据传送完成后要释放连接。
无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。
在TCP/IP协议中,TCP协议提供可靠的连接服务,连接是通过三次握手进行初始化的。
同时由于TCP协议是一种面向连接的、可靠的、基于字节流的运输层通信协议,TCP是全双工模式,所以需要四次挥手关闭连接。
网络中传输的数据包由两部分组成:一部分是协议所要用到的首部,另一部分是上一层传过来的数据。
首部的结构由协议的具体规范详细定义。