前言:对于计算机网络部分,我们主要学习的是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 = 网络号+主机号
 
一个字节(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
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地址:标示主机通信,实现源主机和目标主机之间的通信
 
主机内核端口:标示进程通信,实现一个主机上的哪个进程进行通信
物理层:封装帧报文首部
    以太网帧:MTU(1500字节)
互联网层:封装IP报文首部
传输层:封装TCP报文首部
应用层:各种应用协议的报文首部
(五)网络配置工具详解(这里很重要)
前言:ifcfg类命令,ip类命令, nm类命令
ifconfig :查看或设置IP地址
route :查看或设置路由表
netstat :通常查看主机的服务,端口,和服务的状态
ifup、ifdown:启用网卡或关闭网卡
对比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 up
ifconfig enp0s3 up
 
 
(5)停止网卡地址
ifconfig eth0 down 
ifconfig enp0s3 down 
 
(6)网卡取别名的两种写法
ifconfig eth0:0 192.168.23.10/24
 ifconfig enp0s3:0 192.168.23.100 netmask 255.255.255.0 broadcast 192.168.23.255
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 ~]
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 
需要添加/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 up:开启网卡设备
ip link set dev eth0 down:关闭网卡设备
 
ip addr add 192.168.23.4/24 dev eth1: 添加IP地址
ip addr add 192.168.23.4/24 dev eth1 label eth1:0  : 添加别名
ip addr del 192.168.23.4/24 dev eth1: 删除IP地址
ip addr show:显示IP地址
 
 
ip route add 192.168.24.0/24 via 192.168.23.1 dev eth1 src 192.168.23.10: 添加网络路由地址
ip route add default via 192.168.23.1  :添加默认路由
ip route del 192.168.24.0/24 :删除路由地址
ip route show  :显示路由地址
三:nm类命令 适用于红帽 7
nmcli:命令行工具
nmtui:就像红帽6的setup工具一样,是一个图形化的文本工具
 
必须启动 Neworkmanager
systemctl status NetworkManager
四:setup命令 适用于红帽 6
 
必须启动 network 服务
service network status
(六)系统默认的网卡命名方式(了解)
前言:
eth0、eth1、eth2 等
(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
计算机网络详解
原文:http://www.cnblogs.com/yczlove/p/7550881.html