文章目录
-
-
-
- 一. 常见网络编程面试题目
-
-
- 1.简述 OSI 七层协议。
- 2. 简述 TCP/IP 四层协议。
- 3. TCP 和 UDP 的区别是什么?
- 4. TCP 连接建立的时候 3 次握手的具体过程,以及其中的每一步是为什么?
- 5. TCP 断开连接的具体过程,其中每一步是为什么那么做?
- 6. TCP 的十一种状态?
- 7. 什么是 socket?简述基于 tcp 协议的套接字通信流程。
- 8. 简述基于 udp 协议的套接字通信流程。
- 9. TCP 为什么不是两次连接?而是三次握手?
- 10. 为何基于 tcp 协议的通信比基于 udp 协议的通信更可靠?
- 11. 网络编程中设计并发服务器,使用多进程与多线程,请问有什么区别?
- 12. 大规模连接上来,并发模型怎么设计?
-
- 二. 常见网络编程笔试题目.
-
-
一. 常见网络编程面试题目
1.简述 OSI 七层协议。
OSI是一个开放性的通信系统互连参考模型。OSI模型有7层结构,每层都可以有几个子层。 OSI的7层从上到下分别是 7 应用层 6 表示层 5 会话层 4 传输层 3 网络层 2 数据链路层 1 物理层 ;其中高层(即7、6、5、4层)定义了应用程序的功能,下面3层(即3、2、1层)主要面向通过网络的端到端的数据流。
2. 简述 TCP/IP 四层协议。
应用层:HTTP
传输层:TCP
网络层:IP
链路层:网络
应用层:决定这次通信的应用类型,比如说FTP、DNS、SMTP等等,同时HTTP协议也属于应用层的范围。通俗来讲,应用层决定这一次通信要干嘛。
传输层:传输层提供两台计算机之间的数据传输,传输层中包含着两个很叼的协议,分别是TCP和UDP协议。面试中经常提及的三次握手,四次挥手就是TCP协议的部分内容
网络层:网络层则是用来处理这些流动的数据包,也就是如果把相应的数据包路由到指定的地点,为通信时的网络传输选择传输路线
数据链路层:数据链路层包含了软件与硬件的接口部分,以及各种网络设备的硬件,也就是整个网络通信过程中最底层的基础设施
3. TCP 和 UDP 的区别是什么?
4. TCP 连接建立的时候 3 次握手的具体过程,以及其中的每一步是为什么?
三次握手
TCP连接是通过三次握手来连接的。
第一次握手
当客户端向服务器发起连接请求时,客户端会发送同步序列标号SYN到服务器,在这里我们设SYN为x,等待服务器确认,这时客户端的状态为SYN_SENT。
第二次握手
当服务器收到客户端发送的SYN后,服务器要做的是确认客户端发送过来的SYN,在这里服务器发送确认包ACK,这里的ACK为x+1,意思是说“我收到了你发送的SYN了”,同时,服务器也会向客户端发送一个SYN包,这里我们设SYN为y。这时服务器的状态为SYN_RECV。
一句话,服务器端发送SYN和ACK两个包。
第三次握手
客户端收到服务器发送的SYN和ACK包后,需向服务器发送确认包ACK,“我也收到你发送的SYN了,我这就给你发个确认过去,然后我们即能合体了”,这里的ACK为y+1,发送完毕后,客户端和服务器的状态为ESTABLISH,即TCP连接成功。
在三次握手中,客户端和服务器端都发送两个包SYN和ACK,只不过服务器端的两个包是一次性发过来的,客户端的两个包是分两次发送的。
5. TCP 断开连接的具体过程,其中每一步是为什么那么做?
断开连接请求可以由客户端发出,也可以由服务器端发出,在这里我们称A端向B端请求断开连接。
第一次挥手
A端向B端请求断开连接时会向B端发送一个带有FIN标记的报文段,这里的FIN是Finish的意