网络编程-网络分层的意义

网络
  • 我们生活在一个网络无处不在的一个虚拟世界中,网络中的每一个设备都是一个节点。大多是我们的计算机,但是他还可以连接其他设备,例如打印机,路由器,网关,你的手机,智能家居等。我们可以使用java与计算机交互,每个网络节点都有自己的地址,这是唯一识别节点的一个字节序列。
  • 不同网络的地址信息会以不同方式分配,以太网(Ethernet)地址与物理以太网硬件相关。在硬件生产的时候,厂家就需要确保硬件地址与其他厂家的硬件地址不冲突。不过一个组织运行选择的地址由改组织的internet服务供应商ISP分配,ISP从四个区域Internet注册机构之一获得IP地址,而这四个机构的IP地址由互联网名称与数学地址分配机构分配,这其实就是IP地址。
网络分层
  • 通过网络发送数据指令是一个比较复杂的过程,我们发送出去的指令需要转成电信号,或者wifi,或者光纤中光信号,传输,之后还得在转回成我们发送出去的指令信息。这个过程必须咨询协调网络的物理特性以及所发送数据的逻辑特征。通过网络发送数据的软件必须了解如何避免数据包的冲突,将数字数据转为模拟信号,检查和修正错误,将数据包从一台主机路由到另外一台主机等。
  • 为了对应用开发人员和最终用户屏蔽这种复杂性,网络通信的不同方面被分解为多个层,每一层标识为物理硬件(即线缆和电流)与传输信息之间的不同抽象层次(相当于将字节信息与电信号光信号转换),每一层都只与紧挨着的上下层进行数据交互。将网络分层,这样就可以修改,替换某一层的软件,只要层与层之间的接口保持不变,就不会影响其他层。
  • 以下图显示网络中可能存在的一些协议栈。虽然现在的Internet上中间层现已相当稳定,但是上层,下层的协议变化还是比较大的,邮箱主机用Ethernet,有些是Wifi等,但是这并不影响其他层协议,因为他们都按规范实现统一的接口,每层都按规范实现,完成数据上的交互,这样分层模型实现了应用协议与网络硬件的物理特征,以及网络连接拓扑结构的解耦。

在这里插入图片描述

  • 分层模型还是有多种的,分别适合特定类型的网络,我们用最典型的Internet标准TCP/IP四层模型来讲解。如下图。
    在这里插入图片描述

  • 上图模型中,应用程序例如Chrom,FireFox,运行在应用层,只与传输层进行交互。传输层只与应用层,网际层交互,网际层只与主机网络层,传输层交互,绝不会跨层级交互。主机网络层通过电缆,光纤或者其他媒介将数据移动到远程系统的主机网络层,然后在通过上述各层将数据逐级上移传输到远程系统的应用层。

  • 拿Chrom浏览器来举例

    • 当浏览器输入网址,向Web服务器发送获取网页的请求时候,浏览器实际上只是与本地客户机器的传输层在对话。

    • 传输层将请求分解为TCP片,向数据添加序列号和校验号,然后将请求传递给本地网际层

    • 网际层根据本地网络所需的大小将TCP片分成IP数据报,并床底到主机网络层以便通过线缆或光线传输数据

    • 主机网络层将数字数据编码为适合特定物理介质的模拟信号(光,电)将请求发送到线缆,光纤,

    • 目标地址的远程系统的主机网络层可以由此读取请求。

    • 远程系统的主机网络层将模拟信号解码为数字数据,将生产的IO数据报床底给服务器的网际层

    • 网际层简单的检查IP数据报是否被破坏,如果已经分片则重组数据,然后传递给服务器传输层

    • 传输层检查是否所有数据都已到达,对于丢失或者破坏的部分则要求重传(在来一次以上过程,对应用层透明),此时当传输层接收到足够多的链接顺序数据报,就将其重组写入一个流,由服务器应用层上运行的Web服务器读取,

    • 服务器响应这个请求,在通过服务器系统的各个分层发回消息,通过Internet进行传输并发给web客户端。

主机网络层
  • 主机网络层处在最高的位置,他离java程序员最远的一个层级,在基于IP的internet标准参考模型中,网络中隐藏不是属于主机网络层(也称为数据链路层),主机网络层定义了特定的网络接口(以太网,WIFI等)如何通过物理连接向本地网络或者时间其他地方发送IP数据报,他由连接不同计算机的硬件(光纤,电缆,无线电)组成的部分有时称为网络的物理层,开发人员无需担心这一层除非网线断了,对开发人员透明。
网际层
  • 网络的下一次,这是开发需要考虑的第一层,在OSI模型中,网际层还称为网络层,定义了数据位和字节如何组织成为更大的分组,叫他包,还定义了寻址机制,不同计算机按照固定算法去查找对方。网际协议(IP)就是现在使用最广泛的网络层协议,也是java唯一理解的网络层协议。这个协议是两个:
    • IPV4,使用32位地址
    • IPV6,使用128位地址
  • IPV4,IPV6中,数据按包在网际层传输,这些包称为数据报datagram。每个IPV4数据报包含一个长度20~60字节的首部,以及一个包含65515字节的数据的有效荷载(payload)。实际上每个IPV4都比较小,从几十字节到8K字节不等,IPV6则包含更大的首部,数据可以达到4G字节
  • 下图展示各个部分IPV4数据报中是如何排列的,所有位和字节都采用big-endian方式,由左到右为高位到低位:
    在这里插入图片描述
  • 网际层除了路由与寻址,网际层第二个左右是支持不同类型主机网络层互相对话。Internet路由器会完成WIRI和Ethernet, Ethernet和DSL, DSL和光纤往返等协议直接的转换,如果没有网际层,或者类似的分层,子每个计算机只能与同一类网络上的其他计算机对话。
  • 网际层负责使用同构协议将异构网络相互连接
传输层
  • 因为原始数据报有一定缺陷。比如不保证可靠创术,即使能传送也可能被破坏。首部校验只能检测首部的破坏情况,而不能检测数据报中的数据部分。最后即使数据能够到大,不被破坏,也不一定是按照我们预定的顺序到大。各个数据报进过的路由过程完全不一样的,即使先发送也不一定先到。
  • 传输层(transport layer)负责确保各个包以发送顺序接受,并保证没有数据丢失或者被破坏,如果丢包,传输层请求重发。为实现这个目标,IP网络会给每个数据报添加一个附加首部,其中包含有更多信息。这一层协议有两个:
    • 传输控制协议(Transmission Control Protocol TCP),这个是一个开销高的协议,支持对丢失或者破坏的数据进行重传,并且按照发送的顺序进行传送
    • 用户数据报协议(User Datagram Protocol, UDP),允许接收方检测被破坏的包,但不保证这些包以正确的顺序床送(或者包有可能更本没有传送)
  • UDP比TCP快,TCP称为可靠的协议,UDP不可靠协议。
应用层
  • 这个才是程序员关注的关键部分,向用户传送数据的层称为应用层(application layer)。他下面的三层共同定义了数据如何从一台机器到另外一台机器。应用层确定了数据传输后的操作。例如,我们应用层协议HTTP可以确保Web浏览器将图像显示为图片,而不是一堆二进制数据。程序中有关网络的部分大多都是在应用层来实现的。应用层还有其他很多协议,主要取决于应用层具体作用:
    • 用于web的HTTP
    • 用于电子邮件的SMTP,POP,IMAP
    • 用于文件传输FTP,FSP, TFTP
    • 用于文件访问的NFS
HTTP,IP, TCP, UDP

下一篇 网络编程-TCP/IP协议栈

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值