设为首页 加入收藏

TOP

Beej’s Guide Network to Programming 系列连载03
2014-11-24 00:12:02 来源: 作者: 【 】 浏览:15
Tags:Beej Guide Network Programming 系列 连载

2.2网络理论
既然我刚才提到了协议层,那么现在是讨论网络究竟如何工作和一些 关于 SOCK_DGRAM 包是如何建立的例子。当然,你也可以跳过这一段,如果你认为已经熟悉的话。

\

现在是学习数据封装(Data Encapsulation) 的时候了!它非常非常重 要。它重要性重要到你在网络课程学习中无论如何也得也得掌握它。主要 的内容是:一个包,先是被第一个协议(在这里是TFTP )在它的报头(也许 是报尾)包装(“封装”),然后,整个数据(包括 TFTP 头)被另外一个协议 (在这里是 UDP )封装,然后下一个(IP ),一直重复下去,直到硬件(物理) 层( 这里是以太网 )。

当另外一台机器接收到包,硬件先剥去以太网头,内核剥去IP和UDP 头,TFTP程序再剥去TFTP头,最后得到数据。

现在我们终于讲到声名狼藉的网络分层模型 (Layered Network Model)。这种网络模型在描述网络系统上相对其它模型有很多优点。例如, 你可以写一个套接字程序而不用关心数据的物理传输(串行口,以太网,连 接单元接口 (AUI) 还是其它介质),因为底层的程序会为你处理它们。实际 的网络硬件和拓扑对于程序员来说是透明的。

不说其它废话了,我现在列出整个层次模型。如果你要参加网络考试,可一定要记住:

l 表示层

l 会话层

l 传输层

l 网路层

l 数据链路层

l 物理层

物理层是硬件(串口,以太网等等)。应用层是和硬件层相隔最远的--它 是用户和网络交互的地方。

这个模型如此通用,如果你想,你可以把它作为维护指南。把它对应到 Unix,结果是:

l 应用层(telnet,ftp,etc.)

l 主机到主机传输层(TCP,UDP)

l 网际层(IP路由)

l 网路访问层(以太网,wi-fi,以及任何)

现在,你可能看到这些层次如何协调来封装原始的数据了。

看看建立一个简单的数据包有多少工作?哎呀,你将不得不使用 "cat" 来建立数据包头!这仅仅是个玩笑。对于流式套接字你要作的是 send() 发 送数据。对于数据报式套接字,你按照你选择的方式封装数据然后使用 sendto()。内核将为你建立传输层和Internet 层,硬件完成网络访问层。 这就是现代科技。

现在结束我们的网络理论速成班。哦,忘记告诉你关于路由的事情了。 但是我不准备谈它,如果你真的关心,那么参考 IP RFC。

摘自 xiaobin_HLJ80的专栏

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇获取本机IP地址 2011.12.21 下一篇Beej’s Guide Network to Progra..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: