网络基础-OSI

以太网协议

日常生活中我们经常使用以太网进行上网,那么什么是以太网?他是如何让我们实现上网的?

以太网实际是一种协议,它实现了对电信号的解释功能,即把0/1电信号转换为有用的信息。ethernet规定

  • 一组电信号构成一个数据帧,叫做‘帧’
  • 每一数据帧分成:报头head和数据data两部分
    • head包含:(固定18个字节)
      • 源mac地址,6个字节
      • 目mac地址,6个字节
      • 数据类型,6个字节
    • data包含:(最短46字节,最长1500字节)
      • 数据包的具体内容

head长度+data长度=最短64字节,最长1518字节,超过最大限制就分片发送

注释:

mac地址:每块网卡出厂时都被烧制上一个世界唯一的mac地址,长度为48位2进制,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线号)

网络7层模型(OSI)

  • 分层的目的是为了解耦,这样当每层的内部实现变化时不会影响其它层。
  • 应用层、表现层、会话层并作应用层,属于用户态。
  • 传输控制层、网络层、链路层、物理层都在内核中,由内核处理,属于内核态。
  • 用户感知到的只是最上面的应用层,自上而下每层都依赖于下一层。
  • 每层都运行特定的协议,越往上越靠近用户,越往下越靠近硬件。

物理层

主要是基于电器特性发送高低电压(电信号),高电压对应数字1,低电压对应数字0,通过光纤或网线进行传输。

链路层

常见的协议为arp协议,所有上层的数据包到这层都要封装上以太网头,然后通过以太网协议发送。

arp -an

单纯的01信号是没有意义的,必须对这种01信号进行特殊的规定才能使其具有意义。比如多少位为一组,每组代表的含义是什么。而数据链路层的功能就是定义了电信号的分组方式。

早期各个公司都有自己的分组方式,后来形成了统一的标准,即以太网协议ethernet。

在以太网协议中需要源mac和目标mac,那么如何知道目标mac?

  1. 因为不知道目标主机mac,所以arp请求中的目标主机mac为FF:FF:FF:FF:FF:FF,对于这种mac为FF:FF:FF:FF:FF:FF的数据包,会在该数据包发送端所处的内网中广播出去,所有主机接收后拆开包,发现目标ip为自己的便进行响应,返回自己的mac。不是自己的ip则废弃该数据。

  2. 网卡激活,也会发送通告,向其他主机告知自己的mac

网络层

网络层的协议为IP协议,所有上层数据包到这都要封装上下一个主机的IP,例如:机器A和机器B不在同网段,机器A需要将数据先发送到网关,再由网关发送到机器B(机器A>网关>机器B)。具体的过程需要结合路由表计算出下一个要去的主机,下一个主机再计算下一个主机,一直重复下去直到到达最终的目标主机,响应便是一个目标主机返回给上一个主机,最终返回源主机。

请求:A>B>C

响应:C>B>A

重复的操作过程如下:通过路由表确定出下一个主机(下一跳),并将下一个主机的IP封装上,然后去链路层封装Mac信息,最终通过以太网协议发送给下一个主机。

通过路由表计算下一个主机的过程

例如,我要从百度上获取资源,肯定要先给百度发送一个数据包,计算机进行dns解析拿到真实的ip,如下图 182.61.200.6

拿到ip后与路由表的每个条目的掩码进行按位与操作,得到的值 与 destination(目标主机)的值进行比较。相等则看该条条目的网关地址,本机(计算机A)将数据包发送给网关地址(计算机B),再由 计算机B 将数据包发送给百度的计算机,不相等则与下一个条目进行匹配。

以上图为例,182.61.200.6(百度) 与第一条条目的掩码进行按位与操作后得到 0.0.0.0,与该条目的destination的值一致,便会先把数据包发送给192.168.1.1(网关),再由网关发送到百度182.61.200.6。182.61.200.6把也数据包返回给192.168.1.1(网关),本机再去192.168.1.1(网关)上拿百度返回的数据包。
在这里插入图片描述
注意

  1. 有的网关地址为0.0.0.0,说明本机 与 资源所在的机器在同一个网段内,不需要经过网关便可以相互传递数据包。

  2. 查看路由表(route -n)

传输控制层

链路层的mac帮我们找到主机,网络层的ip帮我们定位IP找到主机,然后大家使用的都是应用程序,你的电脑上可能同时开启qq,暴风影音,等多个应用程序,那么我们通过ip和mac找到了一台特定的主机,如何标识这台主机上的应用程序,答案就是端口,端口即应用程序与网卡关联的编号。传输层功能:建立端口到端口的通信。

盖层的协议主要有TCP、UDP。

  • TCP:主要是基于socket建立端口到端口的通信,是一种可靠的传输协议。可靠性主要通过确认机制保证(三次握手,四次挥手)。三次握手与四次挥手的每次数据发送与接收都会通过网络层、链路层、物理层。

    • 三次握手

    • 四次挥手

  • udp(不可靠的)

会话层

主要是对session的管理

表现层

对数据的管理,加密等

应用层

一般用户自己部署的一些软件都属于应用层,如浏览器,nginx,tomcat等等,常用协议

http:多用于浏览器

ssh:多用于连接shell

交换机

交换机包含了链路层,物理层两层,其作用主要体现在mac的管理上,多台机器连接在同一个交换机上,当有数据交互时,便会将mac与交换机上的插口对应起来,这样交换机在拿到响应时通过mac就知道从哪个口将数据发送给对应的主机。

  1. 交换机根据收到数据帧中的源MAC地址建立该地址同交换机端口的映射,并将其写入MAC地址表中。

  2. 交换机将响应数据帧中的目的MAC地址同已建立的MAC地址表进行比较,以决定由哪个端口进行转发。

  3. 如数据帧中的目的MAC地址不在MAC地址表中,则向所有端口转发,这一过程称为泛洪(flood),即上面所述目标Mac为FF:FF:FF:FF:FF:FF

更多信息可以在百度上进行搜索。

路由器

路由器包含了交换机的功能,有网络层、链路层、物理层三层。

路由器上包含了两块网卡,一块设置为局域网的网关的ip,另一块设置为另一个局域网网关的ip/广域网的ip,同时在两块网卡的路由表上设置好路由条目使其跳到另一个网卡,既能实现局域网与广域网/局域网与局域网的访问。

含交换机&路由器的网络流程图

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值