网络通信原理

网络通信原理教程

相信在很多生活环境中,你每天打开电脑会打开浏览器,输入网址,然后浏览网页。也会使用手机打开某个 app 浏览信息。在你浏览网页或者新闻的时候,它的背后做了一些什么事情呢?其实你访问到网络上的这些信息就是计算机与计算机之间信息的互换,通过网络协议,将一大片的机器连接起来,相互协作,共同完成一件事情。

网络协议

网络协议是指通信计算机双方必须共同遵从的一组约定。比如怎么建立连接,怎么样互相识别等等。只有遵守了这样的约定,计算机与计算机之间才能够相互通信交流,才能够传递信息。

协议三要素

语法:内容要符合一定的规则和格式。比如内容里面的一些特殊符号要成对出现的,括号有开头就要有结尾。

语义:内容要代表某种意义。比如数字与数字之间的加减乘除,而不是数字与文本之间的加减乘除。

顺序:内容要完成一件事情的顺序的详细说明。比如指明先干什么后干什么。

协议分层

网络的传输是一个很复杂的过程,如果将所有的操作都放在一个地方执行是可以的,但是由于处理太复杂,如果使用分层,就可以使各个层次分工明确,使得各个层级处理自己需要关心的东西。国际标准化组织(ISO)为了规范协议层次的划分制定了开发系统互联(OSI,Open Systems Interconnection)模型,即 ISO/OSI 参考模型。此模型根据网络功能制定出7层网络协议结构,由低到高分别为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。

物理层

物理层协议对与基本物理信号传输有关的机械、电气等功能进行描述。若生产相互连接的两个设备的两个厂商都遵循相同物理层规范,则二者必定能被连接在一起,并能接收对方发来的电、光或其他的物理信号,而且能正确地将这些物理信号理解为二进制的 0 和 1 序列。物理层只负责正确地接收和发送比特,并不关心这些比特的具体含义。

数据链路层

数据链路层简称链路层,它依赖物理层提供的比特传输能力把数据组织成为有边界的传输单位,称为“帧”。链路层把来自网络层的数据组织成“帧”,然后再通过物理层向外发送。当然,链路层也要负责从来自物理层的比特序列(或者字节序列)中区分出一个个的帧,并将帧中的数据传递给网络层。为了将各个帧区分开来,需要在帧的头部和尾部附加一些特点的信息,这个过程称为“封装”,其相反的过程称为“解封装”。“封装”的概念不只在链路层中存在,在更高的各层协议中同样存在。所有层上的“封装”问题的共同特征是把来自高层的封装单位根据本层的需要附加上特定信息形成本层的封装单位,然后向低层传递,同时把来自低层的数据解封装后向高层传递。另外,链路层还可以有其他的诸如差错校验、流量控制等功能,但要理解整个协议体系,则首先应记住它和帧之间的密切关系,因为帧使无头无尾的比特序列变成容易控制的有界单位。

网络层

网络层解决如何标识通信各方和数据如何从源到达目的这个问题。网络层用特定的网络层地址来标识整个网络中的一个节点,并负责使来自传输层的应该到达某个网络层地址的数据能够被送达这个网络层地址所对应的网络节点。网络层的封装单位称为“包”,“包”需要被进一步封装成链路层的帧然后才能通过物理层发送出去,而在接收方,包在链路层的帧中被解封装出来。最典型的的网络层协议就是在Internet 中使用的 IP 协议,它使用 IP 地址唯一地标识 Internet 中的一台主机,路由设备根据 IP 包中的目的 IP 地址将 IP 包一步步转发至目的主机。

传输层

依赖物理层、数据链路层和网络层,任意一个网络节点都能把任何信息传递到其他任意节点,而传输层在物理层、数据链路层和网络层提供的节点间的通信能力基础上进一步提供了面向应用的服务。传输层向上层提供屏蔽了传输细节的数据传输服务,将来自高层的数据进行分段并将来自低层的数据重组,对数据传输进行差错恢复和流量控制。通过对每个网络节点的多个进程进行标识,传输层可以实现对网络层的多路复用。我们平时了解到的 TCP/UDP 就在这一层体现。

会话层

会话层用于建立和管理不同主机的两个进程之间的对话。会话层可以管理对话,可允许对话在两个方向上同时进行,也可以强制对话同时只在一个方向上进行。在后一种情况下,会话层可以提供会话令牌来控制某时刻哪一方可以发生数据。会话层还可以提供同步服务,它可以在数据流中插入同步点,每当因网络出现故障而造成大量数据传输中断时,通过同步点机制可以使两个进程之间的数据传输不需要从头开始,而是从最后一个同步点开始继续传输。

表示层

表示层协议规定对来自应用层的数据如何进行表达,例如采用什么样的文字编码、是否及如何进行压缩、是否及如何加密等。

应用层

应用层是 ISO/OSI 模型中最靠近用户的一层,应用层协议直接面对用户的需求,例如与发送邮件相关的应用层协议可以规定诸如邮件地址的格式、邮件内容的段落表示、客户与服务器进行交互的命令串等。我们平时了解到的各个应用层协议:HTTP、FTP、SMTP、POP3 等等,就在这一层体现。

网络通信总结

网络通信是一个很复杂的过程,它的核心是网络通信协议。本章节总体的将网络通信这边大体的介绍了一下。想要很好的学习网络通信,我们可以到 嗨客网 专门栏目里面学习。当然在后面学习 netty 的过程中,网络通信的了解对深入学习 netty 是有很大帮助的。