网络编程六-网络编程相关面试题汇总

目录

1、说一下TCP的三次握手过程

2、为什么TCP握手需要三次?

3、解释一下TCP的四次挥手

4、为什么要有TIME_WAIT状态?

5、为什么TCP的挥手需要四次?

6、DDOS攻击

7、SYN洪水攻击

8、哪些应用比较适合用udp实现

9、如果要你来设计一个QQ,在网络协议上你会考虑如何设计?


1、说一下TCP的三次握手过程

参加下图

2、为什么TCP握手需要三次?

TCP是可靠的传输控制协议,三次握手能保证数据可靠传输又能提高传输效率。

如果TCP的握手是两次:

<1>如果client发给server的SYN报文因为网络原因,延迟发送。由于client没有收到server对SYN的确认报文,会重发SYN报文,服务器和回复ACK,连接建立。数据发送完毕,这条连接被正常关闭。这时,延迟的SYN报文发到了server,server误以为这是client重新发送的同步报文,又回复了一个ACK,和client建立了连接。

<2>如果server给client发送的ACK报文因为网络原因,报文被丢弃,此时server认为已经建立好连接,但是client没有收到确认报文,认为没有建立好连接。client会重发SYN报文,此时server已经处于就绪状态,认为已经建立好连接。

如果TCP的握手是四次:

–1.client给server发送SYN同步报文;

–2.server收到SYN后,给client回复ACK确认报文;

–3.server给client发送SYN同步报文;

–4.client给server发送ACK确认报文。

第2.3步之间,server和client没有任何的数据交互,分开发送相当于多发了一次TCP报文段,SYN和ACK标识只是TCP报头的一个标识位。很明显,这两步可以合并,从而提高连接的速度和效率。

3、解释一下TCP的四次挥手

4、为什么要有TIME_WAIT状态?

TIME_WAIT状态存在有两个原因。

<1>可靠终止TCP连接。如果最后一个ACK报文因为网络原因被丢弃,此时server因为没有收到ACK而超时重传FIN报文,处于TIME_WAIT状态的client可以继续对FIN报文做回复,向server发送ACK报文。

<2>保证让迟来的TCP报文段有足够的时间被识别和丢弃。连接结束了,网络中的延迟报文也应该被丢弃掉,以免影响立刻建立的新连接。

5、为什么TCP的挥手需要四次?

TCP是全双工的连接,必须两端同时关闭连接,连接才算真正关闭。

如果一方已经准备关闭写,但是它还可以读另一方发送的数据。发送给FIN结束报文给对方对方收到后,回复ACK报文。当这方也已经写完了准备关闭,发送FIN报文,对方回复ACK。两端都关闭,TCP连接正常关闭。

6、DDOS攻击

DDOS攻击利用合理的服务请求占用过多的服务资源,使正常用户的请求无法得到相应。

常见的DDOS攻击有计算机网络带宽攻击和连通性攻击。

带宽攻击指以极大的通信量冲击网络,使得所有可用网络资源都被消耗殆尽,最后导致合法的用户请求无法通过。

连通性攻击指用大量的连接请求冲击计算机,使得所有可用的操作系统资源都被消耗殆尽,最终计算机无法再处理合法用户的请求。

7、SYN洪水攻击

SYN洪水攻击属于DOS攻击的一种,它利用TCP协议缺陷,通过发送大量的半连接请求,耗费CPU和内存资源。

客户端在短时间内伪造大量不存在的IP地址,向服务器不断地发送SYN报文,服务器回复ACK确认报文,并等待客户的确认,由于源地址是不存在的,服务器需要不断的重发直至超时,这些伪造的SYN报文被丢弃,目标系统运行缓慢,严重者引起网络堵塞甚至系统瘫痪。

8、哪些应用比较适合用udp实现

多播的信息一定要用udp实现,因为tcp只支持一对一通信。

如果一个应用场景中大多是简短的信息,适合用udp实现,因为udp是基于报文段的,它直接对上层应用的数据封装成报文段,然后丢在网络中,如果信息量太大,会在链路层中被分片,影响传输效率。

如果一个应用场景重性能甚于重完整性和安全性,那么适合于udp,比如多媒体应用,缺一两帧不影响用户体验,但是需要流媒体到达的速度快,因此比较适合用udp

如果要求快速响应,那么udp听起来比较合适

如果又要利用udp的快速响应优点,又想可靠传输,那么只能考上层应用自己制定规则了。

常见的使用udp的例子:ICQ,QQ的聊天模块。

9、如果要你来设计一个QQ,在网络协议上你会考虑如何设计?

登陆采用TCP协议和HTTP协议,你和好友之间发送消息,主要采用UDP协议,内网传文件采用了P2P技术。总来的说:

1.登陆过程,客户端client 采用TCP协议向服务器server发送信息,HTTP协议下载信息。登陆之后,会有一个TCP连接来保持在线状态。

2.和好友发消息,客户端client采用UDP协议,但是需要通过服务器转发。腾讯为了确保传输消息的可靠,采用上层协议来保证可靠传输。如果消息发送失败,客户端会提示消息发送失败,并可重新发送。

3.如果是在内网里面的两个客户端传文件,QQ采用的是P2P技术,不需要服务器中转。

发布了41 篇原创文章 · 获赞 92 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/b379685397/article/details/104042319