• 网络协议相关面试问题-TCP与IP网络模型


    互联网应用的实现主要是通过分层来实现的,每一层有自己相应的功能,上层依赖于下层,具体层次如下图:

    下面具体一层层来了解:

    物理层 / 实体层:

    也就是将电脑通过物理的手段连接起来,其实也就是01电子信号的传输,这层有个了解既可,对于应用开发来说根据接触不到这么底层。

    链接层:

    • 链接层的协议
      它位于物理层上方,而物理层只是一个01的电子信号,木有对信息号进分组,以太网协议规定了电信号的分组方式。下面则是以太网规定的数据包:

       其中Head里面包含了发送者或接收者的地址,还有数据类型等,而Data则是数据包中的具体内容。

    • mac地址
      它长这样:

      以太网规定每一个连接入网的所有设备都必须有一个网卡的接口,数据包必须是从一个网卡传递到另一个网卡上,而网卡的地址就是MAC地址。

    • 广播
      就算知道了网卡信息,如何发送给指定的计算机呢,看下图:

       1号计算机想要给2号计算机发送消息,其3、4、5号计算机也会收到此消息,只是说该消息头部带有要接收的mac地址,如果跟本机匹配上那就处理该消息,否则就丢弃,这就是所谓的广播。

    网络层:
    在上一层链接层以太网可以从一个MAC地址通过广播的形式发送到另一个MAC地址,这从技术上是可以实现的,但是效率太低了, 另外广播的方式只能在同一个子网络上进行传递,如果是不同的子网络则广播就无法传递了,而互联网是由无数个子网络组成,所以要想从上海主机找到美国主机那用广播就没法实现了,所以网络层就诞生了。

    • 作用:
      背景:以太网采用广播方式发送数据包。
      TODO:能够区分哪些MAC地址属于同一个子网络。
      作用:使得我们能够区分不同的计算机是否属于同一个子网络
      网络层出现之后每台主机就有了一个IP地址和一个MAC地址了,MAC地址是绑定在网卡上的,而IP地址是网络管理员分配的,是动态变化的,而IP地址是可以帮我们确定子网络,而MAC地址功能则不一样,它是将数据包送到该子网络的目标网卡,所以从逻辑上需要清楚一点:先处理网络IP地址再处理MAC地址。
    • ip协议:
      规定网络地址的协议。
    • ip数据包:
      根据IP协议发送的数据,而它的格式如下:

       其中Head主要是存放一些数据的长度,IP地址等,而Data则是存放数据的具体内容,这是将IP数据包放在以太网数据包里的格式。

    • arp协议:
      背景:由于IP数据包是放在以太网数据包里发送的,所以说必须同时知道两个地址:一个是对方的MAC地址,另一个是对方的IP地址,通常情况下对方的IP地址是已知的,但是不知道对方的MAC地址,因为IP地址可以通过路由找到,而MAC地址是独一无二的,所以需要一个机制,能够从IP地址得到MAC地址。
      核心原理:ARP协议也是发送一个数据包,它所在子网络的每一个主机都会收到这个数据包,然后从该数据包中提取出IP地址,再跟自身的IP地址进行比较,如果相同则做出回复并向对方报出自己的MAC地址,否则就会丢弃。这样有了ARP协议之后,我们就能够在同一个子网络内的主机MAC地址把它发送数据包到任意一个主机之上,跟链接层的广播异曲同工,只是广播对比的是MAC地址,而ARP协议对比的是IP地址。

    传输层:

    背景:根据前面的层目前已经有了IP地址和MAC地址了,就可以在互联网上的任意两台主机进行通讯了,那接下来问题来了:同一台主机许多程序都会用到网络,比如说:一边浏览网页,一边用qq跟朋友聊天,这时如果数据包从网络发来时怎么知道它是代表网页的内容,还是表示在线聊天的内容呢?所以此时还需要另外一个参数来表示数据包是供哪个应用程序使用的,这个参数就叫作端口号。

    传输层的格式:

    还是由Head+Data组成,而网络层是主机与主机的通讯,而到了传输层则是端口与端口之间的通讯了,其协议主要是有TCP和UDP。

    应用层:

    以上有了主机到主机之间的通讯和端口到端口之间的通讯之后,于是乎就可以实现应用程序之间的交流了。

    应用层的作用,就是规定应用程序的数据格式。因为有各种各样的程序需要传递数据,比如说有EMAIL、www数据,此时就必须规定不同的协议不同的数据,这就是应用层所干的事,而结合物理层、网络层、传输层,格式就变成这样了:

    以太网标头指的是MAC地址。

  • 相关阅读:
    【JVM】内存与垃圾回收
    【缓存】缓存与分布式锁
    【Redis】入门与基础总结
    【Elasticsearch7.x】Elasticsearch 入门
    iOS开发ReactiveCocoa学习笔记(六)
    iOS开发ReactiveCocoa学习笔记(五)
    iOS开发ReactiveCocoa学习笔记(四)
    iOS开发ReactiveCocoa学习笔记(三)
    iOS开发ReactiveCocoa学习笔记(二)
    iOS开发ReactiveCocoa学习笔记(一)
  • 原文地址:https://www.cnblogs.com/webor2006/p/8981372.html
Copyright © 2020-2023  润新知