`
luliangok
  • 浏览: 816520 次
文章分类
社区版块
存档分类
最新评论

Beej’s Guide Network to Programming 系列连载03

 
阅读更多

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。


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics