Linux 网络基础

网络基础

ISO / OSI 七层模型简介

  • ISO:国际标准化组织
  • OSI:开放系统互联模型
    • OSI 的七层模型
      • 应用层 - APDU
        • APDU 是应用协议数据单元
      • 表示层 - PPDU
        • PPDU 是表示层协议数据单元
      • 会话层 - SPDU
        • SPDU 是会话协议数据单元
      • 传输层 - TPDU
        • TPDU 是传输协议数据单元
      • 网络层 - 报文
        • IP 地址负责外网通信
      • 数据链路层 - 帧
        • MAC 地址负责局域网通信
      • 物理层 - 比特
    • 数据发送时候,从上层向下层传递;数据接收时候,从下层向上层传递。

ISO / OSI 七层模型详解

  • 应用层 - APDU
    • 用户接口
  • 表示层 - PPDU
    • 数据的表现形式、特定功能的实现如-加密
  • 会话层 - SPDU
    • 对应用会话的管理、同步
  • 传输层 - TPDU
    • 可靠与不可靠的传输、传输前的错误检测、流控
  • 网络层 - 报文
    • 提供逻辑地址、选路
  • 数据链路层 - 帧
    • 城帧、用 MAC 地址访问媒介、错误检测与修正
  • 物理层 - 比特
    • 设备之间的比特流的传输、物理接口、电器特征等

TCP / IP 四层模型

  • TCP / IP 四层模型
    • 应用层 (对应 OSI 模型的应用层、表示层、会话层)
      • 应用层对应于 OSI 参考模型的应用层、表示层、会话层,为用户提供所需要的各种服务,例如:FTP、Telnet、DNS、SMTP 等
    • 传输层 (对应 OSI 模型的传输层)
      • 传输层对应于 OSI 模型的传输层,为应用层实体提供端到端的通信功能,保证了数据包的顺序传送及数据的完整性。该层定义了两个主要的协议:传输控制协议(TCP)和用户数据协议(UDP)
    • 网际互联层(对应 OSI 模型的网络层)
      • 网际互联对应于 OSI 模型的网络层,主要解决主机到主机的通信问题。它所包含的协议涉及数据包在整个网络上的逻辑传输。该层有三个主要协议:网际协议(IP)、互联网组管理协议(IGMP)和互联网控制报文协议(ICMP)。
    • 网络接口层(对应 OSI 模型的数据链路层、物理层)
      • 网络接口层与 OSI 模型中的物理层和数据链路层相对应。它负责监视数据在主机和网络之间的交换。事实上,TCP /IP 本身并未定义该层的协议,而由参与互连的各网络使用自己的物理层和数据链路层协议,然后与 TCP / IP 的网络接口层进行连接。地址解析协议(ARP)工作在此层,即 OSI 参考模型的数据链路层。

TCP / IP 三次握手(两军问题)

数据封装过程

应用数据 字节流(数据)
应用层 FTP + 数据
传输层 TCP 头 + FTP + 数据
网络层 IP 头 + TCP 头 + FTP + 数据
数据链路层 以太帧头 + (IP 头 + TCP 头 + FTP + 数据) = IP 数据报
最后 以太帧头 + 目的地址 + 源地址 + 包类型 + 包数据(IP 数据报) + CRC

IP地址详解

  • IP 包头
    • 第一行
      • 版本(4)
      • 头部长度(4)
      • 优先级和服务类型(8)
      • 总长度(16)
    • 第二行
      • 标识(16)
      • 标志(3)
      • 片偏移(13)
    • 第三行
      • 生存时间(8)
      • 协议(8)
      • 头部校验和(16)
    • 第四行
      • 源 IP 地址(32)
    • 第五行
      • 目的 IP 地址(32)
    • 第六行
      • 选项
    • 第七行
      • 数据

IP 地址分类

网络类别 最大网络数 IP 地址范围 最大主机数 私有 IP 地址范围
A 126 1.0.0.0 – 126.255.255.255 2^24-2 10.0.0.0 – 10.255.255.255
B 16384 128.0.0.0 – 191.255.255.255 2^16-2 172.16.0.0 – 172.31.255.255
C 2098152 192.0.0.0 – 223.255.255.255 2^8-2 192.168.0.0 – 192.168.255.255

子网掩码

网关作用

  • 网关(Gateway)又称为网间连接器、协议转换器
  • 网关在网络层以上实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连
  • 网关既可以用于广域网互连,也可以用于局域网互连
  • 网关是一种充当转换重任的服务器或路由器

端口作用

  • TCP 协议包头
    • 第一行
      • 源端口(16)
      • 目的端口(16)
    • 第二行
      • 序列号(32)
    • 第三行
      • 确认号(32)
    • 第四行
      • 数据偏移(4)
      • 保留(6)
      • 标志(6)
      • 窗口(16)
    • 第五行
      • 校验和(16)
      • 紧急指针(16)
    • 第六行
      • 选项
    • 第七行
      • 数据
  • UDP 协议包头
    • 第一行
      • 源端口(16)
      • 目的端口(16)
    • 第二行
      • 长度(16)
      • 校验和(16)
    • 第三行
      • 数据

常见端口号

  • FTP(文件传输协议):20 21
  • SSH(安全 Shell 协议):22
  • TELNET(远程登录协议):23
  • DNS(域名系统):53
  • HTTP(超文本传输协议):80
  • SMTP(简单邮件传输协议):25
  • POP3(邮局协议 3 代):110

查看本机启用的端口

  • netstat -an
    • -a 查看所有连接和监听端口
    • -n 显示 IP 地址和端口号,而不显示域名和服务名

DNS 作用

  • DNS 的作用:将域名解析为 IP 地址
    • 客户机向 DNS 服务器发送域名查询请求
    • DNS 服务器告知客户机 Web 服务器的 IP 地址
    • 客户机与 Web 服务器通信
  • DNS 的查询类型
    • 从查询方式上分
      • 递归查询
        • 要么做出查询成功响应,要么做出查询失败的响应,一般客户机和服务器之间属于递归查询,即当客户机向 DNS 服务器发出请求后,若 DNS 服务器本身不能解析,则会向另外的 DNS 服务器发出查询请求,得到结果后转交给客户机。
      • 迭代查询
        • 服务器收到一次迭代查询回复一次结果,这个结果不一定是目标 IP 与域名的映射关系,也可以是其他 DNS 服务器的地址
    • 从查询内容上分
      • 正向查询由域名查找 IP 地址
      • 反向查询由 IP 地址查找域名

Linux 网络配置

IP 地址配置

1
2
3
4
5
6
7
8
# 查看与配置网络状态命令
ifconfig
# 临时设置 eth0 网卡的 IP 地址与子网掩码
ifconfig eth0 192.168.0.200 netmask 255.255.255.0
# setup 图形界面(红帽专用)
setup

使用文件配置 IP 地址

网卡信息文件

1
vim /etc/sysconfig/network-scripts/ifcfg-eth0

主机名文件

1
vim /etc/sysconfig/network

Linux 网络命令

网络环境查看命令

  • ifconfig 查看与配置网络状态命令
    • 只能看到 IP 和子网掩码,看不到网关和 DNS
  • ifdown 网卡设备名称 禁用指定网卡设备
  • ifup 网卡设置名称 启用指定网卡设备
  • netstat 选项
    • -t 列出 TCP 协议端口
    • -u 列出 UDP 协议端口
    • -n 不使用域名与服务名,而是用 IP 地址和端口号
    • -l 仅列出在监听状态网络服务
    • -a 列出所有的网络连接
  • route -n 查看路由列表
  • route add default gw 192.168.1.1 临时设定网关
  • nslookup [主机名或 IP] 进行域名与 IP 地址解析
  • nslookup >server 查看本机 DNS 服务器

网络测试命令

  • ping [选项] [IP 或域名] 探测指定 IP 或域名的网络状况
    • -c 次数 指定 ping 包的次数
  • telnet [域名或 IP] [端口] 远程管理与端口探测命令
  • wget URL 下载命令
  • tcpdump -i eth0 -nnX port 21
    • -i 指定网卡接口
    • -X 以十六进制和 ASCII 码显示数据包内容
    • -nn 将数据包中的域名与服务转为 IP 和端口
    • port 指定监听的端口