OSI七层模型

目录
1、网络为什么要分层?
2、程序是如何工作的?
3、揭秘层与层之间的关系

1、复杂的程序都要分层,这是程序设计的要求。

想象网络包是一段buffer,可以在交换机上跑(MAC),路由器上跑(IP),服务器上跑(TCP/HTTP),也可以在电脑上跑(HTTP)。
从一个网口进来,处理一下,再从另一个网口出去。

2、一个程序在网络中的传送过程,图示如下:

image.png

从链路层的一个数据包生成的时候,携带MAC头,IP头,TCP头,HTTP头和HTTP内容。
底层经过(链路层)process_layer2(buffer)处理后去掉MAC头,这里分辨是不是传给自己的;
到了网络层经过process_layer3(buffer)处理后去掉IP头,这里分辨是给自己的,还是要转发出去;
第四层先查看地址是TCP的还是UDP的,如果是TCP,调用process_tcp(buffer);这里分表是请求还是应答;
第五层(HTTP)里面有端口号,交给对应服务解析就可以。
完成之后需要回复:
先将HTTP和HTTP头打包,交给第四层,调用send_tcp(buffer)封装。这里加入了TCP头(端口号);
发给第三层,调用send_layer3(buffer)。这里添加了IP头。
发给第二层,调用send_layer2(buffer)。这里给buffer加入了MAC地址。
最后从链路层发出去。

3、类比总经理,经理,组长和员工交流:

现实世界中,总经理握手的时候不需要员工参与。但网络世界应该是:
总经理沟通的时候,经理将总经理放在兜里,
经理沟通的时候,组长将经理放在兜里,
组长沟通的时候,员工将组长放在沟里。(类似套娃)
员工直接沟通,不带总经理就不行。
但现实生活中,往往是员工说一句,组长补充两句,经理补充两句,最后总经理在补充两句;网络世界里是反过来的。
一句话总结:只要是网络上跑的包,可以有下层没上层,但是不能有上层没下层。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容