我们知道,报文经过网卡驱动处理后,调用net_receive_skb传递给具体的协议处理函数,对于IPv4报文来说,其协议处理函数就是ip_rcv了,ip_rcv在进行一些健康检查等操作后,会调用ip_rcv_finish来处理报文。这也是IPv4协议对报文接收处理的开始。
我们先看下ip_rcv_finish源代码:
本地传递
转发
报文转发有下面几个步骤完成:
1. 处理IP选项
2. 确定封包可以被转发
3.递减封包头部的TTL字段,如果TTL字段为0,则丢弃该封包
4.根据路径相关MTU,在必要...
分类:
系统相关 时间:
2015-05-14 10:03:41
阅读次数:
222
在进行UDP编程的时候,我们最容易想到的问题就是,一次发送多少bytes好?当然,这个没有唯一答案,相对于不同的系统,不同的要求,其得到的答案是不一样的,我这里仅对像ICQ一类的发送聊天消息的情况作分析,对于其他情况,你或许也能得到一点帮助:首先,我们知道,TCP/IP通常被认为是一个四层协议系统,...
分类:
其他好文 时间:
2015-05-13 19:04:55
阅读次数:
139
[前言]漫漫51长假,没有好的去处,只能每日上网消遣,某日逛到NBO灌水,见一帖曰:无法通过2514路由器上MSN(出口为ADSL线路,通过PPPoE)吾心想,ADSL---PPPoE,那肯定就是MTU之问题。回帖告之:改PC之MTU。过数日,又逛到NBO,又见这帖,后有人回曰:ip tcp adj...
分类:
其他好文 时间:
2015-05-13 19:02:56
阅读次数:
130
一、Linux发送网络消息的过程 (1) 应用程序调用write()将消息发送到内核中 ( 2)内核中的缓存达到了固定长度数据后,一般是SO_SNDBUF,将发送到TCP协议层 (3)IP层从TCP层收到数据,会加上自己的包头然后发送出去。一般分片的大小是MTU(含IP包头),而IPV4...
分类:
系统相关 时间:
2015-05-09 23:37:17
阅读次数:
311
Router#show interface e0/2Ethernet0/2 is up, line protocol is up Hardware is Lance, address is 0019.e78a.6401 Internet address is 1.1.1.9/24 MTU 1...
分类:
系统相关 时间:
2015-04-30 17:46:18
阅读次数:
2102
tcp是基于字节流的,udp是基于报文即数据包的,所以tcp会产生一个叫做粘包的问题,而udp不会产生。我们这节主要讨论粘包问题:先看一下粘包问题的原因:总结如下:1、应用进程的缓冲区和Socket缓冲区的大小不一定相吻合。2、tcp传输段有mss限制。3、链路层有个mtu限制。粘包的解决方案:1、...
分类:
其他好文 时间:
2015-04-27 00:16:13
阅读次数:
129
一个TCP包中最大的数据2008-03-10 18:54在以太网中,最大传输单元MTU为1500个字节,在一个IP包中,去除IP包头的20个字节,可以传输的最大数据长度为1480个字节。在TCP包中,去除20个TCP包头,可以传输的最大数据段为1460个字节。因此,当数据超过最大数据长度时,将对该数...
分类:
其他好文 时间:
2015-04-22 13:02:07
阅读次数:
199
修改帧大小和socket缓冲区大小MTU(最大传输单元)的缺省值为1500.通过下面命令将其改为9000(jumboframe)%ifconfigeth0mtu9000socketbuffersize缺省为64kB.理论上,最优的buffer大小为*可以通过下列命令改变其大小(如256KB)%sys...
分类:
其他好文 时间:
2015-04-21 22:05:13
阅读次数:
160
js parseint()函数
工作中,在网关设置MTU值,见到这个函数。当时用法:
function saveMtu()
{
var maxMtu;
with (document.forms[0])
{
maxMtu = parseInt(mtu.value);
...
分类:
编程语言 时间:
2015-04-07 12:01:09
阅读次数:
137
搭建了一个PPTP,发现windows连接和打开网页都没问题,但ipad能连上,但打不开网页,后来发现是MTU的问题MTU,英文全称为MaximumTransmissionUnit,中文即最大传输单元的意思,是一种通信协议层上所能通过的最大数据包值。如果MTU设置得当,可以优化网络性能。反之设置不当,则..
分类:
其他好文 时间:
2015-04-05 19:03:31
阅读次数:
138