1,网络编程
服务器端创建IP和端口号,之后客户端通过服务器的IP和端口号进行连接,服务器通过accept接受来自客户端的请求(获取scoket),通过socket获取字节流来进行读写操作。
socket 套接字 其实是服务器ip:port和客户端ip:port的组合。
2,BIO/NIO
BIO:同步阻塞型IO流,每一个连接对应一个线程,每一个客户端对应一个线程,是的一个服务器对应多个客户端。
NIO:同步非阻塞异步IO ,可以看作是I/0多路复用模型
同步非阻塞IO模型中,应用程序员会一直发起read调用,等待数据从内核空间拷贝到用户空间的这段时间内,线程依然是阻塞的,直到内核把数据拷贝到用户空间。
但这存在的问题:应用程序不断进行IO系统调用轮询数据是否以及准备好的过程是十分消耗CPU资源的。
为了解决这个问题,I/O多路复用就上场了。
在多路复用模型中,线程首发起select调用,询问内核数据是否准备就绪,等内核把数据准备好了,用户线程再发其read调用,read调用的过程(数据从内核空间-》用户空间)还是阻塞的。
IO多路复用模型,通过减少无效的系统调用,减少cpu资源的消耗。
其中select,epoll的区别:
select需要轮回询问,效率较低:仅知道有I/O事件发生,但不知道是哪一个。
epoll是时间驱动的,即会把哪个流发生那种IO时间通知我们,然后处理。
3,TCP报文格式:
报头+数据 其中报头有32位的确认序列号(ack),32位的序号(seq) 以及ACK,FIN等标志位(0/1表示)还包含窗口
客户端的发送报文SYN位置位1,服务端的应答报文ACK为置为1。
4,DNS解析过程
(www.baidu.com)从右到左构造域名结构树查找 。包括顶级域名服务器管理权威域名服务器,权威域名服务器管理主机域名管理器。