《深入理解Linux网络技术内幕》阅读笔记(十九)
2015-10-09 00:41
651 查看
如果封包没有被分段,offset=0且MF=0.相反的,如果我们手上有一个片段,则满足下列条件:
1.第一个片段有offset=0且MF=1.
2.界于第一个片段和最后的片段之间的所有片段,这两个字段都为非0.
3.最后一个片段有MF=0且offset为非0.
2.4版以前的内核有个名为ip_build_xmit_slow的函数,会以倒序方式为本地产生的封包建立并传输IP片段。这种做法有一些有点:
1.最后一个片段是唯一可以通知接收者原有未分段封包尺寸的片段。尽可能早地知道这件事,有助于重组器对其内存的妥善运用。
2.重组器有可能更快建立起一个封包。片段会以偏移量递增的次序加入一个链表,如果每个片段都比其后片段晚到,则片段就可迅速加入链表头部。
ip_fragment:把等待传输的缓冲区转变成实际的封包。
片段存储在一个会定期改变的hash表内。每个封包都会关联一个定时器。如果定时器到期,该封包就会被删除。每个片段都会检查是否损毁,以及是否和先前接收的片段彼此重叠。
该hash链表定期重新组织表中所有的IP片段,来尽可能避开DoS攻击。重新组织是用一个定时器实现的,默认每10分钟到期一次。每次执行时,会产生一个随机数,然后使用这个随机数重算hash值,并以此重组hash表内的每个元素。
内核为IP片段实现两种垃圾收集:
1.系统内存使用限度
2.重组定时器
1.第一个片段有offset=0且MF=1.
2.界于第一个片段和最后的片段之间的所有片段,这两个字段都为非0.
3.最后一个片段有MF=0且offset为非0.
2.4版以前的内核有个名为ip_build_xmit_slow的函数,会以倒序方式为本地产生的封包建立并传输IP片段。这种做法有一些有点:
1.最后一个片段是唯一可以通知接收者原有未分段封包尺寸的片段。尽可能早地知道这件事,有助于重组器对其内存的妥善运用。
2.重组器有可能更快建立起一个封包。片段会以偏移量递增的次序加入一个链表,如果每个片段都比其后片段晚到,则片段就可迅速加入链表头部。
ip_fragment:把等待传输的缓冲区转变成实际的封包。
片段存储在一个会定期改变的hash表内。每个封包都会关联一个定时器。如果定时器到期,该封包就会被删除。每个片段都会检查是否损毁,以及是否和先前接收的片段彼此重叠。
该hash链表定期重新组织表中所有的IP片段,来尽可能避开DoS攻击。重新组织是用一个定时器实现的,默认每10分钟到期一次。每次执行时,会产生一个随机数,然后使用这个随机数重算hash值,并以此重组hash表内的每个元素。
内核为IP片段实现两种垃圾收集:
1.系统内存使用限度
2.重组定时器
相关文章推荐
- Android实现网络多线程断点续传下载
- HttpClient的一些用法
- HttpURLConnection的一些用法
- 读完《visual c++网络编程》 唐文超编著后的领悟
- 简述Windows XP与Windows 7系统常见漏洞
- 图解HTTP学习笔记——简单的HTTP协议
- open-vswitch: GRE隧道网络实验
- 直播时移技术与网络电视台的完美结合
- 网络唤醒-ether-wake
- 如何调用wps打开我下载的文本文件?
- VirtualBox 连接外部网络和内部网络教程
- Java之——简单的网络爬虫实现
- HTTP协议请求过程
- 用Node.js实现基于https的Restful风格webservice
- 浏览器的相关的http的响应码介绍
- TCP的三次握手和四次挥手
- Meta http-equiv属性详解(转)
- <meta http-equiv="X-UA-Compatible" content="IE=Edge">
- [CareerCup] 10.5 Web Crawler 网络爬虫
- 神经网络的反向传播BP算法