这几个问题答不对 面试别想通过了
番茄系统家园 · 2021-08-23 23:30:38

4、假如服务器突然掉电重启,但客户端并不知情,请问此时二者之间的TCP连接处于什么状态?
答案:处于半打开状态。就是客户端还觉得连接是正常的,服务器这边已经没有连接的任何信息了。
5、那么,假如此时客户端通过这个连接向服务器请求数据,服务器会怎么应对呢?
答案:服务器收到客户端的请求会进行一次ARP查询,获得客户端MAC地址,然而由于已经丢失了所有连接信息,此时的服务器是一脸懵逼(就像喝了孟婆汤!),于是乎,它会发一个RST给客户端,表示:“哥们,我不认识你,想跟我说话请先发送SYN!”
6、假如客户端按照服务器的要求重新建立连接,却搞错了服务器的端口号,会发生什么情况呢?
答案:有两种可能,一种是服务器端的TCP收到客户端请求,查看本机上是否有进程在监听相应的端口,如果有,就把请求交给这个进程,一般而言,这个进程不会接受这个连接的,于是它会发一个RST给客户端。还有一种可能是TCP没有找到哪个进程在监听相应的端口,于是TCP就会直接发一个RST给客户端,一般而言都会是这种情况。
7、假如现在有一个多进程服务器,服务器进程为A,接受一个连接后新建一个进程B来处理连接,再接受一个连接后又建一个进程C来处理这个连接,请问,进程ABC是否监听同样的端口?
答案:是!
8、那TCP接收到发送给这个端口的报文段,怎么决定发给哪个进程呢?
答案:首先,所有的SYN报文段都会发送给服务器进程A,其他的报文段依据这个四元组来决定发送给进程B还是进程C。
9、假如上面的服务器进程A收到一个连接请求,正在为这个请求创建处理进程的时候,又有新的连接请求进来了,TCP会怎么处理呢?
答案:一般情况下,服务器进程A会给TCP一个指示,让TCP维护一个适当长度的连接队列,TCP与新连接请求完成三次握手后,就会把这个连接放入连接队列中,服务器进程A会在合适的时候来从这个队列中取连接。
10、这个连接对列是否会对服务器的并发处理能力产生影响呢?如果会,会有什么影响?

