现在我正在编写一个使用原始TCP套接字的程序。如果有任何传入数据包的TCP校验和不正确,内核会将它们传递给程序还是丢弃它们?我想知道的原因是找出是否需要手动进行检查。如果我在Linux上使用原始套接字,内核会丢弃具有错误TCP校验和的传入数据包吗?
1
A
回答
2
由于您正在编写TCP本身(使用“IP”套接字/层)将不得不处理TCP校验和。下面的任何图层或任何校验和将由底层操作系统处理。
随着TCP/IP协议栈你有(从下到上的顺序)
链接
互联网< - 插座这里任何这里将在下面进行处理。基本上你说我正在编写我自己的传输协议,它恰好是TCP。
交通运输< - TCP这里
应用
+0
这没什么乐趣。谢谢,不过。 – yakiv
+0
@yakiv这就是为什么你需要在应用层(TCP上方)工作:)。 - 我知道你有这个理由,所以这就是你使用它的原因。 –
相关问题
- 1. TCP套接字开始丢弃在Java
- 2. 当使用原始套接字进行TCP通信时,请保持内核不接收传入数据包
- 3. 为什么原始套接字更改了我的tcp校验和
- 4. Linux内核TCP套接字修改
- 5. 使用原始套接字捕获传入和传出数据包
- 6. C#在新创建的套接字上丢弃UDP数据包
- 7. AS3 TCP套接字丢包
- 8. 计算的tcp校验和与原始的tcp校验和不匹配
- 9. 分片数据包的TCP校验和错误
- 10. Linux丢弃UDP数据包
- 11. 如何在内核模式驱动程序中使用Winsock内核(WSK)发送原始套接字数据包?
- 12. 我可以使用Linux中的原始套接字创建一个侦听TCP套接字吗?
- 13. 在原始linux套接字上接收来自任何协议的数据包
- 14. linux原始套接字 - 接收定制数据包
- 15. 如果数据使用校验和TCP,ftp协议怎么会产生传输错误?
- 16. Blueimp上传 - 丢弃原始文件
- 17. 模拟在Linux上丢弃的数据包,根据协议(UDP,TCP等)
- 18. 使用原始套接字没有检测到UDP数据包
- 19. 的Tcp原始数据包
- 20. 忽略Linux TCP套接字上的传入字节
- 21. 在Linux中使用原始套接字进行数据包嗅探C
- 22. 在Linux上使用C的原始套接字sendto失败
- 23. 如何在使用套接字限制下载速度时丢弃数据包?
- 24. sendto()“无效参数”错误在Linux上的原始udp套接字
- 25. Java套接字和丢弃的连接
- 26. 错误的TCP校验和计算Scapy
- 27. 可以使用tun/tap和原始套接字创建“TCP数据包修改器”吗?
- 28. TCP上的校验和
- 29. 在Linux原始套接字中接收完整修改的icmp数据包
- 30. 测量各个TCP连接丢弃的数据包数量
,你为什么和原始套接字搞乱? – tjameson
那么你是自己处理TCP还是你让api/kernel处理tcp? –
@tjameson:是的,我正在使用原始套接字。是的,我有一个理由。不,让内核为我处理整个过程将不起作用(或者至少会让它更难)。我正在做一些与众不同的事情。不要担心---目前这不是“真正的工作”,所以我不打算推迟一个重大项目。 – yakiv