博主:爱码叔
个人博客站点: icodebook
公众号:漫话软件设计
专注于软件设计与架构、技术管理。擅长用通俗易懂的语言讲解技术。对技术管理工作有自己的一定见解。文章会第一时间首发在个站上,欢迎大家关注访问!
本文个站链接
初接触计算机网络,不理解为什么有这么多层。发个信息不是很简单的事情吗?
就像寄信,扔到邮筒里,邮递员投递到收信人邮箱。这个过程很简单啊,为什么计算机发个信息这么麻烦?
寄信过程看似简单,其实和计算机发送信息的底层原理是一样的。计算机网络传输要做的事情,现实中寄信也一样不少。
下面我们就通过寄信这个例子来理解计算机网络。
计算机网络有5层、7层模型。模型中的每层又有不同种类的协议。在进入例子前,我们先看看什么是分层和协议。
分层是为了在逻辑上划分职责,确保每一层职责单一,这对于开发同学很容易理解。反过来我们也可以从职责找对应的层。一会我们尝试在寄信例子中找找计算机网络中对应的层。
我们再看看什么是协议。
词典解释:经过谈判、协商而制定的共同承认、共同遵守的文件。
简单说就是双方达成一致,需要一同遵守的规则。
通信协议可以理解为通信双方达成一致的规则,以确保一方能把信息发出,另一方能接收并且读懂。
特别注意这里的信息并不单单指信的内容。信息也指信封上的地址、邮编等内容。
书信的内容是最重要的信息。书信内容基于约定格式书写,书信格式是信件内容的协议。现实中书信有标准格式,如下图:
书信如果没有按照上面格式书写,其实并不妨碍阅读。但是计算机只能机械的根据约定格式解析信息,所以格式对于计算机传输信息非常重要。
此处对应网络的应用层协议。确保你发给我的信息是约定好的格式,以便我能解析并读懂。
寄信人需要在信封上填写收信人地址和邮编信息。邮递员根据这些信息找到收件人信箱,完成投递。
这里的协议是地址书写规则以及邮编的规范。不按照约定写地址或者胡乱写邮编,信件是要被退回的。
此处对应网络的网络层协议。确保信息被发送到指定的IP的电脑。每一台电脑就好比上图中有唯一编号的邮箱。
信件并不是一次运输就能发送到收件人手中。邮递员取信后进行分拣,根据规则发往某个邮政网点。信件还会继续在邮政网点中根据规则流动。运送到离收信地址最近的网点后,邮递员投递到收件人邮箱。
这里的协议是信件在网点中流动与接收的规则。
此处对应网络的数据链路层协议。除了上面例子所说的让信息在网络节点中流动,还定义了如下规则:
上面说了这么多,其实玩的都是虚的, 拔了网线啥也不是…
如果没有通往收信人的路,前面的工作都是瞎忙。最底层支撑送信的是道路。道路将一个个邮政网点以及寄、收信人地址串连起来。
此处对应网络的物理层。也就是通信的媒介,比如网线。这一层没有协议,但是物理层要具备传输信号的物理特性。
前文已经讨论过下面这几层:
熟悉计算机网络的同学一眼就能看出少了传输层。耳熟能详的TCP和UDP协议都服务于这一层。其实,寄信这个例子也存在对应场景。我们来看看挂号信。
挂号信和平信最大的区别是需要收信人签收。也就是说挂号信保证送达。另外挂号信需要去邮局发信,不能随便丢到邮筒里。可以看到挂号信的邮寄和签收过程都和平信存在差异。
没错,这个例子对应的就是传输层。挂号信需要去邮局发信,平信通过邮箱发送,这也对应了不同传输层协议使用的端口不一样。
计算机网络中,传输层协议定义了信息传输的约定。拿TCP协议举例。主要做了下面几件事情。
发送方
接收方
其实就是拆信息、发送、组装信息的过程。
为了确保送达,加入了确认机制。
为了保证传输正确,加入了验证机制。
此外还有开始、结束的握手、挥手机制。、
通过寄信,我们找到了计算机网络五层架构对应的真实例子。
记住寄信的例子,就再也不用担心记不住计算机网络结构了!计算机领域优秀的设计都来源于现实世界,计算机网络也是如此。