如何评测软件工程师的计算机网络知识水平与网络编程技能水平?
一、如何评测软件工程师的计算机网络知识水平与网络编程技能水平? 1.计算机网络基本知识 集线器、路由器、光纤、同轴电缆等硬件设备的基本了解; TCP/IP网络的五个层次; TCP/IP协议栈的初始化,网络数据收发的具体过程; ARP、DNS、L2交换网络的基本了解; 2.代码作业能力 熟悉Linux Socket网络编程; 追踪了解Socket API与系统调用的关系; 能够阅读并分析涉及网络数据收发过程的函数源代码; 3.学习能力 善于阅读源代码与技术文档; 善于搜索并学习他人经验; 二. 课程收获 首先从整体上来看用户态、内核态与客户端和服务器交互的对应关系(包括对应的协议层), 课程核心部分以实际Socket编程展开,具体部分可查看: Java的Socket编程与操作系统的SocketAPI关系探究。 在传输层着重对TCP协议进行探究,通过搭建调试Linux内核网络代码的环境MenuOS系统,之后对Linux背后的三次握手以及数据收发进行了着重探究,具体可参考: 深入理解TCP协议及其源代码。 在网络层的主要任务: 1.进行路由处理,即选择下一跳 2.完成IP与MAC地址映射 其中关于路由转发部分 路由表的转发过程: 在讲ARP时提到, ARP是根据IP地址获取物理地址的一个TCP/IP协议。 每个在运行的时候,都会有个arp表,在这个表里面有IP地址和mac地址的对应关系