理解网络分层,不但要理解每一层网络都做了什么,更重要的是理解层与层之间的关系。
网络分层的原因是什么?
因为计算机网络过于复杂,将负责的问题分为若干个小问题,每一层只关心本层的内容,从而解决整个大问题。
网络分层基本工作模式
要点:只要是在网络上跑的包,都是完整的。可以有下层没上层,绝对不可能有上层没下层。
(1)将网络包拿进来以后,会先交给二层设备,二层设备取下网络包的MAC地址和处理设备的二层MAC地址比较,如果一致交给三层设备。
(2)三层设备取下IP头,和自己的IP地址比较,如果一致交给四层设备处理。
(3)假设使用的是TCP协议,需要查看四层的头,看这是一个发起,还是一个应答,又或者是一个正常的数据包,然后分别由不同的逻辑进行处理。如果是发起或者应答,接下来可能要发送一个回复包;如果是一个正常的数据包,就需要交给上层了。
(4)根据端口号,将网络包发送给相应的程序进行处理。假设发给浏览器进行处理。
(5)浏览器使用HTTP协议进行回复时,首先会加一个TCP头和源端口号,浏览器会给你目的端口号。
(6)将数据发送给下一层,加上IP头,记录下源IP地址和目标IP地址。
(7)发送给MAC层,加一下MAC的头,记录下源MAC地址和目标MAC地址,如果不知道目标MAC地址,则通过协议找到一个MAC地址。
什么是二层网络设备
所谓的二层设备、三层设备,都是这些设备上跑的程序不同而已。一个 HTTP 协议的包经过一个二层设备,二层设备收进去的是整个网络包。这里面 HTTP、TCP、 IP、 MAC 都有。什么叫二层设备呀,就是只把 MAC 头摘下来,看看到底是丢弃、转发,还是自己留着。那什么叫三层设备呢?就是把 MAC 头摘下来之后,再把 IP 头摘下来,看看到底是丢弃、转发,还是自己留着。