章节一:网络的分层模型

1 协议

在了解网络的分层之前,先了解一下网络协议。首先我们应该思考一下为什么需要协议?我们可以类比成人的活动,当两个人A和B通过手机进行通讯时,当电话接通时,A可能会先说“你好”(或者询问是xxx吗),当B听到A的询问后,响应的会回答一个“你好”(或者说是的),当两人A和B确认完双方均可接受到信息时,进行正式的谈话内容,通过这种方式,提高了通话的效率,设想一下,加入A和B没有这样的确认沟通,A在接通电话后直接阐述自己的信息而确认B是否可以收到信息,很明显,这样的通过效率是极低的。类似的,计算机网络中也大量的使用了协议,如大家熟知的TCP协议,该协议在通信前会进行三次握手,如下:
TCP的三次握手
TCP提供了全双工的可靠连接,TCP的三次握手就像上面的打电话例子,在数据发送全确保了客户端与服务端均正常可接受和发送数据。

计算机网络中使用大量的协议,不同的协议完成不同的任务,如HTTP协议规定了Web数据传输的规范约束,有了协议的规范约束,那么实现就依靠于单一的实现方式了,如Java,PHP均可实现Web服务器,只要其使用HTTP协议规范即可。

2 协议的分层

仍然以上面的打电话例子来讲,当A和B需要进行通话时,只需要拨通对方的手机号码即可,而不需要关心手机是如何拨通以及说话的信息是如何传送的,设想一下,如两个人需要通话时,需要制造一个手机同时搭建通信网络,无疑效率是及低的,类似的计算机网络也是使用了分层,首先来说一下协议的分层。

在我们开发中,当你使用Java编写一个Web服务时,你只需要遵循HTTP协议即可,与其他主机上进程通讯时可以使用Socket套接字,就可实现可靠性传输,你不需要关注TCP协议是如何将数据可靠的传输到目的主机进程的,而TCP协议则只需要调用其底层提供的接口,而不需要关注其底层的实现。通过将协议分层,而上层只需要调用下层提供的接口而不关注实现,从而将各个层的实现接口,只需通过就进行交互。协议的分层将每层的具体的实现抽离开来,从而实现了计算机的网络各层实现的可扩展性,就像链路层至需要调用物理层的接口,而不需要关注其使用的网络传输介质是光纤还是无线。

3 网络的分层

在上面了解了协议的分层,我们再来讨论网络的分层,网络的分层其实就是协议的分层,各层的所有协议组成当前层的协议栈。网络的分层由5个层次组成:物理层、链路层、网络层、运输层和应用层。如下:
网络分层

  • 应用层

应用层是网络应用程序及他们的应用层协议存留的地方。如:HTTP、SMTP、FTP及DNS等。这种的数据我们称之为报文。

  • 运输层

运输层在应用程序端点之间传送应用层的报文。运输存的数据分组我们称之为报文段。首先来讨论下为什么需要运输层?我的理解有两点:

  1. 提供进程与进程之前的数据交互,我们知道每个主机标志自己的位置是使用IP地址,那么当两个主机之前进行通讯时,数据由一个主机传输到另一个主机,但是每个主机上可以运行多个进程,那么传输的数据是如何分发给指定的进行呢?就是通过运输层,运输层通过解析报文端获取目的端口,从而将数据分发给与指定端口绑定的进程。
  2. 数据在网络中传输会发生丢失、乱序以及比特位差错等情况,那么就需要运行层提供数据 的可靠传输,如运输层的TCP协议。

运输层协议中有两种运输协议:TCP和UDP,TCP提供了全双工的面向连接的服务,这种服务保证了应用的层的数据可以有序的、无差错的发送到接收方,同时也提供了流量控制、拥塞控制等服务,而UDP不提供这些服务,他是无连接的,没有可靠性、流程控制及拥塞控制等服务的。

  • 网络层

网络层发送的数据为数据报,该层的协议栈包括IP协议,通过IP协议将运输层的数发送到指定IP地址的主机。

  • 链路层

联络层发送的数据分组我们称之为帧,链路层的存在就是将上层的网络层与底层的物理实现解耦脱离,因为底层的网络数据发送实现不同,如光纤、双铜绞线等,所以提供链路层将物理层与网络层隔离,网络层只需与链路层进行数据的交换即可。

  • 物理层

物理层就是将链路层中帧数据发送到网络中,其是将数据的一比特一比特发送的。

接下来从应用层的HTTP来学习网络中常见的各个协议及原理。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值