嵌入式软件开发之网络编程——重要知识点
一、TCP/IP协议
1. TCP/IP四层模型,每一层代表的通信协议。
2. TCP的通信时序:三次握手与四次挥手,搞明白其中的通信流程(重要,面试必问)。
3. 滑动窗口,TCP数据包格式,半关闭状态,通信时序与代码对应关系。
4. TCP状态转换图: TCP连接的建立和断开过程中客户端和服务器的状态变化,2MSL时长。
二、socket编程
1. socket的概念: socket的通信原理。
2. 预备知识:网络字节序,网络字节序和主机字节序的转换(函数),IP地址转换函数,sockaddr数据结构。
3. 网络套接字函数:socket函数、listen函数、bind函数、accept函数、connect函数。
4. TCP通信流程分析:有一张流程图重要。
三、高并发服务器
1. 多进程并发服务器:服务器的实现方式,设计思路,子进程与父进程执行的内容,相关的代码搞懂并写出来。
2. 多路IO转接服务器(以下内容非常重要,面试经常问):
(1)select实现:原理,select实现多路IO转接设计思路, select优缺点,
select相关函数及参数的分析—— int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
struct timeval *timeout)、 void FD_CLR(int fd, fd_set *set)、int FD_ISSET(int fd, fd_set *set)、
void FD_SET(int fd, fd_set *set)、void FD_ZERO(fd_set *set)。
(2)epoll实现:read函数、int epoll_create(int size)、int epoll_ctl (int epfd, int op, int fd,
struct epoll_event *event)、int epoll_wait (int epfd, struct epoll_event *events, int maxevents, int timeout),
ET和LT模式,epoll的优缺点,epoll反应堆。
(3)线程池:框架、struct threadpool_t, 线程池模块分析,代码搞懂(面试会问)。
3. UDP服务器:TCP与UDP通信的优缺点,UDP通信server和client流程。