网络基础知识

269 阅读5分钟
  • 总结:

  • 1.互联网为什么要分五层?因为和任何复杂的软件系统一样,互联网也是靠不同层次抽象实现整体功能的,也只有这样才更适合于人类理解。每层有不同的通信协议。通过协议每个层次实现了不同的抽象意义。实现了不同层次的抽象功能,屏蔽了下层的实现细节。

  • 2.互联网共分5层:物理层,链路层,网络层,传输层,应用层。

  • 物理层

  • 1.什么是物理层?物理层是网络实现的物理属性,可以是电气的,电话线,光缆,无线电磁波等等。传输数据是比特。也就是0/1。这也是物理层的协议和功能。

  • 链接层

  • 1.什么是链接层? 链路层是物理层的抽象和集合,多个比特成为一个链路层的帧。对比特进行分组。渐渐的全球出现了同一个的链路层实现,以太网,头部head标着链路层需要传入目标的mac地址,发送者的mac地址,数据类型等。身体body标着需要传输的数据。 image.png

  • 2.什么是mac地址?链路层的地址,或者说以太网的地址。网络设备的网卡的地址。全世界每块网卡独立无二,链路层的地址。 image.png

  • 3.两个链接层的节点之间怎么发送数据,答通过广播的方式,在子网络中链接层的节点向子网络中的每个节点都发送数据,子网络中的所有节点,只有接收者发现目标mac地址和自己的mac地址一致时才接收信息。

  • 4.发送者怎么知道接收者的mac地址?靠ARP协议。在ip层,发送者是知道传输目标的ip地址的,这时发送一个到该ip层的FF:FF:FF:FF:FF:FF的mac地址的子网络内广播发送的数据包,接收到数据的节点对应ip的目标者返回自己的mac地址。这样发送者就知道了目标的mac地址。这也是ARP协议。至此完成了链路层的数据传输。

  • 网络层

  • 1.什么是网络层?链路层的广播传输方案解决子网络内的数据传输方式。但是无法解决不同子网络之间的传输。此时需要网络层。因为mac地址无法区分两个节点是否处于同一个子网络,所以需要一套ip协议来区分两个节点是否处于同一个子网络。 image.png

  • 2.什么是ip协议,ip协议是用来区分是节点是否处于同一个网络的,它分成两部分,是1个32位的数据,前半部分标识了子网络的地址,后半部分表示自网络中设备节点的地址。

  • 3.什么是子网掩码,子网掩码是一个节点ip对应的这样一种32位数据,它的子网络位全部是1,设备地址位全部是0。由于网络地址和设备节点地址的位数不是固定的,所以需要子网掩码来确定一个ip地址所在的自网络,比如一个节点的子网掩码是255.255.255.0。则代表这个节点的子网络位是前24位,设备位是后8位。两个节点之间判断是否处于同一个自网络的,两个节点的ip分别与自己的子网掩码与计算,然后看结果是否相等。

  • 4.网络层数据怎么传输?传输之前发送者知道接受者的ip地址和mac地址才能找到设备,这样如果两者处于不同的子网络之间,则无法知道mac地址。依靠路由算法(自网络自建传输数据)进行数据传输,先将数据发送到对应子网络的网关上,再由网关将数据发送对应子网络的设备中。如果在同一个子网络内,则通过ARP协议就知道对应接受者的ip地址和mac地址。然后就可以完成数据传输。

  • 传输层

  • 1.为什么要有传输层?有了链接层和ip层,我们可以实现全球任意两台设备之间的数据传输,但是一台设备上可以运行很多的程序,比如email,微信,视频会议等,我们需要一个协议端口来区分不同的应用程序。这就是传输层的意义。传输层实现了端口到端口之间数据传输。

  • 2.什么叫端口?传输层中用来区分不同设备上发送和接收程序的协议数据。端口表示这个数据的接受者是什么程序。本质是每个使用网卡程序的编号。

  • 3.端口的范围?端口是一个2的16位的数据,其中0-1023被系统占用。

  • 4.啥叫socket?unix系统上,设备+端口号的组合就能完成程序之间的通信,这个通信的接口就是socket。

  • 应用层

  • 为什么要有应用层?传输层解决了,设备上程序之间通信的目的,但是程序之间通讯的协议可能是不一样的,有wwww,http,ftp等等。我们通过应用层的协议来决定传输的数据格式是什么样子的。

  • 数据包的分层,如下图,网络数据包的结构和网络数据的分层是一样的。上层协议的改动不影响下层,下层改动不影响上层,各层实现目的不一样。

image.png

参考资料: 1.www.ruanyifeng.com/blog/2012/0… 2.www.ruanyifeng.com/blog/2012/0… 3.microchipdeveloper.com/tcpip:detai…