Linux网络基础

网络就是把分布在不同地理位置上的主机,通过传输介质(网线、卫星等)连接起来,实现主机之间数据传输共享的目的。

OSI 7层网络模型传输过程

image
数据从一个主机A发送到主机B时候,每一层都会包住一个头部信息,从应用层(如手机或电脑)应用设备开始,数据打包到物理层,最后发给主机B
主机B接收到数据后,通过网卡,接收到在物理层,然后分别在每一次在进行拆包拿数据,最后到主机B的应用层,当然数据发送和接收都是可以的。
具体每一层详细信息可以参考之前写的:网络协议介绍

TCP协议

传输控制协议,简称TCP协议,在IP协议基础上,增加了确认重发、滑动窗口和复用 等机制。
TCP协议提供了稳定、安全、面向连接的字节流服务。
TCP是基于OSI 7层网络模型定义出的4层网络模型

  • 应用层 = OSI的 应用层 + 表示层 + 会话层
  • 传输层 和OSI的传输层一样
  • 网络层 和OSI的网络层一样
  • 数据链路层 = OSI的 数据链路层 + 物理层

TCP/IP体系结构的优点:

  1. 简化了计算机网络的结构,从原来的七层模型变成了现在的四层,但是功能却没有减少
  2. 每一层即独立又有联系,独立是因为如果那一层出现问题了不会影响其他层的工作,联系是因为上层协议又使用下层协议提供的服务。

TCP协议是面向连接的单播协议。

  • 单播 一对一服务,有来有回,数据发送和接收前,双发必须建立一条连接。
  • 广播 通常用在交换机,一对多的服务。

TCP传输数据的3个阶段:

  1. 建立连接
  2. 数据传输
  3. 断开连接

TCP采用3次握手4次挥手
image

TCP协议数据传输过程
image

TCP报文格式

image

  • ACK:表示确认号有效
  • SYN:用于发起TCP连接
  • FIN:用户断开TCP连接
  • PSH:表示接收方需要尽快数据交给应用层
  • RST:重新连接

TCP3次握手抓包分析

通过使用wreshark工具抓包总结了TCP3次握手的原理
image

  1. 刚开始,客户端发送SYN,并且发送了Seq(这是ISN码,是用于一个识别码),这时的Seq是0
  2. 服务端收到连接,发送了SYN 还发送了ACK确认,并且也给客户端发送了一个Seq,这个Seq也是0
    这个Seq 和客户端第1次握手时候发送的Seq没有任何关系,是两个端各自发送的。
    但第2次握手服务端发送的ACK的值 和第1次握手客户端发送的Seq的值有关系,这个ACK的值是在客户端发送的Seq的值基础上+1
  3. 客户端接收到了服务端发送的ACK以后,也发送了一个ACK,这个ACK也是等于Seq + 1,这个Seq是第2次握手时候服务端发送的Seq。
    发送ACK同时,还会再发送一个Seq,这个Seq等于是客户端第2次发送Seq了,这个Seq的值是客户端第1次握手时发送的Seq + 1

断开连接4次挥手

断开连接的基础上首先肯定是已经建立了连接
image
断开连接伴随着7种状态要知道
如图:如果客户端先要断开连接,先发送FIN命令,服务端收到后回应ACK确认命令,然后再次回应了FIN命令,客户端收到了2个服务端回应的命令,发送ACK确认断开连接

image

  1. 客户端第1次发送FIN码 + Seq 想要断开连接,这个Seq是之前建立好连接后的Seq的值
  2. 服务端接收到了FIN后,回应一个ACK,这个ACK是Seq + 1,就是客户端第1次挥手时候的Seq
  3. 服务端还会再发送一个FIN码,并且也给了一个新的Seq给客户端,这个Seq和之前客户端第1次挥手时候发送的Seq没有关系
  4. 客户端回应给服务端一个ACK,这个ACK是刚刚接到的服务端第3次挥手时候给的Seq + 1
    至此4次挥手完成,断开连接。

IP协议介绍

image
如图:
一个主机通过交换机的连接到达另一个网段主机它们就可以通信。
IP是TCP模型中最重要的协议。
主要作用:

  • 数据传输 将数据从一个主机传送另一个主机
  • 寻址 根据子网划分和IP地址,找到正确目的主机地址
  • 路由选择 选择数据在互联网上的传送路径
  • 数据报文分段 传送数据大于MTU时,将数据分段发送和接受,并重新组装。

IP地址分类

常见应用端口:

  • 21 FTP
  • 22 SSH
  • 23 Telnet
  • 25 SMTP邮件
  • 53 DNS默认端口
  • 80 HTTP
  • 443 HTTPS

IP地址:是逻辑地址,是可变的。标识网络种的主机,原则上一个网络中主机的IP地址是唯一的,目的是为了防止冲突。

IP地址的构成分3部分:

  • 类别:用来区分IP地址的类型,比如A、B、C、D 等级分类
  • 网络标识:网络位,也就是Network ID,表示主机所在的网络
  • 主机标识:主机位,也就是Host ID,表示主机再网络中的表示

IPv4 和 IPv6 介绍

  • IPv4:32位,10进制数以.隔开分4部分表示,就是点分二进制。每一个部分是8位,最大的表示256个,也就是 0 ~ 255

    • IPv4地址分类:
      • A类:网络标识占前1个字节,最高位是0,后面3个字节表示主机标识。A类的网络地址有128个,允许支持127个网络,每个网络大约允许有1670万台主机的存在。通常用于网络运行商的大公司的主干网络。
      • B类:前2个字节表示网络标识,后2个字节表示主机标识。用于节点比较多的网络,区域网络等。B类地址允许有16000个网络,每个网络大约有66000台主机。
      • C类:是最常见的地址。高3位标识类型,110表示。网络表示占3个字节,主机标识占1个字节。C类地址支持约20万个网络,最后一个字节主机,最大值256,实际能表示254个。通常0和255不能分配给主机。0表示网段,255表示广播地址。
      • D类:多播地址,高4位表示网络标识,后24位表示多播地址。
      • E类:保留地址。
    • IP地址分类开始字段:
      • A类:000 ~ 127
      • B类:128 ~ 191
      • C类:192 ~ 233
      • D类:224 ~ 239
      • E类:240 ~ 255
        image
  • IPv6:相比IPv4来说简化了报文头格式,字段只有8个,加快报文转发提高数据吞吐量,提高安全性,身份认证和隐私权是IPv6的关键特性。
    IP地址和传统的IPv4有很大区别,一般采用冒号16进制表示法,如这样的:fe80::143d:685e:34b0:3073%24,分8个字段,用冒号:隔开,IPv6是128位,IPv4是32位,所以就比IPv4的地址空间增大了296倍

常见的特殊的IP地址
image

子网掩码

子网掩码定义:
子网掩码是一个32位字段的一个数值,利用这个字段来屏蔽原来网络地址的划分情况,从而能获得一个范围较小的可以实际使用的网络。

子网掩码好处:

  • 节约IP地址资源
  • 减少广播域
  • 减少寻址空间

子网掩码分类:

  • A类:255.0.0.0
  • B类:255.255.0.0
  • C类:255.255.255.0

子网掩码计算方法

通过子网掩码可以确定网段,计算主机。

一般最常用的C类网的一个网段最多有254个IP地址:从192.168.0.1192.168.0.254,通常会用这两个里面其中一个作为网关地址。
198.168.0.0表示一个网络,不能用来表示一个主机地址,192.168.0.255表示系统的网络广播地址。

IP地址与子网掩码进行与操作,如果两个IP地址计算结果相同,就说明它们在一个网络中。
实例:
有两个IP地址192.168.1.150192.168.1.151,假设子网掩码是255.255.255.128
计算结果一样:
image

子网划分

划分子网IP地址段必须是2的幂次数范围,就可以推算出 子网掩码 = 主机位 - IP地址段广播地址(就是最大的那个地址)
如图:
image
如果表示192.168.1.0这个网段的64大小的子网,因为64满足2的幂次数,所有是64大小。
64个的话用 0 ~ 63来表示,192.168.1.0是网段标识,192.168.1.63这个最大的IP就用来标识广播地址,那么这个子网IP地址段可用的IP是192.168.1.1192.168.1.62
子网掩码的计算就是通过主机位的最大二进制数(刚好是192.168.1.63这个IP)来得出,63用2进制表示是0011 1111,255就是1111 1111,那255 - 63 就是1100 0000刚好是十进制的192

可以得出结论:划分子网时,随着子网地址借用了主机位数增多,子网的数目就随之增加,但是子网中的可用主机IP逐渐减少。

写出所有子网IP地址段:
image

route 命令

route -n命令查看路由列表信息,如果没有就安装:yum install -y net-tools
image
如上图:

  • Gateway 路由网关
  • Genmask 子网掩码

route 其他命令:

操作 命令说明
添加网关 route add -net 【如:192.168.0.0】 gw 【如:10.0.0.2】
删除网关 route del -net 【如:192.168.0.0】 gw 【,如:10.0.0.2】
添加网段 route add -net 【如:192.168.0.0】 netmask 【如:255.255.255.0】 dev 【如:ens33】

IP 命令
使用IP命令也可以操作路由,比如不能连接网络的虚拟机,不能使用route命令,就可以使用IP命令。

使用ip r查看路由:
image

使用ip命令添加网关:
image

静态路由
image
如图:
主机A可以和主机B相互ping通,主机B和主机C可以相互ping通,但是主机A不能直接ping通主机C
使用配置路由就可以让主机A连通到主机C

  1. 给主机A添加路由:设置成主机C的网段,网关配置成和主机B连接的ip
  2. 给主机C添加路由:同理,设置成主机A的网段,网关配置成和主机B连接的ip
  3. 在主机B中开启内核转发:在/etc/sysctl.conf中添加net.ipv4.ip_forward=1设置ip转发,然后使用sysctl -p使其生效
    这样就可以让主机A和主机C直接ping通
posted @ 2022-12-25 11:21  aBiu--  阅读(71)  评论(0编辑  收藏  举报