2.2 网络理论

原文:https://beej.us/guide/bgnet/html/#lowlevel

 

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值