当前位置: 技术问答>linux和unix
unp发送与接收的时间间隔问题以及接受后的数据包问题!
来源: 互联网 发布时间:2015-11-21
本文导语: 最近写了一个traceroute的程序,但是还有很多地方不明白,先来问两个最搞不懂的: 在程序中用sendto()发送一个UDP数据包,然后立刻又用recvfrom()接收一个数据包,在程序中这两个函数之间都没有设定什么时间间隔的函...
最近写了一个traceroute的程序,但是还有很多地方不明白,先来问两个最搞不懂的:
在程序中用sendto()发送一个UDP数据包,然后立刻又用recvfrom()接收一个数据包,在程序中这两个函数之间都没有设定什么时间间隔的函数,为什么在显示跟踪路由器的时间间隔的时候还能正确的显示跟踪的时间间隔的?难道是由UDP和ICMP协议来自动在这两个函数之间设置等待?
还有对于面向连接的TCP接受数据包时的时间间隔原理是不是一样?
recvfrom回复的数据包结构问题?
对于这样一个recvfrom(recvfd, recvBuf, sizeof(recvBuf), 0, (struct sockaddr *)&recvaddr, &len)函数:
到底回复几个数据包,怎么会一个数据包存到recvBuf中,而recvaddr中有会有IP地址结构的一个信息呢?还有recvBuf中的IP头存的到底是什么东西?
在程序中用sendto()发送一个UDP数据包,然后立刻又用recvfrom()接收一个数据包,在程序中这两个函数之间都没有设定什么时间间隔的函数,为什么在显示跟踪路由器的时间间隔的时候还能正确的显示跟踪的时间间隔的?难道是由UDP和ICMP协议来自动在这两个函数之间设置等待?
还有对于面向连接的TCP接受数据包时的时间间隔原理是不是一样?
recvfrom回复的数据包结构问题?
对于这样一个recvfrom(recvfd, recvBuf, sizeof(recvBuf), 0, (struct sockaddr *)&recvaddr, &len)函数:
到底回复几个数据包,怎么会一个数据包存到recvBuf中,而recvaddr中有会有IP地址结构的一个信息呢?还有recvBuf中的IP头存的到底是什么东西?
|
是协议栈做的。收到了数据包后,如何处理数据,是协议栈的自由:)
recvfrom只是一个协议栈接口,用来从协议栈获取收到的经过处理的数据包。
recvfrom只是一个协议栈接口,用来从协议栈获取收到的经过处理的数据包。