软件工程

本类阅读TOP10

·PHP4 + MYSQL + APACHE 在 WIN 系统下的安装、配置
·Linux 入门常用命令(1)
·Linux 入门常用命令(2)
·使用 DCPROMO/FORCEREMOVAL 命令强制将 Active Directory 域控制器降级
·DirectShow学习(八): CBaseRender类及相应Pin类的源代码分析
·基于ICE方式SIP信令穿透Symmetric NAT技术研究
·Windows 2003网络负载均衡的实现
·一网打尽Win十四种系统故障解决方法
·数百种 Windows 软件的免费替代品列表
·收藏---行百里半九十

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
tcp/ip系列(一)

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

这是我在csdn blog 上写的第一篇文章,所以就从自己最喜欢的 tcp/ip 开始吧!

如何理解tcp/ip呢?
从我个人的理解看,应该是这样:

1:地址:软件地址,如ip地址;硬件地址,如MAC。
    地址在tcp/ip中的作用就像:小王要到小李家吃饭,小王要知道小李的家庭住址才能吃到饭啊是不是?在tcp/ip的最底端是“物理的”地址,硬件地址提供了最起码的通信基础;光有硬件地址是不够的,功能受限制。所以就有了与硬件地址对应(并非一一对应)的软件地址:ip地址。有了硬件和软件两个地址,通信功能就比较大了。在tcp/ip最下两层:链路层和ip层函数主要就是围绕如何处理地址间的关系展开的。

2:路由:路由其实更应该叫寻址。
   路由分链路层级(硬件地址),和ip层级(软件地址)。举个例子:当一个内网局域网的主机A要发送报文到外网C时,首先要寻找外网C的ip级路由,查询本机路由表(ip级),得知需要把报文发往内网的路由器B的ip后,根据ip查找路由器B的硬件地址,这时就用到了链路级路由,如果查询本机A(链路级)路由表未查到B的硬件地址的话,就会向本局域网发送一个ARP广播报文,路由器B收到ARP广播了,就会回复一个带有自己ip,mac地址数据的ARP回复报文,A收到回复报文后就会把B的ip,mac 都存入本机的路由表中。然后根据这个路由发送数据到B,由B转发到外网。

3:内存:内核级,应用级。tcp/ip是要为应用层的通信服务的。
    一:在一般情况下,一个应用程序在客户进程构造好自己的数据,然后通过一个内存处理函数,把数据拷贝到内核内存,这样数据报文就交给内核进程tcp/ip处理了,tcp/ip“从上至下”从传输层,ip层,链路层,逐层处理直至硬件发送出去。
   二:上面是一般的情况,如果不想走一般路线的话,可以在tcp/ip链路层加一个hook,从应用层把数据拷贝到内核,但是直接走链路层函数处理发送报文。sniffer就利用了这个原理。

 




相关文章

相关软件