在浏览器地址栏输入一个URL后回车,背后会进行哪些技术步骤?(讲述流经的协议栈、设备等等,尽可能地拓展与全面回答)
针对面试,个人精简总结:根据TCP/IP的四层协议结构
- 先进行DNS解析IP地址
- 解析过程
- 浏览器发送HTTP协议
- HTTP协议格式
- 根据IP地址访问服务器,并建立TCP链接
- 三次握手
- TCP头部格式
- 路由寻址(网络层/IP层)
- 路由选择过程,路由查表
- IP头部格式
- (拿到数据),直接飘过
- TCP链接释放
- 四次挥手
- 浏览器显示页面
TCP/UDP协议头部,请画出来。(个人总结:在linux上找出对应的结构体,然后填写在头部里面,彰显自己有阅读源码的习惯和实力)
TCP状态装换图:UNP1:35页
PS:本图不能记忆,只能完全理解,自己走一遍流程。
请解析select和epoll的实现机制?有使用过它们吗?使用场景是怎样的?
原理+代码实现
这估计是最受欢迎的
链接
请讲述一下,TCP的慢开始和拥塞避免算法?
谢希仁219页
开始的时候,指数规律增长,实现慢开始。而后是快速地增长,刚好遇见拥塞窗口值cwnd,直接减半,然后进行拥塞避免“加法增大“
讲述一下,
unix的五种IO模型?其各自的特性有?分别使用在那种场合?unp1第六章
一般输入操作涉及两个阶段:
- 等待数据准备好:等待数据从网络到达、等待数据从磁盘复制到内存
- 从内核向进程复制数据:把数据从内核缓冲区复制到应用进程缓冲区
回答考官的时候,最好能从作图说明,执行流程,用箭头示意
- 阻塞模型
- 非阻塞模型(实际依赖循环检测数据读取)
- 多路IO复用模型
- 信号模型(SIGIO信号,暂时没有使用过)
- 异步模型(POSIX有接口,但不建议使用)
简单地手写一个cs模型出来
TCP/IP与socket的关系,
链接
- 端口的来源
- socket的五元组
- socket是tcp/ip协议的抽象,而不是映射