其实基于前面写的文章,大致的思路都已经整理明白了:

发送数据时:
最先从应用程开始封装的(定制自己的私有协议),然后再通过网卡封装为MAC帧,再听过网线(物理层)发送出去/

接收数时:
最先从网卡开始接收,网卡会通过比对MAC,判断这个数据是发送给自己的,如果是自己的,那么就把解析MAC帧,并继续往上提交.

OK,我们想象既然有了MAC帧,为何还要网络层呢?

答案是跨网传播.

osi 七层协议的理解 ---网络层/传输层/应用层

因为我们在局域网内传输,同一个局域网内的主机可以直接收到,如果没有网络层,我们跨网传播,那么这个时候,路由会直接懵逼,它回想,这个数据到底是发送到哪里去呢? 局域网内几乎没人应答.

所以IP的作用就是帮助路由完成这部分的工作,告诉路由数据需要发送到哪里去.
IP就是类似你的快递的收件地址,借助IP,我们能找到主机的所在地.

中间会这么这么多的节点,节点类似于快递的集散地一样,大家先统一到这一块集散地,然后再分发到各个快递网点,快递网点在分发到各个小区,各个小区的快递员派件的时候再检测下这个快递是否是你的.

所以很多东西想明白了,就会知道为何要这么做了。

节点类似的作用就是对根据IP进行分练,再把数据传输到需要的地方,当然里面涉及的细节的确很多,因为我不专业研究这一块,所以也只写自己的理解,如果理解不到位,欢迎大家指正!

接下来我们来看看网络层的协议:

网络层的协议很重要,呵呵,因为后面我们经常会使用到SOCKET API,如果这个时候我们再分析下网络层的协议,那么我们很自然的就会弄明白,SOCKET API这些参数到底是针对网络层协议的什么位置进行设计的.

osi 七层协议的理解 ---网络层/传输层/应用层

IP 协议包(Packet):

osi 七层协议的理解 ---网络层/传输层/应用层

此图提取于:
https://blog.csdn.net/yanglingwell/article/details/82290089

这个和我们通过wireshark的抓包是一致的,我们来看下:
osi 七层协议的理解 ---网络层/传输层/应用层

我们要传递的是我们自己的数据,这些数据会在网络层被封装为IP数据包,然后通过网卡传输出的时候,再添加MAC头.

相关文章:

  • 2021-11-20
  • 2021-10-22
  • 2021-11-29
  • 2021-06-08
  • 2021-06-30
  • 2021-04-02
猜你喜欢
  • 2021-08-04
  • 2022-12-23
  • 2021-11-03
  • 2021-12-02
  • 2021-11-29
  • 2021-11-19
相关资源
相似解决方案