计算机系统014 - 协议层级

对于开发人员而言,从复杂的问题中找寻规律是基本的能力,亦如抽象。若是单一抽象仍不能较好诠释问题,那还能够从分层的角度来定义问题。分层能使咱们暂时从最旁枝末节的点抽身出来,拥有更高的视野,视其全貌。网络环境复杂度不言而喻,因此分层也就成了公认选择。浏览器

1. 协议层级

协议模型

上图中两种分层方式,左边的五层结构能够当作是实践派的作法,右边的七层结构能够堪称是学术派的研究。不谈优劣,只谈适应不适应。目前主流使用的是五层结构,由于它更加适应于具体开发过程。毕竟分层是为了解耦,解耦必然带来性能下降及复杂度增长,因此取个权衡值才是最实在的。网络

那么对左边封层方式,逐层简要介绍以下:工具

1.1 Application 应用层

顾名思义,主要由应用、以及应用之间通讯协议构成。典型应用有浏览器、邮件、文件服务等,与之对应的则分别是HTTP、SMTP、FTP等协议。该层主要有以下两个要素:性能

  • 访问形式: 域名,如 www.baidu.com
  • 信息单元: message,或称为消息

1.1.1 Domain name system(DNS)

前文中提到过,每一个可联网设备在网络中真正惟一的标识符是其网卡上的MAC地址,其余的只是为了便于访问而存在的高可读性字段。相似于中国公民,其身份证号码在国境内是惟一的,但数字可读性差,因此还须要创建起姓名等映射关系便于访问。一样的,域名至关于真正要访问MAC地址的高可读性映射,只是绑定关系让其变得有意义。而创建这种绑定关系的,就是域名系统DNS。测试

DNS中域名对应的直接映射并不是MAC地址,而是一串称为IP地址的数字。cdn

DNS

IP Address

茫茫人海,只知道身份证号码和姓名来找一我的是十分低效甚至没法达成的,这时候,逐层的具体地址就派上了大用场。一样的,为了更便捷有效地管理网络上各式各样数量巨大的联网设备,IP协议按相似省市县的分层形式制订了子网系统。blog

以IPv4(Version 4)为例,每一个IP地址共32位,除去不一样类型起始码,其他主要由网络号和主机号构成,对应“A省B市”的结构:进程

IP Address

1.1.2 Port端口

一般应用是以进程的形式存在,单个主机上会有多个进程同时运行。IP地址虽然标示了当前主机号,但还不能标示到具体进程。所以不一样主机上的进程如需通信,还必须经过额外字段标明进程,这个字段就是Port端口。ip

Port是一个16位数字,一般和IP地址同时使用。随着互联网的发展,部分Port(0~1024)已被某些知名服务占用,如80/8080等。经过测试某些端口是否有响应,便可测试对应服务是否存在。内存

1.2 Transport 传输层

传输层负责在应用间传递message,即服务于应用层。与应用层两要素相比,不一样之处在于:

  • 访问形式:端口,8080
  • 信息单元:segment

既然是在应用间传递信息,就必然要标明应用自己。而在一个host上,port是绑定到进程的,所以只须要经过port口进行标注便可。主流传输协议有TCP和UDP两种,具体将在单独章节介绍。

1.3 Network 网络层

网络层负责在主机间移动segment,即服务于传输层。与传输层两要素相比,不一样之处在于:

  • 访问形式:IP地址,如 192.168.128.10
  • 信息单元:datagram

由于是在主机间传递信息,那么天然标识符也只须要精确到IP自己便可。从硬件上讲,一个主机一般一至多个网卡,各自有不一样IP地址,但均和主机自己绑定。网络层送出的信息中指明对端IP,传入的信息中也可拆分出具体Port,随后传送到具体应用解析便可。

1.4 Link 链路层

前文提到,主机间的链路可能须要多个结点(如Switch、Router甚至ISP)的参与,要想把一条datagram成功送达对端主机,也绝非易事,所以专门分出一个链路层来完成链路的造成、维护、断开等工做。链路层服务于网络层,要素区别在于:

  • 访问形式:IP地址,如192.168.128.10
  • 信息单元:frame

注意到这里的信息单元并不是datagram,也就是说,链路层的信息与datagram除去header,其实还有可能内容自己也不相同。由于链路由不一样有形无形的硬件链路构成,每一段链路的传输率、最大传输单元MTU等也各自不一样,全部大于链路最大传输单元的datagram要想顺利传输,就必须切分红合适的frame,传输完成后,再从新组装。

有人可能会问,一直说MAC地址是惟一标识,怎么到了链路层还没用上,别急,这就来了。

1.4.1 MAC Address

MAC地址是由网卡生产商生产时固化进网卡的,为保证其惟一性,MAC地址中有一段是不一样生产商申请到的代号。

MAC

上一篇中提到一个设备,叫作Switch交换机,也叫网桥,是MAC地址的集成器。要记住,IP地址是人为地为设备分配一个标识符,以便区隔管理,典型的如DHCP动态内存分配就印证了这个道理。所以网络中必定存在一张IP地址和MAC地址的映射表,从而使得信息可以真正抵达对应的网卡。而一般,这个任务就交给了交换机。

1.5 Physical 物理层

物理层是最基础的一层,它的职责只须要负责无缺地传输每个bit便可。有了链路层精肯定位到的两个MAC主机,剩下的就交给硬件材料、协议等来完成了。如前所述,不会过多关注到底层的硬件细枝,所以若有兴趣,可自行拓展阅读

2. packet封装

前半部分对网络中各个职能划分了层级,为了更加形象地展开剩下的packet封装内容,要先讲个快递的通用流程。

快递相信大部分人都收过,贡献我本身的一张,并大体分层以下:

  • 应用层

    卖家将货物装箱,贴上快递单,上写发货人、收货人地址等联系方式。

    对应的Message一样封装好内容后,即送出。

  • 传输层

    分公司收到封装好的包裹,按照地址,查询下一站,并送出至相应分拨中心。

    对应的Segment中包含源和目的IP:Port,及其余如称重等辅助校验信息。

  • 网络层

    分拨中心则负责决策将货物送往另外一分拨中心,这一层偏向寻找递送的最优途径。

    网络层对应的一样是为了给datagram找寻到送达的最优途径,最优一般意味着最快,但不意味着所通过的路径自己最短。

  • 链路层

    肯定具体对接分拨中心后,将进一步肯定使用何种交通工具送达,并重组货物结构(如集装箱化)以便于运输。

    在网络层中肯定路径后,链路层将负责重组收到的全部datagram,以便适应不一样链路的最大传输单元大小。

  • 物理层

    肯定交通工具后,交给货运负责人员便可。

Packet

3. 小结

归根结底,各层协议的定义只是为了更好地完成层级化后的本职工做,生活中也同样,能真正地干好本身的本职工做,其实自己就是对别人最大的尊重。固然也必须清晰地意识到,每一次层级的增多,再带来更大兼容性的同时,每每意味着更大的沟通成本,如应用层对端可能只但愿传输一个字符,实际上却须要传输一堆额外的各层头信息。

相关文章
相关标签/搜索