# 庖丁解牛网络操作系统 **Repository Path**: dragon_rider/net ## Basic Information - **Project Name**: 庖丁解牛网络操作系统 - **Description**: 现代网络操作系统,涵盖基于Web的互联网操作系统,可以大致抽象为三个部分: Socket API是网络通信能力的抽象接口; DNS通过域名的方式提供了对网络资源管理的抽象表示; HTTP则以B/S模式提供了最典型、最成功的网络服务功能。 - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 7 - **Created**: 2021-05-22 - **Last Updated**: 2021-05-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 庖丁解牛网络操作系统 #### 介绍 现代网络操作系统,涵盖基于Web的互联网操作系统,可以大致抽象为三个部分: Socket API是网络通信能力的抽象接口; DNS通过域名的方式提供了对网络资源管理的抽象表示; HTTP则以B/S模式提供了最典型、最成功的网络服务功能。 #### 在浏览器中输入网址按回车后发生了什么? ``` 1.1.概览 1.2.程序员视角 1.3.网络体系结构视角 1.3.1.DNS域名存储体系及递归查询机制 1.3.2.面向连接的、可靠的字节流协议TCP 1.3.3.路由选择和存储转发 1.3.4.ARP地址解析 1.3.5.交换机中的学习和过滤机制 1.3.6.以太网CSMA/CD和网卡接收数据帧的同步机制 1.3.7.更多 1.4.总结 ``` #### Socket API及网络程序设计 * 实验一:编写一个简单的网络聊天程序 * 请参考本章节的范例代码完成一个hello/hi的简单的网络聊天程序 * 要求程序具有一定的可移植性, 如[socketwrapper.h](https://gitee.com/mengning997/net/blob/master/src/socketwrapper.h)实现了一种简单的外部接口本地化实现。 * 编程语言C/C++,编程环境:Unix-like System,推荐Ubuntu Linux。 #### 构建调试Linux内核网络代码的环境 * 实验二:构建调试Linux内核网络代码的环境 #### TCP/IP协议栈源代码分析 * inet_init是如何被调用的?从start_kernel到inet_init调用路径 * 跟踪分析TCP/IP协议栈如何将自己与上层套接口与下层数据链路层关联起来的? * TCP的三次握手源代码跟踪分析,跟踪找出设置和发送SYN/ACK的位置,以及状态转换的位置 * send在TCP/IP协议栈中的执行路径 * recv在TCP/IP协议栈中的执行路径 * 实验三:以上抽查一项 * 路由表的结构和初始化过程 * 通过目的IP查询路由表的到下一跳的IP地址的过程 * ARP缓存的数据结构及初始化过程,包括ARP缓存的初始化 * 如何将IP地址解析出对应的MAC地址 * 实验四:跟踪TCP send过程中的路由查询和ARP解析的最底层实现,路由查询和ARP解析抽查一项