[网络]带你通俗地了解四层网络模型

前言

        无论是前端还是后端,到最后实际上大家都是web程序员,都离不开web网络。它是我们工作的来源,可是未必每个人都了解它。本文旨在用最通俗的语言,带你大致了解一下当今网络的构成。


协议体系


        想象一下,在没有网络之前每台电脑之间是一个个独立的机器。如果需要机器之间互相访问,就得通过一些手段让机器连接起来。当然像早期的电话线拨号上网,到现在的光纤,我们或多或少都会知道这些东西,我们也知道它们把我们接入了互联网。


        可是这些连接全球网络的线路规格,接入的方式,可以是不一致,五花八门的吗?显然是不可以的,如果你的机器想要接入网络,就必须报运营商(电信,移动,联通等)。他们会用一种统一的方式连接你的网络,这些统一的规范。也就是我们说的“协议”。


        这些协议是全球统一的,由官方机构制定,同时在构成网络的过程中,实际上用到的是很多不同的协议。这些所有协议加起来就是【互联网协议】,组成了我们现在的互联网。


网络模型


        接下来就是著名的网络模型,你一定网络上可以找到很多不同版本的网络模型。有的分7层,有的分成5层,这些模型之所以不同,是因为他们解释网络的角度不同。下面我列出的是最常见的TCP/IP 4层结构。

  • 应用层
  • 传输层
  • 网络层
  • 链路层


        可以看出我们把TCP/IP网络分层4层,之所以这么分,他们每一层负责的任务是不一样的。接下来我们来看看他们的关系。


链路层(实体层)


        最底层的就是物理层,是把电脑连接起来的物理手段。它主要规定了网络的一些电气特性,作用是负责传送0和1的电信号。
        其中我们常说的硬件网卡也属于这一层。网卡给每台电脑都定了一个【mac地址】,这个地址是全球唯一的。再根据【ARP协议(Address Resolve Protocol,地址解析协议)】【RARP协议(ReverseAddress Resolve Protocol,逆地址解析协议)】让网络可以准确的找到另一张网卡。
        链路层遵循的【以太网协议】是让数据在网络中以广播的形式发出,所有在网络中的参与者都可以收到信息,然后自行判断数据接收的mac地址是不是自己。


网络层


        链路层解决了点对点的连接,可是我们平常访问网络的时候,显然不可能是用广播的形式让互联网中的所有人都接收信息。因为这个成本实在是太大了,为了解决这个问题,我们在链路层的基础上,加上了一层网络层。
        大家都知道我们访问网络,用的是一个叫ip的东西,而不是mac。这个IP其实就是【IP协议】。同时IP协议也是网络层使用最广的协议。IP的作用是让我们能直接准确的找到对方,而不是用广播mac地址的方式。
        通俗来说,我们平常家用网络是先用路由器接入互联网,我们的电子设备(手机,电脑等)再接入路由器。这个家里的网络,就是子网络。因此互联网实际是由很多个这样的子网络组成的。平常的数据通讯,我们会先用ip找到对方的子网络,然后在子网络内部再执行链路层的mac广播方式,找到对方的网卡,实现通讯。


传输层


        上面的2层网络已经可以实现2台电脑之间的通讯了。可是数据来到我们电脑之后,怎么可以知道这个数据是给哪个程序使用的呢?这个就是传输层的作用。目前用得最多的协议是【UDP协议】【TCP协议】


UDP


UDP的实现很简单,就是加上一个端口号,我们电脑程序启动后都会占一个端口号,只要用这个端口号就能找到这个程序。由于UDP协议很简单,它有着高效快捷的好处,但它缺点是可靠性较差,一旦数据包发出,无法知道对方是否收到。因此一般用在像视频通话这种需要高效连接,且能接受少量数据丢失的常见。


TCP


tcp协议是我们熟知的协议,它位于传输层,在UDP的基础上加上确认机制。也就是我们熟知的TCP连接,三次握手。TCP协议能够确保数据不会遗失。它的缺点是过程复杂、实现困难、消耗较多的资源。


应用层


        应用层是最接近用户的一层,代表性的协议有DNS,http,smtp等。前面的几层都是为数据传输提供基础条件,这一层操纵的就是具体的数据内容了。
        以使用最广的HTTP协议来说,我们的浏览器用的就是这个协议,我们在用请求一个页面的时候,实际上请求头,请求体,响应头,响应体等内容。就是http协议定义的内容。协议中规范了头部中有什么字段,主体内容是怎样的等。这样只要服务器和浏览器都遵守这个协议,就能保证通讯的执行。
        同时我们说的http1.0 1.1 2等其实就是http协议的不同版本。随着版本的增加,协议中会添加更多内容以满足我们的业务场景需求。


连接过程


接下来我们以一个http请求为例,阐述一下四层网络模型的运行情况。


同理,在响应放回的时候,也是同样的流程。最终让浏览器解析http包,得到响应内容。


总结


        本文讲述了四层网络模型,并描述了网络通讯在这个模型上的运行。这里只是蜻蜓点水地尝试通俗地描述这个过程,实际上在这个流程中每一个环节都是很复杂的,包含很多的知识。有兴趣的朋友可以自己深入了解。


参考


互联网协议入门(一) - 阮一峰的网络日志
互联网协议入门(二) - 阮一峰的网络日志

如果本文对你有一点帮助,就点个赞吧~

  • 7
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值