还记得本科的时候上计算机网络课的时候,老师在上面用一条直线的声音念课本,自己在下面玩儿手机,考试过了但是对于计算机网络到底是个啥还是没咋整明白,现在可能依然很多不明白的地方,但是通过自己的学习和思考,对计算机网络有了一个大概的认识,希望能够用一些简单通俗易懂的生活例子告诉大家什么是计算机网络。
一提到网络世界,人们都会觉得那是虚拟的,的确,计算机网络其实就是一个真实世界的映射,你访问的每一个网站,背后都有一台或多台的服务器在地球上某个角落里运行着。在真实世界里,我们每个人都可以去到自己想去的地方,通过走路,汽车,飞机等等(但是一定要遵守交通规则哦),现在我们把数据想象成一个人,那么同样的,只要数据遵守网络世界中的“交通规则”(TCP/IP协议族),那么它也可以去到自己想去的地方。
一次网络传输过程可以想象成一次装箱拆箱的快递过程。想象一下你在淘宝上买了一件动物园爆款加长绒衣(用户发出请求),卖家接收到消息后马上开始配货,打包发货(服务器响应请求并返回结果),这里我们先解释一下什么是IP地址和端口,在现实世界中,每个人都有家,每个家都有一个地址,使人们能够通过地址来找到你家,同样的我们通过IP地址就可以访问到对应的网站,那么对于端口,每个人的家中都有不同的房间,爸妈的卧室,我的卧室,洗手间,厨房,都有不同的功用,你可以把端口理解为不同的房间,服务器把端口分配给不同的应用来供他们使用,想像一下,如果没有端口梳理分工,吃喝拉撒都在自己的房间里面解决,那绝对会乱套的。回到正题,如下图的TCP/IP参考模型所描绘的,“数据”先被“卖家”(服务器)在应用层封装,在头部添加一些信息比如说“买家”的姓名,地址。货包装好了之后,“卖家”也不能亲自带着货给人家送过去吧,所以他十分机智的敲开了“圆通大师”的房间(传输层),说:“大师,我想寄个快递。” “圆通大师”淡定道:“搜噶,那施主你是想走TCP协议呢还是UDP协议啊?” “额。。。这个这个,大师我也不太懂,侬给厄解释下伐?” “简单的来讲呢就是使用TCP的话,如果在运送途中发生货件丢失(也就是丢包了)那么我们会重新再发送一次,只有当用户满意的点击了确认收货之后才算是结束,如果是用UDP呢,那么对不起啦,如果这件货中途丢掉的话,我们也只会淡淡一笑,let it go了,totally不关心用户最后有没有签字确认收货。欢迎您下次继续使用本快递”(正儿八经版解释:TCP采用三次握手协议来传输,简单的说就是发送方和接受方两方都要达成共识了才可以开始传输数据,TCP多用于信息传播,比如Email,文件传输等,因为他们都需要内容要一字不落一字不改的传输给对方。而UDP,则是不顾及接收方消化处理信息的能力,一股脑儿的都发过去,如果接收方处理消化的速度赶不上发送的速度,那么就会有一些数据被之后传送来的新数据覆盖掉,也就会造成数据丢失,具体可以回想感受一下小学的时候老师在课堂上听写念超快,自己写字速度根本跟不上的情况。但UDP也是很有用的,因为并不是所有的数据都是有用的,当我们和家人用facetime或者微信QQ视频聊天的时候,由于网络传输信号或其他原因,会出现短暂的卡顿延时,这时如果是使用TCP协议的话,那么你就需要挂断电话然后再重新拨号连接了,很傻是不是,但如果是UDP,只要把旧的来不及处理的数据淹没覆盖掉就可以继续保持通话顺畅了。所以会根据不同应用的不同需求,来选择不同的传输协议,当然TCP和UDP是最主要的两大协议,我们也还有其他协议,这里先不谈了。)
在快递公司把东西寄出去之后,作为“卖家”就一身轻松了,而负责送货的“圆通大师”此时就会根据目的地来选择经过那个中转站,使用什么运输工具来运送货物了,把这些问题的考虑抽象化以后就是网络层的一个重要协议-IP协议了。我们的数据经过一个又一个的中转站(路由)之后,终于要送到客户的手中了,那这时所要做的当然就是拆包了,就算包装上写的是动物园爆款加长绒衣,也要拆开以后穿在身上才能实实在在的有作用。网络接口层(或称链路层)的存在就是将我们之前被诸多协议一层一层封装的数据解析出来。所以通俗的来讲,你可以把一次网络传输的过程看作是一个对“数据”装箱——传输——拆箱的过程。
最后再说一些有的没的:我们经常听到有许多单身狗会把10086的姓名存成亲爱的,也有许多脚踏N条船的人怕被男/女朋友发现会把暧昧的男生女生姓名备注为10086这样,其实我们的DNS就是这样一个网络的电话簿,它把看起来不知所云的IPV4, IPV6地址比如192.168.121.0(IPV4地址),2603:a000:be42:a00:4c2d:3b15:64e5:7355(IPV6)转化成易于我们理解和记忆的域名,想www.baidu.com这样。当我们在浏览器中输入一个网址的时候,就会把我们输入的地址交给DNS来解析,转化成对应的IP地址,这样我们就可以访问到了,但是如果DNS失效或者是被篡改,那么可能就算你的电脑网络正常也访问不了你想要访问的网址了,除非你记得它的IP地址……
就说这么多了,当然计算机网络里面的概念何其繁多,我们可以以后继续讲