现在的位置: 首页 > 综合 > 正文

数据包的游走

2013年04月28日 ⁄ 综合 ⁄ 共 746字 ⁄ 字号 评论关闭

    数据包在网络的游走: 先从本地的路由开始找起,数据包到达路由时,路由会先对数据包进行解剖,然后通过其目的ip选择其在网络上的最优路径(这也就是所谓的路由功能了)。当其选择了所谓的最优路径之后,数据包同样也会产生相应的变化。一个数据包的结构中目的ip与源ip载整个传输过程中是不会改变的。但是其每当经过一个路由节点时数据包中的源mac与目的mac则会发生改变。打一个比方,我现在本机想google发送一个访问请求时,数据包先发送给本地路由,路由先是做一些基本判断(例如是否在同一个网段,那就不必要在网络上走那些多余的节点了)。判断完成后路由则开始修改数据包了,将数据包中的源mac地址改成路由的mac地址,而目的mac地址则是通过路由所选择的最佳路径(通过路由表)的下一个节点的mac地址。这样一层一层的传递下去,知道访问到最后一个路由。在局域网内,这个数据包停留在路由上,然而接下来的步骤我有点不明白了。路由是直接对数据包解剖
获取其目的ip 然后对局域网发送一个arp请求 ,获取其mac地址,再把将数据包进行修改,最后发送到目的ip用户。

    之前的一段时间看iptables,发现大多数的pc的默认tables都是对tcp,udp,icmp这几个网络层的数据包进行过滤,我开始奇怪,那http等其他协议的数据包为什么不加以过滤。经过网上的资料查找,了解了一下数据包的封装,其流程如图的

举个例子:用户在浏览网页时候应用层先整理数据,然后一层一层往下传递,没经过一层都会在他的包头加东西,直到最后一层物理层,然后发送数据包,而数据包在网络中路由的时候达到某个节点的时候又是逆向上述过程然后就是对数据包中的数据进行分析(就如开始所说的)。然后再往下走,再发送!

个人还太菜,如果错误,望大神指点。

抱歉!评论已关闭.