网络协议学习笔记

1 篇文章 0 订阅
1 篇文章 0 订阅

文章目录

一、网络协议相关概念
1、三次握手

三次挥手四次握手详细解析

第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。
第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。
第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。

为什么建立连接要3次握手才行,两次不可以
第一次握手:客户端发送网络包,服务端收到了。这样服务端就能得出结论:客户端的发送能力、服务端的接收能力是正常的。
第二次握手:服务端发包,客户端收到了。这样客户端就能得出结论:服务端的接收、发送能力,客户端的接收、发送能力是正常的。不过此时服务器并不能确认客户端的接收能力是否正常。
第三次握手:客户端发包,服务端收到了。这样服务端就能得出结论:客户端的接收、发送能力正常,服务器自己的发送、接收能力也正常
2、四次挥手

1)客户端进程发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入FIN-WAIT-1(终止等待1)状态。 TCP规定,FIN报文段即使不携带数据,也要消耗一个序号。
2)服务器收到连接释放报文,发出确认报文,ACK=1,ack=u+1,并且带上自己的序列号seq=v,此时,服务端就进入了CLOSE-WAIT(关闭等待)状态。TCP服务器通知高层的应用进程,客户端向服务器的方向就释放了,这时候处于半关闭状态,即客户端已经没有数据要发送了,但是服务器若发送数据,客户端依然要接受。这个状态还要持续一段时间,也就是整个CLOSE-WAIT状态持续的时间。
3)客户端收到服务器的确认请求后,此时,客户端就进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文(在这之前还需要接受服务器发送的最后的数据)。
4)服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,FIN=1,ack=u+1,由于在半关闭状态,服务器很可能又发送了一些数据,假定此时的序列号为seq=w,此时,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。
5)客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是seq=u+1,此时,客户端就进入了TIME-WAIT(时间等待)状态。注意此时TCP连接还没有释放,必须经过2∗∗MSL(最长报文段寿命)的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态。
6)服务器只要收到了客户端发出的确认,立即进入CLOSED状态。同样,撤销TCB后,就结束了这次的TCP连接。可以看到,服务器结束TCP连接的时间要比客户端早一些。

3、为什么连接的时候是三次握手,关闭的时候却是四次握手?

因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,“你发的FIN报文我收到了”。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。

4、为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态?

虽然按道理,四个报文都发送完毕,我们可以直接进入CLOSE状态了,但是我们必须假象网络是不可靠的,有可以最后一个ACK丢失。所以TIME_WAIT状态就是用来重发可能丢失的ACK报文。在Client发送出最后的ACK回复,但该ACK可能丢失。Server如果没有收到ACK,将不断重复发送FIN片段。所以Client不能立即关闭,它必须确认Server接收到了该ACK。Client会在发送出ACK之后进入到TIME_WAIT状态。Client会设置一个计时器,等待2MSL的时间。如果在该时间内再次收到FIN,那么Client会重发ACK并再次等待2MSL。所谓的2MSL是两倍的MSL(Maximum Segment Lifetime)。MSL指一个片段在网络中最大的存活时间,2MSL就是一个发送和一个回复所需的最大时间。如果直到2MSL,Client都没有再次收到FIN,那么Client推断ACK已经被成功接收,则结束TCP连接。

5、为什么不能用两次握手进行连接?

3次握手完成两个重要的功能,既要双方做好发送数据的准备工作(双方都知道彼此已准备好),也要允许双方就初始序列号进行协商,这个序列号在握手过程中被发送和确认。
现在把三次握手改成仅需要两次握手,死锁是可能发生的。作为例子,考虑计算机S和C之间的通信,假定C给S发送一个连接请求分组,S收到了这个分组,并发 送了确认应答分组。按照两次握手的协定,S认为连接已经成功地建立了,可以开始发送数据分组。可是,C在S的应答分组在传输中被丢失的情况下,将不知道S 是否已准备好,不知道S建立什么样的序列号,C甚至怀疑S是否收到自己的连接请求分组。在这种情况下,C认为连接还未建立成功,将忽略S发来的任何数据分 组,只等待连接确认应答分组。而S在发出的分组超时后,重复发送同样的分组。这样就形成了死锁。
个人理解:好比两个人找对象,男的问女的,你愿意做我女朋友吗,女的说我愿意,你呢,男的说我也愿意。如果只有两次的话,男生最后没回答,你就不知道他是真想和你处对象还是开玩笑的。

6、如果已经建立了连接,但是客户端突然出现故障了怎么办?

TCP还设有一个保活计时器,显然,客户端如果出现故障,服务器不能一直等下去,白白浪费资源。服务器每收到一次客户端的请求后都会重新复位这个计时器,时间通常是设置为2小时,若两小时还没有收到客户端的任何数据,服务器就会发送一个探测报文段,以后每隔75秒钟发送一次。若一连发送10个探测报文仍然没反应,服务器就认为客户端出了故障,接着就关闭连接。

7、TCP/IP工作流程

在源主机上,应用层将一串应用数据流传送给传输层。
传输层将应用层的数据流截成分组,并加上TCP报头形成TCP段,送交网络层。
在网络层给TCP段加上包括源、目的主机IP地址的IP报头,生成一个IP数据包,并将IP数据包送交链路层。
链路层在其MAC帧的数据部分装上IP数据包,再加上源、目的主机的MAC地址和帧头,并根据其目的MAC地址,将MAC帧发往目的主机或IP路由器。
在目的主机,链路层将MAC帧的帧头去掉,并将IP数据包送交网络层。
网络层检查IP报头,如果报头中校验和与计算结果不一致,则丢弃该IP数据包;若校验和与计算结果一致,则去掉IP报头,将TCP段送交传输层。
传输层检查顺序号,判断是否是正确的TCP分组,然后检查TCP报头数据。若正确,则向源主机发确认信息;若不正确或丢包,则向源主机要求重发信息。
在目的主机,传输层去掉TCP报头,将排好顺序的分组组成应用数据流送给应用程序。这样目的主机接收到的来自源主机的字节流,就像是直接接收来自源主机的字节流一样。

7、TCP和UDP的区别

TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)协议属于传输层协议,它们之间的区别包括:
TCP是面向连接的,UDP是无连接的;
TCP是可靠的,UDP是不可靠的;
TCP只支持点对点通信,UDP支持一对一、一对多、多对一、多对多的通信模式;
TCP是面向字节流的,UDP是面向报文的;
TCP有拥塞控制机制;UDP没有拥塞控制,适合媒体通信;
TCP首部开销(20个字节)比UDP的首部开销(8个字节)要大

8、OSI七层网络协议是怎么分层的,每层的作用是什么,举例说明
1.  应用层:与其它计算机进行通讯的一个应用,它是对应应用程序的通信服务的示例:telnet,HTTP,FTP,NFS,SMTP等
2.  表示层:这一层的主要功能是定义数据格式及加密。示例:加密,ASCII等。
3.  会话层: 它定义了如何开始、控制和结束一个会话,包括对多个双向消息的控制和管理,以便在只完成连续消息的一部分时可以通知应用,从而使表示层看到的数据是连续的,在某些情况下,如果表示层收到了所有的数据,则用数据代表表示层示例:RPC,SQL等。
4.  传输层:这层的功能包括是否选择差错恢复协议还是无差错恢复协议,及在同一主机上对不同应用的数据流的输入进行复用,还包括对收到的顺序不对的数据包的重新排序功能示例:TCP,UDP,SPX。
5.  网络层:这层对端到端的包传输进行定义,它定义了能够标识所有结点的逻辑地址,还定义了路由实现的方式和学习的方式。为了适应最大传输单元长度小于包长度的传输介质,网络层还定义了如何将一个包分解成更小的包的分段方法示例:IP,IPX等
6.  数据链路层: 它定义了在单个链路上如何传输数据。这些协议与被讨论的各种介质有关。示例:ATM,FDDI等
7.  物理层:OSI的物理层规范是有关传输介质的特性标准,这些规范通常也参考了其他组织制定的标准示例:Rj45,802.3等
9、TCP/IP网络模型分为哪几层
  • 应用层 TELNET、HTTP、FTP、DNS
  • 传输层 TCP、UDP 它提供了节点间的数据传送,应用程序之间的通信服务,主要功能是数据格式化、数据确认和丢失重传等。
  • 网络层 IP、ARP 负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机
  • 数据链路层(TCP/IP五层模型和四层模型的区别)
  • 网络接口层 接收IP数据报并进行传输,从网络上接收物理帧,抽取IP数据报转交给下一层
10、描述一下一个数据包在网络中的传输过程
  • 在应用层,由http头等应用层传输协议组成的报文头和数据包,组成一个新数据包传到传输层
  • 传输层将数据包和TCP报头生成新的tcp报文,传到网络层
  • 网络层加上IP报头组成新的ip报文,传到物理层
  • 物理层开始传输,在局域网和广域网通过ip寻址,不断解析和封装链路层和网络层,知道找到目标主机
  • 找到目标主机后,开始逐层解析数据包,网络层解析ip数据包,传输层解析tcp数据包,应用层解析http数据包
  • 网络数据传输就是通过一个个数据包的传输组成,通过一系列网络协议来保证寻址准备,以及数据的完整性、安全性等
11、什么是socket

socket是一组接口,在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信

12、TCP 协议如何来保证传输的可靠性

TCP 提供一种面向连接的、可靠的字节流服务。其中,面向连接意味着两个使用 TCP 的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须先建立一个 TCP 连接。在一个 TCP 连接中,仅有两方进行彼此通信;而字节流服务意味着两个应用程序通过 TCP 链接交换 8 bit 字节构成的字节流,TCP 不在字节流中插入记录标识符。
对于可靠性,TCP通过以下方式进行保证:
数据包校验:目的是检测数据在传输过程中的任何变化,若校验出包有错,则丢弃报文段并且不给出响应,这时TCP发送数据端超时后会重发数据;
对失序数据包重排序:既然TCP报文段作为IP数据报来传输,而IP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序。TCP将对失序数据进行重新排序,然后才交给应用层;
丢弃重复数据:对于重复数据,能够丢弃重复数据;
应答机制:当TCP收到发自TCP连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒;
超时重发:当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段;
流量控制:TCP连接的每一方都有固定大小的缓冲空间。TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据,这可以防止较快主机致使较慢主机的缓冲区溢出,这就是流量控制。TCP使用的流量控制协议是可变大小的滑动窗口协议。

13、http和https的区别

1、https协议需要到CA申请证书,一般免费证书较少,因而需要一定费用。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl/tls加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、http的连接很简单,是无状态的;HTTPS协议是由SSL/TLS+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

14、什么是cookie

在网站中,http请求是无状态的。也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户。cookie的出现就是为了解决这个问题,第一次登录后服务器返回一些数据(cookie)给浏览器,然后浏览器保存在本地,当该用户发送第二次请求的时候,就会自动的把上次请求存储的cookie数据自动的携带给服务器,服务器通过浏览器携带的数据就能判断当前用户是哪个了。cookie存储的数据量有限,不同的浏览器有不同的存储大小,但一般不超过4KB。因此使用cookie只能存储一些小量的数据。

15、什么是session

session和cookie的作用有点类似,都是为了存储用户相关的信息。不同的是,cookie是存储在本地浏览器,而session存储在服务器。存储在服务器的数据会更加的安全,不容易被窃取。但存储在服务器也有一定的弊端,就是会占用服务器的资源,但现在服务器已经发展至今,一些session信息还是绰绰有余的。

16、cookie和session的区别

1、cookie数据存放在客户的浏览器上,session数据放在服务器上.
2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗考虑到安全应当使用session。
3、设置cookie时间可以使cookie过期。但是使用session-destory(),我们将会销毁会话。
4、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能考虑到减轻服务器性能方面,应当使用cookie。
5、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。(Session对象没有对存储的数据量的限制,其中可以保存更为复杂的数据类型)
6、 两者最大的区别在于生存周期,一个是IE启动到IE关闭.(浏览器页面一关 ,session就消失了),一个是预先设置的生存周期,或永久的保存于本地的文件。(cookie)

17、怎么通过cookie和session结合使用实现登录缓存?如果是分布式架构呢?
二、http
1、什么是http协议

超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法。

2、http协议是否只能在TCP协议上使用?

1、http可以在任何互联网协议上、或其他网络上实现。http假定其下层协议提供可靠的传输,任何能够提供这种保证的协议都可以被其使用,TCP/IP协议只是其中的一种
2、http协议是基于TCP/IP协议之上的应用层协议

3、http工作原理

1、向DNS服务器解析URL,然后通过url和端口和服务器建立连接
2、发送http请求,客户端向服务端发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据组成
3、服务器接收请求并返回http响应,一个响应由状态行,响应头部、空行和响应数据组成
4、如果是短连接,则服务器自动断开连接,如果是长连接,可以继续接收请求
5、客户端解析响应内容并展示

4、http请求特点

1、基于请求-响应模式。请求必定从服务端发出,然后服务器再做出响应
2、无状态保存。不保存处理过的状态,每次请求都产生对应的新响应,目的是为了处理大量事务,确保协议的可伸缩性。如果为了特定场景下可以保存状态,可以使用cookie技术,比如登录状态需要长时间保持
3、无连接。每次只处理一个请求,处理完毕后断开连接。有两种方式,直接断开和等一段时间后断开,默认3秒,可以通过代码调整

5、http请求方法

1、GET、HEAD、POST、PUT、DELETE、TRACE、OPTIONS、CONNECT
2、方法名是区分大小写的。当服务器不认识请求方法,放回501;服务器不支持对应的请求方法,返回405

6、get和post方法的区别

1、数据提交方式不同。get放在URL后,用?分隔。post放在请求体中
2、get有长度限制,post没有。get长度受限于url长度,最长2048
3、get请求可以被缓存,post不可以
4、get只能用ASCII编码,post没有字符类型限制

7、post相较get的优缺点

1、post相对更安全。post用请求体传输数据,不会被缓存,没有历史记录。
2、post没有字符和编码的限制,可以传输的数据类型更多
3、post没有数据大小限制,可以传输更多数据
4、缺点:post传输速度比get慢,get效率更高。原因:post接收数据会先确认,再传输,get则直接发送数据。

8、http状态码
T类别原因短语
1XXInformational(信息性状态码)接收的请求正在处理
2XXSuccess(成功状态码)请求正常处理完毕
3XXRedirectiono(重定向状态码)需要进行附加操作已完成请求
4XXClient Error(客户端错误状态码)服务器无法处理请求
5XXSever Error(服务器错误状态码)服务器处理请求出错
9、URL

1、传输协议
2、层级URL标记符号,为//,固定不变
3、访问资源需要的凭证信息
4、服务器。域名或ip
5、端口号
6、路径。以/分隔路径的每一个目录名称)
7、查询。以?为起点
8、片段。以#为起点

10、http请求构成
  • 请求行 请求方法字段、URL字段和HTTP协议版本
  • 请求头 key:value格式,
  • 空行 通知服务器以下不再有请求头
  • 请求体 请求数据
11、http响应构成
  • 响应行 协议版本、状态码及其描述 HTTP/1.1 200 OK
  • 响应头
  • 空行
  • 响应体
12、一次完整的http请求都发生了什么

1.在浏览器端输入网站的url地址
2.浏览器查找缓存(如果有的话,直接返回显示,如果没有的话,继续下一步)
3.通过DNS获取url对应的IP地址(先在本机的host文件中查找是否有这个url对应的IP,如果没有的话,就请求DNS进行IP地址的获取)
4.建立TCP连接(http在工作之前,需要客户端和服务端建立连接,这个链接的建立时通过TCP三次握手来完成的)
5.浏览器向web服务器发送请求(一旦连接已经建立,浏览器就可以给web服务器发送请求命令,比如GET/deom/hello.jsp HTTP/1.1)
6.浏览器给web服务器发送请求头信息(浏览器在发送了请求后,还要给web服务器请求头信息)
7.web服务器进行应答(http/1.1 200 OK)
8.web服务器发送应答头消息
9.web服务器发送数据
10.web服务器关闭连接(TCP四次挥手)

三、https

http加密原理

1、什么是https

是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

2、https工作原理

1、client向server发送请求https://baidu.com,然后连接到server的443端口,发送的信息主要是随机值1和客户端支持的加密算法。
2、server接收到信息之后给予client响应握手信息,包括随机值2和匹配好的协商加密算法,这个加密算法一定是client发送给server加密算法的子集。
3、随即server给client发送第二个响应报文是数字证书。服务端必须要有一套数字证书,可以自己制作,也可以向组织申请。区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面,这套证书其实就是一对公钥和私钥。传送证书,这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间、服务端的公钥,第三方证书认证机构(CA)的签名,服务端的域名信息等内容。
4、客户端解析证书,这部分工作是由客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随即值(预主秘钥)。
5、客户端认证证书通过之后,接下来是通过随机值1、随机值2和预主秘钥组装会话秘钥。然后通过证书的公钥加密会话秘钥。
6、传送加密信息,这部分传送的是用证书加密后的会话秘钥,目的就是让服务端使用秘钥解密得到随机值1、随机值2和预主秘钥。
7、服务端解密得到随机值1、随机值2和预主秘钥,然后组装会话秘钥,跟客户端会话秘钥相同。
8、客户端通过会话秘钥加密一条消息发送给服务端,主要验证服务端是否正常接受客户端加密的消息。
9、同样服务端也会通过会话秘钥加密一条消息回传给客户端,如果客户端能够正常接受的话表明SSL层连接建立完成了。

3、https的优缺点

缺点:

(1)HTTPS协议握手阶段比较费时,会使页面的加载时间延长近50%,增加10%到20%的耗电;
(2)HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响;
(3)SSL证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用。
(4)SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗。
(5)HTTPS协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的,SSL证书的信用链体系并不安全,特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行。

优点

尽管HTTPS并非绝对安全,掌握根证书的机构、掌握加密算法的组织同样可以进行中间人形式的攻击,但HTTPS仍是现行架构下最安全的解决方案,主要有以下几个好处:
(1)使用HTTPS协议可认证用户和服务器,确保数据发送到正确的客户机和服务器;
(2)HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性。
(3)HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。
(4)谷歌曾在2014年8月份调整搜索引擎算法,并称“比起同等HTTP网站,采用HTTPS加密的网站在搜索结果中的排名将会更高”。
4、https如何保证安全性

https如何保证安全性
1、证书
2、数字签名
3、公私钥

5、https安全验证过程

https安全性保证过程

1、客户端向服务端发送SSL协议版本号、加密算法种类、随机数等信息;
2、服务端给客户端返回SSL协议版本号、加密算法种类、随机数等信息,同时也返回服务器端的证书,即公钥证书;
3、客户端使用服务端返回的信息验证服务器的合法性,包括:
4、证书是否过期;

  • 发行服务器证书的CA是否可靠;(通过查询浏览器或本机内的CA证书)
  • 返回的公钥是否能正确解开返回证书中的数字签名;(通过使用本机或浏览器内置的CA公钥进行解密)
  • 服务器证书上的域名是否和服务器的实际域名相匹配;
  • 验证通过后,将继续进行通信,否则,终止通信;
  • 服务端要求客户端发送客户端的证书即客户端证书公钥,客户端会将自己的证书发送至服务端;
    5、验证客户端的证书,通过验证后,会获得客户端的公钥;
    6、客户端向服务端发送自己所能支持的对称加密方案,供服务器端进行选择
    7、服务器端在客户端提供的加密方案中选择加密程度最高的加密方式;
    8、将加密方案通过使用之前获取到的公钥进行加密,返回给客户端
    9、客户端收到服务端返回的加密方案密文后,使用自己的私钥进行解密,获取具体加密方式,而后,产生该加密方式的随机码,用作加密过程中的密钥,使用之前从服务端证书中获取到的公钥进行加密后,发送给服务端 ;
    10、服务端收到客户端发送的消息后,使用自己的私钥进行解密,获取对称加密的密钥,在接下来的会话中,服务器和客户端将会使用该密码进行对称加密,保证通信过程中信息的安全
四、dubbo
1、什么是dubbo

Dubbo 是alibaba开源的一款高性能、轻量级的开源 RPC 框架,提供服务自动注册、自动发现等高效服务治理方案

2、为什么要用dubbo

随着服务化的进一步发展,服务越来越多,服务之间的调用和依赖关系也越来越复杂,诞生了面向服务的架构体系(SOA),也因此衍生出了一系列相应的技术,如对服务提供、服务调用、连接处理、通信协议、序列化方式、服务发现、服务路由、日志输出等行为进行封装的服务框架。就这样为分布式系统的服务治理框架就出现了,Dubbo 也就这样产生了。

3、dubbo的使用场景

1、服务自动注册与发现
2、软负载均衡及容错机制
3、透明化的远程方法调用

4、dubbo的核心组件有哪些

Provider:暴露服务的服务提供方
Consumer:调用远程服务消费方
Registry:服务注册与发现注册中心
Monitor:监控中心和访问调用统计
Container:服务运行容器

5、dubbo服务的注册发现流程

服务容器Container负责启动,加载,运行服务提供者。
服务提供者Provider在启动时,向注册中心注册自己提供的服务。
服务消费者Consumer在启动时,向注册中心订阅自己所需的服务。
注册中心Registry返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
服务消费者Consumer,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
服务消费者Consumer和提供者Provider,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心Monitor。

6、Dubbo 的注册中心集群挂掉,发布者和订阅者之间还能通信么?

可以通讯。启动 Dubbo 时,消费者会从 Zookeeper 拉取注册的生产者的地址接口等数据,缓存在本地。每次调用时,按照本地存储的地址进行调用。

7、服务调用超时会怎么样?

dubbo 在调用服务不成功时,默认是会重试两次。

五、参考资料

1、网络协议详解
2、TCP协议详细介绍
3、网络数据的完整传输过程解析
4、一个简单题库
5、比较全的网络协议面试题
6、网络寻址过程

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值