首页 > 编程知识 正文

关于网络协议分层的叙述(网络协议分层模型)

时间:2023-05-06 09:37:13 阅读:72251 作者:2750

目录

一四个问题

二、网络为什么要分层?

三.程序时如何工作

3.1一张图就能看出工作过程

3.2接受包

3.3请求的开始

四.层层关系

一、四个问题1. TCP握手三次时,IP层和MAC层有哪些操作?

2 .你怎么知道中转站之间自己的下一站在哪里?

3 .二楼设备处理的包中,有http层的内容吗?

4 .从你的电脑上,通过SSH登录公共云主机需要经过什么样的过程?

二、网络为什么要分层? 因为,是个复杂的程序都要分层。

根据编程要求,所有复杂的程序都必须分层。 例如,我们写的项目代码可以分为控制器层、服务层和道层。 网络分层:“自下而上”物理层、数据链路层、网络层、传输层和APP应用层。

三、程序时如何工作3.1张图了解工作过程

3.2接受数据包1 .第一层物理层发现网络数据包通过网络入口时,查看是否需要放入该网络数据包进行处理。

2 .网包被带入后,名为process_layer2的函数将包中的二楼头取下来,根据头的内容进行操作。二层头中的MAC地址与我的相同则说明这个包是发送给我的

3 .以下函数process_layer3拆下三楼的标头,该标头包含ip地址,如果ip地址与自己相符则表明这个包的终点是我们自己即我是终点,如果ip不相符则说明我们是中转站而非终点

4 .假设此ip地址为tcp。 然后,process_tcp函数去掉第4层的标头,检查这是启动器、响应还是正常数据包,然后分别在不同的逻辑中处理。 如果开始或响应,则下一步可能发送回复包; 如果是普通数据包,就需要交给高层。 这里的上层是一个APP,在四层的头里面有端口号,不同的应用监听不同的端口号。如果发现浏览器应用在监听这个端口,那你发给浏览器就行了

3.3提交请求的用户单击浏览器链接即可提交http请求。 浏览器知道,还会提出别的http请求。 于是我用端口号发送了请求。

调用send_tcp函数,为http请求的内容添加tcp头部,并记录源端口号。

调用send_layer3函数。 此时,已经有http标头和内容以及tcp标头。 此函数添加记录源ip地址和目标ip地址的ip头部。

调用send_layer2函数。 此时已经有http、tcp和ip标头。 此函数将附加MAC头部,并记录源MAC地址,即本机的MAC地址和目标MAC地址。

5 .从网入口送包。

四、层与层之间的关系从分层本身就可以看出,网络分层是分层的意思,是分层的。处理接受到的就想剥洋葱的感觉一样

那 TCP 在三次握手的时候,IP 层和 MAC 层在做什么呢?当然是 TCP 发送每一个消息,都会带着 IP 层和 MAC 层了。因为

,TCP 每发送一个消息,IP 层和 MAC 层的所有机制都要运行一遍。而你只看到 TCP 三次握手了,其实,IP 层和 MAC 层为此也忙活好久了。

        这里要记住一点:只要是在网络上跑的包,都是完整的。可以有下层没上层,绝对不可能有上层没下层

        可以理解为空中阁楼(上层依赖于下层):上层是应用层,下层是基础层从上到下依次是:HTTP、TCP、IP、MAC、物理层。 我们区分上下层时,还是将它们按如上顺序看,看成一个倒立的金字塔。 实际的网络包数据结构,是反过来的,HTTP包上套了TCP(端口),TCP包上套了IP,IP包上套了MAC地址。 虽然HTTP的内容相对多一些,IP、MAC地址的内容相对少一些, 但上层的HTTP需要依赖下层的IP、MAC工作,所以网络上跑的包, 可以有下层没上层,却绝不可能有上层没下层。

        所以,对TCP协议来说,三次握手也好,重试也好,只要想发出去包,就需要有ip层和MAC层,不然是发布出去的。

        如果一个 HTTP 协议的包跑在网络上,它一定是完整的。无论这个包经过哪些设备,它都是完整的。因为缺少任何一层,包都是无法发送出去的。

        所谓的二层设备、三层设备,都是这些设备上跑的程序不同而已。一个 HTTP 协议的包经过一个二层设备,二层设备收进去的是整个网络包。这里面 HTTP、TCP、 IP、 MAC 都有。什么叫二层设备呀,就是只把 MAC 头摘下来,看看到底是丢弃、转发,还是自己留着。那什么叫三层设备呢?就是把 MAC 头摘下来之后,再把 IP 头摘下来,看看到底是丢弃、转发,还是自己留着。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。