linux访问控制(一)之linux数据传输流程

一、主机发送数据包时封装的过程

在这里插入图片描述

  1. 封装了TCP首部:TCP段(TCP segment)
  2. 继续封装了IP首部:IP数据报(IP datagram)
  3. 在网络接口层封装了以太网首部和以太网尾部:帧
  • IP数据报:由IP首部、TCP首部和DATA部分组成。在IP首部中有一个字段是用来存储IP数据报总长度的字段,在这个字段中存储的数据是IP数据报的大小而不是整个数据包的大小。IP数据报要成为完整的数据包还需要继续封装以太网首部和尾部,完整的数据包也称为以太网帧。

二、linux系统本机数据路由决策

2.1 本机进程间进行数据传输的方式
  1. 共享内存
  2. 命名管道
  3. 套接字

OSI通信模型就是一种基于套接字的网络数据传输机制,既可以用于不同主机间的进程通信,也可以用于本机的客户端和服务端进程的通信。

网络数据传输是一进一出的过程,若在本机的不同进程之间的通信,需要从一个套接字出来,从另一个套接字进去,在本机进行通信数据是不需要经过路由和物理网卡的,而是通过本机的回环口(lookback口)去寻找对应进程的套接字。

  1. 消息队列
  2. 信号量
2.2 数据在linux主机上进行传输的过程
  1. 主机接受到外界发送来的数据。
  2. 进行路由决策(在内核空间),根据数据的目的地来决定是本机接受还是转发给其他主机
  • 流入本机

2.1 数据从内核空间进入用户空间,所谓进入用户空间也就是被进程接受和处理。

2.2 应用程序生成新的数据包(用户空间响应)。

2.3 数据包进入内核空间,进行路由决策,根据目标决定使用哪个网卡转发。

  • 转发给其他主机:

2.1 开启ip_forward功能。(内核空间的功能,开启之后才能进行数据转发,否则接收到的这个数据包会被丢弃掉

2.2 通过ip_forward判断应该由哪个网卡转发出去(没有对应路由则丢弃),将数据包从流入网卡传递到流出网卡。

  • 进出都会进行路由决策
2.3 示意图

在这里插入图片描述

  • ip_forward转发不会上传到用户空间

在这里插入图片描述

2.4 ip_forward的开启方法
  • 将该文件内值改成1
[root@tysonscloud ~]# cat /proc/sys/net/ipv4/ip_forward
0
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值