tcp/udp伪首部的有关问题

tcp/udp伪首部的问题
伪首部里面包含源ip和目标ip, 这个是在那一层加入的? 传输层还是网络层?
看了卷2:实现的能不能贴下实现代码
网络 tcp/udp

------解决方案--------------------
引用:
 计算校验和是在udp层做的, 那伪首部中包含的目的ip和发送端ip怎么获取? 这该是ip层的事吧? 

理想化的模型往往都是逻辑上的,真正实现起来,很多地方要模糊一些。况且协议栈一般在内核中运行,效率是很重要的。
往上层说,你在socket layer都能拿到双方IP,那传输层拿到IP又有什么大不了的。
往底层说的话,其实传输层和网络层的实现是紧密关联的,在UDP层拿到IP信息其实不是什么麻烦事。
数据包一般只在逻辑上分层,物理上仍然存在于同一块数据缓冲区里。以freebsd的实现来说,各层之间传递的数据都是同一个package buffer(即mbuf)的指针。IP层会按IP的偏移量去处理数据,UDP层就用UDP层的偏移量处理数据。这样做能省掉相当多的内存复制与拷贝。