网络相关基础理论

81 阅读4分钟

程序主要包括 业务 数据处理 数据传输

设备A和设备B之间的通信,实质上是两个应用程序的通信

底层是两个网卡的通信,网卡负责数据的传输和接受

应用程序和网卡之间的转换 还要经过TCP/IP协议栈

TCP/IP协议栈职能:

  1. 获取应用程序要传输的数据
  2. new Scoket(IPV4,TCP/UDP/Stream/Dgram),确定好传输协议TCP/UDP
  3. 封装端口号、IP地址
  4. MAC地址。封装MAC地址
  5. 确定对方和自己的设备处于网络中(联网)

网络通信模型

OSI七层模型(较理想) 网络五层模型 TCP/IP四层模型

应用层 传输层 网络层 链接层 (实体层)

协议:一个双方的约定

为什么分层

  1. 分层是为了更高效的通信及定位错误
  2. 每一层都使用了一些协议,目的是为了通信双方能够正常的通信以及理解对方的意图。
  3. 每一层功能的实现,都为了上层功能的实现做好了铺垫
  4. 越靠下的层,越接近硬件,越靠上的层越接近用户
  5. 每层都对数据进行封装

实体层

  1. 通过物理手段,将设备链接起来
  2. 按照逻辑电位(高电位1,低电位0)进行数据的传输

问题:没有办法解析传输过来的数据:01001010010101001

链接层

  1. 确定了电信号的分组方式,把每组电信号当成一个数据包(帧)
  2. 实现了网卡到网卡的通信
  3. 以广播的形式通过物理介质发送给接收方
  • 首部(14字节) 数据(46~1500字节) 尾部 (4字节) Head:发送者信息和接受者信息,固定长度为14字节
  • Data:发送的具体内容,最短46字节,最长1500字节,超出范围则分成多个尾部:
  • 尾部固定为4个字节,表示数据帧校验序列,用于确定数据在传输中是否损坏

协议:以太网协议

  1. 规定一组电信号,为一个数据包(帧),并且将帧分为两部分
  2. .连入网络的所有设备,必须具备网卡,数据包必须从一块网卡传输到另一块网卡。网卡的地址就是发送者信息和接受者信息。也就是我们常说的Mac地址

链路层的问题:

发送者如何知道接受者的Mac地址?

发送者如何知道接受者和自己同属一个局域网?

如果接受者和自己不在一个局域网,数据包如何发送给对方?

网络层

引入三个协议,IP协议,ARP协议,路由协议,实现设备到设备的通信。

  1. 局域网。局域网指的是小范围使用的网络,覆盖范围较小,一般使用在办公区域较多,只能在内部互相传输文件。
  2. 城域网。城域网指的是一个城市内使用的网络,传输距离在10千米到100千米之间,覆盖范围较大。
  3. 广域网。广域网覆盖范围极大,将几十公里到几千公里内的城市、国家,甚至洲连接在一起。

IP协议:

制定了一套新的地址,使得我们能够区分两台主机是否同属一个网络

IPv4 地址:192.168.1.2

子网掩码:255.255.255.0

路由器:192.168.1.1

联网登录之后,服务器就记录了IP地址

问题: 如何获取对方的Mac地址?

ARP寻址协议:

  1. PC1发起一个请求数据包,包含了目标计算机的IP地址
  2. PC1发送数据包到交换机
  3. 交换机将PC1的数据包进行整个局域网的转发
  4. 每台计算机都査看PCI发来的数据包,比对其中的IP地址
  5. IP相同则接收,并且回复Mac地址,否则丢弃。

问题: 如果不在一个局域网中怎么办?

路由协议:

  1. 通过IP协议判断两台设备是否处于同一网络中,如果在,则通过ARP获取Mac地址
  2. 如果不在,则将数据转交给网关进行路由。网关是互联网中网络与网络的桥梁,多次转发后数据到达设备所处网络中,然后ARP获取Mac地址。
  3. 完成路由协议的物理设备就是路由器。

传输层

明确端口,表示应用身份,实现端口到端口的通信

首部 (8字节) 数据(最大65527字节)

Head:源端口号和目标端口号

Data:尽量不要超过IP数据包的长度,否则会再次分割。

UDP协议:不可靠、不稳定 效率高

TCP协议:可靠、稳定 慢、效率低

应用层

定义数据格式,并按照正确的格式解读