挑战Java15-40k面试进行中

1、TCP、UDP、HTTP区别?

TCP三次握手机制
第一次:客户端发送一个SYN包到服务端,并进入SYN_SEND状态,等待服务端的响应。
第二次:服务端收到SYN包,并确认,同时自己也发送一个SYN包,即SYN+ACK包,此时服务端进入SYN_RECV状态。
第三次:客户端收到服务端的SYN+ACK包,向服务端发送一个确认ACK包,进入ESTABLISHED状态,完成连接

UDP

UDP也是传输层的一个协议。但是与TCP不同的是,UDP不是面向连接的,并不保证传输的可靠性,没有TCP的建立连接的三次握手机制,对于传输效率上面有了提升。

HTTP

HTTP是在应用层的一个协议,本身就是一个协议,是从Web服务器传输超文本到本地浏览器的传输协议。 
HTTP协议基于请求\响应模型的,并且是基于TCP协议的。

 

2、tcp和udp是哪层的协议?

OSI七层网络模型      TCP/IP四层概念模型           对应网络协议

传输层                  传输层                  TCP(传输控制协议)、UDP(用户数据报协议)

3、TCP通信连接模式及其特点?

通信连接模式主要有以下三大类:

(一)SERVER/CLIENT方式

1.一个Client方连接一个Server方,或称点对点(peer to peer): 
2.多个Client方连接一个Server方,这也是通常的并发服务器方式。 
3.一个Client方连接多个Server方,这种方式很少见,主要 
用于一个客户向多个服务器发送请求情况。

(二)连接方式

1.长连接 

Client方与Server方先建立通讯连接,连接建立后不断开, 
然后再进行报文发送和接收。这种方式下由于通讯连接一直 
存在,可以用下面命令查看连接是否建立: 

netstat –f inet|grep 端口号(如5678)。 

此种方式常用于点对点通讯。 


2.短连接 

Client方与Server每进行一次报文收发交易时才进行通讯连 
接,交易完毕后立即断开连接。此种方式常用于一点对多点 
通讯,比如多个Client连接一个Server.

(三)发送接收方式 

1.异步 

报文发送和接收是分开的,相互独立的,互不影响。这种方 
式又分两种情况: 

(1)异步双工:接收和发送在同一个程序中,有两个不同的 
子进程分别负责发送和接收 
(2)异步单工:接收和发送是用两个不同的程序来完成。 

2.同步 

报文发送和接收是同步进行,既报文发送后等待接收返回报文。 
同步方式一般需要考虑超时问题,即报文发上去后不能无限等 
待,需要设定超时时间,超过该时间发送方不再等待读返回报 
文,直接通知超时返回。  


实际通信方式是这三类通信方式的组合。比如一般书上提供的 
TCP/IP范例程序大都是同步短连接的SERVER/CLIENT程序。有的 
组合是基本不用的,比较常用的有价值的组合是以下几种: 

同步短连接Server/Client 
同步长连接Server/Client 
异步短连接Server/Client 
异步长连接双工Server/Client 
异步长连接单工Server/Client 

其中异步长连接双工是最为复杂的一种通信方式,有时候经 
常会出现在不同银行或不同城市之间的两套系统之间的通信。 
比如金卡工程。由于这几种通信方式比较固定,所以可以预 
先编制这几种通信方式的模板程序。

4、ISO8583报文结构?什么是位图?

报文结构:报文长度(2字节)+TPDU(5字节)+报文头(6字节)+域数据(指令码(0域 2字节)+位图(8/16字节,如果首字节为1,表示使用扩展域,为16字节)+其他域数据)

位图:位图,又称为点阵图像、像素图或栅格图像,是由像素(图片元素)的单个点组成。这些点可以进行不同的排列和染色以构成图样。

5、简述RPC框架,原理及其特点,如何实现一个RPC框架?

简述RPC框架:RPC(Remote Procedure Call)–远程过程调用,通过网络通信调用不同的服务,共同支撑一个软件系统,微服务实现的基石技术。使用RPC可以解耦系统,方便维护,同时增加系统处理请求的能力。

原理:

特点:解耦系统,方便维护,同时增加系统处理请求的能力

如何实现一个RPC框架?

从下面几个方面思考,仅供参考:

1.通信模型:假设通信的为A机器与B机器,A与B之间有通信模型,在Java中一般基于BIO或NIO;。

2.过程(服务)定位:使用给定的通信方式,与确定IP与端口及方法名称确定具体的过程或方法;

3.远程代理对象:本地调用的方法(服务)其实是远程方法的本地代理,因此可能需要一个远程代理对象,对于Java而言,远程代理对象可以使用Java的动态对象实现,封装了调用远程方法调用;

4.序列化,将对象名称、方法名称、参数等对象信息进行网络传输需要转换成二进制传输,这里可能需要不同的序列化技术方案。如:protobuf,Arvo等。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

内卷成仙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值