计算机网络详解
前言:对于计算机网络部分,我们主要学习的是TCP/IP协议栈。而TCP/IP协议栈并无法将各种的协议进行一个合理的区分,因此,在大学本科教育中我们通常讲解的是IOS七层网络模型。
协议:简单的理解就是通信双方相互交流的一种约定,也就是说只有通信双方满足这样的约定才能够相互通信。然而,我们也说过,各种协议必须要被软件实现,才能够被我们所使用。
那么,对于我们的http协议而言,实现http协议的客户端程序有curl,浏览器等工具,服务端有Apache、Nginx等这样的静态服务器软件
(二)
什么是Mac地址、什么是网桥、什么是交换机
前言:MAC地址,用来表示互联网上每一个站点的标识符,采用十六进制数表示,共六个字节(48位),使用ifconfig命令可以查看: ether 08:00:27:c1:cd:2b
。其中,前三个字节是由IEEE的注册管理机构RA负责给不同厂家分配的代码(高位24位),也称为“编制上唯一的标识符”(Organizationally Unique Identifier),后三个字节(低位24位)由各厂家自行指派给生产的适配器接口,称为扩展标识符(唯一性)。
网桥:网桥(Bridge)是早期的两端口二层网络设备,用来连接不同网段。使得同一个网段内的通信不会冲突,而不同网段内的通信可以顺利进行。
交换机:多功能交换机,在局域网内,交换机和网桥的功能几乎一样。
路由器:路由器(Router)又称网关设备(Gateway)是用于连接多个逻辑上分开的网络。当数据从一个网段传输到另一个网段时,可通过路由器的路由功能来完成。
(1)交换机通过Mac地址表使得网段内的所有的主机可以相互通信
(2)路由器通过路由表使得不同网段之间的主机可以相互通信
- 什么是IP
IP = 网络号+主机号
一个字节(byte)是8位(bit),IP由32位组成,一共是4个字节
例如:IP: 172.16.19.245 netmask 255.255.255.0 broadcast 172.16.19.255
网络号:172.16.19.0
主机号:172.16.19.245
那么IP一共有:0.0.0.0 ---- 255.255.255.255
256 x 256 x 256 x 256 = 4294967296
- IP划分
A 类地址
第一段为网络号,后三段为主机号
0000000-01111111
1-127
其中:127用为本地lo还回地址
那么A类地址的网络地址有:127
那么A类地址的主机地址有:2^24 - 网络地址 - 广播地址 = 2^24 - 2
netmask:255.0.0.0(用户标示网络地址)
broadcast 255.255.255.255
私有地址:10.0.0.0网段为私有地址网络
B 类地址
前两段为网路号,后两段为主机号
1000000.00000000-10111111.11111111
128-191
那么B类地址的网络地址有:2^14(前两个位不变,只是后14位变化)
那么B类地址的主机地址有:2^16 - 网络地址 - 广播地址 = 2^16 - 2
netmask:255.255.0.0(用户标示网络地址)
私有地址:172.0.0.0-172.31.0.0 网段为私有地址网络
C 类地址
前三段为网路号,后一段为主机号
11000000.00000000.00000000-11011111.11111111.11111111
192-223
那么C类地址的网络地址有:2^21(前三位不变,只是后21位变化)
那么C类地址的主机地址有:2^8 - 网络地址 - 广播地址 = 2^8 - 2
netmask:255.255.255.0(用户标示网络地址)
私有地址: 192.168.0.0~192.168.255.0 网段为私有地址网络
D 类地址:
组播地址
E 类地址:
大学等科研机构作为科学研究使用
(三)
简单的聊聊什么是路由表
前言:对于路由表而言,可以认为的写,也可以是路由器自动记录识别
- 路由器是如何通过路由表实现不同网段之间的通信
目标地址由 "下一跳(网关)" 来实现
(四)
单台主机之间的通信如何实现
前言:单台主机站在内核空间
和用户空间
将主机间的通信画图给大家描绘一下,并且解释TCP/IP协议栈的解包和封包的过程
给大家画图介绍,ARP地址如何解析
- 主机间通信
Mac地址:本地通信
实现本地局域网,不跨路由器的网络通信
IP地址:标示主机通信,实现源主机和目标主机之间的通信
主机内核端口:标示进程通信,实现一个主机上的哪个进程进行通信
基于TCP/IP协议栈解析封包与解包
物理层:封装帧报文首部
以太网帧:MTU(1500字节)
互联网层:封装IP报文首部
传输层:封装TCP报文首部
应用层:各种应用协议的报文首部
(五)
网络配置工具详解
(这里很重要)
前言:ifcfg类命令,ip类命令, nm类命令
一:ifcfg类命令 (需要安装 net-tools 包)
适用于红帽5、6、7
ifconfig :查看或设置IP地址
route :查看或设置路由表
netstat :通常查看主机的服务,端口,和服务的状态
ifup、ifdown:启用网卡或关闭网卡
- (1)ifconfig命令
对比6、7的网络信息
enp0s3: flags=4163<UP(已经启用),BROADCAST(支持广播),RUNNING,MULTICAST(支持多播)> mtu 1500
inet 192.168.23.11 netmask 255.255.255.0 broadcast 192.168.23.255
inet6 fe80::a00:27ff:fec1:cd2b prefixlen 64 scopeid 0x20<link>
ether 08:00:27:c1:cd:2b txqueuelen 1000(传输队列长度) (Ethernet)
RX(接受的数据包) packets 28355 bytes 10835366 (10.3 MiB)
RX errors(错误包数量) 0 dropped(丢包数量) 0 overruns 0 frame 0
TX(传出的数据包) packets 15286 bytes 2489410 (2.3 MiB)
TX errors(错误包数量) 0 dropped(丢包数量) 0 overruns 0 carrier 0 collisions 0
eth0 Link encap:Ethernet HWaddr 08:00:27:23:C1:E7
inet addr:192.168.23.4 Bcast:192.168.23.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe23:c1e7/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:104 errors:0 dropped:0 overruns:0 frame:0
TX packets:68 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:12969 (12.6 KiB) TX bytes:11936 (11.6 KiB)
ifconfig命令使用(设置IP地址可以立即生效)
(1)显示激活网卡,以及网络信息
ifconfig
(2)显示激活网卡,以及网络信息
ifconfig eth0
(3)显示所有网卡,以及网络信息
ifconfig -a
(4)启用网卡地址
ifconfig eth0
ifconfig enp0s3
(5)停止网卡地址
ifconfig eth0
ifconfig enp0s3
(6)网卡取别名的两种写法
ifconfig eth0:0 192.168
ifconfig enp0s3:0 192.168
- (2)route命令
1:增
添加主机地址路由
route add -host 192.168.24.100 gw 192.168.23.1 dev eth0
添加网络地址路由
route add -net 192.168.24.0/24 gw 192.168.23.1 dev eth0
添加默认地址路由
route add -net 0.0.0.0/0.0.0.0 gw 192.168.23.1 dev eth0
2:删
删除主机地址路由
route del -host 192.168.24.100
删除网络地址路由
route del -net 192.168.24.0/24
删除默认地址路由
route del default
3:改
先删除,再修改
4:查
route -n
Kernel IP routing table
Destination(目的地址) Gateway(网关,吓一跳) Genmask(子网掩码) Flags Metric Ref Use Iface(接口)
192.168.23.0 0.0.0.0(同一个网段无需网关) 255.255.255.0 U 0 0 0 eth0
192.168.23.0 0.0.0.0 255.255.255.0 U(up:表示启用状态) 0 0 0 eth1
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
0.0.0.0 192.168.23.1 0.0.0.0 UG(G表示网关) 0 0 0 eth0
- (3)netstat命令(对应的ss命令请自行总结)
会经常使用
必备技能:netstat -lntup
-u:UDP
-t:TCP
-l:查看监听状态
-n:以数字的形式显示
-p:显示进程、服务名称
-a:显示all信息
[root@6 ~]# netstat -lentupa
Active Internet connections (servers and established)
Proto(协议) Recv-Q(接收) Send-Q(发送) Local Address(本地监听的套接字) Foreign Address(客户端连接的套接字) State(进程状态) User(用户的id) Inode(文件的inode号) PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 0 9197 1090/sshd
tcp 0 0 192.168.23.4:22 192.168.23.2:65106 ESTABLISHED 0 9567 1191/sshd
tcp 0 0 :::22 :::* LISTEN 0 9199 1090/sshd
udp 0 0 0.0.0.0:68 0.0.0.0:* 0 8497 856/dhclient
- (4)ifup、ifdown命令
需要添加/etc/sysconfig/network-scripts/ifcfg-eth1网卡配置文件,才能给ifup、ifdown控制
ifup eth1
ifdown eth1
二:ip类命令
适用于红帽5、6、7(需要安装 iproute 包)
ip link:管理网卡接口
ip addr :查看或设置IP地址
ip route:配置路由
ip link show:显示设备属性
ip link set dev eth0
ip link set dev eth0
ip addr add 192.168
ip addr add 192.168
ip addr del 192.168
ip addr show:显示IP地址
ip route add 192.168
ip route add
ip route del 192.168
ip route show :显示路由地址
三:nm类命令
适用于红帽 7
nmcli:命令行工具
nmtui:就像红帽6的setup工具一样,是一个图形化的文本工具
必须启动 Neworkmanager
systemctl status NetworkManager
四:setup命令
适用于红帽 6
必须启动 network 服务
service network status
(六)
系统默认的网卡命名方式
(了解)
前言:
对于红帽6而言
eth0、eth1、eth2 等
对于红帽7而言
(1)如果BIOS为主板上集成的设备提供的设备编号可用,则根据设备编号进行命名,如eno0, eno1。例如:苹果Mac电脑,网卡名为en0
(2)如果BIOS为PCI-E扩展槽所提供的设备编号可用,则根据设备编号进行命名,如:ens1 ens2
(3)如果硬件接口的物理位置信息可用,则根据此信息命名,如:enp0s3、enp0s8,有些虚拟机是这样命令。
(4)对于Mac电脑而言,en0、en1
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether a4:d1:8c:cd:a0:8c
inet6 fe80::181a:b72a:631f:69d2%en0 prefixlen 64 secured scopeid 0x4
inet 192.168.23.2 netmask 0xffffff00 broadcast 192.168.23.255
nd6 options=201<PERFORMNUD,DAD>
media: autoselect
status: active