本课程从实践入手循序渐进,以Linux系统环境和Linux内核源代码为例,将Linux网络相关命令用法、Socket网络编程、TCP协议、IP协议及路由表、ARP协议及ARP缓存、二层交换网络的学习转发和过滤数据库等互联网架构的关键环节一一解析,并通过MenuOS实验系统进行代码跟踪分析。最终理解分析打开一个网页背后互联网的工作过程,其中重点分为三个抽象层次:一是便于人类理解的记忆的编址方式DNS Naming;二是便于全球定位编址和路由的IP Networking;三是便于局域网中实际完成数据交换传输的Layer 2 Switching;同时在理解互联网体系结构的基础上探寻它的历史演化渊源,乃至发现它背后的设计哲学,解读未来网络的演进方向。
- 请加入班级博客————实验作业提交地址
- 实验答疑14-18周周四晚上7-9点思贤楼301和303实验室
-
BSD Socket/Linux Socket API
-
winsock/Linux Socket API
-
Java/Linux Socket API
-
Javascript/Nodejs/Linux Socket API
-
Python/Linux Socket API
-
go/Linux Socket API
-
...
- 以您熟悉的编程语言为例完成一个hello/hi的简单的网络聊天程序,并写一篇博客对比分析该编程语言提供的网络接口API与Linux Socket API之间的关系。
- 参见https://edu.cnblogs.com/campus/ustc/np2019/homework/10012
- 参考作业范例https://blog.csdn.net/vipshop_fin_dev/article/details/102966081
- 自行搭建调试Linux内核的环境Build a Linux system
- 构建调试Linux内核网络代码的环境MenuOS
- 将C/S方式的网络通信程序的服务端程序集成到MenuOS系统中,成为MenuOS系统的一个命令,跟踪分析MenuOS在执行这这个命令的过程中对Linux内核发出的系统调用请求,以及与socket接口函数的关系。
- 初始化MenuOS系统的网络功能
- 搞清楚如何激活Linux网络设备,并将MenuOS系统的网络设备用简便的方式配置好,使我们将TCP客户端也集成进去后可以完整的运行TCP网络程序的服务端和客户
- Linux内核5.0 source code
- 参考MenuOS
- Linux内核的启动过程, 跟踪分析Linux内核的启动过程
- glibc提供的系统调用函数API
- int 0x80、系统调用号及参数传递过程
- 保护现场与恢复现场
- 系统调用内核处理函数
- 使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用
- 分析system_call中断处理过程
- start_kernel --> trap_init --> idt_setup_traps --> 0x80--entry_INT80_32
- 在5.0内核int0x80对应的中断服务例程是entry_INT80_32,而不是原来的名称system_call了。
- 系统调用相关代码分析
- Socket接口对应的Linux内核系统调用处理代码
- Linux内核初始化过程中加载TCP/IP协议栈
- TCP/IP协议栈的初始化
Socket与系统调用深度分析http://edu.cnblogs.com/campus/ustc/np2019/homework/10175
- Socket API编程接口之上可以编写基于不同网络协议的应用程序;
- Socket接口在用户态通过系统调用机制进入内核;
- 内核中将系统调用作为一个特殊的中断来处理,以socket相关系统调用为例进行分析;
- socket相关系统调用的内核处理函数内部通过“多态机制”对不同的网络协议进行的封装方法; 请将Socket API编程接口、系统调用机制及内核中系统调用相关源代码、 socket相关系统调用的内核处理函数结合起来分析,并在X86 64环境下Linux5.0以上的内核中进一步跟踪验证。 完成一篇图文并茂、逻辑严谨、代码详实的实验报告。
选择如下任一个问题,通过理论分析、源代码阅读和运行跟踪深入理解TCP协议完成一篇实验报告博客
- TCP协议的初始化及socket创建TCP套接字描述符;
- connect及bind、listen、accept背后的三次握手
- send和recv背后数据的首发过程
- close背后的连接终止过程 另外您也可以任选一个您感兴趣的角度比如封包构造和解析、拥塞控制、执行视图等来深入理解TCP协议
- UNIX网络编程卷1:套接字联网API
- 庖丁解牛Linux内核分析
- POSIX: An Overview https://linuxhint.com/posix-standard/
- POSIX Full Document https://pubs.opengroup.org/onlinepubs/9699919799/
- POSIX System Interfaces https://pubs.opengroup.org/onlinepubs/9699919799/idx/functions.html
- POSIX Utilities https://pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.html
- POSIX Networking Services https://pubs.opengroup.org/onlinepubs/9699919799/idx/networking.html