开场白
传输层常见的两大协议TCP和UDP,TCP太复杂,涉及到拥塞控制的很多内容,在《Linux内核源码剖析-TCP/IP实现》下册中也花费了大量的笔墨来讲述。
咋们先来看看一个简单的UDP。
定位
每篇文章肯定有一个定位,不可能面面俱到,如果这篇的定位是你需要的,祝你能够学到一些新的知识
(1)UDP数据发送和接收的简要流程
(2)不涉及太多细节。
(3)力求了解UDP在协议栈中的框架以及与其他层之间的衔接
参考资料
(1)《Understand Linux Kernel Internel》
(2)《Linux内核源码剖析-TCP/IP实现》
(3)linux内核源码--我使用的版本是3.2.4
注: 《Understand Linux Kernel Internel》中没有关于UDP和TCP的章节,但是有很多知识还是需要的。
一、大蓝图
下图见《Linux内核源码剖析-TCP/IP实现》图22-1
图 1-1
今天讨论的内容在圈圈5下方(也就是proto_ops)下方。这个图信息很多,不过和今天的内容联系的却不多,贴出的原因是希望能够让大家心里有个数。
二、传输控制块
这边简要介绍下,如果想更全面的理解,最好去看看套接口层(见《Linux内核源码剖析-TCP/IP实现》第22~24章)。这里先默认你已经对套接口层有所理解了。
1、struct socket结构
这里我们只要注意1个参数,struct sock *sk;
/**
* struct socket - general BSD socket
* @state: socket state (%SS_CONNECTED, etc)
* @type: socket type (%SOCK_STREAM, etc)
* @flags: socket