关于计算机网络:计算机网络引论

36次阅读

共计 3789 个字符,预计需要花费 10 分钟才能阅读完成。

这段时间遇到了一些网络下面的问题,然而自身我对计算机网络理解的不是很零碎,定位问题的时候也无从下手, 这次打算零碎的整顿一下本人对计算机网络的认知,之前看计算机网络相干的文章偏差于实践,什么属性之类的,看到了也似懂非懂的,也是我在写代码过程中遇到了问题,才对这些属性有一个大抵的了解,所以本系列的文章会联合网络编程来介绍,程序是计算机世界和人类世界沟通的桥梁,选取的语言是 Java,如果主力编程语言是其余的,也能够看,大差不差。本系列的文章不会只介绍实践,还会辅以介绍网络编程、网络工具,尽量做到实践与实际相结合。网络相干的文章其实也写过一些了:

  • 《从爬虫到万维网》
  • 《Socket 简介和 I / O 多路复用》
  • 《NIO 学习笔记 (一) 初遇》
  • 《NIO 学习笔记 (二) 相识篇》
  • 《NIO 学习笔记(三) 甚欢篇》
  • 《Netty 学习笔记 (一) 初遇篇》

这次会对立收拢这些文章到网络系列的文章中。如果在公众号还没发现这些文章,那就去思否、掘金找找。目前公众号、思否、掘金三个平台的文章还没有做到对立,会挑个工夫将三个平台的文章进行对立。

前言

想起我大学的《计算机网络》这门课,第一堂课,老师让咱们 ping 网址,如同还拿了网线,然而还是感觉蛮乏味的,前面就开始按书上讲概念,也就实践,我听了又不是很了解,总是似懂非懂的,我很厌恶的这种感觉,索性前面就不听了,期末拿一个 60 分万岁。前面想学计算机网络的起因是因为面试网络也是高频面试题,为了彻底了解,所以才会有学计算机网络的打算。然而到往年有一些新的打算,我打算做一点网络编程相干的货色,打算做一个开源我的项目,再加上工作上的确遇到了网络相干的问题,所以这次打算重新学习一下计算网络,咱们对事物的认知,是一个逐渐清晰的过程,所以本系列的文章不会一开始每个点都讲的很细,会有一条主线贯通,而后须要用到某一点的时候,会将这一点形容的分明。

通信的实质 - 替换信息

小的时候跟着家里人去浇地,对于小小的我来说,地还是很大的,有的时候水管摆的不对,叔叔会在地的那头,朝我喊,我叔叔会在地的那头,冲我喊。如果我没听清,我就会也冲着他喊:你说的啥。而后我叔叔就会再说一遍,个别再说一遍就行了,但有的时候地的确比拟大,他说的话我的确没听清的时候,他就会走到我背后说。那我要是听错了一部分呢,他说的某句话中有个字我没听到,个别他会看我的动作,做的不对就间接来找我了。

这事实上就暗含了通信过程中所面临的一个典型问题:

  • 信息在传输的过程中失落了该怎么办?

再传一遍

  • 如何确认信息正确收到了呢?

确认

咱们能够将这个过程引申到互联网上,现在的网络曾经成为了咱们生存的一部分,你给微信上给敌人发消息,你从来不会放心你敌人在有网的状况下会收不到这条音讯,即便你在北京,你的敌人在海南,音讯疾速精确的传递仍然是被视作天经地义的,即便两头通过了一个一个又一个的路由器、各种各样的光纤,这依然被视作天经地义的。但这种天经地义上面是各种各样的确认、转发,所谓冰山在海里挪动很肃穆,这是因为它只有八分之一漏出水面。

那让咱们来想想这条信息在传输过程中会经验些什么,对于不相熟网络的人来说,在电脑上发消息这条信息是不是间接就到光纤了呢,假设那个人在电脑上也开着微信,两台电脑都间接连着光纤,所以这个通信模型是上面这样:

然而认真想一想这个模型切实简略的过分,咱们将模型变的简单一丢丢,通信的单方命名为 A、B。A 和 B 家里各有三台电脑,另外两台他们家里人用,那么 A 的这条信息再去找 B,面临一个问题 B 的电脑在哪里?如果这个问题简单的话,咱们无妨将问题再简化一些,A 和本人老婆发信息,这条信息该如何送达,咱们首先能够想到的问题依然是 A 发送的这条信息该如何找到老婆 B 的电脑,因为两个人在一个房间,这让事件看起来简略了许多,咱们为每台电脑注销一个地址即可,每台电脑在出厂的时候会有一个 Mac(硬件地址,网卡地址)地址,但如何晓得呢,咱们能够从日常生活中找到一点灵感,咱们每个人都会有身份证,这个是固定的,相当于一个固定地址,又假如全国人民都不爱动,一出世就待在一个中央,这样依据身份证上的地址,快递员就能够轻松的找到你。

一出世就齐全待在一个中央的还是多数,如果你进来打工,那么让快递员依照身份证上的地址去寻找你,这着实是有点难为快递员了,所以住址个别都是动静的,每换一个中央就会调配一个。而后快递员依据你填的地址,找到你的房间,而后给你送上门的时候,还会问一下是不是你。在网络的世界也是这样,一样的动静,为了实现跨区域的通信,会为计算机动静的调配一个地址,咱们称之为 IP 地址,这个地址有别于 Mac 地址,所以你在北京的 IP 地址和在上海的 IP 地址可能就是不一样的。

所以 A 和 B 用微信通信的时候,会先向微信的服务器汇报一下本人的 IP 地址,在发送音讯的时候,依据接管方的惟一标识去找接管方的 IP,那 B 的手机上有好多通信软件,该给哪个?答案是端口,IP 地址 + 端口,那可能有敌人会问了,我是租的房子,一个房间住了好多人,大家可能都用一个地址,我的身份证号,也是就是下面讲的 MAC 地址在什么时候用呢?这个也就是 ARP(Address Resolution Protocol)协定了, 此协定能够通过 IP 地址解析进去物理地址,这样晓得了你的住址,也就是 IP 地址,一个地址上面有好多主机,也不放心找错人。

事实上你在百度上搜寻也是一种通信,你发给百度关键词,百度返回给你搜寻后果,搜索引擎和微信属于不同的利用,利用之间也须要制订通信规定。下面的探讨其实简化了通信过程中的问题,通信是一个简单的问题,互相通信的两个计算机系统必须高度协调工作才行,咱们简略列举一下可能会遇到的问题:

  • 发动通信的计算机必须查明对方计算机是否曾经开机。
  • 如果在通信过程中,通过某个路由器,信息还没传递进来,这台路由器就坏了,该当有牢靠的措施保障对方计算机可能正确接管到正确的文件。

等等。为了设计这样简单的计算机网络,早在 ARPNET(是美国高级钻研计划署(Advanced Research Project Agency)的简称,是世界上第一个经营的封包交换网络,也是寰球互联网的始祖)在设计的时候提出了分层的办法,“分层”可将宏大而简单的问题,转化为若干较小的部分问题,而这些较小的部分问题就比拟易于钻研和解决。

计算机网络体系结构简介

咱们下面提到的光纤中如何组织信息在计算机网络中被划入到物理层,规定了一些电气个性,作用是负责传送 0 和 1 的电信号。单纯的 0 和 1 没有任何意义,必须规定解读形式: 多少个电信号算一组?每个信号位有何意义。这也就是数据链路层的问题,除此之外数据链路层还负责局域网内的通信,MAC 地址也被算在数据链路层。为了实现动静路由,也就是说计算机换一个中央,调配一个理论的住址,咱们引入了网络层来解决这个问题,网络层比拟为人所熟知的就是 IP 协定。为了明确这个信息是属于谁的,咱们引入了端口,IP 地址加端口就能够定位是哪个过程,这也就是传输层的由来,过程在收到传输层的报文之后就能够来解析数据了,不同的利用指定了不同的规定,这也就是应用层。

这个五层是综合 OSI/RM(Open System Interconnection Reference Model 开放系统互联根本参考模型模型 (由国际标准化组织 ISO 来制订) 和 TCP/IP 协定的分层模型而来,TCP/IP 协定的分层是事实上的规范,标准化的组织制订的没风行起因在于简单、理想化且 TCP/IP 协定曾经领先占领市场了.

这里咱们简略的介绍一下各层的作用:

  • 应用层

应用层的工作是通过利用集成间的交互来实现特定网络应用。应用层协定定义的利用过程间通信和交互的规定。这一层比拟为人所熟知的协定是:HTTP、HTTPS、SMTP。

  • 运输层

运输层的工作就是负责向两台主机中过程之间的通信提供通用的数据传输服务,应用层利用该服务传送应用层的报文。所谓“通用的”是指并不针对某个特定网络应用,而是多个利用能够应用同一个运输层服务。因为一台计算机能够同时运行多个过程,因而运输层有复用和分用的性能。复用就是指多个应用层过程能够同时应用上面运输层的服务,分用和复用相同,是运输层把收到的信息别离交付给下面应用层的相应过程。

这一层比拟为人所熟知的协定为 TCP(Transmission Control Protocol)和 UDP(User Datagram Protocol)协定. 这一协定个别驻留在操作系统,支流的高级编程语言个别都有 Socket 相干的类,咱们通过这些类就能够间接调用操作系统应用 TCP、UDP 协定。

  • 网络层

网络层负责为不同局域网上的不同主机提供通行服务。这一层比拟为人所熟知的协定是 IP 协定。

  • 数据链路层

粗略的说就是将网络层交下来的数据包组装成帧,每一帧蕴含数据和必要的管制信息。在接收数据的时,管制信息使接收端可能晓得一个帧从哪个比特开始和哪个完结。

  • 物理层

粗略的说就是规定多大的电压代表“1”或“0”。

本系列的文章会将着重笔墨与应用层、运输层、网络层。本篇也是重学系列的第二个系列: 重学计算机网络。对立收拢本人对计算机网络的认知。

参考资料

  • 《计算机网络 (第 7 版)》谢希仁著。
  • 图解 ARP 协定(一)https://zhuanlan.zhihu.com/p/…
  • 为什么要应用 IP 地址和 MAC 地址两种地址?https://www.zhihu.com/questio…
正文完
 0