From 19a960657b19ccabd93d535788d71007670631c4 Mon Sep 17 00:00:00 2001 From: mengning Date: Wed, 11 Dec 2019 14:11:03 +0800 Subject: [PATCH 01/47] Update README.md --- doc/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/README.md b/doc/README.md index 189b29c..5d55b7a 100644 --- a/doc/README.md +++ b/doc/README.md @@ -12,3 +12,4 @@ ## 庖丁解牛Linux网络协议栈 * [构建调试Linux内核网络代码的环境MenuOS系统](setupMenuOS.md) +* [Socket接口对应的Linux内核系统调用处理代码](socketSourceCode.md) From 39038cd011afc1b61102ff7f978becc9c918b25e Mon Sep 17 00:00:00 2001 From: mengning Date: Wed, 11 Dec 2019 14:13:58 +0800 Subject: [PATCH 02/47] Create socketSourceCode.md --- doc/socketSourceCode.md | 294 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 294 insertions(+) create mode 100644 doc/socketSourceCode.md diff --git a/doc/socketSourceCode.md b/doc/socketSourceCode.md new file mode 100644 index 0000000..5cbc857 --- /dev/null +++ b/doc/socketSourceCode.md @@ -0,0 +1,294 @@ +# Socket接口对应的Linux内核系统调用处理代码分析 + +理解Linux内核中socket接口层的代码,找出112号系统调用socketcall的内核处理函数sys_socketcall,理解socket接口函数编号和对应的socket接口内核处理函数 +通过前面构建MenuOS实验环境使得我们有方法跟踪socket接口通过系统调用进入内核代码,在我们的环境中socket接口通过[112号系统调用socketcall](http://codelab.shiyanlou.com/xref/linux-3.18.6/arch/x86/syscalls/syscall_32.tbl#111)进入内核的,具体系统调用的处理机制不是本专栏的重点,本专栏将重点放在网络部分的代码分析。 + +# 112号系统调用socketcall的内核处理函数sys_socketcall + + +112号系统调用socketcall的内核处理函数为sys_socketcall,函数实现见[/linux-3.18.6/net/socket.c#2492](http://codelab.shiyanlou.com/xref/linux-3.18.6/net/socket.c#2492) ,我们摘录部分代码如下: + +``` +/* +2485 * System call vectors. +2486 * +2487 * Argument checking cleaned up. Saved 20% in size. +2488 * This function doesn't need to set the kernel lock because +2489 * it is set by the callees. +2490 */ +2491 +2492SYSCALL_DEFINE2(socketcall, int, call, unsigned long __user *, args) +2493{ +... +2517 switch (call) { +2518 case SYS_SOCKET: +2519 err = sys_socket(a0, a1, a[2]); +2520 break; +2521 case SYS_BIND: +2522 err = sys_bind(a0, (struct sockaddr __user *)a1, a[2]); +2523 break; +2524 case SYS_CONNECT: +2525 err = sys_connect(a0, (struct sockaddr __user *)a1, a[2]); +2526 break; +2527 case SYS_LISTEN: +2528 err = sys_listen(a0, a1); +2529 break; +2530 case SYS_ACCEPT: +2531 err = sys_accept4(a0, (struct sockaddr __user *)a1, +2532 (int __user *)a[2], 0); +2533 break; +2534 case SYS_GETSOCKNAME: +2535 err = +2536 sys_getsockname(a0, (struct sockaddr __user *)a1, +2537 (int __user *)a[2]); +2538 break; +2539 case SYS_GETPEERNAME: +2540 err = +2541 sys_getpeername(a0, (struct sockaddr __user *)a1, +2542 (int __user *)a[2]); +2543 break; +2544 case SYS_SOCKETPAIR: +2545 err = sys_socketpair(a0, a1, a[2], (int __user *)a[3]); +2546 break; +2547 case SYS_SEND: +2548 err = sys_send(a0, (void __user *)a1, a[2], a[3]); +2549 break; +2550 case SYS_SENDTO: +2551 err = sys_sendto(a0, (void __user *)a1, a[2], a[3], +2552 (struct sockaddr __user *)a[4], a[5]); +2553 break; +2554 case SYS_RECV: +2555 err = sys_recv(a0, (void __user *)a1, a[2], a[3]); +2556 break; +2557 case SYS_RECVFROM: +2558 err = sys_recvfrom(a0, (void __user *)a1, a[2], a[3], +2559 (struct sockaddr __user *)a[4], +2560 (int __user *)a[5]); +2561 break; +2562 case SYS_SHUTDOWN: +2563 err = sys_shutdown(a0, a1); +2564 break; +2565 case SYS_SETSOCKOPT: +2566 err = sys_setsockopt(a0, a1, a[2], (char __user *)a[3], a[4]); +2567 break; +2568 case SYS_GETSOCKOPT: +2569 err = +2570 sys_getsockopt(a0, a1, a[2], (char __user *)a[3], +2571 (int __user *)a[4]); +2572 break; +2573 case SYS_SENDMSG: +2574 err = sys_sendmsg(a0, (struct msghdr __user *)a1, a[2]); +2575 break; +2576 case SYS_SENDMMSG: +2577 err = sys_sendmmsg(a0, (struct mmsghdr __user *)a1, a[2], a[3]); +2578 break; +2579 case SYS_RECVMSG: +2580 err = sys_recvmsg(a0, (struct msghdr __user *)a1, a[2]); +2581 break; +2582 case SYS_RECVMMSG: +2583 err = sys_recvmmsg(a0, (struct mmsghdr __user *)a1, a[2], a[3], +2584 (struct timespec __user *)a[4]); +2585 break; +2586 case SYS_ACCEPT4: +2587 err = sys_accept4(a0, (struct sockaddr __user *)a1, +2588 (int __user *)a[2], a[3]); +2589 break; +2590 default: +2591 err = -EINVAL; +2592 break; +2593 } +2594 return err; +2595} +2596 +``` + +在我们的实验环境中,socket接口的调用是通过给socket接口函数编号的方式通过112号系统调用来处理的。这些socket接口函数编号的宏定义见[/linux-3.18.6/include/uapi/linux/net.h#26](http://codelab.shiyanlou.com/xref/linux-3.18.6/include/uapi/linux/net.h#26) + +``` +26#define SYS_SOCKET 1 /* sys_socket(2) */ +27#define SYS_BIND 2 /* sys_bind(2) */ +28#define SYS_CONNECT 3 /* sys_connect(2) */ +29#define SYS_LISTEN 4 /* sys_listen(2) */ +30#define SYS_ACCEPT 5 /* sys_accept(2) */ +31#define SYS_GETSOCKNAME 6 /* sys_getsockname(2) */ +32#define SYS_GETPEERNAME 7 /* sys_getpeername(2) */ +33#define SYS_SOCKETPAIR 8 /* sys_socketpair(2) */ +34#define SYS_SEND 9 /* sys_send(2) */ +35#define SYS_RECV 10 /* sys_recv(2) */ +36#define SYS_SENDTO 11 /* sys_sendto(2) */ +37#define SYS_RECVFROM 12 /* sys_recvfrom(2) */ +38#define SYS_SHUTDOWN 13 /* sys_shutdown(2) */ +39#define SYS_SETSOCKOPT 14 /* sys_setsockopt(2) */ +40#define SYS_GETSOCKOPT 15 /* sys_getsockopt(2) */ +41#define SYS_SENDMSG 16 /* sys_sendmsg(2) */ +42#define SYS_RECVMSG 17 /* sys_recvmsg(2) */ +43#define SYS_ACCEPT4 18 /* sys_accept4(2) */ +44#define SYS_RECVMMSG 19 /* sys_recvmmsg(2) */ +45#define SYS_SENDMMSG 20 /* sys_sendmmsg(2) */ +``` + +接下来我们根据TCP server程序调用socket接口的顺序依次看一下socket、bind、listen、accept等socket接口的内核处理函数。 + +# socket接口函数的内核处理函数sys_socket + +sys_socket内核处理函数见[/linux-3.18.6/net/socket.c#1377](http://codelab.shiyanlou.com/xref//linux-3.18.6/net/socket.c#1377) ,摘录其中的关键代码如下: + +``` +1377SYSCALL_DEFINE3(socket, int, family, int, type, int, protocol) +1378{ +1379 int retval; +1380 struct socket *sock; +... +1397 retval = sock_create(family, type, protocol, &sock); +... +``` + +socket接口函数主要作用是建立socket套接字描述符,Unix-like系统非常成功的设计是将一切都抽象为文件,socket套接字也是一种特殊的文件,sock_create内部就是使用文件系统中的数据结构inode为socket套接字分配了文件描述符。socket套接字与普通的文件在内部存储结构上是一致的,甚至文件描述符和套接字描述符是通用的,但是套接字和文件还是特殊之处,因此定义了结构体struct socket,struct socket的结构体定义见[/linux-3.18.6/include/linux/net.h#105](http://codelab.shiyanlou.com/xref/linux-3.18.6/include/linux/net.h#105),具体代码摘录如下: + +``` +95/** +96 * struct socket - general BSD socket +97 * @state: socket state (%SS_CONNECTED, etc) +98 * @type: socket type (%SOCK_STREAM, etc) +99 * @flags: socket flags (%SOCK_ASYNC_NOSPACE, etc) +100 * @ops: protocol specific socket operations +101 * @file: File back pointer for gc +102 * @sk: internal networking protocol agnostic socket representation +103 * @wq: wait queue for several uses +104 */ +105struct socket { +106 socket_state state; +107 +108 kmemcheck_bitfield_begin(type); +109 short type; +110 kmemcheck_bitfield_end(type); +111 +112 unsigned long flags; +113 +114 struct socket_wq __rcu *wq; +115 +116 struct file *file; +117 struct sock *sk; +118 const struct proto_ops *ops; +119}; +``` + +sock_create内部还根据指定的网络协议族family和protocol初始化了相关协议的处理接口到结构体struct socket中,结构体struct socket在后续的分析和理解中还会用到,这里简单略过用到时再具体研究。 + +# bind接口函数的内核处理函数sys_bind + +内核处理函数sys_bind见[/linux-3.18.6/net/socket.c#1527](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/socket.c#1527),它的功能是绑定网络地址。 + +``` +1519/* +1520 * Bind a name to a socket. Nothing much to do here since it's +1521 * the protocol's responsibility to handle the local address. +1522 * +1523 * We move the socket address to kernel space before we call +1524 * the protocol layer (having also checked the address is ok). +1525 */ +1526 +1527SYSCALL_DEFINE3(bind, int, fd, struct sockaddr __user *, umyaddr, int, addrlen) +1528{ +1529 struct socket *sock; +1530 struct sockaddr_storage address; +1531 int err, fput_needed; +1532 +1533 sock = sockfd_lookup_light(fd, &err, &fput_needed); +1534 if (sock) { +1535 err = move_addr_to_kernel(umyaddr, addrlen, &address); +1536 if (err >= 0) { +1537 err = security_socket_bind(sock, +1538 (struct sockaddr *)&address, +1539 addrlen); +1540 if (!err) +1541 err = sock->ops->bind(sock, +1542 (struct sockaddr *) +1543 &address, addrlen); +1544 } +1545 fput_light(sock->file, fput_needed); +1546 } +1547 return err; +1548} +``` + +如上代码可以看到,move_addr_to_kernel将用户态的struct sockaddr结构体数据拷贝到内核里的结构体变量struct sockaddr_storage address,然后使用sock->ops->bind将该网络地址绑定到之前创建的套接字。这里用到了通过套接字描述符fd找到之前分配的套接字struct socket *sock,利用该套接字中的成员const struct proto_ops *ops找到对应网络协议的bind函数指针即sock->ops->bind。这里即是一个socket接口层通往具体协议处理的接口。 + +# listen接口函数的内核处理函数sys_listen + +内核处理函数sys_listen见[/linux-3.18.6/net/socket.c#1556](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/socket.c#1556),具体代码如下: + +``` +1550/* +1551 * Perform a listen. Basically, we allow the protocol to do anything +1552 * necessary for a listen, and if that works, we mark the socket as +1553 * ready for listening. +1554 */ +1555 +1556SYSCALL_DEFINE2(listen, int, fd, int, backlog) +1557{ +1558 struct socket *sock; +1559 int err, fput_needed; +1560 int somaxconn; +1561 +1562 sock = sockfd_lookup_light(fd, &err, &fput_needed); +1563 if (sock) { +1564 somaxconn = sock_net(sock->sk)->core.sysctl_somaxconn; +1565 if ((unsigned int)backlog > somaxconn) +1566 backlog = somaxconn; +1567 +1568 err = security_socket_listen(sock, backlog); +1569 if (!err) +1570 err = sock->ops->listen(sock, backlog); +1571 +1572 fput_light(sock->file, fput_needed); +1573 } +1574 return err; +1575} +``` + +listen接口的主要作用是通知网络底层开始监听套接字并接收网络连接请求,listen接口正常处理完TCP服务就已经启动了,只是这时网络连接请求都会暂存在缓冲区,等调用accept建立连接,listen接口函数的参数backlog就是用来配置支持的连接数。 + +我们发现实际处理的工作是由sock->ops->listen完成的,这也是一个socket接口层通往具体协议处理的接口。 + +# accept接口函数的内核处理函数sys_accept + +内核处理函数sys_accept的主要功能是调用sys_accept4完成的,sys_accept4见[/linux-3.18.6/net/socket.c#1589](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/socket.c#1589),具体代码摘录如下: + +``` +1577/* +1578 * For accept, we attempt to create a new socket, set up the link +1579 * with the client, wake up the client, then return the new +1580 * connected fd. We collect the address of the connector in kernel +1581 * space and move it to user at the very end. This is unclean because +1582 * we open the socket then return an error. +... +1589SYSCALL_DEFINE4(accept4, int, fd, struct sockaddr __user *, upeer_sockaddr, +1590 int __user *, upeer_addrlen, int, flags) +1591{ +... +1608 newsock = sock_alloc(); +... +1612 newsock->type = sock->type; +1613 newsock->ops = sock->ops; +... +1621 newfd = get_unused_fd_flags(flags); +... +1627 newfile = sock_alloc_file(newsock, flags, sock->sk->sk_prot_creator->name); +... +1639 err = sock->ops->accept(sock, newsock, sock->file->f_flags); +... +1643 if (upeer_sockaddr) { +1644 if (newsock->ops->getname(newsock, (struct sockaddr *)&address, +... +1649 err = move_addr_to_user(&address, +... +1657 fd_install(newfd, newfile); +1658 err = newfd; +... +1668} +``` + +在TCP的服务器端通过socket函数创建的套接字描述符只是用来监听客户连接请求,accept函数内部会为每一个请求连接的客户创建一个新的套接字描述符专门负责与该客户端进行网络通信,并将该客户的网络地址和端口等地址信息返回到用户态。这里涉及更多的网络协议处理的接口如sock->ops->accept、ewsock->ops->getname。 + +send和recv接口的内核处理函数类似也是通过调用网络协议处理的接口来将具体的工作交给协议层来完成,比如sys_recv最终调用了sock->ops->recvmsg,sys_send最终调用了sock->ops->sendmsg,但send和recv接口涉及网络数据流,是理解网络部分的关键内容,我们后续部分专门具体研究。 From 4d2cc5bd04ed32d5b9f02731efed2a857c54e05d Mon Sep 17 00:00:00 2001 From: mengning Date: Thu, 12 Dec 2019 17:06:48 +0800 Subject: [PATCH 03/47] Update np2019.md --- np2019.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/np2019.md b/np2019.md index 0bb1026..db63418 100644 --- a/np2019.md +++ b/np2019.md @@ -56,6 +56,15 @@ * 分析system_call中断处理过程 * start_kernel --> trap_init --> idt_setup_traps --> [0x80--entry_INT80_32](https://github.com/mengning/linux/blob/master/arch/x86/kernel/idt.c#L105) * 在5.0内核int0x80对应的中断服务例程是[entry_INT80_32](https://github.com/mengning/linux/blob/master/arch/x86/entry/entry_32.S#L989),而不是原来的名称system_call了。 + + ### 实验作业四 +Socket与系统调用深度分析http://edu.cnblogs.com/campus/ustc/np2019/homework/10175 +* Socket API编程接口之上可以编写基于不同网络协议的应用程序; +* Socket接口在用户态通过系统调用机制进入内核; +* 内核中将系统调用作为一个特殊的中断来处理,以socket相关系统调用为例进行分析; +* socket相关系统调用的内核处理函数内部通过“多态机制”对不同的网络协议进行的封装方法; +请将Socket API编程接口、系统调用机制及内核中系统调用相关源代码、 socket相关系统调用的内核处理函数结合起来分析,并在X86 64环境下Linux5.0以上的内核中进一步跟踪验证。 +完成一篇图文并茂、逻辑严谨、代码详实的实验报告。 ## 参考资料 From eee88b4f5bea5437796b822a14a4348109d6e013 Mon Sep 17 00:00:00 2001 From: mengning Date: Thu, 12 Dec 2019 17:08:25 +0800 Subject: [PATCH 04/47] Update np2019.md --- np2019.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/np2019.md b/np2019.md index db63418..0f822e4 100644 --- a/np2019.md +++ b/np2019.md @@ -56,7 +56,7 @@ * 分析system_call中断处理过程 * start_kernel --> trap_init --> idt_setup_traps --> [0x80--entry_INT80_32](https://github.com/mengning/linux/blob/master/arch/x86/kernel/idt.c#L105) * 在5.0内核int0x80对应的中断服务例程是[entry_INT80_32](https://github.com/mengning/linux/blob/master/arch/x86/entry/entry_32.S#L989),而不是原来的名称system_call了。 - + * [Socket接口对应的Linux内核系统调用处理代码](https://github.com/mengning/net/blob/master/doc/socketSourceCode.md) ### 实验作业四 Socket与系统调用深度分析http://edu.cnblogs.com/campus/ustc/np2019/homework/10175 * Socket API编程接口之上可以编写基于不同网络协议的应用程序; From d6909cb5956c4526ce786a97e517064c659fb92d Mon Sep 17 00:00:00 2001 From: mengning Date: Fri, 13 Dec 2019 08:56:33 +0800 Subject: [PATCH 05/47] Update README.md --- doc/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/README.md b/doc/README.md index 5d55b7a..261035b 100644 --- a/doc/README.md +++ b/doc/README.md @@ -12,4 +12,5 @@ ## 庖丁解牛Linux网络协议栈 * [构建调试Linux内核网络代码的环境MenuOS系统](setupMenuOS.md) +* [系统调用相关代码分析](systemcall.md) * [Socket接口对应的Linux内核系统调用处理代码](socketSourceCode.md) From 183470e75552e76ca3b921c51199e6b857bd0633 Mon Sep 17 00:00:00 2001 From: mengning Date: Fri, 13 Dec 2019 08:58:48 +0800 Subject: [PATCH 06/47] Create systemcall.md --- doc/systemcall.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 doc/systemcall.md diff --git a/doc/systemcall.md b/doc/systemcall.md new file mode 100644 index 0000000..818b027 --- /dev/null +++ b/doc/systemcall.md @@ -0,0 +1,5 @@ +# 系统调用相关代码分析 + +## 系统调用的初始化 + +* start_kernel --> trap_init --> idt_setup_traps --> 0x80--entry_INT80_32,在5.0内核int0x80对应的中断服务例程是entry_INT80_32,而不是原来的名称system_call了。 From 3a4492345a5d9b0d444dcc576dbb669b91d473b9 Mon Sep 17 00:00:00 2001 From: mengning Date: Fri, 13 Dec 2019 09:16:03 +0800 Subject: [PATCH 07/47] Update systemcall.md --- doc/systemcall.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/doc/systemcall.md b/doc/systemcall.md index 818b027..e4df3b3 100644 --- a/doc/systemcall.md +++ b/doc/systemcall.md @@ -3,3 +3,35 @@ ## 系统调用的初始化 * start_kernel --> trap_init --> idt_setup_traps --> 0x80--entry_INT80_32,在5.0内核int0x80对应的中断服务例程是entry_INT80_32,而不是原来的名称system_call了。 + +[64位的系统调用中断向量与服务例程绑定](https://github.com/torvalds/linux/blob/c3bfc5dd73c6f519ff0636d4e709515f06edef78/arch/x86/kernel/cpu/common.c#L1670) +``` +void syscall_init(void) +{ + wrmsr(MSR_STAR, 0, (__USER32_CS << 16) | __KERNEL_CS); + wrmsrl(MSR_LSTAR, (unsigned long)entry_SYSCALL_64); + ... +``` + +[64位的系统调用服务例程](https://github.com/torvalds/linux/blob/ab851d49f6bfc781edd8bd44c72ec1e49211670b/arch/x86/entry/entry_64.S#L175) +``` +SYM_CODE_START(entry_SYSCALL_64) +... + /* IRQs are off. */ + movq %rax, %rdi + movq %rsp, %rsi + call do_syscall_64 /* returns with IRQs disabled */ +``` +[do_syscall_64](https://github.com/torvalds/linux/blob/ab851d49f6bfc781edd8bd44c72ec1e49211670b/arch/x86/entry/common.c#L282) +``` +#ifdef CONFIG_X86_64 +__visible void do_syscall_64(unsigned long nr, struct pt_regs *regs) +{ +... + if (likely(nr < NR_syscalls)) { + nr = array_index_nospec(nr, NR_syscalls); + regs->ax = sys_call_table[nr](regs); +... +} +#endif +``` From 85e18b514865cc3d82417b71ff727888c9dceafa Mon Sep 17 00:00:00 2001 From: mengning Date: Fri, 13 Dec 2019 09:26:17 +0800 Subject: [PATCH 08/47] Update systemcall.md --- doc/systemcall.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/systemcall.md b/doc/systemcall.md index e4df3b3..36a30d2 100644 --- a/doc/systemcall.md +++ b/doc/systemcall.md @@ -2,8 +2,8 @@ ## 系统调用的初始化 -* start_kernel --> trap_init --> idt_setup_traps --> 0x80--entry_INT80_32,在5.0内核int0x80对应的中断服务例程是entry_INT80_32,而不是原来的名称system_call了。 - +* x86-32位系统:start_kernel --> trap_init --> idt_setup_traps --> 0x80--entry_INT80_32,在5.0内核int0x80对应的中断服务例程是entry_INT80_32,而不是原来的名称system_call了。 +* x86-64位系统:start_kernel --> trap_init --> cpu_init --> syscall_init [64位的系统调用中断向量与服务例程绑定](https://github.com/torvalds/linux/blob/c3bfc5dd73c6f519ff0636d4e709515f06edef78/arch/x86/kernel/cpu/common.c#L1670) ``` void syscall_init(void) From 6e29209cd105dacb0f8748d6717af5a65b873887 Mon Sep 17 00:00:00 2001 From: mengning Date: Fri, 13 Dec 2019 09:29:36 +0800 Subject: [PATCH 09/47] Update systemcall.md --- doc/systemcall.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/doc/systemcall.md b/doc/systemcall.md index 36a30d2..2eac6fc 100644 --- a/doc/systemcall.md +++ b/doc/systemcall.md @@ -4,7 +4,7 @@ * x86-32位系统:start_kernel --> trap_init --> idt_setup_traps --> 0x80--entry_INT80_32,在5.0内核int0x80对应的中断服务例程是entry_INT80_32,而不是原来的名称system_call了。 * x86-64位系统:start_kernel --> trap_init --> cpu_init --> syscall_init -[64位的系统调用中断向量与服务例程绑定](https://github.com/torvalds/linux/blob/c3bfc5dd73c6f519ff0636d4e709515f06edef78/arch/x86/kernel/cpu/common.c#L1670) + * [64位的系统调用中断向量与服务例程绑定](https://github.com/torvalds/linux/blob/c3bfc5dd73c6f519ff0636d4e709515f06edef78/arch/x86/kernel/cpu/common.c#L1670) ``` void syscall_init(void) { @@ -12,8 +12,10 @@ void syscall_init(void) wrmsrl(MSR_LSTAR, (unsigned long)entry_SYSCALL_64); ... ``` +## 系统调用的正常执行 -[64位的系统调用服务例程](https://github.com/torvalds/linux/blob/ab851d49f6bfc781edd8bd44c72ec1e49211670b/arch/x86/entry/entry_64.S#L175) +用户态程序发起系统调用,对于x86-64位程序应该是直接跳到entry_SYSCALL_64 + * [64位的系统调用服务例程](https://github.com/torvalds/linux/blob/ab851d49f6bfc781edd8bd44c72ec1e49211670b/arch/x86/entry/entry_64.S#L175) ``` SYM_CODE_START(entry_SYSCALL_64) ... @@ -22,7 +24,7 @@ SYM_CODE_START(entry_SYSCALL_64) movq %rsp, %rsi call do_syscall_64 /* returns with IRQs disabled */ ``` -[do_syscall_64](https://github.com/torvalds/linux/blob/ab851d49f6bfc781edd8bd44c72ec1e49211670b/arch/x86/entry/common.c#L282) + * [do_syscall_64](https://github.com/torvalds/linux/blob/ab851d49f6bfc781edd8bd44c72ec1e49211670b/arch/x86/entry/common.c#L282) ``` #ifdef CONFIG_X86_64 __visible void do_syscall_64(unsigned long nr, struct pt_regs *regs) From 655f2f70484923dbd8175cc6699b179341d94a43 Mon Sep 17 00:00:00 2001 From: mengning Date: Fri, 13 Dec 2019 09:43:06 +0800 Subject: [PATCH 10/47] Update systemcall.md --- doc/systemcall.md | 56 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git a/doc/systemcall.md b/doc/systemcall.md index 2eac6fc..8733e27 100644 --- a/doc/systemcall.md +++ b/doc/systemcall.md @@ -15,6 +15,56 @@ void syscall_init(void) ## 系统调用的正常执行 用户态程序发起系统调用,对于x86-64位程序应该是直接跳到entry_SYSCALL_64 + * [32位的系统调用服务程序](https://github.com/mengning/linux/blob/master/arch/x86/entry/entry_32.S#L989) +``` +ENTRY(entry_INT80_32) + ASM_CLAC + pushl %eax /* pt_regs->orig_ax */ + + SAVE_ALL pt_regs_ax=$-ENOSYS switch_stacks=1 /* save rest */ + + /* + * User mode is traced as though IRQs are on, and the interrupt gate + * turned them off. + */ + TRACE_IRQS_OFF + + movl %esp, %eax + call do_int80_syscall_32 + ... +``` + * [do_int80_syscall_32](https://github.com/torvalds/linux/blob/ab851d49f6bfc781edd8bd44c72ec1e49211670b/arch/x86/entry/common.c#L345) +``` +static __always_inline void do_syscall_32_irqs_on(struct pt_regs *regs) +{ +... +#ifdef CONFIG_IA32_EMULATION + regs->ax = ia32_sys_call_table[nr](regs); +#else + /* + * It's possible that a 32-bit syscall implementation + * takes a 64-bit parameter but nonetheless assumes that + * the high bits are zero. Make sure we zero-extend all + * of the args. + */ + regs->ax = ia32_sys_call_table[nr]( + (unsigned int)regs->bx, (unsigned int)regs->cx, + (unsigned int)regs->dx, (unsigned int)regs->si, + (unsigned int)regs->di, (unsigned int)regs->bp); +#endif /* CONFIG_IA32_EMULATION */ + } + + syscall_return_slowpath(regs); +} + +/* Handles int $0x80 */ +__visible void do_int80_syscall_32(struct pt_regs *regs) +{ + enter_from_user_mode(); + local_irq_enable(); + do_syscall_32_irqs_on(regs); +} +``` * [64位的系统调用服务例程](https://github.com/torvalds/linux/blob/ab851d49f6bfc781edd8bd44c72ec1e49211670b/arch/x86/entry/entry_64.S#L175) ``` SYM_CODE_START(entry_SYSCALL_64) @@ -24,7 +74,7 @@ SYM_CODE_START(entry_SYSCALL_64) movq %rsp, %rsi call do_syscall_64 /* returns with IRQs disabled */ ``` - * [do_syscall_64](https://github.com/torvalds/linux/blob/ab851d49f6bfc781edd8bd44c72ec1e49211670b/arch/x86/entry/common.c#L282) + * [do_syscall_64](https://github.com/torvalds/linux/blob/ab851d49f6bfc781edd8bd44c72ec1e49211670b/arch/x86/entry/common.c#L282) ``` #ifdef CONFIG_X86_64 __visible void do_syscall_64(unsigned long nr, struct pt_regs *regs) @@ -37,3 +87,7 @@ __visible void do_syscall_64(unsigned long nr, struct pt_regs *regs) } #endif ``` +## 系统调用表的初始化 + +ia32_sys_call_table 和 sys_call_table 数组都是由如下目录下的代码初始化的。 +https://github.com/mengning/linux/tree/master/arch/x86/entry/syscalls From e3da50a753cafe069f4e3f977f744b1b49f3f5c3 Mon Sep 17 00:00:00 2001 From: mengning Date: Fri, 13 Dec 2019 09:50:34 +0800 Subject: [PATCH 11/47] Update README.md --- doc/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/README.md b/doc/README.md index 261035b..ef82e61 100644 --- a/doc/README.md +++ b/doc/README.md @@ -14,3 +14,4 @@ * [构建调试Linux内核网络代码的环境MenuOS系统](setupMenuOS.md) * [系统调用相关代码分析](systemcall.md) * [Socket接口对应的Linux内核系统调用处理代码](socketSourceCode.md) +* [Linux内核初始化过程中加载TCP/IP协议栈](tcpipinit.md) From c2388a18aad8226aebb8c1e4a234a32acf09c7df Mon Sep 17 00:00:00 2001 From: mengning Date: Fri, 13 Dec 2019 09:51:01 +0800 Subject: [PATCH 12/47] Create tcpip.md --- doc/tcpip.md | 246 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 246 insertions(+) create mode 100644 doc/tcpip.md diff --git a/doc/tcpip.md b/doc/tcpip.md new file mode 100644 index 0000000..967c9a7 --- /dev/null +++ b/doc/tcpip.md @@ -0,0 +1,246 @@ +# Linux内核初始化过程中加载TCP/IP协议栈 + +Linux内核初始化过程中加载TCP/IP协议栈,从start_kernel、kernel_init、do_initcalls、inet_init,找出Linux内核初始化TCP/IP的入口位置,即为inet_init函数。 + +## Linux内核启动过程 + +之前的实验中我们设置了断点start_kernel,start_kernel即是Linux内核的起点,相当于我们普通C程序的main函数,我们知道C语言代码从main函数开启动,C程序的阅读也从main函数开始。这个start_kernel也是整个Linux内核启动的起点,我们可以在内核代码路面init/main.c中找到`start_kernel`函数,这个地方就是初始化Linux内核启动的起点。 + + +我们知道如何跟踪内核代码运行过程的话,我们应该有目的的来跟踪它。我们来跟踪内核启动过程,并重点找出初始化TCP/IP协议栈的位置。 + +首先我们找到内核启动的起点`start_kernel`函数所在的main.c,我们简单浏览一下`start_kernel`函数,这里有很多其他的模块初始化工作,因为这里边每一个启动的点都涉及到比较复杂的模块,因为内核非常庞大,包括很多的模块,当然如果你研究内核的某个模块的话,往往都需要了解main.c中`start_kernel`这一块,因为内核的主要模块的初始化工作,都是直接或间接从`start_kernel`函数里开始调用的。涉及到的模块太多太复杂,那我们只看我们需要了解的东西,这里边有很多setup设置的东西,这里边有一个`trap_init`函数调用,涉及到一些初始化中断向量,可以看到它在`set_intr_gate`设置到很多的中断门,很多的硬件中断,其中有一个系统陷阱门,进行系统调用的。其他还有`mm_init`内存管理模块的初始化等等。`start_kernel`中的最后一句为`rest_init`,这个比较有意思。内核启动完了之后,有一个`call_cpu_idle`,当系统没有进程需要执行时就调用idle进程。`rest_init`是0号进程,它创建了1号进程init和其他的一些服务进程。这就是内核的启动过程,我们先简单这样看,然后可以在重点找出网络初始化以及初始化TCP/IP协议栈的位置。下面我们再分析一下关键的函数。 + +### `start_kernel()` + +main.c 中没有 main 函数,`start_kernel()` 相当于main函数。`start_kernel`是一切的起点,在此函数被调用之前内核代码主要是用汇编语言写的,完成硬件系统的初始化工作,为C代码的运行设置环境。由调试可得`start_kernel`在[/linux-3.18.6/init/main.c#500](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/init/main.c#500): + +``` +500asmlinkage __visible void __init start_kernel(void) +501{ +... +679 /* Do the rest non-__init'ed, we're now alive */ +680 rest_init(); +681} +``` + +### `rest_init()`函数 + + +rest_init在[linux-3.18.6/init/main.c#393](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/init/main.c#393)的位置: +``` +393static noinline void __init_refok rest_init(void) +394{ +395 int pid; +396 +397 rcu_scheduler_starting(); +398 /* +399 * We need to spawn init first so that it obtains pid 1, however +400 * the init task will end up wanting to create kthreads, which, if +401 * we schedule it before we create kthreadd, will OOPS. +402 */ +403 kernel_thread(kernel_init, NULL, CLONE_FS); +404 numa_default_policy(); +405 pid = kernel_thread(kthreadd, NULL, CLONE_FS | CLONE_FILES); +406 rcu_read_lock(); +407 kthreadd_task = find_task_by_pid_ns(pid, &init_pid_ns); +408 rcu_read_unlock(); +409 complete(&kthreadd_done); +410 +411 /* +412 * The boot idle thread must execute schedule() +413 * at least once to get things moving: +414 */ +415 init_idle_bootup_task(current); +416 schedule_preempt_disabled(); +417 /* Call into cpu_idle with preempt disabled */ +418 cpu_startup_entry(CPUHP_ONLINE); +419} +``` + +通过`rest_init()`新建`kernel_init`、`kthreadd`内核线程。403行代码 ```kernel_thread(kernel_init, NULL, CLONE_FS);```,由注释得调用 `kernel_thread()`创建1号内核线程(在`kernel_init`函数正式启动),`kernel_init`函数启动了init用户程序。 + +另外405行代码 ```pid = kernel_thread(kthreadd, NULL, CLONE_FS | CLONE_FILES);``` 调用`kernel_thread`执行`kthreadd`,创建PID为2的内核线程。 + +`rest_init()`最后调用`cpu_idle()` 演变成了idle进程。 + +## Linux内核是如何加载TCP/IP协议栈的? + +### `kernel_init`函数和do_basic_setup函数 + + `kernel_init`函数的主要工作是夹在init用户程序,但是在加载init用户程序前通过kernel_init_freeable函数进一步做了一些初始化的工作。[`kernel_init`函数和kernel_init_freeable函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/init/main.c#934): + +``` +930static int __ref kernel_init(void *unused) +931{ +932 int ret; +933 +934 kernel_init_freeable(); +935 /* need to finish all async __init code before freeing the memory */ +936 async_synchronize_full(); +937 free_initmem(); +938 mark_rodata_ro(); +939 system_state = SYSTEM_RUNNING; +940 numa_default_policy(); +941 +942 flush_delayed_fput(); +943 +944 if (ramdisk_execute_command) { +945 ret = run_init_process(ramdisk_execute_command); +946 if (!ret) +947 return 0; +948 pr_err("Failed to execute %s (error %d)\n", +949 ramdisk_execute_command, ret); +950 } +951 +952 /* +953 * We try each of these until one succeeds. +954 * +955 * The Bourne shell can be used instead of init if we are +956 * trying to recover a really broken machine. +957 */ +958 if (execute_command) { +959 ret = run_init_process(execute_command); +960 if (!ret) +961 return 0; +962 pr_err("Failed to execute %s (error %d). Attempting defaults...\n", +963 execute_command, ret); +964 } +965 if (!try_to_run_init_process("/sbin/init") || +966 !try_to_run_init_process("/etc/init") || +967 !try_to_run_init_process("/bin/init") || +968 !try_to_run_init_process("/bin/sh")) +969 return 0; +970 +971 panic("No working init found. Try passing init= option to kernel. " +972 "See Linux Documentation/init.txt for guidance."); +973} +974 +975static noinline void __init kernel_init_freeable(void) +976{ +977 /* +978 * Wait until kthreadd is all set-up. +979 */ +980 wait_for_completion(&kthreadd_done); +981 +... +1004 do_basic_setup(); +1005 +... +1033} +1034 +``` + +kernel_init_freeable函数做的一些初始化的工作与我们网络初始化有关的主要在[do_basic_setup函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/init/main.c#867)中,其中do_initcalls用一种巧妙的方式对一些子系统进行了初始化,其中包括TCP/IP网络协议栈的初始化。 +``` +867/* +868 * Ok, the machine is now initialized. None of the devices +869 * have been touched yet, but the CPU subsystem is up and +870 * running, and memory and process management works. +871 * +872 * Now we can finally start doing some real work.. +873 */ +874static void __init do_basic_setup(void) +875{ +876 cpuset_init_smp(); +877 usermodehelper_init(); +878 shmem_init(); +879 driver_init(); +880 init_irq_proc(); +881 do_ctors(); +882 usermodehelper_enable(); +883 do_initcalls(); +884 random_int_secret_init(); +885} +``` + +### do_initcalls函数巧妙地对网络协议进行初始化 + +[do_initcalls函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/init/main.c#859)是table驱动的,维护了一个initcalls的table,从而可以对每一个注册进来的初始化项目进行初始化,这个巧妙的机制可以理解成观察者模式,每一个协议子系统是一个观察者,将它的初始化入口注册进来,do_initcalls函数是被观察者负责统一调用每一个子系统的初始化函数指针。 +``` +859static void __init do_initcalls(void) +860{ +861 int level; +862 +863 for (level = 0; level < ARRAY_SIZE(initcall_levels) - 1; level++) +864 do_initcall_level(level); +865} +``` +以TCP/IP协议栈为例,[inet_init函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/af_inet.c#1674)是TCP/IP协议栈初始化的入口函数,通过fs_initcall(inet_init)将inet_init函数注册进initcalls的table。 +``` +1674static int __init inet_init(void) +1675{ +... +1795} +1796 +1797fs_initcall(inet_init); +``` +这里do_initcalls的注册和调用机制是通过复杂的宏来实现的,代码读起来非常晦涩,这里我们换一种方法通过跟踪代码运行过程来验证它。 + +我们首先将端点设在kernel_init、do_initcalls、inet_init以及do_initcalls后面的random_int_secret_init,预期这四个断点会依次触发,从而可以间接验证fs_initcall(inet_init)确实将inet_init注册进了do_initcalls并被do_initcalls调用执行了。 + +在lab3目录下执行qemu -kernel ../../linux-3.18.6/arch/x86/boot/bzImage -initrd ../rootfs.img -s -S +``` +shiyanlou:~/ $ cd LinuxKernel [14:08:18] +shiyanlou:LinuxKernel/ $ git clone https://github.com/mengning/linuxnet.git +\u6b63\u514b\u9686\u5230 'linuxnet'... +remote: Enumerating objects: 175, done. +remote: Counting objects: 100% (175/175), done. +remote: Compressing objects: 100% (151/151), done. +remote: Total 175 (delta 100), reused 47 (delta 21), pack-reused 0 +\u63a5\u6536\u5bf9\u8c61\u4e2d: 100% (175/175), 4.57 MiB | 2.58 MiB/s, done. +\u5904\u7406 delta \u4e2d: 100% (100/100), done. +\u68c0\u67e5\u8fde\u63a5... \u5b8c\u6210\u3002 +shiyanlou:LinuxKernel/ $ cd linuxnet/lab3 [14:08:38] +shiyanlou:lab3/ (master) $ make rootfs [14:08:38] +gcc -o init linktable.c menu.c main.c -m32 -static -lpthread +find init | cpio -o -Hnewc |gzip -9 > ../rootfs.img +1889 \u5757 +qemu -kernel ../../linux-3.18.6/arch/x86/boot/bzImage -initrd ../rootfs.img +shiyanlou:lab3/ (master*) $ qemu -kernel ../../linux-3.18.6/arch/x86/boot/bzImage -initrd ../rootfs.img -s -S +``` +在另一个窗口执行gdb并依次执行如下gdb命令: +``` +(gdb) file ../../linux-3.18.6/vmlinux +Reading symbols from ../../linux-3.18.6/vmlinux...done. +(gdb) target remote:1234 +Remote debugging using :1234 +0x0000fff0 in ?? () +(gdb) b kernel_init +Breakpoint 1 at 0xc1740240: file init/main.c, line 931. +(gdb) b do_initcalls +Breakpoint 2 at 0xc1a2fc2f: file init/main.c, line 851. +(gdb) b inet_init +Breakpoint 3 at 0xc1a76de3: file net/ipv4/af_inet.c, line 1675. +(gdb) b random_int_secret_init +Breakpoint 4 at 0xc132dbf0: file drivers/char/random.c, line 1712. +``` +这样我们就设置好了验证的系统环境,如图: +![](http://i2.51cto.com/images/blog/201812/04/fbc983529bb40b68d56968650a9ad166.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=) + +依次按c让Linux内核从断点处继续执行,可以看到Linux内核依次断点在kernel_init、do_initcalls、inet_init以及do_initcalls后面的random_int_secret_init,如下输出信息与我们的预期是一致的,fs_initcall(inet_init)确实将inet_init注册进了do_initcalls并被do_initcalls调用执行了。 +``` +(gdb) c +Continuing. + +Breakpoint 1, kernel_init (unused=0x0) at init/main.c:931 +931 { +(gdb) c +Continuing. + +Breakpoint 2, kernel_init_freeable () at init/main.c:1004 +1004 do_basic_setup(); +(gdb) c +Continuing. + +Breakpoint 3, inet_init () at net/ipv4/af_inet.c:1675 +1675 { +(gdb) c +Continuing. + +Breakpoint 4, random_int_secret_init () at drivers/char/random.c:1712 +1712 { +(gdb) + +``` +到这里我们就找到了Linux内核初始化TCP/IP的入口位置,即为[inet_init函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/af_inet.c#1674)。 From 8ed5317652bd70f3c96d5cc376c94e276c1d2ffb Mon Sep 17 00:00:00 2001 From: mengning Date: Fri, 13 Dec 2019 09:51:34 +0800 Subject: [PATCH 13/47] Update README.md --- doc/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/README.md b/doc/README.md index ef82e61..e728457 100644 --- a/doc/README.md +++ b/doc/README.md @@ -14,4 +14,4 @@ * [构建调试Linux内核网络代码的环境MenuOS系统](setupMenuOS.md) * [系统调用相关代码分析](systemcall.md) * [Socket接口对应的Linux内核系统调用处理代码](socketSourceCode.md) -* [Linux内核初始化过程中加载TCP/IP协议栈](tcpipinit.md) +* [Linux内核初始化过程中加载TCP/IP协议栈](tcpip.md) From 10a0386e2ac54e522500e3b89070aab7d77dd00b Mon Sep 17 00:00:00 2001 From: mengning Date: Fri, 13 Dec 2019 10:01:48 +0800 Subject: [PATCH 14/47] Update README.md --- doc/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/README.md b/doc/README.md index e728457..0eea8d0 100644 --- a/doc/README.md +++ b/doc/README.md @@ -15,3 +15,4 @@ * [系统调用相关代码分析](systemcall.md) * [Socket接口对应的Linux内核系统调用处理代码](socketSourceCode.md) * [Linux内核初始化过程中加载TCP/IP协议栈](tcpip.md) +* [TCP/IP协议栈的初始化](tcpipinit.md) From b3a1c8977bbb9db8d5fb7291bd3e098df41beb76 Mon Sep 17 00:00:00 2001 From: mengning Date: Fri, 13 Dec 2019 10:02:49 +0800 Subject: [PATCH 15/47] Create tcpipinit.md --- doc/tcpipinit.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 doc/tcpipinit.md diff --git a/doc/tcpipinit.md b/doc/tcpipinit.md new file mode 100644 index 0000000..1e0ca6a --- /dev/null +++ b/doc/tcpipinit.md @@ -0,0 +1 @@ +# From c09412674d58fe4e62944d97babdc5af4d78fe7d Mon Sep 17 00:00:00 2001 From: mengning Date: Fri, 13 Dec 2019 10:05:10 +0800 Subject: [PATCH 16/47] Update tcpipinit.md --- doc/tcpipinit.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/tcpipinit.md b/doc/tcpipinit.md index 1e0ca6a..f918b98 100644 --- a/doc/tcpipinit.md +++ b/doc/tcpipinit.md @@ -1 +1 @@ -# +# TCP/IP协议栈的初始化 From 51d8d00b65b21d8bac9d3640da597eea6c006430 Mon Sep 17 00:00:00 2001 From: mengning Date: Fri, 13 Dec 2019 10:07:57 +0800 Subject: [PATCH 17/47] Update np2019.md --- np2019.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/np2019.md b/np2019.md index 0f822e4..31c7a6c 100644 --- a/np2019.md +++ b/np2019.md @@ -56,8 +56,11 @@ * 分析system_call中断处理过程 * start_kernel --> trap_init --> idt_setup_traps --> [0x80--entry_INT80_32](https://github.com/mengning/linux/blob/master/arch/x86/kernel/idt.c#L105) * 在5.0内核int0x80对应的中断服务例程是[entry_INT80_32](https://github.com/mengning/linux/blob/master/arch/x86/entry/entry_32.S#L989),而不是原来的名称system_call了。 + * [系统调用相关代码分析](https://github.com/mengning/net/blob/master/doc/systemcall.md) * [Socket接口对应的Linux内核系统调用处理代码](https://github.com/mengning/net/blob/master/doc/socketSourceCode.md) - ### 实验作业四 + * [Linux内核初始化过程中加载TCP/IP协议栈](https://github.com/mengning/net/blob/master/doc/tcpip.md) + * [TCP/IP协议栈的初始化](https://github.com/mengning/net/blob/master/doc/tcpipinit.md) +### 实验作业四 Socket与系统调用深度分析http://edu.cnblogs.com/campus/ustc/np2019/homework/10175 * Socket API编程接口之上可以编写基于不同网络协议的应用程序; * Socket接口在用户态通过系统调用机制进入内核; From af7ba31aebfd3fa20134e214d3dd0cf0ca2b845f Mon Sep 17 00:00:00 2001 From: mengning Date: Thu, 19 Dec 2019 10:09:51 +0800 Subject: [PATCH 18/47] Update README.md --- doc/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/README.md b/doc/README.md index 0eea8d0..0968d1c 100644 --- a/doc/README.md +++ b/doc/README.md @@ -16,3 +16,4 @@ * [Socket接口对应的Linux内核系统调用处理代码](socketSourceCode.md) * [Linux内核初始化过程中加载TCP/IP协议栈](tcpip.md) * [TCP/IP协议栈的初始化](tcpipinit.md) +* [TCP协议](tcp.md) From 4476f2e471182b86f2ad166df356b421ad1a63a6 Mon Sep 17 00:00:00 2001 From: mengning Date: Thu, 19 Dec 2019 10:10:21 +0800 Subject: [PATCH 19/47] Create tcp.md --- doc/tcp.md | 256 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 256 insertions(+) create mode 100644 doc/tcp.md diff --git a/doc/tcp.md b/doc/tcp.md new file mode 100644 index 0000000..982058d --- /dev/null +++ b/doc/tcp.md @@ -0,0 +1,256 @@ +# TCP协议源代码跟踪分析 +本文从TCP的基本概念和TCP三次握手的过程入手,结合客户端connect和服务端accept建立起连接时背后的完成的工作,在内核socket接口层这两个socket API函数对应着sys_connect和sys_accept函数,进一步对应着sock->opt->connect和sock->opt->accept两个函数指针,在TCP协议中这两个函数指针对应着tcp_v4_connect函数和inet_csk_accept函数,进一步触及TCP数据收发过程tcp_transmit_skb和tcp_v4_rcv函数,从整体上理解TCP协议栈向上提供的接口和向下提供的接口。 + +## TCP的基本概念 + +TCP协议提供提供一种面向连接的、可靠的字节流服务。所谓“面向连接”即是通过三次握手建立的一个通信连接;所谓“可靠的字节流服务”即是数据发送方等待数据接收方发送确认才清除发送数据缓存,如果没有收到接收方的确认信息则等待超时重发没有得到确认的部分字节。这是TCP协议提供的服务的基本概念。 + +TCP将用户数据打包(分割)成报文段;发送后启动一个定时器;另一端对收到的数据进行确认,对失序的重新排序,丢弃重复数据;TCP提供端到端的流量控制,并计算和验证一个强制性的端到端检验和。 + +### TCP协议在TCP/IP协议族中的位置 + +![](http://i2.51cto.com/images/blog/201811/29/480cfc34ee454e0ab0ffcc215893b25c.png) + +### 以telnet应用为例看TCP协议提供的服务 + +![](http://i2.51cto.com/images/blog/201811/29/b507fbecf352bcd2de5463767310729d.png) + +上图可以清晰地看到TCP是进程到进程之间的传输协议,主机使用端口来区分不同的进程。 + +### TCP三次握手的过程 + +![](http://i2.51cto.com/images/blog/201811/29/a4cd02d6787341822b781dfa03b79808.png) + +上图将服务端和客户端socket接口的调用顺序与TCP三次握手的机制结合起来展示了连接的建立过程,同时通过SYN/ACK的机制展示了客户端到服务端和服务端到客户端两条可靠的字节流的实现原理。 + +## TCP协议源代码概览 + +TCP协议相关的代码主要集中在linux-3.18.6/net/ipv4/目录下,其中[linux-3.18.6/net/ipv4/tcp_ipv4.c#2380](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/tcp_ipv4.c#2380) 文件中的结构体变量struct proto tcp_prot指定了TCP协议栈的访问接口函数,socket接口层里sock->opt->connect和sock->opt->accept对应的接口函数即是在这里制定的,sock->opt->connect实际调用的是tcp_v4_connect函数,sock->opt->accept实际调用的是inet_csk_accept函数。 + +在创建socket套接字描述符时sys_socket内核函数会根据指定的协议(例如socket(PF_INET,SOCK_STREAM,0))挂载上对应的协议处理函数。 + +除了TCP协议的访问接口,还有TCP协议的初始化工作,见[linux-3.18.6/net/ipv4/tcp.c#3046](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/tcp.c#3046),其中关键的工作就是[tcp_tasklet_init();](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/tcp.c#3124)初始化了负责发送字节流进行滑动窗口管理的tasklet,这里读者可以简单的理解为创建了线程来专门负责这个工作。 + +### TCP的三次握手的源代码分析 + +TCP的三次握手从用户程序的角度看就是客户端connect和服务端accept建立起连接时背后的完成的工作,在内核socket接口层这两个socket API函数对应着sys_connect和sys_accept函数,进一步对应着sock->opt->connect和sock->opt->accept两个函数指针,在TCP协议中这两个函数指针对应着tcp_v4_connect函数和inet_csk_accept函数。 + +分析到这里,读者应该能够想到我们可以通过MenuOS的内核调试环境设置断点跟踪tcp_v4_connect函数和inet_csk_accept函数来进一步验证三次握手的过程。 + +### tcp_v4_connect函数 + +[tcp_v4_connect函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/tcp_ipv4.c#141)的主要作用就是发起一个TCP连接,建立TCP连接的过程自然需要底层协议的支持,因此我们从这个函数中可以看到它调用了IP层提供的一些服务,比如ip_route_connect和ip_route_newports从名称就可以简单分辨,这里我们关注在TCP层面的三次握手,不去深究底层协议提供的功能细节。我们可以看到这里设置了 TCP_SYN_SENT并进一步调用了 tcp_connect(sk)来实际构造SYN并发送出去。 + +``` +140/* This will initiate an outgoing connection. */ +141int tcp_v4_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len) +142{ +... +171 rt = ip_route_connect(fl4, nexthop, inet->inet_saddr, +172 RT_CONN_FLAGS(sk), sk->sk_bound_dev_if, +173 IPPROTO_TCP, +174 orig_sport, orig_dport, sk); +... +215 /* Socket identity is still unknown (sport may be zero). +216 * However we set state to SYN-SENT and not releasing socket +217 * lock select source port, enter ourselves into the hash tables and +218 * complete initialization after this. +219 */ +220 tcp_set_state(sk, TCP_SYN_SENT); +... +227 rt = ip_route_newports(fl4, rt, orig_sport, orig_dport, +228 inet->inet_sport, inet->inet_dport, sk); +... +246 err = tcp_connect(sk); +... +264} +265EXPORT_SYMBOL(tcp_v4_connect); +``` +[tcp_connect函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/tcp_output.c#3091)具体负责构造一个携带SYN标志位的TCP头并发送出去,同时还设置了计时器超时重发。 + +3090/* Build a SYN and send it off. */ +3091int tcp_connect(struct sock *sk) +3092{ +... +3111 tcp_init_nondata_skb(buff, tp->write_seq++, TCPHDR_SYN); +3112 tp->retrans_stamp = tcp_time_stamp; +3113 tcp_connect_queue_skb(sk, buff); +3114 tcp_ecn_send_syn(sk, buff); +3115 +3116 /* Send off SYN; include data in Fast Open. */ +3117 err = tp->fastopen_req ? tcp_send_syn_data(sk, buff) : +3118 tcp_transmit_skb(sk, buff, 1, sk->sk_allocation); +3119 if (err == -ECONNREFUSED) +3120 return err; +3121 +3122 /* We change tp->snd_nxt after the tcp_transmit_skb() call +3123 * in order to make this packet get counted in tcpOutSegs. +3124 */ +3125 tp->snd_nxt = tp->write_seq; +3126 tp->pushed_seq = tp->write_seq; +3127 TCP_INC_STATS(sock_net(sk), TCP_MIB_ACTIVEOPENS); +3128 +3129 /* Timer for repeating the SYN until an answer. */ +3130 inet_csk_reset_xmit_timer(sk, ICSK_TIME_RETRANS, +3131 inet_csk(sk)->icsk_rto, TCP_RTO_MAX); +3132 return 0; +3133} + +其中tcp_transmit_skb函数负责将tcp数据发送出去,这里调用了icsk->icsk_af_ops->queue_xmit函数指针,实际上就是在TCP/IP协议栈初始化时设定好的IP层向上提供数据发送接口[ip_queue_xmit函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/ip_output.c#363),这里TCP协议栈通过调用这个icsk->icsk_af_ops->queue_xmit函数指针来触发IP协议栈代码发送数据,感兴趣的读者可以查找queue_xmit函数指针是如何初始化为ip_queue_xmit函数的。具体ip_queue_xmit函数内部的实现我们在后续内容中会专题研究,本文聚焦在TCP协议的三次握手。 +``` +876/* This routine actually transmits TCP packets queued in by +877 * tcp_do_sendmsg(). This is used by both the initial +878 * transmission and possible later retransmissions. +879 * All SKB's seen here are completely headerless. It is our +880 * job to build the TCP header, and pass the packet down to +881 * IP so it can do the same plus pass the packet off to the +882 * device. +883 * +884 * We are working here with either a clone of the original +885 * SKB, or a fresh unique copy made by the retransmit engine. +886 */ +887static int tcp_transmit_skb(struct sock *sk, struct sk_buff *skb, int clone_it, +888 gfp_t gfp_mask) +889{ +... +1012 err = icsk->icsk_af_ops->queue_xmit(sk, skb, &inet->cork.fl); +... +1020} +``` + +### inet_csk_accept函数 + +另一头服务端调用[inet_csk_accept函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/inet_connection_sock.c#292)会请求队列中取出一个连接请求,如果队列为空则通过inet_csk_wait_for_connect阻塞住等待客户端的连接。 +``` +289/* +290 * This will accept the next outstanding connection. +291 */ +292struct sock *inet_csk_accept(struct sock *sk, int flags, int *err) +293{ +294 struct inet_connection_sock *icsk = inet_csk(sk); +295 struct request_sock_queue *queue = &icsk->icsk_accept_queue; +296 struct sock *newsk; +297 struct request_sock *req; +298 int error; +299 +300 lock_sock(sk); +301 +302 /* We need to make sure that this socket is listening, +303 * and that it has something pending. +304 */ +305 error = -EINVAL; +306 if (sk->sk_state != TCP_LISTEN) +307 goto out_err; +308 +309 /* Find already established connection */ +310 if (reqsk_queue_empty(queue)) { +311 long timeo = sock_rcvtimeo(sk, flags & O_NONBLOCK); +... +318 error = inet_csk_wait_for_connect(sk, timeo); +319 if (error) +320 goto out_err; +321 } +322 req = reqsk_queue_remove(queue); +323 newsk = req->sk; +324 +325 sk_acceptq_removed(sk); +326 if (sk->sk_protocol == IPPROTO_TCP && queue->fastopenq != NULL) { +327 spin_lock_bh(&queue->fastopenq->lock); +328 if (tcp_rsk(req)->listener) { +329 /* We are still waiting for the final ACK from 3WHS +330 * so can't free req now. Instead, we set req->sk to +331 * NULL to signify that the child socket is taken +332 * so reqsk_fastopen_remove() will free the req +333 * when 3WHS finishes (or is aborted). +334 */ +335 req->sk = NULL; +336 req = NULL; +337 } +... +344 return newsk; +... +350} +``` +[inet_csk_wait_for_connect函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/inet_connection_sock.c#241)就是无限for循环,一旦有连接请求进来则跳出循环。 +``` +241/* +242 * Wait for an incoming connection, avoid race conditions. This must be called +243 * with the socket locked. +244 */ +245static int inet_csk_wait_for_connect(struct sock *sk, long timeo) +246{ +247 struct inet_connection_sock *icsk = inet_csk(sk); +248 DEFINE_WAIT(wait); +249 int err; +250 +251 /* +252 * True wake-one mechanism for incoming connections: only +253 * one process gets woken up, not the 'whole herd'. +254 * Since we do not 'race & poll' for established sockets +255 * anymore, the common case will execute the loop only once. +256 * +257 * Subtle issue: "add_wait_queue_exclusive()" will be added +258 * after any current non-exclusive waiters, and we know that +259 * it will always _stay_ after any new non-exclusive waiters +260 * because all non-exclusive waiters are added at the +261 * beginning of the wait-queue. As such, it's ok to "drop" +262 * our exclusiveness temporarily when we get woken up without +263 * having to remove and re-insert us on the wait queue. +264 */ +265 for (;;) { +266 prepare_to_wait_exclusive(sk_sleep(sk), &wait, +267 TASK_INTERRUPTIBLE); +268 release_sock(sk); +269 if (reqsk_queue_empty(&icsk->icsk_accept_queue)) +270 timeo = schedule_timeout(timeo); +271 lock_sock(sk); +272 err = 0; +273 if (!reqsk_queue_empty(&icsk->icsk_accept_queue)) +274 break; +275 err = -EINVAL; +276 if (sk->sk_state != TCP_LISTEN) +277 break; +278 err = sock_intr_errno(timeo); +279 if (signal_pending(current)) +280 break; +281 err = -EAGAIN; +282 if (!timeo) +283 break; +284 } +285 finish_wait(sk_sleep(sk), &wait); +286 return err; +287} +288 +``` +如果读者按如上思路跟踪调试代码的话,会发现connect之后将连接请求发送出去,accept等待连接请求,connect启动到返回和accept返回之间就是所谓三次握手的时间。 + +### 三次握手中携带SYN/ACK的TCP头数据的发送和接收 + +以上的分析我们都是按照用户程序调用socket接口、通过系统调用陷入内核进入内核态的socket接口层代码,然后根据创建socket时指定协议选择适当的函数指针,比如sock->opt->connect和sock->opt->accept两个函数指针,从而进入协议处理代码中,本专栏是以TCP/IPv4为例(net/ipv4目录下),则是分别进入tcp_v4_connect函数和inet_csk_accept函数中。总之,主要的思路是call-in的方式逐级进行函数调用,但是接收数据放入accept队列的代码我们还没有跟踪到,接下来我们需要换一个思路,网卡接收到数据需要通知上层协议来接收并处理数据,那么应该有TCP协议的接收数据的函数被底层网络驱动callback方式进行调用,针对这个思路我们需要回过头来看TCP/IP协议栈的初始化过程中是不是有将recv的函数指针发布给网络底层代码。 + + +TCP/IP协议栈的初始化过程是在[inet_init函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/af_inet.c#1674),其中有段代码中提到的tcp_protocol结构体变量很像: +``` +1498static const struct net_protocol tcp_protocol = { +1499 .early_demux = tcp_v4_early_demux, +1500 .handler = tcp_v4_rcv, +1501 .err_handler = tcp_v4_err, +1502 .no_policy = 1, +1503 .netns_ok = 1, +1504 .icmp_strict_tag_validation = 1, +1505}; +... +1708 /* +1709 * Add all the base protocols. +1710 */ +1711 +1712 if (inet_add_protocol(&icmp_protocol, IPPROTO_ICMP) < 0) +1713 pr_crit("%s: Cannot add ICMP protocol\n", __func__); +1714 if (inet_add_protocol(&udp_protocol, IPPROTO_UDP) < 0) +1715 pr_crit("%s: Cannot add UDP protocol\n", __func__); +1716 if (inet_add_protocol(&tcp_protocol, IPPROTO_TCP) < 0) +1717 pr_crit("%s: Cannot add TCP protocol\n", __func__); +``` +其中的handler被赋值为tcp_v4_rcv,符合底层更一般化上层更具体化的协议设计的一般规律,暂时我们聚焦在TCP协议不准备深入到网络底层代码,但我们可以想象底层网络代码接到数据需要找到合适的处理数据的上层代码来负责处理,那么用handler函数指针来处理就很符合代码逻辑。到这里我们就找到TCP协议中负责接收处理数据的入口,接收TCP连接请求及进行三次握手处理过程应该也是在这里为起点,那么从tcp_v4_rcv应该能够找到对SYN/ACK标志的处理(三次握手),连接请求建立后并将连接放入accept的等待队列。 + +接下来读者可以进一步深入到三次握手过程中携带SYN/ACK标志的数据收发过程(tcp_transmit_skb和tcp_v4_rcv)以及连接建立成功后放到accpet队列的代码,乃至正常数据的收发过程和关闭连接的过程,这些都需要深入理解TCP协议标准的细节才能读懂代码,感兴趣的读者可以可以对照[TCP协议标准](https://www.ietf.org/rfc/rfc793.txt)深入理解代码,本专栏将从Linux网络核心的角度从架构上整体理解,暂时不去深入TCP协议的代码细节。 From fd75b1cc2677b23add325ce546ff00c3b3fb13c3 Mon Sep 17 00:00:00 2001 From: mengning Date: Thu, 19 Dec 2019 10:14:29 +0800 Subject: [PATCH 20/47] Add files via upload --- doc/images/TCPIP.png | Bin 0 -> 34260 bytes doc/images/TELNET.png | Bin 0 -> 32755 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 doc/images/TCPIP.png create mode 100644 doc/images/TELNET.png diff --git a/doc/images/TCPIP.png b/doc/images/TCPIP.png new file mode 100644 index 0000000000000000000000000000000000000000..101d60c93ac4bae910b8476361534bd38b680cfa GIT binary patch literal 34260 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

cM555O=om9 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 sVo1?#Xv)!dp7L^hDDC`wA{QNegDRV1rI#k literal 0 HcmV?d00001 diff --git a/doc/images/TELNET.png b/doc/images/TELNET.png new file mode 100644 index 0000000000000000000000000000000000000000..07fa23d80950994e07e9954f87868dffa68d64b2 GIT binary patch literal 32755 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

!?m__Hk}*wP*l*Emn>I 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 Dg6Hv& literal 0 HcmV?d00001 From 12e4c9ffcf8dfdf131bb034c978b03f0961aa949 Mon Sep 17 00:00:00 2001 From: mengning Date: Thu, 19 Dec 2019 10:18:16 +0800 Subject: [PATCH 21/47] Update tcpipinit.md --- doc/tcpipinit.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/tcpipinit.md b/doc/tcpipinit.md index f918b98..4b3b0c0 100644 --- a/doc/tcpipinit.md +++ b/doc/tcpipinit.md @@ -1 +1,6 @@ # TCP/IP协议栈的初始化 + +* TCP/IP协议栈的初始化的函数入口[inet_init](https://github.com/mengning/linux/blob/master/net/ipv4/af_inet.c#L1899) +``` + +``` From 77bcccb7198f86d0615a4b672921dc1ef963715f Mon Sep 17 00:00:00 2001 From: mengning Date: Thu, 19 Dec 2019 10:23:29 +0800 Subject: [PATCH 22/47] Update tcpipinit.md --- doc/tcpipinit.md | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/doc/tcpipinit.md b/doc/tcpipinit.md index 4b3b0c0..a342ff4 100644 --- a/doc/tcpipinit.md +++ b/doc/tcpipinit.md @@ -2,5 +2,44 @@ * TCP/IP协议栈的初始化的函数入口[inet_init](https://github.com/mengning/linux/blob/master/net/ipv4/af_inet.c#L1899) ``` +static int __init inet_init(void) +{ + ... + rc = proto_register(&tcp_prot, 1); + if (rc) + goto out; + ... + + /* + * Tell SOCKET that we are alive... + */ + + (void)sock_register(&inet_family_ops); + + ... + /* + * Add all the base protocols. + */ + + ... + pr_crit("%s: Cannot add TCP protocol\n", __func__); + ... + /* Register the socket-side information for inet_create. */ + for (r = &inetsw[0]; r < &inetsw[SOCK_MAX]; ++r) + INIT_LIST_HEAD(r); + + for (q = inetsw_array; q < &inetsw_array[INETSW_ARRAY_LEN]; ++q) + inet_register_protosw(q); + + ... + + /* Setup TCP slab cache for open requests. */ + tcp_init(); + + ... + +} + +fs_initcall(inet_init); ``` From 5965e938624df1f8db1c8d2538c7300c8da2be3a Mon Sep 17 00:00:00 2001 From: mengning Date: Thu, 19 Dec 2019 10:24:07 +0800 Subject: [PATCH 23/47] Update tcpipinit.md --- doc/tcpipinit.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/doc/tcpipinit.md b/doc/tcpipinit.md index a342ff4..c7406f8 100644 --- a/doc/tcpipinit.md +++ b/doc/tcpipinit.md @@ -4,12 +4,12 @@ ``` static int __init inet_init(void) { - ... + ... rc = proto_register(&tcp_prot, 1); if (rc) goto out; - ... + ... /* * Tell SOCKET that we are alive... @@ -17,14 +17,14 @@ static int __init inet_init(void) (void)sock_register(&inet_family_ops); - ... + ... /* * Add all the base protocols. */ - ... + ... pr_crit("%s: Cannot add TCP protocol\n", __func__); - ... + ... /* Register the socket-side information for inet_create. */ for (r = &inetsw[0]; r < &inetsw[SOCK_MAX]; ++r) INIT_LIST_HEAD(r); @@ -32,7 +32,7 @@ static int __init inet_init(void) for (q = inetsw_array; q < &inetsw_array[INETSW_ARRAY_LEN]; ++q) inet_register_protosw(q); - ... + ... /* Setup TCP slab cache for open requests. */ tcp_init(); From 71a68e56cfbf1208e9d8f935135000d6d66f533a Mon Sep 17 00:00:00 2001 From: mengning Date: Thu, 19 Dec 2019 10:31:03 +0800 Subject: [PATCH 24/47] Update tcpipinit.md --- doc/tcpipinit.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/doc/tcpipinit.md b/doc/tcpipinit.md index c7406f8..62a088d 100644 --- a/doc/tcpipinit.md +++ b/doc/tcpipinit.md @@ -43,3 +43,16 @@ static int __init inet_init(void) fs_initcall(inet_init); ``` +接下来我们以TCP协议为例来看TCP/IP协议栈的初始化过程。 + +* TCP协议的初始化[tcp_init](https://github.com/mengning/linux/blob/master/net/ipv4/tcp.c#L3837) +``` +void __init tcp_init(void) +{ + ... + tcp_v4_init(); + tcp_metrics_init(); + BUG_ON(tcp_register_congestion_control(&tcp_reno) != 0); + tcp_tasklet_init(); +} +``` From d4988fb140d845d7f4673a0cdf4257afeb1a05f5 Mon Sep 17 00:00:00 2001 From: mengning Date: Thu, 19 Dec 2019 11:06:10 +0800 Subject: [PATCH 25/47] Update tcpipinit.md --- doc/tcpipinit.md | 45 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/doc/tcpipinit.md b/doc/tcpipinit.md index 62a088d..323d64b 100644 --- a/doc/tcpipinit.md +++ b/doc/tcpipinit.md @@ -23,6 +23,7 @@ static int __init inet_init(void) */ ... + if (inet_add_protocol(&tcp_protocol, IPPROTO_TCP) < 0) pr_crit("%s: Cannot add TCP protocol\n", __func__); ... /* Register the socket-side information for inet_create. */ @@ -45,7 +46,49 @@ fs_initcall(inet_init); ``` 接下来我们以TCP协议为例来看TCP/IP协议栈的初始化过程。 -* TCP协议的初始化[tcp_init](https://github.com/mengning/linux/blob/master/net/ipv4/tcp.c#L3837) +### TCP协议的初始化 +* [tcp_prot](https://github.com/mengning/linux/blob/master/net/ipv4/tcp_ipv4.c#L2536) +``` +struct proto tcp_prot = { + .name = "TCP", + .owner = THIS_MODULE, + .close = tcp_close, + .pre_connect = tcp_v4_pre_connect, + .connect = tcp_v4_connect, + .disconnect = tcp_disconnect, + .accept = inet_csk_accept, + .ioctl = tcp_ioctl, + .init = tcp_v4_init_sock, + .destroy = tcp_v4_destroy_sock, + .shutdown = tcp_shutdown, + .setsockopt = tcp_setsockopt, + .getsockopt = tcp_getsockopt, + .keepalive = tcp_set_keepalive, + .recvmsg = tcp_recvmsg, + .sendmsg = tcp_sendmsg, + .sendpage = tcp_sendpage, + .backlog_rcv = tcp_v4_do_rcv, + .release_cb = tcp_release_cb, + ... +}; +EXPORT_SYMBOL(tcp_prot); +``` +* [tcp_protocol](https://github.com/mengning/linux/blob/master/net/ipv4/tcp_ipv4.c#L2536) +``` +/* thinking of making this const? Don't. + * early_demux can change based on sysctl. + */ +static struct net_protocol tcp_protocol = { + .early_demux = tcp_v4_early_demux, + .early_demux_handler = tcp_v4_early_demux, + .handler = tcp_v4_rcv, + .err_handler = tcp_v4_err, + .no_policy = 1, + .netns_ok = 1, + .icmp_strict_tag_validation = 1, +}; +``` +* [tcp_init](https://github.com/mengning/linux/blob/master/net/ipv4/tcp.c#L3837) ``` void __init tcp_init(void) { From 2fc8c2ed31a78b7628920c6dbe4752fa7d8bee60 Mon Sep 17 00:00:00 2001 From: mengning Date: Thu, 19 Dec 2019 13:27:16 +0800 Subject: [PATCH 26/47] Update np2019.md --- np2019.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/np2019.md b/np2019.md index 31c7a6c..4c5aae3 100644 --- a/np2019.md +++ b/np2019.md @@ -69,6 +69,11 @@ Socket与系统调用深度分析http://edu.cnblogs.com/campus/ustc/np2019/homew 请将Socket API编程接口、系统调用机制及内核中系统调用相关源代码、 socket相关系统调用的内核处理函数结合起来分析,并在X86 64环境下Linux5.0以上的内核中进一步跟踪验证。 完成一篇图文并茂、逻辑严谨、代码详实的实验报告。 +### TCP + +* [TCP/IP协议栈的初始化](tcpipinit.md) +* [TCP协议](tcp.md) + ## 参考资料 * UNIX网络编程卷1:套接字联网API From 709da41cadf34787f3a433e5cbb793ccdb0e0a50 Mon Sep 17 00:00:00 2001 From: mengning Date: Thu, 19 Dec 2019 15:00:20 +0800 Subject: [PATCH 27/47] Update np2019.md --- np2019.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/np2019.md b/np2019.md index 4c5aae3..81cdce5 100644 --- a/np2019.md +++ b/np2019.md @@ -71,8 +71,8 @@ Socket与系统调用深度分析http://edu.cnblogs.com/campus/ustc/np2019/homew ### TCP -* [TCP/IP协议栈的初始化](tcpipinit.md) -* [TCP协议](tcp.md) +* [TCP/IP协议栈的初始化](doc/tcpipinit.md) +* [TCP协议](doc/tcp.md) ## 参考资料 From 3fa8c9c36035979a5ec570fead5a31d90e84d44d Mon Sep 17 00:00:00 2001 From: mengning Date: Fri, 20 Dec 2019 09:13:10 +0800 Subject: [PATCH 28/47] Update tcp.md --- doc/tcp.md | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 80 insertions(+), 1 deletion(-) diff --git a/doc/tcp.md b/doc/tcp.md index 982058d..261d163 100644 --- a/doc/tcp.md +++ b/doc/tcp.md @@ -253,4 +253,83 @@ TCP/IP协议栈的初始化过程是在[inet_init函数](http://codelab.shiyanlo ``` 其中的handler被赋值为tcp_v4_rcv,符合底层更一般化上层更具体化的协议设计的一般规律,暂时我们聚焦在TCP协议不准备深入到网络底层代码,但我们可以想象底层网络代码接到数据需要找到合适的处理数据的上层代码来负责处理,那么用handler函数指针来处理就很符合代码逻辑。到这里我们就找到TCP协议中负责接收处理数据的入口,接收TCP连接请求及进行三次握手处理过程应该也是在这里为起点,那么从tcp_v4_rcv应该能够找到对SYN/ACK标志的处理(三次握手),连接请求建立后并将连接放入accept的等待队列。 -接下来读者可以进一步深入到三次握手过程中携带SYN/ACK标志的数据收发过程(tcp_transmit_skb和tcp_v4_rcv)以及连接建立成功后放到accpet队列的代码,乃至正常数据的收发过程和关闭连接的过程,这些都需要深入理解TCP协议标准的细节才能读懂代码,感兴趣的读者可以可以对照[TCP协议标准](https://www.ietf.org/rfc/rfc793.txt)深入理解代码,本专栏将从Linux网络核心的角度从架构上整体理解,暂时不去深入TCP协议的代码细节。 +接下来读者可以进一步深入到三次握手过程中携带SYN/ACK标志的数据收发过程(tcp_transmit_skb和tcp_v4_rcv)以及连接建立成功后放到accpet队列的代码,乃至正常数据的收发过程和关闭连接的过程,这些都需要深入理解TCP协议标准的细节才能读懂代码,读者可以可以对照[TCP协议标准](https://www.ietf.org/rfc/rfc793.txt)深入理解代码。 + + +* [tcp_v4_rcv](https://github.com/torvalds/linux/blob/386403a115f95997c2715691226e11a7b5cffcfd/net/ipv4/tcp_ipv4.c#L1806) +``` +int tcp_v4_rcv(struct sk_buff *skb) +{ + ... + th = (const struct tcphdr *)skb->data; + iph = ip_hdr(skb); +lookup: + sk = __inet_lookup_skb(&tcp_hashinfo, skb, __tcp_hdrlen(th), th->source, + th->dest, sdif, &refcounted); + ... +process: + if (sk->sk_state == TCP_TIME_WAIT) + goto do_time_wait; + + if (sk->sk_state == TCP_NEW_SYN_RECV) { + ... + } + ... + if (sk->sk_state == TCP_LISTEN) { + ret = tcp_v4_do_rcv(sk, skb); + goto put_and_return; + } + ... + if (!sock_owned_by_user(sk)) { + skb_to_free = sk->sk_rx_skb_cache; + sk->sk_rx_skb_cache = NULL; + ret = tcp_v4_do_rcv(sk, skb); + } else { + if (tcp_add_backlog(sk, skb)) + goto discard_and_relse; + skb_to_free = NULL; + } + ... +do_time_wait: + if (!xfrm4_policy_check(NULL, XFRM_POLICY_IN, skb)) { + inet_twsk_put(inet_twsk(sk)); + goto discard_it; + } + + tcp_v4_fill_cb(skb, iph, th); + + if (tcp_checksum_complete(skb)) { + inet_twsk_put(inet_twsk(sk)); + goto csum_error; + } + switch (tcp_timewait_state_process(inet_twsk(sk), skb, th)) { + case TCP_TW_SYN: { + struct sock *sk2 = inet_lookup_listener(dev_net(skb->dev), + &tcp_hashinfo, skb, + __tcp_hdrlen(th), + iph->saddr, th->source, + iph->daddr, th->dest, + inet_iif(skb), + sdif); + if (sk2) { + inet_twsk_deschedule_put(inet_twsk(sk)); + sk = sk2; + tcp_v4_restore_cb(skb); + refcounted = false; + goto process; + } + } + /* to ACK */ + /* fall through */ + case TCP_TW_ACK: + tcp_v4_timewait_ack(sk, skb); + break; + case TCP_TW_RST: + tcp_v4_send_reset(sk, skb); + inet_twsk_deschedule_put(inet_twsk(sk)); + goto discard_it; + case TCP_TW_SUCCESS:; + } + goto discard_it; +} +``` From d639fe2d79a47d9655f7cef3078719da41c4ff0d Mon Sep 17 00:00:00 2001 From: mengning Date: Fri, 20 Dec 2019 09:52:58 +0800 Subject: [PATCH 29/47] Update tcp.md --- doc/tcp.md | 101 +++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 99 insertions(+), 2 deletions(-) diff --git a/doc/tcp.md b/doc/tcp.md index 261d163..a7252e4 100644 --- a/doc/tcp.md +++ b/doc/tcp.md @@ -67,7 +67,7 @@ TCP的三次握手从用户程序的角度看就是客户端connect和服务端a 265EXPORT_SYMBOL(tcp_v4_connect); ``` [tcp_connect函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/tcp_output.c#3091)具体负责构造一个携带SYN标志位的TCP头并发送出去,同时还设置了计时器超时重发。 - +``` 3090/* Build a SYN and send it off. */ 3091int tcp_connect(struct sock *sk) 3092{ @@ -95,7 +95,7 @@ TCP的三次握手从用户程序的角度看就是客户端connect和服务端a 3131 inet_csk(sk)->icsk_rto, TCP_RTO_MAX); 3132 return 0; 3133} - +``` 其中tcp_transmit_skb函数负责将tcp数据发送出去,这里调用了icsk->icsk_af_ops->queue_xmit函数指针,实际上就是在TCP/IP协议栈初始化时设定好的IP层向上提供数据发送接口[ip_queue_xmit函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/ip_output.c#363),这里TCP协议栈通过调用这个icsk->icsk_af_ops->queue_xmit函数指针来触发IP协议栈代码发送数据,感兴趣的读者可以查找queue_xmit函数指针是如何初始化为ip_queue_xmit函数的。具体ip_queue_xmit函数内部的实现我们在后续内容中会专题研究,本文聚焦在TCP协议的三次握手。 ``` 876/* This routine actually transmits TCP packets queued in by @@ -333,3 +333,100 @@ do_time_wait: goto discard_it; } ``` +* [tcp_rcv_state_process](https://github.com/torvalds/linux/blob/386403a115f95997c2715691226e11a7b5cffcfd/net/ipv4/tcp_input.c#L6129) +``` +/* + * This function implements the receiving procedure of RFC 793 for + * all states except ESTABLISHED and TIME_WAIT. + * It's called from both tcp_v4_rcv and tcp_v6_rcv and should be + * address independent. + */ + +int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb) +{ + ... + switch (sk->sk_state) { + ... + case TCP_LISTEN: + if (th->ack) + return 1; + + if (th->rst) + goto discard; + + if (th->syn) { + if (th->fin) + goto discard; + /* It is possible that we process SYN packets from backlog, + * so we need to make sure to disable BH and RCU right there. + */ + rcu_read_lock(); + local_bh_disable(); + acceptable = icsk->icsk_af_ops->conn_request(sk, skb) >= 0; + local_bh_enable(); + rcu_read_unlock(); + + if (!acceptable) + return 1; + consume_skb(skb); + return 0; + } + goto discard; + + case TCP_SYN_SENT: + tp->rx_opt.saw_tstamp = 0; + tcp_mstamp_refresh(tp); + queued = tcp_rcv_synsent_state_process(sk, skb, th); + if (queued >= 0) + return queued; + + /* Do step6 onward by hand. */ + tcp_urg(sk, skb, th); + __kfree_skb(skb); + tcp_data_snd_check(sk); + return 0; + } + ... + switch (sk->sk_state) { + case TCP_SYN_RECV: + tp->delivered++; /* SYN-ACK delivery isn't tracked in tcp_ack */ + if (!tp->srtt_us) + tcp_synack_rtt_meas(sk, req); + + if (req) { + tcp_rcv_synrecv_state_fastopen(sk); + } else { + tcp_try_undo_spurious_syn(sk); + tp->retrans_stamp = 0; + tcp_init_transfer(sk, BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB); + WRITE_ONCE(tp->copied_seq, tp->rcv_nxt); + } + smp_mb(); + tcp_set_state(sk, TCP_ESTABLISHED); + sk->sk_state_change(sk); + + /* Note, that this wakeup is only for marginal crossed SYN case. + * Passively open sockets are not waked up, because + * sk->sk_sleep == NULL and sk->sk_socket == NULL. + */ + if (sk->sk_socket) + sk_wake_async(sk, SOCK_WAKE_IO, POLL_OUT); + + tp->snd_una = TCP_SKB_CB(skb)->ack_seq; + tp->snd_wnd = ntohs(th->window) << tp->rx_opt.snd_wscale; + tcp_init_wl(tp, TCP_SKB_CB(skb)->seq); + + if (tp->rx_opt.tstamp_ok) + tp->advmss -= TCPOLEN_TSTAMP_ALIGNED; + + if (!inet_csk(sk)->icsk_ca_ops->cong_control) + tcp_update_pacing_rate(sk); + + /* Prevent spurious tcp_cwnd_restart() on first data packet */ + tp->lsndtime = tcp_jiffies32; + + tcp_initialize_rcv_mss(sk); + tcp_fast_path_on(tp); + break; + ... +``` From 7d08784a083c33eabaddd49042a597afd6f3b2cd Mon Sep 17 00:00:00 2001 From: mengning Date: Fri, 20 Dec 2019 10:18:51 +0800 Subject: [PATCH 30/47] Update tcp.md --- doc/tcp.md | 111 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) diff --git a/doc/tcp.md b/doc/tcp.md index a7252e4..b8e3410 100644 --- a/doc/tcp.md +++ b/doc/tcp.md @@ -430,3 +430,114 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb) break; ... ``` +其中TCP_LISTEN状态时接到SYN就可以通过acceptable = icsk->icsk_af_ops->conn_request(sk, skb) >= 0;将连接加入accpet队列 + +* [ipv4_specific](https://github.com/torvalds/linux/blob/386403a115f95997c2715691226e11a7b5cffcfd/net/ipv4/tcp_ipv4.c#L2050) +``` +const struct inet_connection_sock_af_ops ipv4_specific = { + .queue_xmit = ip_queue_xmit, + .send_check = tcp_v4_send_check, + .rebuild_header = inet_sk_rebuild_header, + .sk_rx_dst_set = inet_sk_rx_dst_set, + .conn_request = tcp_v4_conn_request, + .syn_recv_sock = tcp_v4_syn_recv_sock, + .net_header_len = sizeof(struct iphdr), + .setsockopt = ip_setsockopt, + .getsockopt = ip_getsockopt, + .addr2sockaddr = inet_csk_addr2sockaddr, + .sockaddr_len = sizeof(struct sockaddr_in), +#ifdef CONFIG_COMPAT + .compat_setsockopt = compat_ip_setsockopt, + .compat_getsockopt = compat_ip_getsockopt, +#endif + .mtu_reduced = tcp_v4_mtu_reduced, +}; +EXPORT_SYMBOL(ipv4_specific); +``` +* [tcp_v4_init_sock](https://github.com/torvalds/linux/blob/386403a115f95997c2715691226e11a7b5cffcfd/net/ipv4/tcp_ipv4.c#L2082) +``` +/* NOTE: A lot of things set to zero explicitly by call to + * sk_alloc() so need not be done here. + */ +static int tcp_v4_init_sock(struct sock *sk) +{ + struct inet_connection_sock *icsk = inet_csk(sk); + + tcp_init_sock(sk); + + icsk->icsk_af_ops = &ipv4_specific; + +#ifdef CONFIG_TCP_MD5SIG + tcp_sk(sk)->af_specific = &tcp_sock_ipv4_specific; +#endif + + return 0; +} +``` +* [tcp_v4_conn_request](https://github.com/torvalds/linux/blob/386403a115f95997c2715691226e11a7b5cffcfd/net/ipv4/tcp_ipv4.c#L1391) +``` +int tcp_v4_conn_request(struct sock *sk, struct sk_buff *skb) +{ + /* Never answer to SYNs send to broadcast or multicast */ + if (skb_rtable(skb)->rt_flags & (RTCF_BROADCAST | RTCF_MULTICAST)) + goto drop; + + return tcp_conn_request(&tcp_request_sock_ops, + &tcp_request_sock_ipv4_ops, sk, skb); + +drop: + tcp_listendrop(sk); + return 0; +} +EXPORT_SYMBOL(tcp_v4_conn_request); +``` +* [tcp_conn_request](https://github.com/torvalds/linux/blob/386403a115f95997c2715691226e11a7b5cffcfd/net/ipv4/tcp_input.c#L6552) +``` +int tcp_conn_request(struct request_sock_ops *rsk_ops, + const struct tcp_request_sock_ops *af_ops, + struct sock *sk, struct sk_buff *skb) +{ + ... + if (fastopen_sk) { + af_ops->send_synack(fastopen_sk, dst, &fl, req, + &foc, TCP_SYNACK_FASTOPEN); + /* Add the child socket directly into the accept queue */ + if (!inet_csk_reqsk_queue_add(sk, req, fastopen_sk)) { + reqsk_fastopen_remove(fastopen_sk, req, false); + bh_unlock_sock(fastopen_sk); + sock_put(fastopen_sk); + goto drop_and_free; + } + sk->sk_data_ready(sk); + bh_unlock_sock(fastopen_sk); + sock_put(fastopen_sk); + } else { + tcp_rsk(req)->tfo_listener = false; + if (!want_cookie) + inet_csk_reqsk_queue_hash_add(sk, req, + tcp_timeout_init((struct sock *)req)); + af_ops->send_synack(sk, dst, &fl, req, &foc, + !want_cookie ? TCP_SYNACK_NORMAL : + TCP_SYNACK_COOKIE); + if (want_cookie) { + reqsk_free(req); + return 0; + } + } + ... +``` +* [inet_csk_reqsk_queue_hash_add](https://github.com/torvalds/linux/blob/386403a115f95997c2715691226e11a7b5cffcfd/net/ipv4/inet_connection_sock.c#L765)和[inet_csk_reqsk_queue_added](https://github.com/torvalds/linux/blob/81160dda9a7aad13c04e78bb2cfd3c4630e3afab/include/net/inet_connection_sock.h#L272) +``` +void inet_csk_reqsk_queue_hash_add(struct sock *sk, struct request_sock *req, + unsigned long timeout) +{ + reqsk_queue_hash_req(req, timeout); + inet_csk_reqsk_queue_added(sk); +} +``` +``` +static inline void inet_csk_reqsk_queue_added(struct sock *sk) +{ + reqsk_queue_added(&inet_csk(sk)->icsk_accept_queue); +} +``` From 18e7adc82e47b5131b5542a0981d25e522a4c730 Mon Sep 17 00:00:00 2001 From: mengning Date: Fri, 20 Dec 2019 12:33:10 +0800 Subject: [PATCH 31/47] Update np2019.md --- np2019.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/np2019.md b/np2019.md index 81cdce5..169566d 100644 --- a/np2019.md +++ b/np2019.md @@ -71,8 +71,17 @@ Socket与系统调用深度分析http://edu.cnblogs.com/campus/ustc/np2019/homew ### TCP +* [TCP基本原理.ppt](https://github.com/mengning/net/raw/master/lab3/TCP.pptx) * [TCP/IP协议栈的初始化](doc/tcpipinit.md) -* [TCP协议](doc/tcp.md) +* [TCP协议栈源代码分析.ppt](https://github.com/mengning/net/raw/master/lab3/TCP%E5%8D%8F%E8%AE%AE%E6%A0%88%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%90.pptx) - [TCP源代码](doc/tcp.md) + +### 实验作业五:深入理解TCP协议及其源代码 +选择如下任一个问题,通过理论分析、源代码阅读和运行跟踪深入理解TCP协议完成一篇实验报告博客 +* TCP协议的初始化及socket创建TCP套接字描述符; +* connect及bind、listen、accept背后的三次握手 +* send和recv背后数据的首发过程 +* close背后的连接终止过程 +另外您也可以任选一个您感兴趣的角度比如封包构造和解析、拥塞控制、执行视图等来深入理解TCP协议 ## 参考资料 From 06622fe412a344013ab1689db247600f66051470 Mon Sep 17 00:00:00 2001 From: mengning Date: Thu, 26 Dec 2019 09:07:06 +0800 Subject: [PATCH 32/47] Update np2019.md --- np2019.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/np2019.md b/np2019.md index 169566d..89f6bfa 100644 --- a/np2019.md +++ b/np2019.md @@ -83,6 +83,10 @@ Socket与系统调用深度分析http://edu.cnblogs.com/campus/ustc/np2019/homew * close背后的连接终止过程 另外您也可以任选一个您感兴趣的角度比如封包构造和解析、拥塞控制、执行视图等来深入理解TCP协议 +### IP & ARP + +* [HowIPNetworking.pptx](https://github.com/mengning/net/raw/master/lab4/How%20IP%20Networking.pptx) + ## 参考资料 * UNIX网络编程卷1:套接字联网API From b12e10ac4de9c5bb20fd9b157e653e5ce7439233 Mon Sep 17 00:00:00 2001 From: mengning Date: Thu, 26 Dec 2019 09:11:04 +0800 Subject: [PATCH 33/47] Update np2019.md --- np2019.md | 1 + 1 file changed, 1 insertion(+) diff --git a/np2019.md b/np2019.md index 89f6bfa..0d87b5b 100644 --- a/np2019.md +++ b/np2019.md @@ -86,6 +86,7 @@ Socket与系统调用深度分析http://edu.cnblogs.com/campus/ustc/np2019/homew ### IP & ARP * [HowIPNetworking.pptx](https://github.com/mengning/net/raw/master/lab4/How%20IP%20Networking.pptx) +* [ARP.pptx](https://github.com/mengning/net/raw/master/lab5/ARP.pptx) ## 参考资料 From 8eeba8f0cd0cf9be48b325cb6dd5d944731effb9 Mon Sep 17 00:00:00 2001 From: mengning Date: Thu, 26 Dec 2019 17:46:45 +0800 Subject: [PATCH 34/47] Update README.md --- doc/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/README.md b/doc/README.md index 0968d1c..c0768ec 100644 --- a/doc/README.md +++ b/doc/README.md @@ -17,3 +17,4 @@ * [Linux内核初始化过程中加载TCP/IP协议栈](tcpip.md) * [TCP/IP协议栈的初始化](tcpipinit.md) * [TCP协议](tcp.md) +* [IP协议](ip.md) From 1a8c35b9bb0394f19573d4ab2b621193c34612b1 Mon Sep 17 00:00:00 2001 From: mengning Date: Thu, 26 Dec 2019 17:47:57 +0800 Subject: [PATCH 35/47] Create ip.md --- doc/ip.md | 200 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 200 insertions(+) create mode 100644 doc/ip.md diff --git a/doc/ip.md b/doc/ip.md new file mode 100644 index 0000000..1c27ae9 --- /dev/null +++ b/doc/ip.md @@ -0,0 +1,200 @@ +# 敢问路在何方?—— IP协议和路由表 + +IP协议和路由表是整个互联网架构的核心基础设施,从本文开始我们将深入理解互联网架构的核心,其中包括IP协议和路由表是核心中的核心,本文将从IP地址及无类别区间路由CIDR谈起,先从原理上理解选路路由的方法,然后再阅读Linux内核中IP协议相关的代码,原理和代码相互印证,感兴趣的同学还可以基于我们的MenuOS进一步跟踪分析路由表查询相关的代码。 + +## IP协议及IP封包格式 + +协议本质上就是通讯的双方共同遵守的规则,对于IP协议来说最关键的规则就是IP的封包格式 + +![](https://s1.51cto.com/images/blog/201901/08/9840b1b6ce8d52ce0b1510e34b525fc8.png) + +其中源IP地址和目的IP地址是最关键的信息。 + +## IP地址及无类别区间路由CIDR + +IP地址最初是分类别的,如A类、B类、C类等,IPv4地址长度32位,对应的A类网络的网络号占一个字节,B类网络的网络号占2个字节,C类网络的网络号占3个字节。随着互联网的发展32位的IP地址资源明星不足,而获得A类网络的组织却很可能有大量地址资源没有得到充分利用,而获得C类网络的组织随着规模的扩大却又申请了多个C类网络,因此按类别划分IP网络地址的方案逐渐暴露出IP地址资源利用率不高、灵活性差的问题。 + +解决IPv4地址利用率不高的问题,诞生了多种方案比如NAT和NAPT,通过网络地址转换将私有网络地址转换为公网地址,大大提高了IP地址的利用效率,这种方案在地址资源较为匮乏的国家和地区应用非常广泛,比如中国。 + +无类别区间路由CIDR是其中最重要的一个方案,它既可以有效提交IPv4地址的利用率,又能灵活低拆分和汇聚地址块,大大减少路由表条目,提高了整个网络的运作效率。CIDR是怎么做到这一点的呢? + +所谓无类别区间路由CIDR,无类别就是打破最初A类、B类、C类等按类别划分网络的地址的方法,使用掩码Mast来指明网络号,比如原来的A网络我们可以使用255.0.0.0的掩码来提取出网络号,另外一种表现形式是这样一个A类网络的IP地址x.x.x.x/8可以通过后缀/8来指明网络的比特长度。 + +这么做的好处是显而易见的,通过增加网络号的长度可以灵活地划分子网,同时路由表可以通过缩短网络号合并其中包含的子网络,减少路由表的项目数量,提高路由查询速度。 + +## 路由表查询的方法 + +如图网络结构中R1路由器有四个接口分别连接了四个网络,其中一个m2接口连接的网络中有一台路由器连接到互联网上。 + +![](https://s1.51cto.com/images/blog/201901/08/58f8a4d12a50b72a6c2236140f6611b4.png) + +R1路由器的路由表如图所示: + +![](https://s1.51cto.com/images/blog/201901/08/d45f75b01a717c4125f0700e1f974c51.png) + +当R1路由器接到一个IP包时会解析出IP包中的目的IP地址,用掩码Mast提取出目的IP地址的网络地址作为输入参数查询路由表,匹配路由表项的网络地址,匹配成功获得下一跳next-hop的IP地址及网络接口号,如下图所示。 + +![](https://s1.51cto.com/images/blog/201901/08/218ed33cd03b1420721710ca52887c9d.png) + +路由表查询结果是下一跳next-hop的IP地址及网络接口号,通过下一跳next-hop的IP地址及网络接口号可以进行ARP解析获取对应的MAC地址,这一部分是理解网络架构中网络层与链路层相互协作的关键,我们将在下一篇文章中专题介绍。 + +## 在Linux系统使用route命令可以查看路由表信息 + +``` +shiyanlou:~/ $ route +Kernel IP routing table +Destination Gateway Genmask Flags Metric Ref Use Iface +default 192.168.40.1 0.0.0.0 UG 0 0 0 eth0 +192.168.40.0 * 255.255.255.0 U 0 0 0 eth0 +shiyanlou:~/ $ +``` + +有了前面的相关背景知识的铺垫接下来就可以看代码了。 + +## IP协议的初始化 + +[IP协议的初始化函数ip_init](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/af_inet.c#1740)与TCP一样也是在inet_init函数中被调用的,如/linux-3.18.6/net/ipv4/af_inet.c中1740行代码处。 +``` +1674static int __init inet_init(void) +1675{ +... +1730 /* +1731 * Set the ARP module up +1732 */ +1733 +1734 arp_init(); +1735 +1736 /* +1737 * Set the IP module up +1738 */ +1739 +1740 ip_init(); +1741 +1742 tcp_v4_init(); +1743 +1744 /* Setup TCP slab cache for open requests. */ +1745 tcp_init(); +1746 +1747 /* Setup UDP memory threshold */ +1748 udp_init(); +1749 +1750 /* Add UDP-Lite (RFC 3828) */ +1751 udplite4_register(); +1752 +1753 ping_init(); +1754 +1755 /* +1756 * Set the ICMP layer up +1757 */ +1758 +1759 if (icmp_init() < 0) +1760 panic("Failed to create the ICMP control socket.\n"); +1761 +1762 /* +1763 * Initialise the multicast router +1764 */ +1765#if defined(CONFIG_IP_MROUTE) +1766 if (ip_mr_init()) +1767 pr_crit("%s: Cannot init ipv4 mroute\n", __func__); +1768#endif +1769 +1770 if (init_inet_pernet_ops()) +1771 pr_crit("%s: Cannot init ipv4 inet pernet ops\n", __func__); +1772 /* +1773 * Initialise per-cpu ipv4 mibs +1774 */ +1775 +1776 if (init_ipv4_mibs()) +1777 pr_crit("%s: Cannot init ipv4 mibs\n", __func__); +1778 +1779 ipv4_proc_init(); +1780 +1781 ipfrag_init(); +1782 +1783 dev_add_pack(&ip_packet_type); +... +1795} +1796 +1797fs_initcall(inet_init); +``` +路由表的结构和初始化过程,ip协议初始化ip_init过程中包含路由表的初始化ip_rt_init/ip_fib_init,主要代码见route.c及fib*.c。[ip_init函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/ip_output.c#1602)主要做了三方面工作: +* ip_rt_init() 初始化路由缓存,通过哈希结构提供快速获取目的IP地址的下一跳(Next Hop)访问, 以及初始化作为路由表内部表示形式的FIB (Forwarding Information Base) +* ip_rt_init() 还调用ip_fib_init() 初始化上层的路由相关数据结构 +* inet_initpeers()初始化AVL tree用于跟踪最近有数据通信的IP peers和hosts。 +``` +1602void __init ip_init(void) +1603{ +1604 ip_rt_init(); +1605 inet_initpeers(); +1606 +1607#if defined(CONFIG_IP_MULTICAST) +1608 igmp_mc_init(); +1609#endif +1610} +``` + + +## 查询路由表 +通过目的IP查询路由表的到下一跳的IP地址的过程, fib_lookup为起点,从[fib_lookup函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/include/net/ip_fib.h#222)这里可以进一步深入了解查询路由表的过程,当然这里需要理解路由表的数据结构和查询算法,会比较复杂。 +``` +222static inline int fib_lookup(struct net *net, const struct flowi4 *flp, +223 struct fib_result *res) +224{ +225 struct fib_table *table; +226 +227 table = fib_get_table(net, RT_TABLE_LOCAL); +228 if (!fib_table_lookup(table, flp, res, FIB_LOOKUP_NOREF)) +229 return 0; +230 +231 table = fib_get_table(net, RT_TABLE_MAIN); +232 if (!fib_table_lookup(table, flp, res, FIB_LOOKUP_NOREF)) +233 return 0; +234 return -ENETUNREACH; +235} +``` +有兴趣的读者可以进一步阅读或跟踪代码,如下为在[实验三中MenuOS系统](https://www.shiyanlou.com/courses/1198)上跟踪到fib_lookup函数时的调用栈。 +``` +2112 if (fib_lookup(net, fl4, &res)) { +(gdb) bt +#0 __ip_route_output_key (net=0xc1a08d40 , fl4=0xc7bb8cf4) + at net/ipv4/route.c:2112 +#1 0xc161dc77 in ip_route_connect (protocol=, + sk=, dport=, sport=, + oif=, tos=, src=, + dst=, fl4=) at include/net/route.h:268 +#2 tcp_v4_connect (sk=0x100007f, uaddr=, + addr_len=) at net/ipv4/tcp_ipv4.c:171 +#3 0xc1631226 in __inet_stream_connect (sock=0xc763cd80, + uaddr=, addr_len=, flags=2) + at net/ipv4/af_inet.c:592 +---Type to continue, or q to quit--- +#4 0xc163149a in inet_stream_connect (sock=0xc763cd80, uaddr=0xc7859d70, + addr_len=16, flags=2) at net/ipv4/af_inet.c:653 +#5 0xc15a9289 in SYSC_connect (fd=, uservaddr=, + addrlen=16) at net/socket.c:1707 +#6 0xc15aa0ae in SyS_connect (addrlen=16, uservaddr=-1080639076, fd=4) + at net/socket.c:1688 +#7 SYSC_socketcall (call=3, args=) at net/socket.c:2525 +#8 0xc15aa90e in SyS_socketcall (call=3, args=-1080639136) + at net/socket.c:2492 +#9 +#10 0xb7783c5c in ?? () +``` + +## 结合IP包的首发过程从整体上理解IP协议及路由选择 + +IP数据包的收或发的过程是传输层协议数据收发过程的延伸,在分析TCP协议的过程中,我们涉及到数据收发的过程,同样对于IP协议,从上层传输层会调用IP协议的发送数据接口,见ip_queue_xmit;同时数据接收的过程中底层链路层会调用IP协议的接收数据的接口,见ip_rcv。 + +![](https://s1.51cto.com/images/blog/201901/08/62ed2fe659ad4a6d83b0e40969de6899.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=) + + +## 参考资料 + +* https://people.cs.clemson.edu/~westall/853/notes/ipinit.pdf +* Behrouz A. Forouzan, Sophia Chung Fegan. TCP/IP Protocol Suite (3rd Edition) +* http://en.wikipedia.org/wiki/Routing_table +* http://zh.wikipedia.org/wiki/%E5%86%85%E9%83%A8%E7%BD%91%E5%85%B3%E5%8D%8F%E8%AE%AE +* http://computer.bowenwang.com.cn/internet-infrastructure1.htm +* http://tools.ietf.org/html/rfc2453 +* http://zh.wikipedia.org/zh-cn/%E5%BC%80%E6%94%BE%E5%BC%8F%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%BE%84%E4%BC%98%E5%85%88 + From c2a06d6ea13be964702c03d45adc57c9688b6979 Mon Sep 17 00:00:00 2001 From: mengning Date: Thu, 26 Dec 2019 17:52:19 +0800 Subject: [PATCH 36/47] Create arp.md --- doc/arp.md | 188 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 188 insertions(+) create mode 100644 doc/arp.md diff --git a/doc/arp.md b/doc/arp.md new file mode 100644 index 0000000..bc00375 --- /dev/null +++ b/doc/arp.md @@ -0,0 +1,188 @@ +## 网络层与链路层的中间人——ARP协议及ARP缓存 + +路由选择得到输出结果是下一跳Next-Hop的IP地址和网络接口号,但是在发送IP数据包之前还需要得到目的MAC地址,这就需要用到ARP(Address Resolution Protocol)地址解析协议了。ARP用于将计算机的网络地址(IP地址32位)转化为物理地址(MAC地址48位),也就是将路由选择得到输出结果下一跳Next-Hop的IP地址通过查询ARP缓存得到对应的目的MAC地址。 + +![](https://s1.51cto.com/images/blog/201901/08/c76037e0cb827a22299460b85f408db5.png) + +如上图,常见的MAC帧有三个类型:IP数据包、ARP和RARP。ARP请求/应答数据和IP数据包一样是由MAC帧承载的。 + +网络层的IP数据包(含有目的IP地址)需要封装成MAC帧(含有目的MAC地址)才能发送出去。如何得到目的MAC地址,从而将IP数据包发送到下一个中转站或最终目的地(下一跳Next-Hop)是TCP/IP网络得以有效工作的关键。从整个IP数据包传输的路径上,我们把ARP解析分解成四种典型的情况: + +### 1 发送者与接收者在同一个网络 + +![](https://s1.51cto.com/images/blog/201901/08/b24d6f433b2f34df540cb310a7a19af5.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=) + +发送者与接收者在同一个网络,这时发送者查询路由表得到结果是目的IP即是下一跳的IP地址,只要解析目的IP地址对应的MAC地址,即可直接将IP数据包发送到接收者。 + +### 2 发送者需要首先发送给一个路由器 + +![](https://s1.51cto.com/images/blog/201901/08/0156e0b6f7f32a413438b0be88ade7f9.png) + +发送者查询路由表得到结果是下一跳是一个路由器,需要将路由器的IP地址进行ARP解析获得路由器对应网络接口的MAC地址,即可将IP数据包发往路由器。这时IP数据包中的目的IP地址和MAC帧中的目的MAC地址并没有对应关系,只是IP数据包通过路由器所在网络作为中转站进行传输而已。 + +### 3 一个路由器转发给另一个路由器 + +![](https://s1.51cto.com/images/blog/201901/08/c02d038be419bdc7c609bcd01db41a2a.png) + +一个路由器接到一个IP数据包,需要将IP数据包解包出目的IP地址,通过查询路由表得到下一跳的IP地址,这时下一跳往往还是一个路由器,将下一跳的IP地址解析出对应的MAC地址,即可将IP数据包发往另一个路由器。这时IP数据包中的目的IP地址和MAC帧中的目的MAC地址并没有对应关系,但是我们发现下一跳的IP地址始终与MAC帧中的目的MAC地址有着对应关系。 + +### 4 路由器将IP数据包发送给最终接收者 + +![](https://s1.51cto.com/images/blog/201901/08/26ffab864c3f84f2d396f5071b8019e1.png) + +同样路由器接到一个IP数据包,需要将IP数据包解包出目的IP地址,通过查询路由表得到下一跳的IP地址,这时下一跳的IP地址与目的IP地址相同,因为查询路由表时目的IP地址与路由器所在网络的网络号相同。将下一跳的IP地址(这时即为目的IP地址)解析出对应的MAC地址,即可将IP数据包发往接收者。这种情况下一跳的IP地址与目的IP地址相同,这时目的IP地址与MAC帧中的目的MAC地址代表同一台主机。 + +## ARP协议源代码分析 + +### ARP缓存的数据结构及初始化过程 + +参照tcp和ip协议的的初始化过程类似,查找arp初始化相关代码,见[inet_init](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/af_inet.c#1730)函数: + +``` +1730 /* +1731 * Set the ARP module up +1732 */ +1733 +1734 arp_init(); +``` +[arp_init](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/arp.c#1293)函数如下,其中包括ARP缓存的初始化。 +``` +1293void __init arp_init(void) +1294{ +1295 neigh_table_init(&arp_tbl); +1296 +1297 dev_add_pack(&arp_packet_type); +1298 arp_proc_init(); +1299#ifdef CONFIG_SYSCTL +1300 neigh_sysctl_register(NULL, &arp_tbl.parms, NULL); +1301#endif +1302 register_netdevice_notifier(&arp_netdev_notifier); +1303} +``` +### ARP协议如何更新ARP缓存 + +ARP协议的实现代码量不大,主要集中在[arp.c文件](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/arp.c#1293)中。 + +### 创建和发送一个ARP封包 + +``` +692/* +693 * Create and send an arp packet. +694 */ +695void arp_send(int type, int ptype, __be32 dest_ip, +696 struct net_device *dev, __be32 src_ip, +697 const unsigned char *dest_hw, const unsigned char *src_hw, +698 const unsigned char *target_hw) +699{ +700 struct sk_buff *skb; +701 +702 /* +703 * No arp on this interface. +704 */ +705 +706 if (dev->flags&IFF_NOARP) +707 return; +708 +709 skb = arp_create(type, ptype, dest_ip, dev, src_ip, +710 dest_hw, src_hw, target_hw); +711 if (skb == NULL) +712 return; +713 +714 arp_xmit(skb); +715} +``` +### 接收并处理一个ARP封包 + +``` +1282/* +1283 * Called once on startup. +1284 */ +1285 +1286static struct packet_type arp_packet_type __read_mostly = { +1287 .type = cpu_to_be16(ETH_P_ARP), +1288 .func = arp_rcv, +1289}; +``` +其中callback函数指针arp_rcv由链路层接收到数据后根据MAC帧的类型回调arp_rcv进行ARP数据封包的处理。 +``` +947/* +948 * Receive an arp request from the device layer. +949 */ +950 +951static int arp_rcv(struct sk_buff *skb, struct net_device *dev, +952 struct packet_type *pt, struct net_device *orig_dev) +953{ +954 const struct arphdr *arp; +955 +956 /* do not tweak dropwatch on an ARP we will ignore */ +957 if (dev->flags & IFF_NOARP || +958 skb->pkt_type == PACKET_OTHERHOST || +959 skb->pkt_type == PACKET_LOOPBACK) +960 goto consumeskb; +961 +962 skb = skb_share_check(skb, GFP_ATOMIC); +963 if (!skb) +964 goto out_of_mem; +965 +966 /* ARP header, plus 2 device addresses, plus 2 IP addresses. */ +967 if (!pskb_may_pull(skb, arp_hdr_len(dev))) +968 goto freeskb; +969 +970 arp = arp_hdr(skb); +971 if (arp->ar_hln != dev->addr_len || arp->ar_pln != 4) +972 goto freeskb; +973 +974 memset(NEIGH_CB(skb), 0, sizeof(struct neighbour_cb)); +975 +976 return NF_HOOK(NFPROTO_ARP, NF_ARP_IN, skb, dev, NULL, arp_process); +``` +具体的ARP协议解析过程主要集中在[arp_process函数中](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/arp.c#arp_process) ,有兴趣的读者可以仔细研究。 + +``` +718/* +719 * Process an arp request. +720 */ +721 +722static int arp_process(struct sk_buff *skb) +723{ +... +``` +### 如何将IP地址解析出对应的MAC地址 + +通过跟踪MenuOS中connect建立连接的代码, __ipv4_neigh_lookup_noref函数负责通过查询ARP缓存,connect在内核里的调用栈一直到__ipv4_neigh_lookup_noref函数: + +``` +197 neigh = __ipv4_neigh_lookup_noref(dev, nexthop); +(gdb) bt +#0 ip_finish_output2 (skb=) at net/ipv4/ip_output.c:197 +#1 ip_finish_output (skb=0xc7bb30b8) at net/ipv4/ip_output.c:271 +#2 0xc1603de7 in NF_HOOK_COND (pf=, hook=, + in=, okfn=, cond=, + out=, skb=) at include/linux/netfilter.h:187 +#3 ip_output (sk=, skb=0xc7bb30b8) at net/ipv4/ip_output.c:343 +#4 0xc16034d2 in dst_output_sk (skb=, sk=) + at include/net/dst.h:458 +#5 ip_local_out_sk (sk=0xc7bb8ac0, skb=0xc7bb30b8) at net/ipv4/ip_output.c:110 +#6 0xc16037df in ip_local_out (skb=) at include/net/ip.h:117 +#7 ip_queue_xmit (sk=0xc7bb8ac0, skb=0xc7ae6d00, fl=) + at net/ipv4/ip_output.c:439 +#8 0xc1618513 in tcp_transmit_skb (sk=0xc7bb8ac0, skb=0xc7ae6d00, + clone_it=, gfp_mask=208) at net/ipv4/tcp_output.c:1012 +#9 0xc1619fa0 in tcp_connect (sk=0xc7bb8ac0) at net/ipv4/tcp_output.c:3117 +#10 0xc161de66 in tcp_v4_connect (sk=0xd4, uaddr=0xc7859d70, + addr_len=) at net/ipv4/tcp_ipv4.c:246 +#11 0xc1631226 in __inet_stream_connect (sock=0xc763cd80, + uaddr=, addr_len=, flags=2) + at net/ipv4/af_inet.c:592 +#12 0xc163149a in inet_stream_connect (sock=0xc763cd80, uaddr=0xc7859d70, + addr_len=16, flags=2) at net/ipv4/af_inet.c:653 +#13 0xc15a9289 in SYSC_connect (fd=, uservaddr=, + addrlen=16) at net/socket.c:1707 +#14 0xc15aa0ae in SyS_connect (addrlen=16, uservaddr=-1080639076, fd=4) + at net/socket.c:1688 +#15 SYSC_socketcall (call=3, args=) at net/socket.c:2525 +#16 0xc15aa90e in SyS_socketcall (call=3, args=-1080639136) + at net/socket.c:2492 +``` + +从代码的封装看arp_find是负责ARP缓存查询的,但实际上对于IPv4来讲是由__ipv4_neigh_lookup_noref函数完成ARP缓存查询的。 From 49c5b17638609beaec9189d164cf90f75d4c4736 Mon Sep 17 00:00:00 2001 From: mengning Date: Thu, 26 Dec 2019 17:52:54 +0800 Subject: [PATCH 37/47] Update README.md --- doc/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/README.md b/doc/README.md index c0768ec..4d8af22 100644 --- a/doc/README.md +++ b/doc/README.md @@ -18,3 +18,4 @@ * [TCP/IP协议栈的初始化](tcpipinit.md) * [TCP协议](tcp.md) * [IP协议](ip.md) +* [ARP协议](arp.md) From 40aec2ebcb182a6edd003fbc7dfde0718c48b383 Mon Sep 17 00:00:00 2001 From: mengning Date: Thu, 26 Dec 2019 17:53:20 +0800 Subject: [PATCH 38/47] Update np2019.md --- np2019.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/np2019.md b/np2019.md index 0d87b5b..6f73552 100644 --- a/np2019.md +++ b/np2019.md @@ -87,6 +87,8 @@ Socket与系统调用深度分析http://edu.cnblogs.com/campus/ustc/np2019/homew * [HowIPNetworking.pptx](https://github.com/mengning/net/raw/master/lab4/How%20IP%20Networking.pptx) * [ARP.pptx](https://github.com/mengning/net/raw/master/lab5/ARP.pptx) +* [IP协议](doc/ip.md) +* [ARP协议](doc/arp.md) ## 参考资料 From 9fc01b291dbcedeb75a044a05836b9adcce6be4d Mon Sep 17 00:00:00 2001 From: mengning Date: Fri, 27 Dec 2019 09:49:44 +0800 Subject: [PATCH 39/47] Update ip.md --- doc/ip.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/doc/ip.md b/doc/ip.md index 1c27ae9..edb4431 100644 --- a/doc/ip.md +++ b/doc/ip.md @@ -152,6 +152,38 @@ shiyanlou:~/ $ 234 return -ENETUNREACH; 235} ``` +[5.x版本的fib_lookup函数](https://github.com/torvalds/linux/blob/386403a115f95997c2715691226e11a7b5cffcfd/include/net/ip_fib.h#L294) - [fib_table_lookup](https://github.com/torvalds/linux/blob/386403a115f95997c2715691226e11a7b5cffcfd/net/ipv4/fib_trie.c#L1314) + +[struct flowi4](https://github.com/torvalds/linux/blob/63bdf4284c38a48af21745ceb148a087b190cd21/include/net/flow.h#L70) +``` +struct flowi4 { + struct flowi_common __fl_common; +#define flowi4_oif __fl_common.flowic_oif +#define flowi4_iif __fl_common.flowic_iif +#define flowi4_mark __fl_common.flowic_mark +#define flowi4_tos __fl_common.flowic_tos +#define flowi4_scope __fl_common.flowic_scope +#define flowi4_proto __fl_common.flowic_proto +#define flowi4_flags __fl_common.flowic_flags +#define flowi4_secid __fl_common.flowic_secid +#define flowi4_tun_key __fl_common.flowic_tun_key +#define flowi4_uid __fl_common.flowic_uid +#define flowi4_multipath_hash __fl_common.flowic_multipath_hash + + /* (saddr,daddr) must be grouped, same order as in IP header */ + __be32 saddr; + __be32 daddr; + + union flowi_uli uli; +#define fl4_sport uli.ports.sport +#define fl4_dport uli.ports.dport +#define fl4_icmp_type uli.icmpt.type +#define fl4_icmp_code uli.icmpt.code +#define fl4_ipsec_spi uli.spi +#define fl4_mh_type uli.mht.type +#define fl4_gre_key uli.gre_key +} __attribute__((__aligned__(BITS_PER_LONG/8))); +``` 有兴趣的读者可以进一步阅读或跟踪代码,如下为在[实验三中MenuOS系统](https://www.shiyanlou.com/courses/1198)上跟踪到fib_lookup函数时的调用栈。 ``` 2112 if (fib_lookup(net, fl4, &res)) { From 6522aef4084bb467015d6fc5a6d940ccbd0fa860 Mon Sep 17 00:00:00 2001 From: mengning Date: Tue, 31 Dec 2019 15:24:49 +0800 Subject: [PATCH 40/47] Update np2019.md --- np2019.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/np2019.md b/np2019.md index 6f73552..9047172 100644 --- a/np2019.md +++ b/np2019.md @@ -90,6 +90,18 @@ Socket与系统调用深度分析http://edu.cnblogs.com/campus/ustc/np2019/homew * [IP协议](doc/ip.md) * [ARP协议](doc/arp.md) +### L2 Switching + +* [L2 Switching](https://github.com/mengning/net/raw/master/lab6/L2Switching.pptx) + +### DNS + +* [DNS.pptx](https://github.com/mengning/net/blob/master/lab7/DNS.pptx) + +### 互联网架构设计背后的渊源 + +* [互联网架构设计背后的渊源.pptx](https://github.com/mengning/net/blob/master/lab8/%E4%BA%92%E8%81%94%E7%BD%91%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1%E8%83%8C%E5%90%8E%E7%9A%84%E6%B8%8A%E6%BA%90.pptx) + ## 参考资料 * UNIX网络编程卷1:套接字联网API From fddfb36b74d1805e51ca88eb220bbd2ef06705ea Mon Sep 17 00:00:00 2001 From: mengning Date: Thu, 2 Jan 2020 13:38:54 +0800 Subject: [PATCH 41/47] Create dataflow.md --- doc/dataflow.md | 648 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 648 insertions(+) create mode 100644 doc/dataflow.md diff --git a/doc/dataflow.md b/doc/dataflow.md new file mode 100644 index 0000000..8e3c12b --- /dev/null +++ b/doc/dataflow.md @@ -0,0 +1,648 @@ +本文从用户态的socket接口API、系统调用、Linux内核中socket接口层代码,到网络协议栈TCP协议、IP协议及路由选择、ARP协议及ARP解析,然后进一步分析了数据链路层的MAC帧在二层网络上的CSMA/CD机制及交换网络上学习和过滤机制。到这里我们庖丁解牛式地逐一分析了Linux网络核心中的每一个关键部分,本文我们将以上这些整合起来,完整梳理一下数据收发过程在Linux网络核心中所必经的关键代码。您还可以以DNS和HTTP这两个最常用的应用层协议为例来进一步理解Linux网络核心 + +### socket接口API + +以我们的MenuOS为例,在用户态执行hello命令时调用了send和recv两个socket接口API函数。这两个函数的原型声明一般在/usr/include/sys/socket.h文件中: + +``` +... +/* Send N bytes of BUF to socket FD. Returns the number sent or -1. + + This function is a cancellation point and therefore not marked with + __THROW. */ +extern ssize_t send (int __fd, const void *__buf, size_t __n, int __flags); + +/* Read N bytes into BUF from socket FD. + Returns the number read or -1 for errors. + + This function is a cancellation point and therefore not marked with + __THROW. */ +extern ssize_t recv (int __fd, void *__buf, size_t __n, int __flags); +... +``` +根据实验环境MenuOS中实际跟踪发现send和recv都是通过调用socketcall函数实现的。 + +### socket系统调用 + +在我们的实验环境MenuOS中,socket接口是通过[112号系统调用](http://codelab.shiyanlou.com/xref/linux-3.18.6/arch/x86/syscalls/syscall_32.tbl#111) 进入内核的. + +``` +102 i386 socketcall sys_socketcall compat_sys_socketcall +``` + +![](https://s1.51cto.com/images/blog/201902/01/ab56fa133217b6edd0a2a3d4216fa9ff.png) + +上图中xyz()就是一个API函数,比如socketcall函数,是系统调用对应的API接口上,其中封装了一个系统调用,会触发int $0x80的中断,对应system_call内核代码的起点,即中断向量0x80对应的中断服务程序入口,内部会有sys_xyz()系统调用处理函数,比如sys_socketcall函数。 + +### socket接口层数据收发代码分析 + +[sys_socketcall函数](http://codelab.shiyanlou.com/xref/linux-3.18.6/net/socket.c#2484)中通过参数call来指明具体是哪一个socket接口,比如send函数对应SYS_SEND = 9,recv函数对应的SYS_RECV = 10。 +``` +2484/* +2485 * System call vectors. +2486 * +2487 * Argument checking cleaned up. Saved 20% in size. +2488 * This function doesn't need to set the kernel lock because +2489 * it is set by the callees. +2490 */ +2491 +2492SYSCALL_DEFINE2(socketcall, int, call, unsigned long __user *, args) +2493{ +... +2547 case SYS_SEND: +2548 err = sys_send(a0, (void __user *)a1, a[2], a[3]); +... +2554 case SYS_RECV: +2555 err = sys_recv(a0, (void __user *)a1, a[2], a[3]); +... +2595} +``` +#### send函数对应执行[sys_send函数及sys_sendto函数](http://codelab.shiyanlou.com/xref/linux-3.18.6/net/socket.c#1777) +``` +1777/* +1778 * Send a datagram to a given address. We move the address into kernel +1779 * space and check the user space data area is readable before invoking +1780 * the protocol. +1781 */ +1782 +1783SYSCALL_DEFINE6(sendto, int, fd, void __user *, buff, size_t, len, +1784 unsigned int, flags, struct sockaddr __user *, addr, +1785 int, addr_len) +1786{ +... +1818 err = sock_sendmsg(sock, &msg, len); +... +1824} +1825 +1826/* +1827 * Send a datagram down a socket. +1828 */ +1829 +1830SYSCALL_DEFINE4(send, int, fd, void __user *, buff, size_t, len, +1831 unsigned int, flags) +1832{ +1833 return sys_sendto(fd, buff, len, flags, NULL, 0); +1834} +``` +其中sock_sendmsg最终调用了函数指针sock->ops->sendmsg,具体代码见[net/socket.c#633](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/socket.c#633) ,如下: +``` +633static inline int __sock_sendmsg_nosec(struct kiocb *iocb, struct socket *sock, +634 struct msghdr *msg, size_t size) +635{ +636 struct sock_iocb *si = kiocb_to_siocb(iocb); +637 +638 si->sock = sock; +639 si->scm = NULL; +640 si->msg = msg; +641 si->size = size; +642 +643 return sock->ops->sendmsg(iocb, sock, msg, size); +644} +645 +646static inline int __sock_sendmsg(struct kiocb *iocb, struct socket *sock, +647 struct msghdr *msg, size_t size) +648{ +649 int err = security_socket_sendmsg(sock, msg, size); +650 +651 return err ?: __sock_sendmsg_nosec(iocb, sock, msg, size); +652} +653 +654int sock_sendmsg(struct socket *sock, struct msghdr *msg, size_t size) +655{ +656 struct kiocb iocb; +657 struct sock_iocb siocb; +658 int ret; +659 +660 init_sync_kiocb(&iocb, NULL); +661 iocb.private = &siocb; +662 ret = __sock_sendmsg(&iocb, sock, msg, size); +663 if (-EIOCBQUEUED == ret) +664 ret = wait_on_sync_kiocb(&iocb); +665 return ret; +666} +667EXPORT_SYMBOL(sock_sendmsg); +``` +#### recv函数对应的[sys_recv函数及sys_recvfrom函数](http://codelab.shiyanlou.com/xref/linux-3.18.6/net/socket.c#1836) +``` +1836/* +1837 * Receive a frame from the socket and optionally record the address of the +1838 * sender. We verify the buffers are writable and if needed move the +1839 * sender address from kernel to user space. +1840 */ +1841 +1842SYSCALL_DEFINE6(recvfrom, int, fd, void __user *, ubuf, size_t, size, +1843 unsigned int, flags, struct sockaddr __user *, addr, +1844 int __user *, addr_len) +1845{ +... +1871 err = sock_recvmsg(sock, &msg, size, flags); +... +1883} +1884 +1885/* +1886 * Receive a datagram from a socket. +1887 */ +1888 +1889SYSCALL_DEFINE4(recv, int, fd, void __user *, ubuf, size_t, size, +1890 unsigned int, flags) +1891{ +1892 return sys_recvfrom(fd, ubuf, size, flags, NULL, NULL); +1893} +``` +其中sock_recvmsg最终调用了函数指针sock->ops->recvmsg,具体代码见[net/socket.c#779](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/socket.c#779) ,如下: +``` +779static inline int __sock_recvmsg_nosec(struct kiocb *iocb, struct socket *sock, +780 struct msghdr *msg, size_t size, int flags) +781{ +782 struct sock_iocb *si = kiocb_to_siocb(iocb); +783 +784 si->sock = sock; +785 si->scm = NULL; +786 si->msg = msg; +787 si->size = size; +788 si->flags = flags; +789 +790 return sock->ops->recvmsg(iocb, sock, msg, size, flags); +791} +792 +793static inline int __sock_recvmsg(struct kiocb *iocb, struct socket *sock, +794 struct msghdr *msg, size_t size, int flags) +795{ +796 int err = security_socket_recvmsg(sock, msg, size, flags); +797 +798 return err ?: __sock_recvmsg_nosec(iocb, sock, msg, size, flags); +799} +800 +801int sock_recvmsg(struct socket *sock, struct msghdr *msg, +802 size_t size, int flags) +803{ +804 struct kiocb iocb; +805 struct sock_iocb siocb; +806 int ret; +807 +808 init_sync_kiocb(&iocb, NULL); +809 iocb.private = &siocb; +810 ret = __sock_recvmsg(&iocb, sock, msg, size, flags); +811 if (-EIOCBQUEUED == ret) +812 ret = wait_on_sync_kiocb(&iocb); +813 return ret; +814} +815EXPORT_SYMBOL(sock_recvmsg); +``` +### TCP协议栈数据收发代码分析 + +上述提及了两个函数指针sock->ops->sendmsg和sock->ops->recvmsg在我们的lab3实验中对应着tcp_sendmsg和tcp_recvmsg函数,与前面文章中介绍的connect及TCP三次握手一样,tcp_sendmsg和tcp_recvmsg函数是通过如下[struct proto tcp_prot结构体变量](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/tcp_ipv4.c#2380)赋值给对应函数指针的: +``` +2380struct proto tcp_prot = { +2381 .name = "TCP", +2382 .owner = THIS_MODULE, +2383 .close = tcp_close, +2384 .connect = tcp_v4_connect, +... +2393 .recvmsg = tcp_recvmsg, +2394 .sendmsg = tcp_sendmsg, +... +2426}; +2427EXPORT_SYMBOL(tcp_prot); +``` + +由于TCP是面向连接的提供可靠的字节流传输服务,TCP的发送和接收涉及比较复杂的滑动窗口协议和确认重传机制,具体分析发送和接收的细节会比较复杂,我们这里为了简化期间只提纲挈领提及一些关键的函数。 + +#### [tcp_sendmsg](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/tcp.c#1085) + +``` +1085int tcp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, +1086 size_t size) +1087{ +... +1275 if (forced_push(tp)) { +1276 tcp_mark_push(tp, skb); +1277 __tcp_push_pending_frames(sk, mss_now, TCP_NAGLE_PUSH); +1278 } else if (skb == tcp_send_head(sk)) +1279 tcp_push_one(sk, mss_now); +1280 continue; +1281 +1282wait_for_sndbuf: +1283 set_bit(SOCK_NOSPACE, &sk->sk_socket->flags); +1284wait_for_memory: +1285 if (copied) +1286 tcp_push(sk, flags & ~MSG_MORE, mss_now, +1287 TCP_NAGLE_PUSH, size_goal); +1288 +1289 if ((err = sk_stream_wait_memory(sk, &timeo)) != 0) +1290 goto do_error; +1291 +1292 mss_now = tcp_send_mss(sk, &size_goal, flags); +1293 } +1294 } +1295 +1296out: +1297 if (copied) +1298 tcp_push(sk, flags, mss_now, tp->nonagle, size_goal); +... +1320} +1321EXPORT_SYMBOL(tcp_sendmsg); +``` +其中的tcp_push和tcp_push_one都会最终通过如下代码调用[tcp_write_xmit函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/tcp_output.c#1926) +``` +2195/* Push out any pending frames which were held back due to +2196 * TCP_CORK or attempt at coalescing tiny packets. +2197 * The socket must be locked by the caller. +2198 */ +2199void __tcp_push_pending_frames(struct sock *sk, unsigned int cur_mss, +2200 int nonagle) +2201{ +2202 /* If we are closed, the bytes will have to remain here. +2203 * In time closedown will finish, we empty the write queue and +2204 * all will be happy. +2205 */ +2206 if (unlikely(sk->sk_state == TCP_CLOSE)) +2207 return; +2208 +2209 if (tcp_write_xmit(sk, cur_mss, nonagle, 0, +2210 sk_gfp_atomic(sk, GFP_ATOMIC))) +2211 tcp_check_probe_timer(sk); +2212} +2213 +2214/* Send _single_ skb sitting at the send head. This function requires +2215 * true push pending frames to setup probe timer etc. +2216 */ +2217void tcp_push_one(struct sock *sk, unsigned int mss_now) +2218{ +2219 struct sk_buff *skb = tcp_send_head(sk); +2220 +2221 BUG_ON(!skb || skb->len < mss_now); +2222 +2223 tcp_write_xmit(sk, mss_now, TCP_NAGLE_PUSH, 1, sk->sk_allocation); +2224} +``` +[tcp_write_xmit函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/tcp_output.c#1926)进一步调用[tcp_transmit_skb函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/tcp_output.c#876) +``` +876/* This routine actually transmits TCP packets queued in by +877 * tcp_do_sendmsg(). This is used by both the initial +878 * transmission and possible later retransmissions. +879 * All SKB's seen here are completely headerless. It is our +880 * job to build the TCP header, and pass the packet down to +881 * IP so it can do the same plus pass the packet off to the +882 * device. +883 * +884 * We are working here with either a clone of the original +885 * SKB, or a fresh unique copy made by the retransmit engine. +886 */ +887static int tcp_transmit_skb(struct sock *sk, struct sk_buff *skb, int clone_it, +888 gfp_t gfp_mask) +889{ +... +946 /* Build TCP header and checksum it. */ +947 th = tcp_hdr(skb); +948 th->source = inet->inet_sport; +949 th->dest = inet->inet_dport; +950 th->seq = htonl(tcb->seq); +951 th->ack_seq = htonl(tp->rcv_nxt); +... +1012 err = icsk->icsk_af_ops->queue_xmit(sk, skb, &inet->cork.fl); +... +1020} +``` +其中icsk->icsk_af_ops->queue_xmit函数指针由如下结构体变量初始化为ip_queue_xmit函数,这里进入IP协议栈,我们稍后再进一步分析。 +``` +1766const struct inet_connection_sock_af_ops ipv4_specific = { +1767 .queue_xmit = ip_queue_xmit, +... +1784}; +1785EXPORT_SYMBOL(ipv4_specific); +``` +#### [tcp_recvmsg](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/tcp.c#1577) + +[tcp_recvmsg](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/tcp.c#1577)函数对应用户态recv函数的表现:阻塞函数直到接收到数据(len>0)返回接收到的数据。 + +``` +1577/* +1578 * This routine copies from a sock struct into the user buffer. +1579 * +1580 * Technical note: in 2.3 we work on _locked_ socket, so that +1581 * tricks with *seq access order and skb->users are not required. +1582 * Probably, code can be easily improved even more. +1583 */ +1584 +1585int tcp_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, +1586 size_t len, int nonblock, int flags, int *addr_len) +1587{ +... +1642 do { +... +1872 } while (len > 0); +1873 +1874 if (user_recv) { +1875 if (!skb_queue_empty(&tp->ucopy.prequeue)) { +1876 int chunk; +1877 +1878 tp->ucopy.len = copied > 0 ? len : 0; +1879 +1880 tcp_prequeue_process(sk); +1881 +1882 if (copied > 0 && (chunk = len - tp->ucopy.len) != 0) { +1883 NET_ADD_STATS_USER(sock_net(sk), LINUX_MIB_TCPDIRECTCOPYFROMPREQUEUE, chunk); +1884 len -= chunk; +1885 copied += chunk; +1886 } +1887 } +... +1914} +1915EXPORT_SYMBOL(tcp_recvmsg); +``` +这里的[tcp_prequeue_process函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/tcp.c#1454)是通过sk_backlog_rcv函数从接收队列中出队skb,那么按照数据接收数据流的逻辑上,一定存在将将接收到的skb数据入队的地方。 + +``` +1454static void tcp_prequeue_process(struct sock *sk) +1455{ +... +1464 while ((skb = __skb_dequeue(&tp->ucopy.prequeue)) != NULL) +1465 sk_backlog_rcv(sk, skb); +... +1470} +``` +在前面分析TCP三次握手我们知道IP层接收到TCP数据是通过函数指针回调tcp_v4_rcv函数来通知TCP协议栈接收数据的。 +``` +1585int tcp_v4_rcv(struct sk_buff *skb) +1586{ +... +1673 if (!tcp_prequeue(sk, skb)) +1674 ret = tcp_v4_do_rcv(sk, skb); +... +1746} +``` +其中[tcp_v4_do_rcv函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/tcp_ipv4.c#1427)调用了tcp_child_process函数 + +``` +1427int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb) +1428{ +... +1449 if (sk->sk_state == TCP_LISTEN) { +... +1456 if (tcp_child_process(sk, nsk, skb)) { +... +1486} +1487EXPORT_SYMBOL(tcp_v4_do_rcv); +``` +[tcp_child_process函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/tcp_minisocks.c#755)调用了__sk_add_backlog将skb入队,与前面sk_backlog_rcv出队对应。 +``` +755/* +756 * Queue segment on the new socket if the new socket is active, +757 * otherwise we just shortcircuit this and continue with +758 * the new socket. +759 * +760 * For the vast majority of cases child->sk_state will be TCP_SYN_RECV +761 * when entering. But other states are possible due to a race condition +762 * where after __inet_lookup_established() fails but before the listener +763 * locked is obtained, other packets cause the same connection to +764 * be created. +765 */ +766 +767int tcp_child_process(struct sock *parent, struct sock *child, +768 struct sk_buff *skb) +769{ +... +784 __sk_add_backlog(child, skb); +... +790} +791EXPORT_SYMBOL(tcp_child_process); +``` +### IP协议栈数据收发代码分析 + +从TCP协议栈数据收发代码分析中我们知道IP发送数据是通过ip_queue_xmit,而二层数据链路层接收IP数据包回调IP协议栈进一步处理接收数据是通过ip_rcv函数,初始化[函数指针func](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/af_inet.c#1669) 的代码如下: +``` +1669static struct packet_type ip_packet_type __read_mostly = { +1670 .type = cpu_to_be16(ETH_P_IP), +1671 .func = ip_rcv, +1672}; +``` +#### [ip_queue_xmit](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/ip_output.c#362) +[ip_queue_xmit](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/ip_output.c#362)函数摘录如下: +``` +362/* Note: skb->sk can be different from sk, in case of tunnels */ +363int ip_queue_xmit(struct sock *sk, struct sk_buff *skb, struct flowi *fl) +364{ +... +439 res = ip_local_out(skb); +... +448} +449EXPORT_SYMBOL(ip_queue_xmit); +``` +其中的[ip_local_out内联函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/include/net/ip.h#115) 如下: +``` +115static inline int ip_local_out(struct sk_buff *skb) +116{ +117 return ip_local_out_sk(skb->sk, skb); +118} +``` +上面的[ip_local_out_sk函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/ip_output.c#94)最终通过nf_hook提供的回调机制调用了dst_output函数。 +``` +94int __ip_local_out(struct sk_buff *skb) +95{ +96 struct iphdr *iph = ip_hdr(skb); +97 +98 iph->tot_len = htons(skb->len); +99 ip_send_check(iph); +100 return nf_hook(NFPROTO_IPV4, NF_INET_LOCAL_OUT, skb, NULL, +101 skb_dst(skb)->dev, dst_output); +102} +103 +104int ip_local_out_sk(struct sock *sk, struct sk_buff *skb) +105{ +106 int err; +107 +108 err = __ip_local_out(skb); +109 if (likely(err == 1)) +110 err = dst_output_sk(sk, skb); +111 +112 return err; +113} +114EXPORT_SYMBOL_GPL(ip_local_out_sk); +``` +[dst_output函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/include/net/dst.h#455)最终调用了函数指针skb_dst(skb)->output(sk, skb): +``` +455/* Output packet to network from transport. */ +456static inline int dst_output_sk(struct sock *sk, struct sk_buff *skb) +457{ +458 return skb_dst(skb)->output(sk, skb); +459} +460static inline int dst_output(struct sk_buff *skb) +461{ +462 return dst_output_sk(skb->sk, skb); +463} +``` +skb_dst(skb)返回的是[struct dst_entry数据结构](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/include/net/dst.h#33)指针,我们也就找到了output函数指针。 +``` +33struct dst_entry { +... +47 int (*input)(struct sk_buff *); +48 int (*output)(struct sock *sk, struct sk_buff *skb); +``` +上述input和output函数指针在IP协议栈及路由表(ip_init及ip_rt_init)初始化过程被赋值如下,见[linux-3.18.6/net/ipv4/route.c#1610](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/route.c#1610)。 +``` +1610 rth->dst.input = ip_forward; +1611 rth->dst.output = ip_output; +``` +[ip_output函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/ip_output.c#334)通过NF_HOOK_COND方式调用ip_finish_output +``` +334int ip_output(struct sock *sk, struct sk_buff *skb) +335{ +336 struct net_device *dev = skb_dst(skb)->dev; +337 +338 IP_UPD_PO_STATS(dev_net(dev), IPSTATS_MIB_OUT, skb->len); +339 +340 skb->dev = dev; +341 skb->protocol = htons(ETH_P_IP); +342 +343 return NF_HOOK_COND(NFPROTO_IPV4, NF_INET_POST_ROUTING, skb, NULL, dev, +344 ip_finish_output, +345 !(IPCB(skb)->flags & IPSKB_REROUTED)); +346} +``` +[ip_finish_output函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/ip_output.c#ip_finish_output)又进一步调用ip_finish_output2 +``` +256static int ip_finish_output(struct sk_buff *skb) +257{ +258#if defined(CONFIG_NETFILTER) && defined(CONFIG_XFRM) +259 /* Policy lookup after SNAT yielded a new policy */ +260 if (skb_dst(skb)->xfrm != NULL) { +261 IPCB(skb)->flags |= IPSKB_REROUTED; +262 return dst_output(skb); +263 } +264#endif +265 if (skb_is_gso(skb)) +266 return ip_finish_output_gso(skb); +267 +268 if (skb->len > ip_skb_dst_mtu(skb)) +269 return ip_fragment(skb, ip_finish_output2); +270 +271 return ip_finish_output2(skb); +272} +``` +[ip_finish_output2函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/ip_output.c#166)有一段关键代码,这里获取了路由查询的结果nexthop,并将nexthop作为参数由__ipv4_neigh_lookup_noref函数进行ARP解析。 +``` +166static inline int ip_finish_output2(struct sk_buff *skb) +167{ +... +196 nexthop = (__force u32) rt_nexthop(rt, ip_hdr(skb)->daddr); +197 neigh = __ipv4_neigh_lookup_noref(dev, nexthop); +198 if (unlikely(!neigh)) +199 neigh = __neigh_create(&arp_tbl, &nexthop, dev, false); +200 if (!IS_ERR(neigh)) { +201 int res = dst_neigh_output(dst, neigh, skb); +... +212} +``` +上述代码中的dst_neigh_output函数通过调用neigh_hh_output进一步调用dev_queue_xmit,将数据发送的工作交给二层数据链路层及设备驱动处理。 +``` +390static inline int neigh_hh_output(const struct hh_cache *hh, struct sk_buff *skb) +391{ +... +409 return dev_queue_xmit(skb); +410} +``` +#### [ip_rcv](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/ip_input.c#373) + +``` +373/* +374 * Main IP Receive routine. +375 */ +376int ip_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt, struct net_device *orig_dev) +377{ +... +453 return NF_HOOK(NFPROTO_IPV4, NF_INET_PRE_ROUTING, skb, dev, NULL, +454 ip_rcv_finish); +... +464} +``` +[ip_rcv](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/ip_input.c#373)函数通过NF_HOOK方式回调[ip_rcv_finish函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/ip_input.c#312) +``` +312static int ip_rcv_finish(struct sk_buff *skb) +313{ +... +329 /* +330 * Initialise the virtual path cache for the packet. It describes +331 * how the packet travels inside Linux networking. +332 */ +333 if (!skb_dst(skb)) { +334 int err = ip_route_input_noref(skb, iph->daddr, iph->saddr, +335 iph->tos, skb->dev); +... +358 rt = skb_rtable(skb); +... +366 return dst_input(skb); +... +371} +``` +[ip_rcv_finish函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/ip_input.c#312)最后调用了[dst_input函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/include/net/dst.h#465),进一步调用了函数指针skb_dst(skb)->input(skb)。 +``` +465/* Input packet from network to transport. */ +466static inline int dst_input(struct sk_buff *skb) +467{ +468 return skb_dst(skb)->input(skb); +469} +``` +函数指针skb_dst(skb)->input(skb)的input的初始化一般有两个常见的路径: + +一是当前系统作为中间设备(如交换机、路由器),input函数指针会对接收到的数据包进行转发处理,input函数指针的初始化代码见: +``` +rth->dst.input = ip_forward; +``` +二是当前系统是接收到的数据包的目的地,input函数指针会对接收到的数据包交给上层协议处理,input函数指针的初始化代码见: +``` +rth->dst.input= ip_local_deliver; +``` +本文以实验三lab3的代码为例,我们关注的是第二种情况,即[ip_local_deliver函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/ip_input.c#242): + +``` +242/* +243 * Deliver IP Packets to the higher protocol layers. +244 */ +245int ip_local_deliver(struct sk_buff *skb) +246{ +... +256 return NF_HOOK(NFPROTO_IPV4, NF_INET_LOCAL_IN, skb, skb->dev, NULL, +257 ip_local_deliver_finish); +258} +``` +[ip_local_deliver函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/ip_input.c#242)通过NF_HOOK方式回调[ip_local_deliver_finish函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/ip_input.c#190): +``` +190static int ip_local_deliver_finish(struct sk_buff *skb) +191{ +... +216 ret = ipprot->handler(skb); +... +240} +``` +至此调用了函数指针ipprot->handler(skb),前面TCP协议栈接收数据的起点tcp_v4_rcv,其被如下代码初始化为handler函数指针,留心的读者应该还记得[TCP/IP协议栈的初始化inet_init函数中有相关初始化代码](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/af_inet.c#1716) +``` +1498static const struct net_protocol tcp_protocol = { +1499 .early_demux = tcp_v4_early_demux, +1500 .handler = tcp_v4_rcv, +... +1505}; +``` +### 二层数据链路层及设备驱动程序中数据收发代码分析 + +参考[9.以太网数据帧的格式及数据链路层发送和接收数据帧的处理过程分析](http://blog.51cto.com/cloumn/blog/805) 可知IP协议栈通过dev_queue_xmit向下层发送数据,netif_rx负责从网络设备驱动程序中接收数据。 + +由于[9.以太网数据帧的格式及数据链路层发送和接收数据帧的处理过程分析](http://blog.51cto.com/cloumn/blog/805) 文章中已经进行了详实的代码分析这里略去部分内容,仅列举loopback驱动程序的关键代码,以便将实验三lab3中本机TCP客户端和TCP服务器的通信过程串连起来。 +在lo回环网络设备的情况下,dev_queue_xmit函数最终会调用loopback网络设备驱动程序中的[loopback_xmit函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/drivers/net/loopback.c#67)发送数据,[loopback_xmit函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/drivers/net/loopback.c#67)中直接调用了netif_rx负责接收数据,在如下代码中也就形成了回环,这就是loopback回环设备名称的由来。 +``` +67/* +68 * The higher levels take care of making this non-reentrant (it's +69 * called with bh's disabled). +70 */ +71static netdev_tx_t loopback_xmit(struct sk_buff *skb, +72 struct net_device *dev) +73{ +... +90 if (likely(netif_rx(skb) == NET_RX_SUCCESS)) { +... +98} +``` + +## 总结 + +本文完整分析了从用户态socket API函数send/recv通过系统调用进入内核后,一直到网络设备驱动程序,通过发送和接收数据两条主线梳理了代码调用过程。由于设备的代码层级较深,代码也较为复杂,因为我们只是基于loopback网络设备和IPv4为例进行了梳理,如果读者对Linux内核网络核心的其他部分(如IPv6、其他网卡设备等)感兴趣可以自行进行类似的分析或拓展。 From 10e7098c1b92db7f233e3bda71f7319b7a1535d0 Mon Sep 17 00:00:00 2001 From: mengning Date: Thu, 2 Jan 2020 13:40:21 +0800 Subject: [PATCH 42/47] Update np2019.md --- np2019.md | 1 + 1 file changed, 1 insertion(+) diff --git a/np2019.md b/np2019.md index 9047172..5a4c221 100644 --- a/np2019.md +++ b/np2019.md @@ -94,6 +94,7 @@ Socket与系统调用深度分析http://edu.cnblogs.com/campus/ustc/np2019/homew * [L2 Switching](https://github.com/mengning/net/raw/master/lab6/L2Switching.pptx) +### [收发数据流的处理过程](doc/dataflow.md) ### DNS * [DNS.pptx](https://github.com/mengning/net/blob/master/lab7/DNS.pptx) From b16e9e3775e815cee1aea73352b9f1c92a090988 Mon Sep 17 00:00:00 2001 From: mengning Date: Wed, 8 Jan 2020 16:38:21 +0800 Subject: [PATCH 43/47] Add files via upload --- ...1\347\272\247\344\277\235\346\212\244.pptx" | Bin 0 -> 610930 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 "lab8/\347\275\221\347\273\234\345\256\211\345\205\250\347\255\211\347\272\247\344\277\235\346\212\244.pptx" diff --git "a/lab8/\347\275\221\347\273\234\345\256\211\345\205\250\347\255\211\347\272\247\344\277\235\346\212\244.pptx" "b/lab8/\347\275\221\347\273\234\345\256\211\345\205\250\347\255\211\347\272\247\344\277\235\346\212\244.pptx" new file mode 100644 index 0000000000000000000000000000000000000000..b5fb36434c54259a5216d6a74ae09f83fb61bc84 GIT binary patch literal 610930 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

ym0Dp~dCZ?|H(1@010tpRmdl-U1Ni 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�nCSu@?EE$tMXtyC*DwKF$S;;UrAfW4KAy! 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 T6fdlzg=oRXNf1ItqwVt_y!|rA literal 0 HcmV?d00001 From 872ff93da520dfe02f28ab9b32ed7f130a6977de Mon Sep 17 00:00:00 2001 From: mengning Date: Wed, 8 Jan 2020 16:39:29 +0800 Subject: [PATCH 44/47] Update np2019.md --- np2019.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/np2019.md b/np2019.md index 5a4c221..f6d8407 100644 --- a/np2019.md +++ b/np2019.md @@ -99,6 +99,8 @@ Socket与系统调用深度分析http://edu.cnblogs.com/campus/ustc/np2019/homew * [DNS.pptx](https://github.com/mengning/net/blob/master/lab7/DNS.pptx) +### 网络安全等级保护 +* [网络安全等级保护](https://github.com/mengning/net/raw/master/lab8/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8%E7%AD%89%E7%BA%A7%E4%BF%9D%E6%8A%A4.pptx) ### 互联网架构设计背后的渊源 * [互联网架构设计背后的渊源.pptx](https://github.com/mengning/net/blob/master/lab8/%E4%BA%92%E8%81%94%E7%BD%91%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1%E8%83%8C%E5%90%8E%E7%9A%84%E6%B8%8A%E6%BA%90.pptx) From 351f5e9639750e28c808a9d2c6512f6c653f02e7 Mon Sep 17 00:00:00 2001 From: mengning Date: Thu, 3 Dec 2020 16:55:01 +0800 Subject: [PATCH 45/47] Update socketwrapper.h --- lab2/socket_workspace/socketwrapper.h | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/lab2/socket_workspace/socketwrapper.h b/lab2/socket_workspace/socketwrapper.h index d1bd658..a500e35 100644 --- a/lab2/socket_workspace/socketwrapper.h +++ b/lab2/socket_workspace/socketwrapper.h @@ -4,8 +4,6 @@ /* */ /* FILE NAME : socketwraper.h */ /* PRINCIPAL AUTHOR : Mengning */ -/* SUBSYSTEM NAME : ChatSys */ -/* MODULE NAME : ChatSys */ /* LANGUAGE : C */ /* TARGET ENVIRONMENT : ANY */ /* DATE OF FIRST RELEASE : 2010/10/18 */ @@ -31,9 +29,9 @@ #include #include /* gethostbyname */ -/* ChatSys Socket - Standard Socket Call Mapping Definition */ -#define Socket(x,y,z) socket(x,y,z) -#define Bind(x,y,z) bind(x,y,z) +/* Standard Socket Call Mapping Definition */ +#define Socket(x,y,z) socket(x,y,z) +#define Bind(x,y,z) bind(x,y,z) #define Connect(x,y,z) connect(x,y,z) #define Listen(x,y) listen(x,y) #define Read(x,y,z ) read(x,y,z) @@ -46,9 +44,10 @@ #define Sendto(a,b,c,d,e,f) sendto(a,b,c,d,e,f) #define Sendmsg(a,b,c) sendmsg(a,b,c) #define Close(a) close(a) -/* ʽת */ -#define Htons(a) htons(a) -#define Inet_ntoa(a) inet_ntoa(a) + +/* byte order trans */ +#define Htons(a) htons(a) +#define Inet_ntoa(a) inet_ntoa(a) /* Name */ #define Gethostbyname(a) gethostbyname(a) From fb364585f38f024638b529f79ebf2fa21e057c03 Mon Sep 17 00:00:00 2001 From: mengning Date: Thu, 3 Dec 2020 16:58:22 +0800 Subject: [PATCH 46/47] Update socketwrapper.h --- lab2/socket_workspace/socketwrapper.h | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/lab2/socket_workspace/socketwrapper.h b/lab2/socket_workspace/socketwrapper.h index a500e35..436ebd9 100644 --- a/lab2/socket_workspace/socketwrapper.h +++ b/lab2/socket_workspace/socketwrapper.h @@ -27,11 +27,11 @@ #include #include #include -#include /* gethostbyname */ +#include /* gethostbyname */ /* Standard Socket Call Mapping Definition */ -#define Socket(x,y,z) socket(x,y,z) -#define Bind(x,y,z) bind(x,y,z) +#define Socket(x,y,z) socket(x,y,z) +#define Bind(x,y,z) bind(x,y,z) #define Connect(x,y,z) connect(x,y,z) #define Listen(x,y) listen(x,y) #define Read(x,y,z ) read(x,y,z) @@ -46,11 +46,12 @@ #define Close(a) close(a) /* byte order trans */ -#define Htons(a) htons(a) -#define Inet_ntoa(a) inet_ntoa(a) +#define Htons(a) htons(a) +#define Inet_ntoa(a) inet_ntoa(a) /* Name */ -#define Gethostbyname(a) gethostbyname(a) +#define Gethostbyname(a) gethostbyname(a) + #endif /* _SOCKET_WRAPER_H_ */ From 1e342107675ad98b9470bf92ff9c3405da90d448 Mon Sep 17 00:00:00 2001 From: mengning Date: Tue, 15 Dec 2020 11:13:57 +0800 Subject: [PATCH 47/47] update linux-src url --- doc/arp.md | 8 ++--- doc/dataflow.md | 66 ++++++++++++++++++++--------------------- doc/ip.md | 6 ++-- doc/setupMenuOS.md | 10 +++---- doc/socketSourceCode.md | 16 +++++----- doc/tcp.md | 16 +++++----- doc/tcpip.md | 24 +++++++-------- lab3/README.md | 2 +- lab4/README.md | 2 +- 9 files changed, 75 insertions(+), 75 deletions(-) diff --git a/doc/arp.md b/doc/arp.md index bc00375..47523c2 100644 --- a/doc/arp.md +++ b/doc/arp.md @@ -36,7 +36,7 @@ ### ARP缓存的数据结构及初始化过程 -参照tcp和ip协议的的初始化过程类似,查找arp初始化相关代码,见[inet_init](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/af_inet.c#1730)函数: +参照tcp和ip协议的的初始化过程类似,查找arp初始化相关代码,见[inet_init](https://github.com/torvalds/linux/blob/v5.4/net/ipv4/af_inet.c#1730)函数: ``` 1730 /* @@ -45,7 +45,7 @@ 1733 1734 arp_init(); ``` -[arp_init](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/arp.c#1293)函数如下,其中包括ARP缓存的初始化。 +[arp_init](https://github.com/torvalds/linux/blob/v5.4/net/ipv4/arp.c#1293)函数如下,其中包括ARP缓存的初始化。 ``` 1293void __init arp_init(void) 1294{ @@ -61,7 +61,7 @@ ``` ### ARP协议如何更新ARP缓存 -ARP协议的实现代码量不大,主要集中在[arp.c文件](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/arp.c#1293)中。 +ARP协议的实现代码量不大,主要集中在[arp.c文件](https://github.com/torvalds/linux/blob/v5.4/net/ipv4/arp.c#1293)中。 ### 创建和发送一个ARP封包 @@ -136,7 +136,7 @@ ARP协议的实现代码量不大,主要集中在[arp.c文件](http://codelab. 975 976 return NF_HOOK(NFPROTO_ARP, NF_ARP_IN, skb, dev, NULL, arp_process); ``` -具体的ARP协议解析过程主要集中在[arp_process函数中](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/arp.c#arp_process) ,有兴趣的读者可以仔细研究。 +具体的ARP协议解析过程主要集中在[arp_process函数中](https://github.com/torvalds/linux/blob/v5.4/net/ipv4/arp.c#arp_process) ,有兴趣的读者可以仔细研究。 ``` 718/* diff --git a/doc/dataflow.md b/doc/dataflow.md index 8e3c12b..4e03ce5 100644 --- a/doc/dataflow.md +++ b/doc/dataflow.md @@ -24,7 +24,7 @@ extern ssize_t recv (int __fd, void *__buf, size_t __n, int __flags); ### socket系统调用 -在我们的实验环境MenuOS中,socket接口是通过[112号系统调用](http://codelab.shiyanlou.com/xref/linux-3.18.6/arch/x86/syscalls/syscall_32.tbl#111) 进入内核的. +在我们的实验环境MenuOS中,socket接口是通过[112号系统调用](http://codelab.shiyanlou.com/xref/linux-src/arch/x86/syscalls/syscall_32.tbl#111) 进入内核的. ``` 102 i386 socketcall sys_socketcall compat_sys_socketcall @@ -36,7 +36,7 @@ extern ssize_t recv (int __fd, void *__buf, size_t __n, int __flags); ### socket接口层数据收发代码分析 -[sys_socketcall函数](http://codelab.shiyanlou.com/xref/linux-3.18.6/net/socket.c#2484)中通过参数call来指明具体是哪一个socket接口,比如send函数对应SYS_SEND = 9,recv函数对应的SYS_RECV = 10。 +[sys_socketcall函数](http://codelab.shiyanlou.com/xref/linux-src/net/socket.c#2484)中通过参数call来指明具体是哪一个socket接口,比如send函数对应SYS_SEND = 9,recv函数对应的SYS_RECV = 10。 ``` 2484/* 2485 * System call vectors. @@ -57,7 +57,7 @@ extern ssize_t recv (int __fd, void *__buf, size_t __n, int __flags); ... 2595} ``` -#### send函数对应执行[sys_send函数及sys_sendto函数](http://codelab.shiyanlou.com/xref/linux-3.18.6/net/socket.c#1777) +#### send函数对应执行[sys_send函数及sys_sendto函数](http://codelab.shiyanlou.com/xref/linux-src/net/socket.c#1777) ``` 1777/* 1778 * Send a datagram to a given address. We move the address into kernel @@ -84,7 +84,7 @@ extern ssize_t recv (int __fd, void *__buf, size_t __n, int __flags); 1833 return sys_sendto(fd, buff, len, flags, NULL, 0); 1834} ``` -其中sock_sendmsg最终调用了函数指针sock->ops->sendmsg,具体代码见[net/socket.c#633](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/socket.c#633) ,如下: +其中sock_sendmsg最终调用了函数指针sock->ops->sendmsg,具体代码见[net/socket.c#633](https://github.com/torvalds/linux/blob/v5.4/net/socket.c#633) ,如下: ``` 633static inline int __sock_sendmsg_nosec(struct kiocb *iocb, struct socket *sock, 634 struct msghdr *msg, size_t size) @@ -122,7 +122,7 @@ extern ssize_t recv (int __fd, void *__buf, size_t __n, int __flags); 666} 667EXPORT_SYMBOL(sock_sendmsg); ``` -#### recv函数对应的[sys_recv函数及sys_recvfrom函数](http://codelab.shiyanlou.com/xref/linux-3.18.6/net/socket.c#1836) +#### recv函数对应的[sys_recv函数及sys_recvfrom函数](http://codelab.shiyanlou.com/xref/linux-src/net/socket.c#1836) ``` 1836/* 1837 * Receive a frame from the socket and optionally record the address of the @@ -149,7 +149,7 @@ extern ssize_t recv (int __fd, void *__buf, size_t __n, int __flags); 1892 return sys_recvfrom(fd, ubuf, size, flags, NULL, NULL); 1893} ``` -其中sock_recvmsg最终调用了函数指针sock->ops->recvmsg,具体代码见[net/socket.c#779](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/socket.c#779) ,如下: +其中sock_recvmsg最终调用了函数指针sock->ops->recvmsg,具体代码见[net/socket.c#779](https://github.com/torvalds/linux/blob/v5.4/net/socket.c#779) ,如下: ``` 779static inline int __sock_recvmsg_nosec(struct kiocb *iocb, struct socket *sock, 780 struct msghdr *msg, size_t size, int flags) @@ -191,7 +191,7 @@ extern ssize_t recv (int __fd, void *__buf, size_t __n, int __flags); ``` ### TCP协议栈数据收发代码分析 -上述提及了两个函数指针sock->ops->sendmsg和sock->ops->recvmsg在我们的lab3实验中对应着tcp_sendmsg和tcp_recvmsg函数,与前面文章中介绍的connect及TCP三次握手一样,tcp_sendmsg和tcp_recvmsg函数是通过如下[struct proto tcp_prot结构体变量](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/tcp_ipv4.c#2380)赋值给对应函数指针的: +上述提及了两个函数指针sock->ops->sendmsg和sock->ops->recvmsg在我们的lab3实验中对应着tcp_sendmsg和tcp_recvmsg函数,与前面文章中介绍的connect及TCP三次握手一样,tcp_sendmsg和tcp_recvmsg函数是通过如下[struct proto tcp_prot结构体变量](https://github.com/torvalds/linux/blob/v5.4/net/ipv4/tcp_ipv4.c#2380)赋值给对应函数指针的: ``` 2380struct proto tcp_prot = { 2381 .name = "TCP", @@ -208,7 +208,7 @@ extern ssize_t recv (int __fd, void *__buf, size_t __n, int __flags); 由于TCP是面向连接的提供可靠的字节流传输服务,TCP的发送和接收涉及比较复杂的滑动窗口协议和确认重传机制,具体分析发送和接收的细节会比较复杂,我们这里为了简化期间只提纲挈领提及一些关键的函数。 -#### [tcp_sendmsg](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/tcp.c#1085) +#### [tcp_sendmsg](https://github.com/torvalds/linux/blob/v5.4/net/ipv4/tcp.c#1085) ``` 1085int tcp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, @@ -243,7 +243,7 @@ extern ssize_t recv (int __fd, void *__buf, size_t __n, int __flags); 1320} 1321EXPORT_SYMBOL(tcp_sendmsg); ``` -其中的tcp_push和tcp_push_one都会最终通过如下代码调用[tcp_write_xmit函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/tcp_output.c#1926) +其中的tcp_push和tcp_push_one都会最终通过如下代码调用[tcp_write_xmit函数](https://github.com/torvalds/linux/blob/v5.4/net/ipv4/tcp_output.c#1926) ``` 2195/* Push out any pending frames which were held back due to 2196 * TCP_CORK or attempt at coalescing tiny packets. @@ -276,7 +276,7 @@ extern ssize_t recv (int __fd, void *__buf, size_t __n, int __flags); 2223 tcp_write_xmit(sk, mss_now, TCP_NAGLE_PUSH, 1, sk->sk_allocation); 2224} ``` -[tcp_write_xmit函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/tcp_output.c#1926)进一步调用[tcp_transmit_skb函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/tcp_output.c#876) +[tcp_write_xmit函数](https://github.com/torvalds/linux/blob/v5.4/net/ipv4/tcp_output.c#1926)进一步调用[tcp_transmit_skb函数](https://github.com/torvalds/linux/blob/v5.4/net/ipv4/tcp_output.c#876) ``` 876/* This routine actually transmits TCP packets queued in by 877 * tcp_do_sendmsg(). This is used by both the initial @@ -312,9 +312,9 @@ extern ssize_t recv (int __fd, void *__buf, size_t __n, int __flags); 1784}; 1785EXPORT_SYMBOL(ipv4_specific); ``` -#### [tcp_recvmsg](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/tcp.c#1577) +#### [tcp_recvmsg](https://github.com/torvalds/linux/blob/v5.4/net/ipv4/tcp.c#1577) -[tcp_recvmsg](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/tcp.c#1577)函数对应用户态recv函数的表现:阻塞函数直到接收到数据(len>0)返回接收到的数据。 +[tcp_recvmsg](https://github.com/torvalds/linux/blob/v5.4/net/ipv4/tcp.c#1577)函数对应用户态recv函数的表现:阻塞函数直到接收到数据(len>0)返回接收到的数据。 ``` 1577/* @@ -351,7 +351,7 @@ extern ssize_t recv (int __fd, void *__buf, size_t __n, int __flags); 1914} 1915EXPORT_SYMBOL(tcp_recvmsg); ``` -这里的[tcp_prequeue_process函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/tcp.c#1454)是通过sk_backlog_rcv函数从接收队列中出队skb,那么按照数据接收数据流的逻辑上,一定存在将将接收到的skb数据入队的地方。 +这里的[tcp_prequeue_process函数](https://github.com/torvalds/linux/blob/v5.4/net/ipv4/tcp.c#1454)是通过sk_backlog_rcv函数从接收队列中出队skb,那么按照数据接收数据流的逻辑上,一定存在将将接收到的skb数据入队的地方。 ``` 1454static void tcp_prequeue_process(struct sock *sk) @@ -372,7 +372,7 @@ extern ssize_t recv (int __fd, void *__buf, size_t __n, int __flags); ... 1746} ``` -其中[tcp_v4_do_rcv函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/tcp_ipv4.c#1427)调用了tcp_child_process函数 +其中[tcp_v4_do_rcv函数](https://github.com/torvalds/linux/blob/v5.4/net/ipv4/tcp_ipv4.c#1427)调用了tcp_child_process函数 ``` 1427int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb) @@ -385,7 +385,7 @@ extern ssize_t recv (int __fd, void *__buf, size_t __n, int __flags); 1486} 1487EXPORT_SYMBOL(tcp_v4_do_rcv); ``` -[tcp_child_process函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/tcp_minisocks.c#755)调用了__sk_add_backlog将skb入队,与前面sk_backlog_rcv出队对应。 +[tcp_child_process函数](https://github.com/torvalds/linux/blob/v5.4/net/ipv4/tcp_minisocks.c#755)调用了__sk_add_backlog将skb入队,与前面sk_backlog_rcv出队对应。 ``` 755/* 756 * Queue segment on the new socket if the new socket is active, @@ -410,15 +410,15 @@ extern ssize_t recv (int __fd, void *__buf, size_t __n, int __flags); ``` ### IP协议栈数据收发代码分析 -从TCP协议栈数据收发代码分析中我们知道IP发送数据是通过ip_queue_xmit,而二层数据链路层接收IP数据包回调IP协议栈进一步处理接收数据是通过ip_rcv函数,初始化[函数指针func](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/af_inet.c#1669) 的代码如下: +从TCP协议栈数据收发代码分析中我们知道IP发送数据是通过ip_queue_xmit,而二层数据链路层接收IP数据包回调IP协议栈进一步处理接收数据是通过ip_rcv函数,初始化[函数指针func](https://github.com/torvalds/linux/blob/v5.4/net/ipv4/af_inet.c#1669) 的代码如下: ``` 1669static struct packet_type ip_packet_type __read_mostly = { 1670 .type = cpu_to_be16(ETH_P_IP), 1671 .func = ip_rcv, 1672}; ``` -#### [ip_queue_xmit](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/ip_output.c#362) -[ip_queue_xmit](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/ip_output.c#362)函数摘录如下: +#### [ip_queue_xmit](https://github.com/torvalds/linux/blob/v5.4/net/ipv4/ip_output.c#362) +[ip_queue_xmit](https://github.com/torvalds/linux/blob/v5.4/net/ipv4/ip_output.c#362)函数摘录如下: ``` 362/* Note: skb->sk can be different from sk, in case of tunnels */ 363int ip_queue_xmit(struct sock *sk, struct sk_buff *skb, struct flowi *fl) @@ -429,14 +429,14 @@ extern ssize_t recv (int __fd, void *__buf, size_t __n, int __flags); 448} 449EXPORT_SYMBOL(ip_queue_xmit); ``` -其中的[ip_local_out内联函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/include/net/ip.h#115) 如下: +其中的[ip_local_out内联函数](https://github.com/torvalds/linux/blob/v5.4/include/net/ip.h#115) 如下: ``` 115static inline int ip_local_out(struct sk_buff *skb) 116{ 117 return ip_local_out_sk(skb->sk, skb); 118} ``` -上面的[ip_local_out_sk函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/ip_output.c#94)最终通过nf_hook提供的回调机制调用了dst_output函数。 +上面的[ip_local_out_sk函数](https://github.com/torvalds/linux/blob/v5.4/net/ipv4/ip_output.c#94)最终通过nf_hook提供的回调机制调用了dst_output函数。 ``` 94int __ip_local_out(struct sk_buff *skb) 95{ @@ -460,7 +460,7 @@ extern ssize_t recv (int __fd, void *__buf, size_t __n, int __flags); 113} 114EXPORT_SYMBOL_GPL(ip_local_out_sk); ``` -[dst_output函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/include/net/dst.h#455)最终调用了函数指针skb_dst(skb)->output(sk, skb): +[dst_output函数](https://github.com/torvalds/linux/blob/v5.4/include/net/dst.h#455)最终调用了函数指针skb_dst(skb)->output(sk, skb): ``` 455/* Output packet to network from transport. */ 456static inline int dst_output_sk(struct sock *sk, struct sk_buff *skb) @@ -472,19 +472,19 @@ extern ssize_t recv (int __fd, void *__buf, size_t __n, int __flags); 462 return dst_output_sk(skb->sk, skb); 463} ``` -skb_dst(skb)返回的是[struct dst_entry数据结构](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/include/net/dst.h#33)指针,我们也就找到了output函数指针。 +skb_dst(skb)返回的是[struct dst_entry数据结构](https://github.com/torvalds/linux/blob/v5.4/include/net/dst.h#33)指针,我们也就找到了output函数指针。 ``` 33struct dst_entry { ... 47 int (*input)(struct sk_buff *); 48 int (*output)(struct sock *sk, struct sk_buff *skb); ``` -上述input和output函数指针在IP协议栈及路由表(ip_init及ip_rt_init)初始化过程被赋值如下,见[linux-3.18.6/net/ipv4/route.c#1610](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/route.c#1610)。 +上述input和output函数指针在IP协议栈及路由表(ip_init及ip_rt_init)初始化过程被赋值如下,见[linux-src/net/ipv4/route.c#1610](https://github.com/torvalds/linux/blob/v5.4/net/ipv4/route.c#1610)。 ``` 1610 rth->dst.input = ip_forward; 1611 rth->dst.output = ip_output; ``` -[ip_output函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/ip_output.c#334)通过NF_HOOK_COND方式调用ip_finish_output +[ip_output函数](https://github.com/torvalds/linux/blob/v5.4/net/ipv4/ip_output.c#334)通过NF_HOOK_COND方式调用ip_finish_output ``` 334int ip_output(struct sock *sk, struct sk_buff *skb) 335{ @@ -500,7 +500,7 @@ skb_dst(skb)返回的是[struct dst_entry数据结构](http://codelab.shiyanlou. 345 !(IPCB(skb)->flags & IPSKB_REROUTED)); 346} ``` -[ip_finish_output函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/ip_output.c#ip_finish_output)又进一步调用ip_finish_output2 +[ip_finish_output函数](https://github.com/torvalds/linux/blob/v5.4/net/ipv4/ip_output.c#ip_finish_output)又进一步调用ip_finish_output2 ``` 256static int ip_finish_output(struct sk_buff *skb) 257{ @@ -520,7 +520,7 @@ skb_dst(skb)返回的是[struct dst_entry数据结构](http://codelab.shiyanlou. 271 return ip_finish_output2(skb); 272} ``` -[ip_finish_output2函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/ip_output.c#166)有一段关键代码,这里获取了路由查询的结果nexthop,并将nexthop作为参数由__ipv4_neigh_lookup_noref函数进行ARP解析。 +[ip_finish_output2函数](https://github.com/torvalds/linux/blob/v5.4/net/ipv4/ip_output.c#166)有一段关键代码,这里获取了路由查询的结果nexthop,并将nexthop作为参数由__ipv4_neigh_lookup_noref函数进行ARP解析。 ``` 166static inline int ip_finish_output2(struct sk_buff *skb) 167{ @@ -542,7 +542,7 @@ skb_dst(skb)返回的是[struct dst_entry数据结构](http://codelab.shiyanlou. 409 return dev_queue_xmit(skb); 410} ``` -#### [ip_rcv](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/ip_input.c#373) +#### [ip_rcv](https://github.com/torvalds/linux/blob/v5.4/net/ipv4/ip_input.c#373) ``` 373/* @@ -556,7 +556,7 @@ skb_dst(skb)返回的是[struct dst_entry数据结构](http://codelab.shiyanlou. ... 464} ``` -[ip_rcv](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/ip_input.c#373)函数通过NF_HOOK方式回调[ip_rcv_finish函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/ip_input.c#312) +[ip_rcv](https://github.com/torvalds/linux/blob/v5.4/net/ipv4/ip_input.c#373)函数通过NF_HOOK方式回调[ip_rcv_finish函数](https://github.com/torvalds/linux/blob/v5.4/net/ipv4/ip_input.c#312) ``` 312static int ip_rcv_finish(struct sk_buff *skb) 313{ @@ -575,7 +575,7 @@ skb_dst(skb)返回的是[struct dst_entry数据结构](http://codelab.shiyanlou. ... 371} ``` -[ip_rcv_finish函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/ip_input.c#312)最后调用了[dst_input函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/include/net/dst.h#465),进一步调用了函数指针skb_dst(skb)->input(skb)。 +[ip_rcv_finish函数](https://github.com/torvalds/linux/blob/v5.4/net/ipv4/ip_input.c#312)最后调用了[dst_input函数](https://github.com/torvalds/linux/blob/v5.4/include/net/dst.h#465),进一步调用了函数指针skb_dst(skb)->input(skb)。 ``` 465/* Input packet from network to transport. */ 466static inline int dst_input(struct sk_buff *skb) @@ -593,7 +593,7 @@ rth->dst.input = ip_forward; ``` rth->dst.input= ip_local_deliver; ``` -本文以实验三lab3的代码为例,我们关注的是第二种情况,即[ip_local_deliver函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/ip_input.c#242): +本文以实验三lab3的代码为例,我们关注的是第二种情况,即[ip_local_deliver函数](https://github.com/torvalds/linux/blob/v5.4/net/ipv4/ip_input.c#242): ``` 242/* @@ -606,7 +606,7 @@ rth->dst.input= ip_local_deliver; 257 ip_local_deliver_finish); 258} ``` -[ip_local_deliver函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/ip_input.c#242)通过NF_HOOK方式回调[ip_local_deliver_finish函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/ip_input.c#190): +[ip_local_deliver函数](https://github.com/torvalds/linux/blob/v5.4/net/ipv4/ip_input.c#242)通过NF_HOOK方式回调[ip_local_deliver_finish函数](https://github.com/torvalds/linux/blob/v5.4/net/ipv4/ip_input.c#190): ``` 190static int ip_local_deliver_finish(struct sk_buff *skb) 191{ @@ -615,7 +615,7 @@ rth->dst.input= ip_local_deliver; ... 240} ``` -至此调用了函数指针ipprot->handler(skb),前面TCP协议栈接收数据的起点tcp_v4_rcv,其被如下代码初始化为handler函数指针,留心的读者应该还记得[TCP/IP协议栈的初始化inet_init函数中有相关初始化代码](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/af_inet.c#1716) +至此调用了函数指针ipprot->handler(skb),前面TCP协议栈接收数据的起点tcp_v4_rcv,其被如下代码初始化为handler函数指针,留心的读者应该还记得[TCP/IP协议栈的初始化inet_init函数中有相关初始化代码](https://github.com/torvalds/linux/blob/v5.4/net/ipv4/af_inet.c#1716) ``` 1498static const struct net_protocol tcp_protocol = { 1499 .early_demux = tcp_v4_early_demux, @@ -628,7 +628,7 @@ rth->dst.input= ip_local_deliver; 参考[9.以太网数据帧的格式及数据链路层发送和接收数据帧的处理过程分析](http://blog.51cto.com/cloumn/blog/805) 可知IP协议栈通过dev_queue_xmit向下层发送数据,netif_rx负责从网络设备驱动程序中接收数据。 由于[9.以太网数据帧的格式及数据链路层发送和接收数据帧的处理过程分析](http://blog.51cto.com/cloumn/blog/805) 文章中已经进行了详实的代码分析这里略去部分内容,仅列举loopback驱动程序的关键代码,以便将实验三lab3中本机TCP客户端和TCP服务器的通信过程串连起来。 -在lo回环网络设备的情况下,dev_queue_xmit函数最终会调用loopback网络设备驱动程序中的[loopback_xmit函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/drivers/net/loopback.c#67)发送数据,[loopback_xmit函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/drivers/net/loopback.c#67)中直接调用了netif_rx负责接收数据,在如下代码中也就形成了回环,这就是loopback回环设备名称的由来。 +在lo回环网络设备的情况下,dev_queue_xmit函数最终会调用loopback网络设备驱动程序中的[loopback_xmit函数](https://github.com/torvalds/linux/blob/v5.4/drivers/net/loopback.c#67)发送数据,[loopback_xmit函数](https://github.com/torvalds/linux/blob/v5.4/drivers/net/loopback.c#67)中直接调用了netif_rx负责接收数据,在如下代码中也就形成了回环,这就是loopback回环设备名称的由来。 ``` 67/* 68 * The higher levels take care of making this non-reentrant (it's diff --git a/doc/ip.md b/doc/ip.md index edb4431..20988a9 100644 --- a/doc/ip.md +++ b/doc/ip.md @@ -53,7 +53,7 @@ shiyanlou:~/ $ ## IP协议的初始化 -[IP协议的初始化函数ip_init](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/af_inet.c#1740)与TCP一样也是在inet_init函数中被调用的,如/linux-3.18.6/net/ipv4/af_inet.c中1740行代码处。 +[IP协议的初始化函数ip_init](https://github.com/torvalds/linux/blob/v5.4/net/ipv4/af_inet.c#1740)与TCP一样也是在inet_init函数中被调用的,如/linux-src/net/ipv4/af_inet.c中1740行代码处。 ``` 1674static int __init inet_init(void) 1675{ @@ -117,7 +117,7 @@ shiyanlou:~/ $ 1796 1797fs_initcall(inet_init); ``` -路由表的结构和初始化过程,ip协议初始化ip_init过程中包含路由表的初始化ip_rt_init/ip_fib_init,主要代码见route.c及fib*.c。[ip_init函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/ip_output.c#1602)主要做了三方面工作: +路由表的结构和初始化过程,ip协议初始化ip_init过程中包含路由表的初始化ip_rt_init/ip_fib_init,主要代码见route.c及fib*.c。[ip_init函数](https://github.com/torvalds/linux/blob/v5.4/net/ipv4/ip_output.c#1602)主要做了三方面工作: * ip_rt_init() 初始化路由缓存,通过哈希结构提供快速获取目的IP地址的下一跳(Next Hop)访问, 以及初始化作为路由表内部表示形式的FIB (Forwarding Information Base) * ip_rt_init() 还调用ip_fib_init() 初始化上层的路由相关数据结构 * inet_initpeers()初始化AVL tree用于跟踪最近有数据通信的IP peers和hosts。 @@ -135,7 +135,7 @@ shiyanlou:~/ $ ## 查询路由表 -通过目的IP查询路由表的到下一跳的IP地址的过程, fib_lookup为起点,从[fib_lookup函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/include/net/ip_fib.h#222)这里可以进一步深入了解查询路由表的过程,当然这里需要理解路由表的数据结构和查询算法,会比较复杂。 +通过目的IP查询路由表的到下一跳的IP地址的过程, fib_lookup为起点,从[fib_lookup函数](https://github.com/torvalds/linux/blob/v5.4/include/net/ip_fib.h#222)这里可以进一步深入了解查询路由表的过程,当然这里需要理解路由表的数据结构和查询算法,会比较复杂。 ``` 222static inline int fib_lookup(struct net *net, const struct flowi4 *flp, 223 struct fib_result *res) diff --git a/doc/setupMenuOS.md b/doc/setupMenuOS.md index 51f91ef..15e1e3d 100644 --- a/doc/setupMenuOS.md +++ b/doc/setupMenuOS.md @@ -1,6 +1,6 @@ # 构建调试Linux内核网络代码的环境MenuOS系统 -您可以自定搭建环境,下文将基于Ubuntu 18.04 & linux-5.0.1提供简要指南,以便您能自行构建调试Linux内核网络代码的环境MenuOS系统。您也可以选择使用已经构建好的在线实验环境:[实验楼虚拟机https://www.shiyanlou.com/courses/1198](https://www.shiyanlou.com/courses/1198),只是在线环境构建的比较早,是基于[linux-3.18.6](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/)内核的。 +您可以自定搭建环境,下文将基于Ubuntu 18.04 & linux-5.0.1提供简要指南,以便您能自行构建调试Linux内核网络代码的环境MenuOS系统。您也可以选择使用已经构建好的在线实验环境:[实验楼虚拟机https://www.shiyanlou.com/courses/1198](https://www.shiyanlou.com/courses/1198),只是在线环境构建的比较早,是基于[linux-src](https://github.com/torvalds/linux/blob/v5.4/)内核的。 ## 编译运行Linux内核 @@ -42,11 +42,11 @@ break start_kernel ``` ## 使用实验楼在线环境运行MenuOS系统 -实验楼在线环境中已经在LinuxKernel目录下构建好了基于Linux-3.18.6的内核环境,可以使用实验楼的虚拟机打开Xfce终端(Terminal), 运行MenuOS系统。 +实验楼在线环境中已经在LinuxKernel目录下构建好了基于linux-src的内核环境,可以使用实验楼的虚拟机打开Xfce终端(Terminal), 运行MenuOS系统。 ``` shiyanlou:~/ $ cd LinuxKernel/ -shiyanlou:LinuxKernel/ $ qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img +shiyanlou:LinuxKernel/ $ qemu -kernel linux-src/arch/x86/boot/bzImage -initrd rootfs.img ``` ![](http://i2.51cto.com/images/blog/201811/05/3c8b6968d7384d176a67f35765e371ea.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=) @@ -58,7 +58,7 @@ shiyanlou:LinuxKernel/ $ qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd 使用gdb跟踪调试内核首先添加-s和-S选项启动MenuOS系 ``` -qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -s -S +qemu -kernel linux-src/arch/x86/boot/bzImage -initrd rootfs.img -s -S ``` 关于-s和-S选项的说明: @@ -69,7 +69,7 @@ qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -s -S ``` gdb - (gdb)file linux-3.18.6/vmlinux # 在gdb界面中targe remote之前加载符号表 + (gdb)file linux-src/vmlinux # 在gdb界面中targe remote之前加载符号表 (gdb)target remote:1234 # 建立gdb和gdbserver之间的连接 (gdb)break start_kernel # 断点的设置可以在target remote之前,也可以在之后 (gdb)c # 按c 让qemu上的Linux继续运行 diff --git a/doc/socketSourceCode.md b/doc/socketSourceCode.md index 5cbc857..0b566af 100644 --- a/doc/socketSourceCode.md +++ b/doc/socketSourceCode.md @@ -1,12 +1,12 @@ # Socket接口对应的Linux内核系统调用处理代码分析 理解Linux内核中socket接口层的代码,找出112号系统调用socketcall的内核处理函数sys_socketcall,理解socket接口函数编号和对应的socket接口内核处理函数 -通过前面构建MenuOS实验环境使得我们有方法跟踪socket接口通过系统调用进入内核代码,在我们的环境中socket接口通过[112号系统调用socketcall](http://codelab.shiyanlou.com/xref/linux-3.18.6/arch/x86/syscalls/syscall_32.tbl#111)进入内核的,具体系统调用的处理机制不是本专栏的重点,本专栏将重点放在网络部分的代码分析。 +通过前面构建MenuOS实验环境使得我们有方法跟踪socket接口通过系统调用进入内核代码,在我们的环境中socket接口通过[112号系统调用socketcall](http://codelab.shiyanlou.com/xref/linux-src/arch/x86/syscalls/syscall_32.tbl#111)进入内核的,具体系统调用的处理机制不是本专栏的重点,本专栏将重点放在网络部分的代码分析。 # 112号系统调用socketcall的内核处理函数sys_socketcall -112号系统调用socketcall的内核处理函数为sys_socketcall,函数实现见[/linux-3.18.6/net/socket.c#2492](http://codelab.shiyanlou.com/xref/linux-3.18.6/net/socket.c#2492) ,我们摘录部分代码如下: +112号系统调用socketcall的内核处理函数为sys_socketcall,函数实现见[/linux-src/net/socket.c#2492](http://codelab.shiyanlou.com/xref/linux-src/net/socket.c#2492) ,我们摘录部分代码如下: ``` /* @@ -102,7 +102,7 @@ 2596 ``` -在我们的实验环境中,socket接口的调用是通过给socket接口函数编号的方式通过112号系统调用来处理的。这些socket接口函数编号的宏定义见[/linux-3.18.6/include/uapi/linux/net.h#26](http://codelab.shiyanlou.com/xref/linux-3.18.6/include/uapi/linux/net.h#26) +在我们的实验环境中,socket接口的调用是通过给socket接口函数编号的方式通过112号系统调用来处理的。这些socket接口函数编号的宏定义见[/linux-src/include/uapi/linux/net.h#26](http://codelab.shiyanlou.com/xref/linux-src/include/uapi/linux/net.h#26) ``` 26#define SYS_SOCKET 1 /* sys_socket(2) */ @@ -131,7 +131,7 @@ # socket接口函数的内核处理函数sys_socket -sys_socket内核处理函数见[/linux-3.18.6/net/socket.c#1377](http://codelab.shiyanlou.com/xref//linux-3.18.6/net/socket.c#1377) ,摘录其中的关键代码如下: +sys_socket内核处理函数见[/linux-src/net/socket.c#1377](http://codelab.shiyanlou.com/xref//linux-src/net/socket.c#1377) ,摘录其中的关键代码如下: ``` 1377SYSCALL_DEFINE3(socket, int, family, int, type, int, protocol) @@ -143,7 +143,7 @@ sys_socket内核处理函数见[/linux-3.18.6/net/socket.c#1377](http://codelab. ... ``` -socket接口函数主要作用是建立socket套接字描述符,Unix-like系统非常成功的设计是将一切都抽象为文件,socket套接字也是一种特殊的文件,sock_create内部就是使用文件系统中的数据结构inode为socket套接字分配了文件描述符。socket套接字与普通的文件在内部存储结构上是一致的,甚至文件描述符和套接字描述符是通用的,但是套接字和文件还是特殊之处,因此定义了结构体struct socket,struct socket的结构体定义见[/linux-3.18.6/include/linux/net.h#105](http://codelab.shiyanlou.com/xref/linux-3.18.6/include/linux/net.h#105),具体代码摘录如下: +socket接口函数主要作用是建立socket套接字描述符,Unix-like系统非常成功的设计是将一切都抽象为文件,socket套接字也是一种特殊的文件,sock_create内部就是使用文件系统中的数据结构inode为socket套接字分配了文件描述符。socket套接字与普通的文件在内部存储结构上是一致的,甚至文件描述符和套接字描述符是通用的,但是套接字和文件还是特殊之处,因此定义了结构体struct socket,struct socket的结构体定义见[/linux-src/include/linux/net.h#105](http://codelab.shiyanlou.com/xref/linux-src/include/linux/net.h#105),具体代码摘录如下: ``` 95/** @@ -177,7 +177,7 @@ sock_create内部还根据指定的网络协议族family和protocol初始化了 # bind接口函数的内核处理函数sys_bind -内核处理函数sys_bind见[/linux-3.18.6/net/socket.c#1527](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/socket.c#1527),它的功能是绑定网络地址。 +内核处理函数sys_bind见[/linux-src/net/socket.c#1527](https://github.com/torvalds/linux/blob/v5.4/net/socket.c#1527),它的功能是绑定网络地址。 ``` 1519/* @@ -216,7 +216,7 @@ sock_create内部还根据指定的网络协议族family和protocol初始化了 # listen接口函数的内核处理函数sys_listen -内核处理函数sys_listen见[/linux-3.18.6/net/socket.c#1556](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/socket.c#1556),具体代码如下: +内核处理函数sys_listen见[/linux-src/net/socket.c#1556](https://github.com/torvalds/linux/blob/v5.4/net/socket.c#1556),具体代码如下: ``` 1550/* @@ -253,7 +253,7 @@ listen接口的主要作用是通知网络底层开始监听套接字并接收 # accept接口函数的内核处理函数sys_accept -内核处理函数sys_accept的主要功能是调用sys_accept4完成的,sys_accept4见[/linux-3.18.6/net/socket.c#1589](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/socket.c#1589),具体代码摘录如下: +内核处理函数sys_accept的主要功能是调用sys_accept4完成的,sys_accept4见[/linux-src/net/socket.c#1589](https://github.com/torvalds/linux/blob/v5.4/net/socket.c#1589),具体代码摘录如下: ``` 1577/* diff --git a/doc/tcp.md b/doc/tcp.md index b8e3410..01311bc 100644 --- a/doc/tcp.md +++ b/doc/tcp.md @@ -25,11 +25,11 @@ TCP将用户数据打包(分割)成报文段;发送后启动一个定时 ## TCP协议源代码概览 -TCP协议相关的代码主要集中在linux-3.18.6/net/ipv4/目录下,其中[linux-3.18.6/net/ipv4/tcp_ipv4.c#2380](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/tcp_ipv4.c#2380) 文件中的结构体变量struct proto tcp_prot指定了TCP协议栈的访问接口函数,socket接口层里sock->opt->connect和sock->opt->accept对应的接口函数即是在这里制定的,sock->opt->connect实际调用的是tcp_v4_connect函数,sock->opt->accept实际调用的是inet_csk_accept函数。 +TCP协议相关的代码主要集中在linux-src/net/ipv4/目录下,其中[linux-src/net/ipv4/tcp_ipv4.c#2380](https://github.com/torvalds/linux/blob/v5.4/net/ipv4/tcp_ipv4.c#2380) 文件中的结构体变量struct proto tcp_prot指定了TCP协议栈的访问接口函数,socket接口层里sock->opt->connect和sock->opt->accept对应的接口函数即是在这里制定的,sock->opt->connect实际调用的是tcp_v4_connect函数,sock->opt->accept实际调用的是inet_csk_accept函数。 在创建socket套接字描述符时sys_socket内核函数会根据指定的协议(例如socket(PF_INET,SOCK_STREAM,0))挂载上对应的协议处理函数。 -除了TCP协议的访问接口,还有TCP协议的初始化工作,见[linux-3.18.6/net/ipv4/tcp.c#3046](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/tcp.c#3046),其中关键的工作就是[tcp_tasklet_init();](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/tcp.c#3124)初始化了负责发送字节流进行滑动窗口管理的tasklet,这里读者可以简单的理解为创建了线程来专门负责这个工作。 +除了TCP协议的访问接口,还有TCP协议的初始化工作,见[linux-src/net/ipv4/tcp.c#3046](https://github.com/torvalds/linux/blob/v5.4/net/ipv4/tcp.c#3046),其中关键的工作就是[tcp_tasklet_init();](https://github.com/torvalds/linux/blob/v5.4/net/ipv4/tcp.c#3124)初始化了负责发送字节流进行滑动窗口管理的tasklet,这里读者可以简单的理解为创建了线程来专门负责这个工作。 ### TCP的三次握手的源代码分析 @@ -39,7 +39,7 @@ TCP的三次握手从用户程序的角度看就是客户端connect和服务端a ### tcp_v4_connect函数 -[tcp_v4_connect函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/tcp_ipv4.c#141)的主要作用就是发起一个TCP连接,建立TCP连接的过程自然需要底层协议的支持,因此我们从这个函数中可以看到它调用了IP层提供的一些服务,比如ip_route_connect和ip_route_newports从名称就可以简单分辨,这里我们关注在TCP层面的三次握手,不去深究底层协议提供的功能细节。我们可以看到这里设置了 TCP_SYN_SENT并进一步调用了 tcp_connect(sk)来实际构造SYN并发送出去。 +[tcp_v4_connect函数](https://github.com/torvalds/linux/blob/v5.4/net/ipv4/tcp_ipv4.c#141)的主要作用就是发起一个TCP连接,建立TCP连接的过程自然需要底层协议的支持,因此我们从这个函数中可以看到它调用了IP层提供的一些服务,比如ip_route_connect和ip_route_newports从名称就可以简单分辨,这里我们关注在TCP层面的三次握手,不去深究底层协议提供的功能细节。我们可以看到这里设置了 TCP_SYN_SENT并进一步调用了 tcp_connect(sk)来实际构造SYN并发送出去。 ``` 140/* This will initiate an outgoing connection. */ @@ -66,7 +66,7 @@ TCP的三次握手从用户程序的角度看就是客户端connect和服务端a 264} 265EXPORT_SYMBOL(tcp_v4_connect); ``` -[tcp_connect函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/tcp_output.c#3091)具体负责构造一个携带SYN标志位的TCP头并发送出去,同时还设置了计时器超时重发。 +[tcp_connect函数](https://github.com/torvalds/linux/blob/v5.4/net/ipv4/tcp_output.c#3091)具体负责构造一个携带SYN标志位的TCP头并发送出去,同时还设置了计时器超时重发。 ``` 3090/* Build a SYN and send it off. */ 3091int tcp_connect(struct sock *sk) @@ -96,7 +96,7 @@ TCP的三次握手从用户程序的角度看就是客户端connect和服务端a 3132 return 0; 3133} ``` -其中tcp_transmit_skb函数负责将tcp数据发送出去,这里调用了icsk->icsk_af_ops->queue_xmit函数指针,实际上就是在TCP/IP协议栈初始化时设定好的IP层向上提供数据发送接口[ip_queue_xmit函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/ip_output.c#363),这里TCP协议栈通过调用这个icsk->icsk_af_ops->queue_xmit函数指针来触发IP协议栈代码发送数据,感兴趣的读者可以查找queue_xmit函数指针是如何初始化为ip_queue_xmit函数的。具体ip_queue_xmit函数内部的实现我们在后续内容中会专题研究,本文聚焦在TCP协议的三次握手。 +其中tcp_transmit_skb函数负责将tcp数据发送出去,这里调用了icsk->icsk_af_ops->queue_xmit函数指针,实际上就是在TCP/IP协议栈初始化时设定好的IP层向上提供数据发送接口[ip_queue_xmit函数](https://github.com/torvalds/linux/blob/v5.4/net/ipv4/ip_output.c#363),这里TCP协议栈通过调用这个icsk->icsk_af_ops->queue_xmit函数指针来触发IP协议栈代码发送数据,感兴趣的读者可以查找queue_xmit函数指针是如何初始化为ip_queue_xmit函数的。具体ip_queue_xmit函数内部的实现我们在后续内容中会专题研究,本文聚焦在TCP协议的三次握手。 ``` 876/* This routine actually transmits TCP packets queued in by 877 * tcp_do_sendmsg(). This is used by both the initial @@ -120,7 +120,7 @@ TCP的三次握手从用户程序的角度看就是客户端connect和服务端a ### inet_csk_accept函数 -另一头服务端调用[inet_csk_accept函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/inet_connection_sock.c#292)会请求队列中取出一个连接请求,如果队列为空则通过inet_csk_wait_for_connect阻塞住等待客户端的连接。 +另一头服务端调用[inet_csk_accept函数](https://github.com/torvalds/linux/blob/v5.4/net/ipv4/inet_connection_sock.c#292)会请求队列中取出一个连接请求,如果队列为空则通过inet_csk_wait_for_connect阻塞住等待客户端的连接。 ``` 289/* 290 * This will accept the next outstanding connection. @@ -171,7 +171,7 @@ TCP的三次握手从用户程序的角度看就是客户端connect和服务端a ... 350} ``` -[inet_csk_wait_for_connect函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/inet_connection_sock.c#241)就是无限for循环,一旦有连接请求进来则跳出循环。 +[inet_csk_wait_for_connect函数](https://github.com/torvalds/linux/blob/v5.4/net/ipv4/inet_connection_sock.c#241)就是无限for循环,一旦有连接请求进来则跳出循环。 ``` 241/* 242 * Wait for an incoming connection, avoid race conditions. This must be called @@ -229,7 +229,7 @@ TCP的三次握手从用户程序的角度看就是客户端connect和服务端a 以上的分析我们都是按照用户程序调用socket接口、通过系统调用陷入内核进入内核态的socket接口层代码,然后根据创建socket时指定协议选择适当的函数指针,比如sock->opt->connect和sock->opt->accept两个函数指针,从而进入协议处理代码中,本专栏是以TCP/IPv4为例(net/ipv4目录下),则是分别进入tcp_v4_connect函数和inet_csk_accept函数中。总之,主要的思路是call-in的方式逐级进行函数调用,但是接收数据放入accept队列的代码我们还没有跟踪到,接下来我们需要换一个思路,网卡接收到数据需要通知上层协议来接收并处理数据,那么应该有TCP协议的接收数据的函数被底层网络驱动callback方式进行调用,针对这个思路我们需要回过头来看TCP/IP协议栈的初始化过程中是不是有将recv的函数指针发布给网络底层代码。 -TCP/IP协议栈的初始化过程是在[inet_init函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/af_inet.c#1674),其中有段代码中提到的tcp_protocol结构体变量很像: +TCP/IP协议栈的初始化过程是在[inet_init函数](https://github.com/torvalds/linux/blob/v5.4/net/ipv4/af_inet.c#1674),其中有段代码中提到的tcp_protocol结构体变量很像: ``` 1498static const struct net_protocol tcp_protocol = { 1499 .early_demux = tcp_v4_early_demux, diff --git a/doc/tcpip.md b/doc/tcpip.md index 967c9a7..78b23e2 100644 --- a/doc/tcpip.md +++ b/doc/tcpip.md @@ -13,7 +13,7 @@ Linux内核初始化过程中加载TCP/IP协议栈,从start_kernel、kernel_in ### `start_kernel()` -main.c 中没有 main 函数,`start_kernel()` 相当于main函数。`start_kernel`是一切的起点,在此函数被调用之前内核代码主要是用汇编语言写的,完成硬件系统的初始化工作,为C代码的运行设置环境。由调试可得`start_kernel`在[/linux-3.18.6/init/main.c#500](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/init/main.c#500): +main.c 中没有 main 函数,`start_kernel()` 相当于main函数。`start_kernel`是一切的起点,在此函数被调用之前内核代码主要是用汇编语言写的,完成硬件系统的初始化工作,为C代码的运行设置环境。由调试可得`start_kernel`在[/linux-src/init/main.c#500](https://github.com/torvalds/linux/blob/v5.4/init/main.c#500): ``` 500asmlinkage __visible void __init start_kernel(void) @@ -27,7 +27,7 @@ main.c 中没有 main 函数,`start_kernel()` 相当于main函数。`start_ker ### `rest_init()`函数 -rest_init在[linux-3.18.6/init/main.c#393](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/init/main.c#393)的位置: +rest_init在[linux-src/init/main.c#393](https://github.com/torvalds/linux/blob/v5.4/init/main.c#393)的位置: ``` 393static noinline void __init_refok rest_init(void) 394{ @@ -68,7 +68,7 @@ rest_init在[linux-3.18.6/init/main.c#393](http://codelab.shiyanlou.com/source/x ### `kernel_init`函数和do_basic_setup函数 - `kernel_init`函数的主要工作是夹在init用户程序,但是在加载init用户程序前通过kernel_init_freeable函数进一步做了一些初始化的工作。[`kernel_init`函数和kernel_init_freeable函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/init/main.c#934): + `kernel_init`函数的主要工作是夹在init用户程序,但是在加载init用户程序前通过kernel_init_freeable函数进一步做了一些初始化的工作。[`kernel_init`函数和kernel_init_freeable函数](https://github.com/torvalds/linux/blob/v5.4/init/main.c#934): ``` 930static int __ref kernel_init(void *unused) @@ -131,7 +131,7 @@ rest_init在[linux-3.18.6/init/main.c#393](http://codelab.shiyanlou.com/source/x 1034 ``` -kernel_init_freeable函数做的一些初始化的工作与我们网络初始化有关的主要在[do_basic_setup函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/init/main.c#867)中,其中do_initcalls用一种巧妙的方式对一些子系统进行了初始化,其中包括TCP/IP网络协议栈的初始化。 +kernel_init_freeable函数做的一些初始化的工作与我们网络初始化有关的主要在[do_basic_setup函数](https://github.com/torvalds/linux/blob/v5.4/init/main.c#867)中,其中do_initcalls用一种巧妙的方式对一些子系统进行了初始化,其中包括TCP/IP网络协议栈的初始化。 ``` 867/* 868 * Ok, the machine is now initialized. None of the devices @@ -156,7 +156,7 @@ kernel_init_freeable函数做的一些初始化的工作与我们网络初始化 ### do_initcalls函数巧妙地对网络协议进行初始化 -[do_initcalls函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/init/main.c#859)是table驱动的,维护了一个initcalls的table,从而可以对每一个注册进来的初始化项目进行初始化,这个巧妙的机制可以理解成观察者模式,每一个协议子系统是一个观察者,将它的初始化入口注册进来,do_initcalls函数是被观察者负责统一调用每一个子系统的初始化函数指针。 +[do_initcalls函数](https://github.com/torvalds/linux/blob/v5.4/init/main.c#859)是table驱动的,维护了一个initcalls的table,从而可以对每一个注册进来的初始化项目进行初始化,这个巧妙的机制可以理解成观察者模式,每一个协议子系统是一个观察者,将它的初始化入口注册进来,do_initcalls函数是被观察者负责统一调用每一个子系统的初始化函数指针。 ``` 859static void __init do_initcalls(void) 860{ @@ -166,7 +166,7 @@ kernel_init_freeable函数做的一些初始化的工作与我们网络初始化 864 do_initcall_level(level); 865} ``` -以TCP/IP协议栈为例,[inet_init函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/af_inet.c#1674)是TCP/IP协议栈初始化的入口函数,通过fs_initcall(inet_init)将inet_init函数注册进initcalls的table。 +以TCP/IP协议栈为例,[inet_init函数](https://github.com/torvalds/linux/blob/v5.4/net/ipv4/af_inet.c#1674)是TCP/IP协议栈初始化的入口函数,通过fs_initcall(inet_init)将inet_init函数注册进initcalls的table。 ``` 1674static int __init inet_init(void) 1675{ @@ -179,7 +179,7 @@ kernel_init_freeable函数做的一些初始化的工作与我们网络初始化 我们首先将端点设在kernel_init、do_initcalls、inet_init以及do_initcalls后面的random_int_secret_init,预期这四个断点会依次触发,从而可以间接验证fs_initcall(inet_init)确实将inet_init注册进了do_initcalls并被do_initcalls调用执行了。 -在lab3目录下执行qemu -kernel ../../linux-3.18.6/arch/x86/boot/bzImage -initrd ../rootfs.img -s -S +在lab3目录下执行qemu -kernel ../../linux-src/arch/x86/boot/bzImage -initrd ../rootfs.img -s -S ``` shiyanlou:~/ $ cd LinuxKernel [14:08:18] shiyanlou:LinuxKernel/ $ git clone https://github.com/mengning/linuxnet.git @@ -196,13 +196,13 @@ shiyanlou:lab3/ (master) $ make rootfs [14:08:38] gcc -o init linktable.c menu.c main.c -m32 -static -lpthread find init | cpio -o -Hnewc |gzip -9 > ../rootfs.img 1889 \u5757 -qemu -kernel ../../linux-3.18.6/arch/x86/boot/bzImage -initrd ../rootfs.img -shiyanlou:lab3/ (master*) $ qemu -kernel ../../linux-3.18.6/arch/x86/boot/bzImage -initrd ../rootfs.img -s -S +qemu -kernel ../../linux-src/arch/x86/boot/bzImage -initrd ../rootfs.img +shiyanlou:lab3/ (master*) $ qemu -kernel ../../linux-src/arch/x86/boot/bzImage -initrd ../rootfs.img -s -S ``` 在另一个窗口执行gdb并依次执行如下gdb命令: ``` -(gdb) file ../../linux-3.18.6/vmlinux -Reading symbols from ../../linux-3.18.6/vmlinux...done. +(gdb) file ../../linux-src/vmlinux +Reading symbols from ../../linux-src/vmlinux...done. (gdb) target remote:1234 Remote debugging using :1234 0x0000fff0 in ?? () @@ -243,4 +243,4 @@ Breakpoint 4, random_int_secret_init () at drivers/char/random.c:1712 (gdb) ``` -到这里我们就找到了Linux内核初始化TCP/IP的入口位置,即为[inet_init函数](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/net/ipv4/af_inet.c#1674)。 +到这里我们就找到了Linux内核初始化TCP/IP的入口位置,即为[inet_init函数](https://github.com/torvalds/linux/blob/v5.4/net/ipv4/af_inet.c#1674)。 diff --git a/lab3/README.md b/lab3/README.md index d37cf3d..bea6326 100644 --- a/lab3/README.md +++ b/lab3/README.md @@ -1,7 +1,7 @@ ## 编译构建调试Linux系统 ### 实验:编译构建调试Linux系统 -自定搭建环境Based on Ubuntu 18.04 & linux-5.0.1,或使用在线环境:[实验楼虚拟机](https://www.shiyanlou.com/courses/1198)&[linux-3.18.6](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/) +自定搭建环境Based on Ubuntu 18.04 & linux-5.0.1,或使用在线环境:[实验楼虚拟机](https://www.shiyanlou.com/courses/1198)&[linux-src](https://github.com/torvalds/linux/blob/v5.4/) ``` diff --git a/lab4/README.md b/lab4/README.md index fe45421..b8d4381 100644 --- a/lab4/README.md +++ b/lab4/README.md @@ -1,7 +1,7 @@ ## 编译构建调试Linux系统 ### 实验:编译构建调试Linux系统 -自定搭建环境Based on Ubuntu 18.04 & linux-5.0.1,或使用在线环境:[实验楼虚拟机](https://www.shiyanlou.com/courses/1198)&[linux-3.18.6](http://codelab.shiyanlou.com/source/xref/linux-3.18.6/) +自定搭建环境Based on Ubuntu 18.04 & linux-5.0.1,或使用在线环境:[实验楼虚拟机](https://www.shiyanlou.com/courses/1198)&[linux-src](https://github.com/torvalds/linux/blob/v5.4/) ### 作业:编译构建调试Linux系统并实际跟踪Linux内核IP协议栈