我正在使用原始套接字来创建我自己的套接字。我需要设置 tcp_checksum。
我尝试了很多引用资料,但都不起作用(我正在使用 wireshark 进行测试)。
你能帮帮我吗?
顺便说一句,我在某处读到如果你设置 tcp_checksum=0。然后硬件会自动为你计算校验和。这是真的?我试过了,但在 wireshark 中,tcp_checksum 给出的值为 0X000 并表示 tcp 卸载。我也阅读了有关 tcp 卸载的内容,但不明白,难道只是 wireshark 无法检查卸载的 tcp 校验和,但有一个正确的校验和吗??
编辑:我意识到如果将 tcpChecksum 设置为 0,则网卡将设置它而不是操作系统。我正在使用 wireshark 和虚拟机进行测试,所以这解释了为什么校验和为 0x000(因为数据包甚至没有传递到网卡。)
但我仍然对手动计算 tcp_checksum 感到好奇...有任何帮助或链接吗?
最佳答案
This article试图解释它是如何完成的。
另一个值得一看的地方是 Linux 内核源代码,从文件 net/ipv4/tcp__ipv4.c 开始。
关于tcp 校验和和 tcp 卸载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2497941/
我最近决定从我的系统中卸载RVM。在thispage提出的一些论点说服我:实际上,我的决定是,我根本不想担心Ruby的多个版本。我只想使用1.9.2-p290版本而不用担心其他任何事情。但是,当我在我的Mac上运行ruby--version时,它告诉我我的版本是1.8.7。我四处寻找如何简单地从我的Mac上卸载这个Ruby,但奇怪的是我没有找到任何东西。似乎唯一想卸载Ruby的人运行linux,而使用Mac的每个人都推荐RVM。如何从我的Mac上卸载Ruby1.8.7?我想升级到1.9.2-p290版本,并且我希望我的系统上只有一个版本。 最佳答案
我已经在mountainlion上成功安装了rbenv和rubybuild。运行rbenvinstall1.9.3-p392结束于:校验和不匹配:ruby-1.9.3-p392.tar.gz(文件已损坏)预期f689a7b61379f83cbbed3c7077d83859,得到1cfc2ff433dbe80f8ff1a9dba2fd5636它正在下载的文件看起来没问题,如果我使用curl手动下载文件,我会得到同样不正确的校验和。有没有人遇到过这个?他们是如何解决的? 最佳答案 tl:博士;使用浏览器从http://ftp.rub
root@li417-132:~#rvmpkginstallzlibFetchingzlib-1.2.7.tar.gzto/usr/local/rvm/archivesThereisnochecksumfor'http://prdownloads.sourceforge.net/libpng/zlib-1.2.7.tar.gz'or'zlib-1.2.7.tar.gz',it'snotpossibletovalidateit.Ifyouwishtocontinuewithunverifieddownloadadd'--verify-downloads1'afterthecommand.
gem串口(1.0.4)作者:GuillaumePierronnet、AlanStern、DanielE.Shipton、Tobin理查德、赫克托·帕拉、瑞安·C·佩恩首页:http://github.com/hparra/ruby-serialport/使用RS-232串行端口的库。我正在使用这个gem,我的设备规范如下。9600bps7位1个停止位偶数当我收到如下数据时,解压后的数据仍然带有奇偶校验位。sp=SerialPort.new("/dev/serial-device",9600,7,1,SerialPort::EVEN)data=sp.getsdata.chars.eac
TCP是面向连接的协议,连接的建立和释放是每一次面向连接的通信中必不可少的过程。TCP连接的管理就是使连接的建立和释放都能正常地进行。三次握手TCP连接的建立—三次握手建立TCP连接①若主机A中运行了一个客户进程,当它需要主机B的服务时,就发起TCP连接请求,并在所发送的分段中用SYN=1表示连接请求,并产生一个随机发送序号x,如果连接成功,A将以x作为其发送序号的初始值:seq=x。主机B收到A的连接请求报文,就完成了第一次握手。客户端发送SYN=1表示连接请求客户端发送一个随机发送序号x,如果连接成功,A将以x作为其发送序号的初始值:seq=x②主机B如果同意建立连接,则向主机A发送确认报
1.依赖导入org.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-starter-validation2.validation常用注解@Null被注释的元素必须为null@NotNull被注释的元素不能为null,可以为空字符串@AssertTrue被注释的元素必须为true@AssertFalse被注释的元素必须为false@Min(value)被注释的元素必须是一个数字,其值必须大于等于指定的最小值@Max(value)被注释的元素必须是一个数字,其值必须小于等于指定的最大值@D
我正在尝试使用mysql数据库启动和运行RoR,但这对我来说似乎是不可能的(包含mysqlgem时出现错误)。所以我尝试通过控制台做很多事情但没有结果,我不记得我做了什么。所以,我想删除所有内容并从cero重新开始。如何从我的Mac中删除RoR?谢谢! 最佳答案 获得基本RoR设置的最简单方法是使用Homebrew安装mysql和RVM来管理rails。如果您按照下面的说明进行操作,包括安装RVM,您就不必担心已经失败的ruby或rails安装,因为它们基本上会将所有内容安装在它自己的位置,然后将您的环境重新指向新的ruby
在Ruby中计算一个字节是奇校验还是偶校验的最佳方法是什么?我有一个可用的版本:result="AB".to_i(16).to_s(2).count('1').odd?=>true不过,将数字转换为字符串并计算“1”似乎是一种糟糕的计算奇偶校验的方法。有什么更好的方法吗?我希望能够计算3DESkey的奇偶校验。最终,我想将偶数字节转换为奇数。谢谢,丹 最佳答案 除非你拥有的速度不够快,否则请保留它。它清晰简洁,性能比您想象的要好。我们将根据数组查找对所有内容进行基准测试,这是我测试过的最快的方法:ODD_PARITY=[false,
奇怪...但这就是我得到的:$gemlist|greprvm>>rvm(1.11.3.3)$gemuninstallrvm>>INFO:gem"rvm"isnotinstalled这怎么可能?这个问题的根源可能源于我下载了最新的RVM并发现它不适用于最新版本的POW。因此我不得不内爆RVM并重新安装旧版本。从那时起,当我执行capdeploy时,我得到了经典的:`':RVM-Capistranointegrationwasextractedtoaseparategem,install:`geminstallrvm-capistrano`andremovethe`$LOAD_PATH.u
我正在运行Ubuntu10.04Lucid,我可能错误地卸载了RVM,现在它似乎没有从系统中完全删除。现在我想再次安装它,但我遇到了麻烦。当我尝试执行某些命令行时,会生成奇怪的输出:#Notethatfollowingcommandlinesdon'toutputtheversion#(betweentheword"version"andtheword"is")asitshouldbe.$rvm$rvm-v>-bash:/usr/local/rvm/scripts/base:Nosuchfileordirectory>ARVMversionisinstalledyet1.10.3isl