1/socket和epoll的关系区别?(不太懂他意思,反正对epoll的底层进行了阐述)
网络通信部分
- 网络通信部分,主要有两大块,
- 第一个是程序启动时,与服务端的交互;
- 第二个就是文件下载与分享的 P2P 网络.
Prerequisites:
- 具体的就是 Socket 的各种 API 函数,以及基于这些 API 逻辑的组合
- 当然可能也会用到操作系统平台所特有的网络 API 函数,如 WSAAsyncSelect 网络模型.
Design Points:
- 网络通信部分如何与 UI 部分进行数据交换: 是使用队列? 如果使用队列,多线程之间如何保持资源的一致性和解决资源竞态,使用 Event/CriticalSection/Mutex/Semaphore 等? 全局变量? 或者相应的 Windows 操作平台提供的特殊通信技术,如 PostMessage 函数/管道?
2/epoll和select的区别 3/epoll的高效,有几种工作模式( LT/ET) 5/TIMEWAIT是什么,为什么要设置TIMEWAIT状态 6/TCP的可靠性是如何实现的?(流量控制/拥塞控制/确认序号/校验???)
2/交给sub 线程的文件描述符如何回收的? 3/tcp粘包
4/tcp三次握手 /2次/4次? 5/tcp可靠性的实现原因 6/滑动窗口的作用
8/tcp是如何处理粘包?
9/tcp是如何关闭的?就是说4次挥手过程
10/如果tcp关闭的第四个分节没有被收到,那么怎么办?
11/tcp的拥塞控制过程
3/这个io复用模型跟普通多线程/多进程的区别 答: io复用,多个链接复用一个线程,而普通多线程是一个链接一个线程,所以必然创建线程的数目就多,现成的创建是有开销的,所以io复用这种开销小.
4/网络传输的数据协议 主要有3个段,前8bit是数据type,中间是length,最后是具体的data.
5/如果协议是这样.如果两个数据包连在一起,怎么分开? 答:在首部再加几个bit,作为隔离位.
6/如何实现你的fd是负载均衡的 答:分类处理
7/多个用户访问同一个资源,如何加锁 答:不太明白他的意思,epoll内部处理事件是同步依次执行的,而且这里的锁是线程资源