tcp校验和(TCP校验和的原理和实现)

      最后更新:2023-09-09 06:13

      tcp/ip数据需要校验吗

      首先,IP、ICMP、UDP和TCP报文头部都有校验和字段,大小都是16bit,算法也基本一样: 在发送数据时,为了计算数据包的校验和。应该按如下步骤: (1)把校验和字段置为0; (2)把需校验的数据看成以16位为单位的数字组成,依次进行二进制反码求和; (3)把得到的结果存入校验和字段中。 在接收数据时,计算数据包的校验和相对简单,按如下步骤: (1)把首部看成以16位为单位的数字组成,依次进行二进制反码求和,包括校验和字段; (2)检查计算出的校验和的结果是否为0; (3)如果等于0,说明被整除,校验是和正确。否则,校验和就是错误的,协议栈要抛弃这个数据包。 虽然上面四种报文的校验和算法一样,但在作用范围存在不同:IP校验和只校验20字节的IP报头;而ICMP校验和覆盖整个报文(ICMP报头+ICMP数据);UDP和TCP校验和不仅覆盖整个报文,而且还有12字节的IP伪首部,包括源IP地址(4字节)、目的IP地址(4字节)、协议(2字节,第一字节补0)和TCP/UDP包长(2字节)。另外UDP、TCP数据报的长度可以为奇数字节,所以在计算校验和时需要在最后增加填充字节0(注意,填
      tcp/ip数据需要校验吗

      TCP检验和怎么计算,16位二进制数,怎么从高16位加到低16位,请问这个计算过程,谢谢

      TCP校验和是一个端到端的校验和,由发送端计算,然后由接收端验证。其目的是为了发现TCP首部和数据在发送端到接收端之间发生的任何改动。如果接收方检测到校验和有差错,则TCP段会被直接丢弃。TCP校验和覆盖TCP首部和TCP数据,而IP首部中的校验和只覆盖IP的首部,不覆盖IP数据报中的任何数据。TCP的校验和是必需的,而UDP的校验和是可选的。TCP和UDP计算校验和时,都要加上一个12字节的伪首部。伪首部共有12字节,包含如下信息:源IP地址、目的IP地址、保留字节(置0)、传输层协议号(TCP是6)、TCP报文长度(报头+数据)。伪首部是为了增加TCP校验和的检错能力:如检查TCP报文是否收错了(目的IP地址)、传输层协议是否选对了(传输层协议号)等。首先,把伪首部、TCP报头、TCP数据分为16位的字,如果总长度为奇数个字节,则在最后增添一个位都为0的字节。把TCP报头中的校验和字段置为0(否则就陷入鸡生蛋还是蛋生鸡的问题)。其次,用反码相加法累加所有的16位字(进位也要累加)。最后,对计算结果取反,作为TCP的校验和。实现基于2.6.18、x86_64。csum_tcpudp_nofold()按4字节累加伪首部到sum中。[java] view plaincopystatic inline unsigned long csum_tcpudp_nofold (unsigned long saddr, unsigned long daddr,unsigned short len, unsigned short proto,unsigned int sum){asm("addl %1, %0n"    /* 累加daddr */"adcl %2, %0n"    /* 累加saddr */"adcl %3, %0n"    /* 累加len(2字节), proto, 0*/"adcl $0, %0n"    /*加上进位 */: "=r" (sum): "g" (daddr), "g" (saddr), "g" ((ntohs(len) << 16) + proto*256), "0" (sum));return sum;}csum_tcpudp_magic()产生最终的校验和。首先,按4字节累加伪首部到sum中。其次,累加sum的低16位、sum的高16位,并且对累加的结果取反。最后,截取sum的高16位,作为校验和。[java] view plaincopystatic inline unsigned short int csum_tcpudp_magic(unsigned long saddr, unsigned long daddr,unsigned short len, unsigned short proto,unsigned int sum){return csum_fold(csum_tcpudp_nofold(saddr, daddr, len, proto, sum));}static inline unsigned int csum_fold(unsigned int sum){__asm__("addl %1, %0n""adcl 0xffff, %0": "=r" (sum): "r" (sum << 16), "0" (sum & 0xffff0000)/* 将sum的低16位,作为寄存器1的高16位,寄存器1的低16位补0。* 将sum的高16位,作为寄存器0的高16位,寄存器0的低16位补0。* 这样,addl %1, %0就累加了sum的高16位和低16位。** 还要考虑进位。如果有进位,adcl 0xfff, %0为:0x1 + 0xffff + %0,寄存器0的高16位加1。* 如果没有进位,adcl 0xffff, %0为:0xffff + %0,对寄存器0的高16位无影响。*/);return (~sum) >> 16; /* 对sum取反,返回它的高16位,作为最终的校验和 */}发送校验[java] view plaincopy#define CHECKSUM_NONE 0 /* 需要由传输层自己计算校验和 */#define CHECKSUM_HW 1 /* 由硬件计算报头和首部的校验和 */#define CHECKSUM_UNNECESSARY 2 /* 表示不需要校验,或者已经成功校验了 */#define CHECKSUM_PARTIAL CHECKSUM_HW#define CHECKSUM_COMPLETE CHECKSUM_HW@tcp_transmit_skb()icsk->icsk_af_ops->send_check(sk, skb->len, skb); /* 计算校验和 */[java] view plaincopyvoid tcp_v4_send_check(struct sock *sk, int len, struct sk_buff *skb){struct inet_sock *inet = inet_sk(sk);struct tcphdr *th = skb->h.th;if (skb->ip_summed == CHECKSUM_HW) {/* 只计算伪首部,TCP报头和TCP数据的累加由硬件完成 */th->check = ~tcp_v4_check(th, len, inet->saddr, inet->daddr, 0);skb->csum = offsetof(struct tcphdr, check); /* 校验和值在TCP首部的偏移 */} else {/* tcp_v4_check累加伪首部,获取最终的校验和。* csum_partial累加TCP报头。* 那么skb->csum应该是TCP数据部分的累加,这是在从用户空间复制时顺便累加的。*/th->check = tcp_v4_check(th, len, inet->saddr, inet->daddr,csum_partial((char *)th, th->doff << 2, skb->csum));}}[java] view plaincopyunsigned csum_partial(const unsigned char *buff, unsigned len, unsigned sum){return add32_with_carry(do_csum(buff, len), sum);}static inline unsigned add32_with_carry(unsigned a, unsigned b){asm("addl %2, %0nt""adcl $0, %0": "=r" (a): "0" (a), "r" (b));return a;}do_csum()用于计算一段内存的校验和,这里用于累加TCP报头。具体计算时用到一些技巧:1. 反码累加时,按16位、32位、64位来累加的效果是一样的。2. 使用内存对齐,减少内存操作的次数。[java] view plaincopystatic __force_inline unsigned do_csum(const unsigned char *buff, unsigned len){unsigned odd, count;unsigned long result = 0;if (unlikely(len == 0))return result;/* 使起始地址为XXX0,接下来可按2字节对齐 */odd = 1 & (unsigned long) buff;if (unlikely(odd)) {result = *buff << 8; /* 因为机器是小端的 */len--;buff++;}count = len >> 1; /* nr of 16-bit words,这里可能余下1字节未算,最后会处理*/if (count) {/* 使起始地址为XX00,接下来可按4字节对齐 */if (2 & (unsigned long) buff) {result += *(unsigned short *)buff;count--;len -= 2;buff += 2;}count >>= 1; /* nr of 32-bit words,这里可能余下2字节未算,最后会处理 */if (count) {unsigned long zero;unsigned count64;/* 使起始地址为X000,接下来可按8字节对齐 */if (4 & (unsigned long)buff) {result += *(unsigned int *)buff;count--;len -= 4;buff += 4;}count >>= 1; /* nr of 64-bit words,这里可能余下4字节未算,最后会处理*//* main loop using 64byte blocks */zero = 0;count64 = count >> 3; /* 64字节的块数,这里可能余下56字节未算,最后会处理 */while (count64) { /* 反码累加所有的64字节块 */asm ("addq 0*8(%[src]), %[res]nt"    /* b、w、l、q分别对应8、16、32、64位操作 */"addq 1*8(%[src]), %[res]nt"    /* [src]为指定寄存器的别名,效果应该等同于0、1等 */"adcq 2*8(%[src]), %[res]nt""adcq 3*8(%[src]), %[res]nt""adcq 4*8(%[src]), %[res]nt""adcq 5*8(%[src]), %[res]nt""adcq 6*8(%[src]), %[res]nt""adcq 7*8(%[src]), %[res]nt""adcq %[zero], %[res]": [res] "=r" (result): [src] "r" (buff), [zero] "r" (zero), "[res]" (result));buff += 64;count64--;}/* 从这里开始,反序处理之前可能漏算的字节 *//* last upto 7 8byte blocks,前面按8个8字节做计算单位,所以最多可能剩下7个8字节 */count %= 8;while (count) {asm ("addq %1, %0nt""adcq %2, %0n": "=r" (result): "m" (*(unsigned long *)buff), "r" (zero), "0" (result));--count;buff += 8;}/* 带进位累加result的高32位和低32位 */result = add32_with_carry(result>>32, result&0xffffffff);/* 之前始按8字节对齐,可能有4字节剩下 */if (len & 4) {result += *(unsigned int *) buff;buff += 4;}}/* 更早前按4字节对齐,可能有2字节剩下 */if (len & 2) {result += *(unsigned short *) buff;buff += 2;}}/* 最早之前按2字节对齐,可能有1字节剩下 */if (len & 1)result += *buff;/* 再次带进位累加result的高32位和低32位 */result = add32_with_carry(result>>32, result & 0xffffffff);/* 这里涉及到一个技巧,用于处理初始地址为奇数的情况 */if (unlikely(odd)) {result = from32to16(result); /* 累加到result的低16位 *//* result为:0 0 a b* 然后交换a和b,result变为:0 0 b a*/result = ((result >> 8) & 0xff) | ((result & oxff) << 8);}return result; /* 返回result的低32位 */}[java] view plaincopystatic inline unsigned short from32to16(unsigned a){unsigned short b = a >> 16;asm ("addw %w2, %w0nt""adcw $0, %w0n": "=r" (b): "0" (b), "r" (a));return b;}csum_partial_copy_from_user()用于拷贝用户空间数据到内核空间,同时计算用户数据的校验和,结果保存到skb->csum中(X86_64)。[java] view plaincopy/*** csum_partial_copy_from_user - Copy and checksum from user space.* @src: source address (user space)* @dst: destination address* @len: number of bytes to be copied.* @isum: initial sum that is added into the result (32bit unfolded)* @errp: set to -EFAULT for an bad source address.** Returns an 32bit unfolded checksum of the buffer.* src and dst are best aligned to 64bits.*/unsigned int csum_partial_copy_from_user(const unsigned char __user *src,unsigned char *dst, int len, unsigned int isum, int *errp){might_sleep();*errp = 0;if (likely(access_ok(VERIFY_READ, src, len))) {/* Why 6, not 7? To handle odd addresses aligned we would need to do considerable* complications to fix the checksum which is defined as an 16bit accumulator. The fix* alignment code is primarily for performance compatibility with 32bit and that will handle* odd addresses slowly too.* 处理X010、X100、X110的起始地址。不处理X001,因为这会使复杂度大增加。*/if (unlikely((unsigned long)src & 6)) {while (((unsigned long)src & 6) && len >= 2) {__u16 val16;*errp = __get_user(val16, (__u16 __user *)src);if (*errp)return isum;*(__u16 *)dst = val16;isum = add32_with_carry(isum, val16);src += 2;dst += 2;len -= 2;}}/* 计算函数是用纯汇编实现的,应该是因为效率吧 */isum = csum_parial_copy_generic((__force void *)src, dst, len, isum, errp, NULL);if (likely(*errp == 0))return isum; /* 成功 */}*errp = -EFAULT;memset(dst, 0, len);return isum;}上述的实现比较复杂,来看下最简单的csum_partial_copy_from_user()实现(um)。[java] view plaincopyunsigned int csum_partial_copy_from_user(const unsigned char *src,unsigned char *dst, int len, int sum,int *err_ptr){if (copy_from_user(dst, src, len)) { /* 拷贝用户空间数据到内核空间 */*err_ptr = -EFAULT; /* bad address */return (-1);}return csum_partial(dst, len, sum); /* 计算用户数据的校验和,会存到skb->csum中 */}
      TCP检验和怎么计算,16位二进制数,怎么从高16位加到低16位,请问这个计算过程,谢谢

      当收到tcp报文段发现其校验和有差错时,运输层采取了什么措施

      目前,支持TCP/IP的主流的系统,当检测到接收数据有错误时(采用CRC校验),都会采取直接丢弃出错的数据,发送端等待接收端的确认超时后,会自动重发该数据包。也可以在设计时,接收端再次确认上一个数据包,发送端面会立即重发出错的数据。单独的CRC校验不能纠错,不过可以配合特殊的电路实现纠错,这在一些传输可靠性不高的情况下,也是研究的重点,例如基于微波、卫星、或近期的无线网络等,相关的论文在百度学术里也有收录,可以参考一下:
      当收到tcp报文段发现其校验和有差错时,运输层采取了什么措施

      TCP协议中校验和错误是什么意思?

      信号传输过程中出错了,导致发送方发送的校验和跟接受方计算出的校验和不一致,从而出现错误
      TCP协议中校验和错误是什么意思?

      tcp 硬件校验和ipv4选择关闭?

      操作步骤如下:1、点击开始,点击运行,输入devmgmt.msc,点击确定;2、点击展开网络适配器,双击要设置的网卡;3、点击高级选项卡,左侧点击硬件校验的选项,右侧值修改为关闭,最后点击确定即可。崔根筋搭错  | 网络推广员 | 发布于2017-11-22举报| 评论0 0自动关闭 Gigabit (省电) 进入省电操作模式,驱动程序可藉由网络线的插拔自动关闭Gigabit联接模式。. 选项 说明 关闭 关闭自动关闭Gigabit联接(默认值) 重新联接, 电池 当使用电池时,网络线插拔时,自动关闭Gigabit联接模式 重新联接, 电池或 AC 网络线插拔时,自动关闭Gigabit联接模式 注意: RTL8101E、RTL8102E及RTL8139系列网络卡为10/100 Mbps,所以并不支持Gigabit的联接速度。 自动关闭 PCIe (省电) 设置此选项可进入网络控制器省电模式设置此选项可进入网路卡省电模式 选项 说明 关闭 关闭自动关闭PCIe (省电) 开启, 电池 当使用电池且网络线未插入时,自动关闭PCIe连接 开启, 电池或 AC 当使用电池或AC且网络线未插入时,自动关闭PCIe连接 自动关闭 PHY (省电) 设置此选项可进入网络控制器省电模式 选项 说明 关闭 关闭自动关闭PHY (省电) 开启, 电池 当使用电池且网络线未插入时,自动关闭PHY连接 开启, 电池或 AC 当使用电池或AC且网络线未插入时,自动关闭PHY连接 流控制 允许暂时停止传输数据包以适应接收端速度 选项 说明 开启 开启流控制 (默认值) 关闭 关闭流控制 据说开流控制会导致掉线,关掉吧 中断调整 根据网络的流量状况,动态调整发起处理器中断的频率 选项 说明 开启 开启中断调整合适化 (默认值) 关闭 关闭中断调整合适化 关吧 IPv4 硬件校验和 设置硬件加速IPv4校验和 选项 说明 关闭 关闭硬件加速IPv4校验和 Rx & Tx 开启 启用硬件加速接收端和传输端IPv4校验和(默认值) Rx 开启 启用硬件加速接收端IPv4校验和 Tx 开启 启用硬件加速传输端IPv4校验和 据说很多程序因为网卡校验和问题造成连接问题,关吧,话说校验还是cpu来吧,关。 802.1Q/1p 虚拟网络标签 IEEE 802.1Q帧信息用以表示每一个帧的优先级和其所属的虚拟局域网,设置这个选项可以启用硬件加速优先级帧传输和加入虚拟局域网识别标签。 选项 说明 开启 启用优先级传输和虚拟局域网 关闭 禁用优先级传输和虚拟局域网 (默认值) 大量传送减负 (IPv4) 设置网络控制器硬件加速IPv4数据包切割功能 选项 说明 开启 开启IPv4大量传送减负 (默认值) 关闭 关闭IPv4大量传送减负 大量传送减负是用网卡硬件分割TCP数据包,但其实只有关闭它才可以发挥网卡的真正性能,cpu占用率会提升,但不明显。网络处理速度会快一些。 这个一定要关,比如xp mode和win7主机局域网传文件慢就是这个造成的 大量传送减负 (IPv6) 设置网络控制器硬件加速IPv6数据包切割功能 选项 说明 开启 开启IPv6大量传送减负 (默认值) 关闭 关闭IPv6大量传送减负 这个一定要关,比如xp mode和win7主机局域网传文件慢就是这个造成的 巨型帧 Ethernet的数据最大传输单元定义为1500字节,数据长度大于1500字节封包即称为巨型帧,此选项可以调整Ethernet封包内所带数据的长度 选项 说明 2KB 最大传输单元 设置巨型帧为2K字节 3KB 最大传输单元 设置巨型帧为3K字节 4KB 最大传输单元 设置巨型帧为4K字节 5KB 最大传输单元 设置巨型帧为5K字节 6KB 最大传输单元 设置巨型帧为6K字节 7KB 最大传输单元 设置巨型帧为7K字节 8KB 最大传输单元 设置巨型帧为8K字节 9KB 最大传输单元 设置巨型帧为9K字节 关闭 禁用巨型帧(默认值) 注意: 启用巨型帧选项,网络控制器另一端所连接的网络设备也需支持巨型帧 关吧,网卡支持巨型帧但路由器不支持巨型帧白搭。 网络地址 改变网络控制器MAC地址 默认值:不存在 优先级和VLAN IEEE 802.1Q数据包信息用以表示每一个数据包的优先级和其所属的虚拟局域网,设置这个选项可以启用硬件加速优先级数据包传输或加入虚拟局域网识别标志 选项 说明 优先级 & VLAN 关闭 关闭优先级传输和虚拟局域网 优先级 & VLAN 开启 开启优先级传输和虚拟局域网 (默认值) 优先级开启 开机优先级传输 VLAN 开启 开启虚拟局域网硬件标志功能 接收端缓冲区 设置接收端缓冲区 选项 范围 缓冲区大小 1~512 (默认值:512) 开最大。 接收端调整 接收端调整(Received Side Scaling, RSS)是一种动态指派多核心处理器接收数据包的负载均衡机制,借由调整多核心处理器处理接收数据包以达到多核心系统的处理器负载均衡。 选项 说明 开启 开启接收端调整 (默认值) 关闭 关闭接收端调整 注意: RTL8168C及RTL8102E系列网络控制器才支持接收端调整。 关机网络唤醒 设置关机后可从网络唤醒 选项 说明 开启 开机关机后网络唤醒 关闭 关闭关机后网络唤醒(默认值) 连接速度/双工模式 切换连接速度和双工模式 选项 说明 自动侦测 自动侦测连接网络的连接速度和双工模式(默认值) 10Mbps半双工 设置为 10Mbps半双工连接模式 10Mbps全双工 设置为 10Mbps全双工连接模式 100Mbps半双工 设置为 100Mbps半双工连接模式 100Mbps全双工 设置为100Mbps全双工连接模式 1000Mbps全双工 设置为1000Mbps全双工连接模式 (*) 注意: RTL8101E、RTL8102E及RTL8139系列网络控制器为10/100 Mbps,所以并不支持1000 Mbps的连接速度。 TCP 硬件校验和 (IPv4) 设置硬件加速TCP校验和 (IPv4) 选项 说明 关闭 关闭硬件加速TCP校验和(IPv4) Rx & Tx 开启 启用硬件加速接收端及传输端TCP校验和(IPv4)(默认值) Rx 开启 启用硬件加速接收端TCP校验和(IPv4) Tx 开启 启用硬件加速传输端TCP校验和 (IPv4) 据说很多程序因为网卡校验和问题造成连接问题,关吧,话说校验还是cpu来吧,关。 TCP 硬件校验和 (IPv6) 设置硬件加速TCP校验和 (IPv6) 选项 说明 关闭 关闭硬件加速TCP校验和(IPv6) Rx & Tx 开启 启用硬件加速接收端及传输端TCP校验和(IPv6)(默认值) Rx 开启 启用硬件加速接收端TCP校验和(IPv6) Tx 开启 启用硬件加速传输端TCP校验和(IPv6) 据说很多程序因为网卡校验和问题造成连接问题,关吧,话说校验还是cpu来吧,关。 传送缓冲区 设置传送缓冲区 选项 范围 缓冲区大小 1~128 (默认值:128) 最大 UDP 硬件校验和 (IPv4) 设置硬件加速UDP校验和 (IPv4) 选项 说明 关闭 关闭硬件加速UDP校验和(IPv4) Rx & Tx 开启 启用硬件加速接收端及传输端UDP校验和(IPv4)(默认值) Rx 开启 启用硬件加速接收端UDP校验和(IPv4) Tx 开启 启用硬件加速传输端UDP校验和(IPv4) 据说很多程序因为网卡校验和问题造成连接问题,关吧,话说校验还是cpu来吧,关。 UDP 硬件校验和 (IPv6) 设置硬件加速UDP校验和 (IPv6) 选项 说明 关闭 关闭硬件加速UDP校验和(IPv6) Rx & Tx 开启 启用硬件加速接收端及传输端UDP校验和(IPv6)(默认值) Rx 开启 启用硬件加速接收端UDP校验和(IPv6) Tx 开启 启用硬件加速传输端UDP校验和(IPv6)
      操作步骤如下:1、点击开始,点击运行,输入devmgmt.msc,点击确定;2、点击展开网络适配器,双击要设置的网卡;3、点击高级选项卡,左侧点击硬件校验的选项,右侧值修改为关闭,最后点击确定即可。
      1-进入系统以后,打开控制面板找到设备管理器图标进入:找到网卡如下:2-选择右键属性打开:如下点击高级找到默认是tcp 硬件校验和ipv4  右边值默认:RX TX开启的,3-点击下拉选择关闭,最后确定就是关闭。
      自动关闭 Gigabit (省电) 进入省电操作模式,驱动程序可藉由网络线的插拔自动关闭Gigabit联接模式。. 选项说明 关闭关闭自动关闭Gigabit联接(默认值) 重新联接, 电池当使用电池时,网络线插拔时,自动关闭Gigabit联接模式 重新联接, 电池或 AC 网络线插拔时,自动关闭Gigabit联接模式 注意: RTL8101E、RTL8102E及RTL8139系列网络卡为10/100 Mbps,所以并不支持Gigabit的联接速度。 自动关闭 PCIe (省电) 设置此选项可进入网络控制器省电模式设置此选项可进入网路卡省电模式 选项说明 关闭关闭自动关闭PCIe (省电) 开启, 电池当使用电池且网络线未插入时,自动关闭PCIe连接 开启, 电池或 AC当使用电池或AC且网络线未插入时,自动关闭PCIe连接 自动关闭 PHY (省电) 设置此选项可进入网络控制器省电模式 选项说明 关闭关闭自动关闭PHY (省电) 开启, 电池当使用电池且网络线未插入时,自动关闭PHY连接 开启, 电池或 AC当使用电池或AC且网络线未插入时,自动关闭PHY连接 流控制 允许暂时停止传输数据包以适应接收端速度 选项说明 开启开启流控制 (默认值) 关闭关闭流控制 据说开流控制会导致掉线,关掉吧 中断调整 根据网络的流量状况,动态调整发起处理器中断的频率 选项说明 开启开启中断调整合适化 (默认值) 关闭关闭中断调整合适化 关吧IPv4 硬件校验和 设置硬件加速IPv4校验和 选项说明 关闭关闭硬件加速IPv4校验和 Rx & Tx 开启启用硬件加速接收端和传输端IPv4校验和(默认值) Rx 开启启用硬件加速接收端IPv4校验和 Tx 开启启用硬件加速传输端IPv4校验和 据说很多程序因为网卡校验和问题造成连接问题,关吧,话说校验还是cpu来吧,关。 802.1Q/1p 虚拟网络标签 IEEE 802.1Q帧信息用以表示每一个帧的优先级和其所属的虚拟局域网,设置这个选项可以启用硬件加速优先级帧传输和加入虚拟局域网识别标签。 选项说明 开启启用优先级传输和虚拟局域网 关闭禁用优先级传输和虚拟局域网 (默认值) 大量传送减负 (IPv4) 设置网络控制器硬件加速IPv4数据包切割功能 选项说明 开启开启IPv4大量传送减负 (默认值) 关闭关闭IPv4大量传送减负 大量传送减负是用网卡硬件分割TCP数据包,但其实只有关闭它才可以发挥网卡的真正性能,cpu占用率会提升,但不明显。网络处理速度会快一些。 这个一定要关,比如xp mode和win7主机局域网传文件慢就是这个造成的 大量传送减负 (IPv6) 设置网络控制器硬件加速IPv6数据包切割功能 选项说明 开启开启IPv6大量传送减负 (默认值) 关闭关闭IPv6大量传送减负 这个一定要关,比如xp mode和win7主机局域网传文件慢就是这个造成的巨型帧 Ethernet的数据最大传输单元定义为1500字节,数据长度大于1500字节封包即称为巨型帧,此选项可以调整Ethernet封包内所带数据的长度 选项说明 2KB 最大传输单元设置巨型帧为2K字节 3KB 最大传输单元设置巨型帧为3K字节 4KB 最大传输单元设置巨型帧为4K字节 5KB 最大传输单元设置巨型帧为5K字节 6KB 最大传输单元设置巨型帧为6K字节 7KB 最大传输单元设置巨型帧为7K字节 8KB 最大传输单元设置巨型帧为8K字节 9KB 最大传输单元设置巨型帧为9K字节 关闭禁用巨型帧(默认值) 注意: 启用巨型帧选项,网络控制器另一端所连接的网络设备也需支持巨型帧 关吧,网卡支持巨型帧但路由器不支持巨型帧白搭。 网络地址 改变网络控制器MAC地址 默认值:不存在 优先级和VLAN IEEE 802.1Q数据包信息用以表示每一个数据包的优先级和其所属的虚拟局域网,设置这个选项可以启用硬件加速优先级数据包传输或加入虚拟局域网识别标志 选项说明 优先级 & VLAN 关闭关闭优先级传输和虚拟局域网 优先级 & VLAN 开启开启优先级传输和虚拟局域网 (默认值) 优先级开启开机优先级传输 VLAN 开启开启虚拟局域网硬件标志功能 接收端缓冲区 设置接收端缓冲区 选项范围 缓冲区大小1~512 (默认值:512) 开最大。 接收端调整 接收端调整(Received Side Scaling, RSS)是一种动态指派多核心处理器接收数据包的负载均衡机制,借由调整多核心处理器处理接收数据包以达到多核心系统的处理器负载均衡。 选项说明 开启开启接收端调整 (默认值) 关闭关闭接收端调整 注意: RTL8168C及RTL8102E系列网络控制器才支持接收端调整。 关机网络唤醒 设置关机后可从网络唤醒 选项说明 开启开机关机后网络唤醒 关闭关闭关机后网络唤醒(默认值) 连接速度/双工模式 切换连接速度和双工模式 选项说明 自动侦测自动侦测连接网络的连接速度和双工模式(默认值) 10Mbps半双工设置为 10Mbps半双工连接模式 10Mbps全双工设置为 10Mbps全双工连接模式 100Mbps半双工设置为 100Mbps半双工连接模式 100Mbps全双工设置为100Mbps全双工连接模式 1000Mbps全双工设置为1000Mbps全双工连接模式 (*) 注意: RTL8101E、RTL8102E及RTL8139系列网络控制器为10/100 Mbps,所以并不支持1000 Mbps的连接速度。 TCP 硬件校验和 (IPv4) 设置硬件加速TCP校验和 (IPv4) 选项说明 关闭关闭硬件加速TCP校验和(IPv4) Rx & Tx 开启启用硬件加速接收端及传输端TCP校验和(IPv4)(默认值) Rx 开启启用硬件加速接收端TCP校验和(IPv4) Tx 开启启用硬件加速传输端TCP校验和 (IPv4) 据说很多程序因为网卡校验和问题造成连接问题,关吧,话说校验还是cpu来吧,关。 TCP 硬件校验和 (IPv6) 设置硬件加速TCP校验和 (IPv6) 选项说明 关闭关闭硬件加速TCP校验和(IPv6) Rx & Tx 开启启用硬件加速接收端及传输端TCP校验和(IPv6)(默认值) Rx 开启启用硬件加速接收端TCP校验和(IPv6) Tx 开启启用硬件加速传输端TCP校验和(IPv6) 据说很多程序因为网卡校验和问题造成连接问题,关吧,话说校验还是cpu来吧,关。 传送缓冲区 设置传送缓冲区 选项范围 缓冲区大小1~128 (默认值:128) 最大 UDP 硬件校验和 (IPv4) 设置硬件加速UDP校验和 (IPv4) 选项说明 关闭关闭硬件加速UDP校验和(IPv4) Rx & Tx 开启启用硬件加速接收端及传输端UDP校验和(IPv4)(默认值) Rx 开启启用硬件加速接收端UDP校验和(IPv4) Tx 开启启用硬件加速传输端UDP校验和(IPv4) 据说很多程序因为网卡校验和问题造成连接问题,关吧,话说校验还是cpu来吧,关。 UDP 硬件校验和 (IPv6) 设置硬件加速UDP校验和 (IPv6) 选项说明 关闭关闭硬件加速UDP校验和(IPv6) Rx & Tx 开启启用硬件加速接收端及传输端UDP校验和(IPv6)(默认值) Rx 开启启用硬件加速接收端UDP校验和(IPv6) Tx 开启启用硬件加速传输端UDP校验和(IPv6)
      TCP 硬件校验和 (IPv4) 设置硬件加速TCP校验和 (IPv4) 选项说明关闭关闭硬件加速TCP校验和(IPv4)Rx & Tx 开启启用硬件加速接收端及传输端TCP校验和(IPv4)(默认值)Rx 开启启用硬件加速接收端TCP校验和(IPv4)Tx 开启启用硬件加速传输端TCP校验和 (IPv4) 据说很多程序因为网卡校验和问题造成连接问题,关吧,话说校验还是cpu来吧,关。
      tcp 硬件校验和ipv4选择关闭?

      本文由 在线网速测试 整理编辑,转载请注明出处。

          热门文章

          文章分类