一个复杂的系统都需要进行分层。网络就是一个非常复杂的系统。如果只有一层,那么维护起码异常的困难。
    网络分层。分层模型有很多,现在用的比较多的就是OSI 7层模型,但是操作系统内核一般只帮我们实现到4层,即网络包收发包1层到4层内核都帮我们实现了,但是5层和6层一般都不会特地去实现。
    因此现在的分层情况位:

    • 一层:物理层
    • 二层:数据链路层
    • 三层:网络层
    • 四层:传输层
    • 七层:应用层

    下图简短的说明了,自顶向下的封包,以及自底向上的拆包。
    image.png
    通俗的语言解释发送和接收报文。
    发送报文:首先由应用程序封装HTTP报文,比如浏览器,先封装HTTP body体以及HTTP头,封装好了交个4层层,4层封装4层头,比如TCP头,封装完之后,交给3层,3层加上IP头,交给2层,2层加上MAC头,最后交给物理层,发送。

    接收报文:首先由二层接收到,先拆MAC头,拆完发现目的MAC是自己的MAC,就把剩余的报文交给3层,3层拆开IP头,发现是自己的IP,就讲剩余的报文交给4层,4层拆开TCP头,找到目的端口对应的应用程序,将数据交给对应的应用程序,应用收到4层交给自己的HTTP报文,比如浏览器收到HTTP报文,拆开HTTP头,然后将body渲染成HTML页面。