2012-11-17 35 views
1

现在我正在编写一个使用原始TCP套接字的程序。如果有任何传入数据包的TCP校验和不正确,内核会将它们传递给程序还是丢弃它们?我想知道的原因是找出是否需要手动进行检查。如果我在Linux上使用原始套接字,内核会丢弃具有错误TCP校验和的传入数据包吗?

+0

,你为什么和原始套接字搞乱? – tjameson

+0

那么你是自己处理TCP还是你让api/kernel处理tcp? –

+0

@tjameson:是的,我正在使用原始套接字。是的,我有一个理由。不,让内核为我处理整个过程将不起作用(或者至少会让它更难)。我正在做一些与众不同的事情。不要担心---目前这不是“真正的工作”,所以我不打算推​​迟一个重大项目。 – yakiv

回答

2

由于您正在编写TCP本身(使用“IP”套接字/层)将不得不处理TCP校验和。下面的任何图层或任何校验和将由底层操作系统处理。

随着TCP/IP协议栈你有(从下到上的顺序)

链接

互联网< - 插座这里任何这里将在下面进行处理。基本上你说我正在编写我自己的传输协议,它恰好是TCP。

交通运输< - TCP这里

应用

+0

这没什么乐趣。谢谢,不过。 – yakiv

+0

@yakiv这就是为什么你需要在应用层(TCP上方)工作:)。 - 我知道你有这个理由,所以这就是你使用它的原因。 –

相关问题