笔记
基于UDP的TFTP文件传输
面试题
1. 项目中如何实现TCP的并发?
多进程实现TCP并发、多线程实现TCP并发。
2. TCP通信过程中的三次握手?
三次握手是TCP客户进程与TCP服务器进程建立连接时的过程。首先由TCP客户进程向TCP服务器进程发送TCP连接请求报文段,并进入同步已发送状态,TCP服务器进程收到TCP连接请求报文段后,如果同意建立连接,则向TCP客户进程发送TCP连接请求确认报文段,并进入同步已接收状态,TCP客户进程收到TCP连接请求确认报文段后,向TCP服务器进程发送一个普通的TCP确认报文段,并进入已建立连接状态,TCP服务器进程收到针对TCP连接请求确认报文段的普通确认报文段后,也进入已建立连接状态。此时,TCP双方都进入了连接已建立状态。
3. 四次挥手的过程?
四次挥手是释放TCP连接的过程。TCP客户进程向TCP服务器进程发送TCP连接释放报文段,并进入终止等待1状态,TCP服务器收到TCP连接释放报文段后,会发送一个普通的TCP确认报文段,并进入关闭等待状态,TCP客户进程收到该普通的TCP确认报文段后,进入终止等待2状态,等待TCP服务器进程发出的TCP连接释放报文段,TCP服务器进程发送TCP连接释放报文段,并进入最后确认状态,TCP客户进程收到TCP服务器进程发出的TCP连接释放报文段后,向TCP服务器进程发送TCP普通确认报文段,并进入时间等待状态,TCP服务器进程收到该普通的TCP确认报文段后,进入关闭状态,而TCP客户进程还要经过两倍的最长报文段寿命的时长后,才进入关闭状态。
4. TCP/IP协议分几层?TCP/IP分别是哪一层?
四层,分别是应用层、传输层、网络层、数据链路层。
TCP协议在传输层,IP协议在网络层。
5. UDP为什么丢包?
UDP是面向无连接的,在数据传输到网络层后,可能会出现数据丢失。
6. TCP是同步还是异步?谈谈对同步异步的理解?
TCP协议实现客户端服务器是同步。同步是对于进程之间的执行顺序是可以预测的,能够按照我们想要的次序执行。异步是随机的,无法预测。
7. 什么是TCP沾包现象,如何解决?
由于发送的数据过小或者是两次数据发送的时间间隔太小,会导致两个数据包作为一个数据包发送过去,这种现象叫做沾包。
8. 组播和广播的区别?
组播是只有加入到多播组中的主机才能接收到消息,组播是D类网络。广播是所有主机都会收到消息,广播地址是 网络号+255。
9. 阻塞IO和非阻塞IO的区别?
阻塞IO,指的是需要内核IO操作彻底完成后,才能返回到用户空间执行用户的操作。非阻塞IO,指的是用户空间的程序不需要等待内核IO操作彻底完成,可以立即返回用户空间执行用户操作。
10. 并发和并行的区别?
并发是在单核CPU运行多个程序时,宏观是在一个时间段内存在多个进程,微观上是单个时间片只有一个进程。