网络

时间:2024-03-11 15:27:07

4月20日

TCP/IP协议栈

1983年1月1日,TCP/IP取代了旧的网络控制协议NCP
                                        

 核心为:网络层、传输层

传输过程:

                                                           

 

 

 2.帧结构:   帧头8字节                     目标地址6字节                源地址6字节            类型2字节        20            20                 数据6-1460             FCS4字节

       

 

 

 一:传输层.transport

   1.TCP特性:

  1. 工作在传输层
  2. 面向连接协议
  3. 全双工协议
  4. 半关闭
  5. 错误检查
  6. 将数据打包成段,排序
  7. 确认机制
  8. 数据恢复,重传
  9. 流量控制,滑动窗口
  10. 拥塞控制,慢启动和拥塞避免算法

 

TCP包头结构:

                                                                          

 

 

服务器端口号:0-1023:(管理员有权使用)

固定值    http:80、mysql:3306,               less /etc/services 查看服务器端口号

普通用户端口范围:1024-49151(用户端口或注册端口,但要求并不严格,分配给程序注册为某应用使用)

linux客户端端口号默认值范围:32768-60999      查看范围 :cat /proc/sys/net/ipv4/ip_local_port_range   更改: echo 20000  62000  > /proc/sys/net/ipv4/ip_local_port_range

序号:seq(发出去的序号)

确认号:ack(对方回应的序号)

TCP确认和固定窗口(固定发送条数,发送一条确认一条或者发多条确认多条)效率低
TCP滑动窗口(先发送多条根据恢复确认的条数再确定下次发的条数)尽最大效率
URG,=1时后面的紧急指针数据有效
PSH,=1时提示接收端立即从TCP缓冲区读走数据、=0时先在缓冲区缓存下来
RST,=1时主机出现问题或者上次发送的数据有问题主机拒绝响应
ACK,三次握手建立连接(=1时,前面的确认号才有效)
                                                                                            
                                                                                                                                                            客户端,主动打开状态、同步发送状态、建立连接状态
                                                                                                                                                         服务器端,受到访问被动打开状态,处于监听状态、到收到状态、到建立连接状态

 

 FIN,=1时告诉对方可以释放连接了,带FIN标志的TCP报文段称为结束报文段

                                                                                 

 

 

TCP超时重传
            /proc/sys/net/ipv4/tcp_retries1,指定在底层IP接管之前TCP最少执行的重传次数,默认值是3
                   /proc/sys/net/ipv4/tcp_retries2,指定连接放弃前TCP最多可以执行的重传次数,默认值15(一般对应13~30min)
2.有限状态机:
  1. CLOSED 没有任何连接状态
  2. LISTEN 侦听状态,等待来自远方TCP端口的连接请求SYN-SENT 在发送连接请求后,等待对方确认
  3. SYN-SENT 在发送连接请求后,等待对方确认
  4. SYN-RECEIVED 在收到和发送一个连接请求后,等待对方确认
  5. ESTABLISHED 代表传输连接建立,双方进入数据传送状态
  6. FIN-WAIT-1 主动关闭,主机已发送关闭连接请求,等待对方确认
  7. FIN-WAIT-2 主动关闭,主机已收到对方关闭传输连接确认,等待对方发送关闭传输连接请求
  8. TIME-WAIT 完成双向传输连接关闭,等待所有分组消失
  9. CLOSE-WAIT 被动关闭,收到对方发来的关闭连接请求,并已确认
  10. LAST-ACK 被动关闭,等待最后一个关闭传输连接确认,并等待所有分组消失
  11. CLOSING 双方同时尝试关闭传输连接,等待对方确认
3.UDP特性:
  1. 工作在传输层
  2. 提供不可靠的网络访问
  3. 非面向连接协议
  4. 有限的错误检查
  5. 传输性能高
  6. 无数据恢复特性

 UDP包头:

                                                  

4.nc (绰号:瑞士军刀)模拟软件,可以相互通话、双工型

        客户端:nc -l 9527 开启服务
             客户端:nc 10.0.0.8 9527 连接服务
5.ss 监听服务

            ss -n t l a

                  查看端口冲突问题:ss -ntlp          lsof -i :端口号
                        判断端口是否正在打开    < /dev/tcp/127.0.0.1/端口号
                                                                echo $?
6.socket  套接字=IP=PORT(tcp/udp)标志网络中唯一的应用程序
7.sync半连接和accept全连接队列(下面文件时对应连接队列大小,工作中需要修改队列值,echo 数值 > 对应文件 )
          /proc/sys/net/ipv4/tcp_max_syn_backlog 未完成连接队列大小,默认值128,建议调整大小为1024以上
               /proc/sys/net/core/somaxconn 完成连接队列大小,默认值128,建议调整大小为1024以上
 
二:internet 层
1.利用icmp协议判断网络状态: ping 地址 -f(尽所能发送)-s 65507

 2.ARP利用广播实现   同一网段直接广播接收对方MAC地址

                                  不同网段先广播至路由器,再由路由器广播发给接收方得到MAC地址

                                  第一次成功后会互相缓存对方MAC地址,节约资源

arp -n 查看MAC缓存信息

     -d 清除缓存

 免费ARP:

   验证IP是否冲突:一个主机可以通过它来确定另一个主机是否设置了相同的 IP地址
       更换物理网卡:如果发送ARP的主机正好改变了物理地址(如更换物理网卡),可以使用此方法通知网络中其它主机及时更新ARP缓存

RARP :将MAC地址转换为IP地址(需要配置DHCP地址分配服务)

3.IP PDU 报头

                                                

 

4.arping   ip地址  判断网络中是否此ip地址冲突
  arp -s  ip  MAC地址 手动绑定 ip MAC地址 (防止有ARP欺骗)
 

4月22日

1.MAC地址 唯一性,IP地址 可管理性

2.10.0.0.1-254 网段=VLAN=subnetwork 子网 =广播域  (每个域用交换机、路由器分隔开)

3.IP 地址分两部分:网络ID位 主机ID位

地址格式:点分十进制记法

网段数=2^可变网络ID的位数

主机数=2^n主机ID的位数-2(全为0的和全为1的去掉)

               分为5类:E类保留未使用,240-255

                           

 

 判断是否在一个网段:

A类:判断前八位是否一致  网络数:2^(8-1)=126 主机数:2^24 -2=16777214

B类:判断前十六位是否一致  网络数:2^(16-2)=16384 主机数:2^16 -2=65534

C类:判断前二十四位是否一致 网络数:2^(24-3)=2097152 主机数:2^8 -2=254

D类:组播
 
 
4.公共和私有IP地址
私有:
        

 

 公共:

       

 

 

 

5.特殊地址:

0.0.0.0  不是一个真正意义上的IP地址。它表示所有不清楚的主机和目的网络。
255.255.255.255  限制广播地址。对本机来说,这个地址指本网段内(同一广播域)的所有主机。
127.0.0.1~127.255.255.254  本机回环地址,主要用于测试。
224.0.0.0到239.255.255.255  组播地址,224.0.0.1特指所有主机,224.0.0.2特指所有路由器。224.0.0.5指OSPF 路由器,地址多用于一些特定的程序以及多媒体程序。
169.254.x.x  如果Windows主机使用了DHCP自动分配IP地址,而又无法从DHCP服务器获取地址,系统会为主机分配这样地址。
 
6.子网掩码:
CIDR:无类域间路由,目前的网络已不再按A,B,C类划分网段,可以任意指定网段的范围
CIDR无类域间路由表示法:IP/网络ID位数,如:172.16.0.100/16
netmask子网掩码:32位或128位的数字,和IP成对使用,用来确认IP地址中的网络ID和主机ID
八位换算:
           

 

相关计算公式:
  • 一个网络的最多的主机数=2^主机ID位数(32|128 - 网络ID位数)-2
  • 网络(段)数=2^网络ID中可变的位数
  • 网络ID=IP \'与\' netmask(可判断两主机是否在一个网段,相同为1,不同为0)
判断对方网络ID,使用的子网掩码为请求方自己的子网掩码,会存在A认为B不属于一个网段,而B认为A属于一个网段,造成A到B请求失败、B到A请求超时。
 
7.划分子网:
   将一个大的网络(主机数多)划分成多个小的网络(主机数少),主机ID位数变少,网络ID位数变多,
网络ID位向主机ID位借N位,可以划分2^N个子网
8.合并超网:
将多个小网合并成一个大网,主机ID向网络ID位借位(找共同点,特点:节约路由表提升效率)
超网要包含所有子网:合并几位就必须包含几位的000··到111··
 9.跨网络通信(路由选择路径)
路由分类:
主机路由:精确的到达主机的路径(量大不适用)
网络路由:到达某个网段的路径(实用)
默认路由:到达某个地方只有一条路径,默认这个路径
10.动态主机配置协议DHCP:
走的UDP协议  服务器端口:67
                       客户端端口:68
 

4月24日

1.基本网络配置:
  • 主机名
  • IP/netmask
  • 路由:默认网关
  • DNS服务器
2.配置当前主机网卡名称:
ip link set eth0 down/up 禁用或启动网卡命令 
临时修改网卡名 ip link set eth0 name abc
永久修改网卡名:vim /etc/udev/rules.d/70-persistent-net.rules
 
3.查看网卡状态:
mii-tool eth0
ethtool eth0
4.查看网卡驱动:
dmesg |grep –i eth
ethtool -i eth0
5.卸载网卡驱动:
modprobe -r e1000 
rmmod e1000
 装载网卡驱动:
modprobe e1000
 
6.ifconfig 命令 (过时的命令以后用 IP )
                     列出启用的网卡信息
                    -a 列出全部网卡信息
                     -s 查看网卡流量(watch 持续查看)
ifconfig eth0 up / down  启用和禁用网卡
ifconfig eth0 0.0.0.0/0 清空网卡
一个网卡可以加多个ip地址:ifconfig erh0:name xx.x.x.x/x
 
 
7.网络配置文件
/etc/sysconfig/network-scripts/ifcfg-xxx
文件内容:
  • TYPE:接口类型;常见有的Ethernet, Bridge
  • NAME:此配置文件应用到的设备
  • DEVICE:设备名
  • HWADDR:对应的设备的MAC地址
  • UUID:设备的惟一标识
  • BOOTPROTO: 激活此设备时使用的地址配置协议,常用的dhcp, static, none, bootp
  • IPADDR:指明IP地址
  • NETMASK:子网掩码,如:255.255.255.0
  • PREFIX:网络ID的位数, 如:24
  • GATEWAY:默认网关
  • DNS1:第一个DNS服务器地址
  • DNS2:第二个DNS服务器地址
  • DOMAIN:主机不完整时,自动搜索的域名后缀(不设置时候默认主机名为域后缀)
  • ONBOOT:在系统引导时是否激活此设备
  • USERCTL:普通用户是否可控制此设备
  • PEERDNS:如果BOOTPROTO的值为“dhcp”,YES将允许dhcp server分配的dns服务器信息直接覆盖至/etc/resolv.conf文件,NO不允许修改resolv.conf
  • NM_CONTROLLED: NM是NetworkManager的简写,此网卡是否接受NM控制

       centos6之前     service   network  restart  重启网络服务生效

8.查看配置文件生效:

DNS:查看/etc/resolv.conf

IP地址、名字:ifconfig、ip a

路由表查看:route -n 

   添加路由:route add  [-net(网络) |-host(仅主机) |default(默认)]  target [netmask(掩码)] [gw(网关)]   [dev(接口名)]

   删除路由:route del  [-net(网络) |-host(仅主机)]  target [netmask(掩码)] [gw(网关)]   [dev(接口名)]

9.配置静态路由:用linux主机模拟路由设备,配置好IP地址、路由表、必须修改文件  【echo 1 > /proc/sys/net/ipv4/ip_forward】才能接受并发送数据

10.配置动态路由:安装quagga包,通过命令vtysh配置

    支持多种路由协议:RIP:选择经过路由器最好的路径  OSPF:选择网络带宽最大的路径   BGP:

11.配置当前主机名:

centos6 之前版本:/etc/sysconfig/network
                              HOSTNAME=xxx
centos7 以后版:/etc/hostname
                              HOSTNAME=xxx
10.iproute 包 代替 net-tools包
     ifconfig 用 ip 替代  netstat 用 ss 替代等
11.ip命令:临时性的
增加网卡地址
ip addr add 172.16.100.100/16 dev eth0 label eth0:0
删除地址
ip addr del 172.16.100.100/16 dev eth0 label eth0:0
全清地址
ip addr flush dev eth0
ip route 查看路由表
ip route add 添加路由
ip route del 删除路由
ip route flush 清空路由
 
12.单臂路由 一个网卡接口 设置两个ip地址 其他两台机器将这两个ip地址分别设成网关就可通讯
 
13.物理上一个网段,逻辑上没在一个网段两个机器 ,各自添加默认路由 不设定网关只设定网络接口名,就可以通讯

14.路由相关配置文件: /etc/sysconfig/network-scripts/route-IFACE
两种风格:
(1) TARGET via GW
     如:10.0.0.0/8 via 172.16.0.1
(2) 每三行定义一条路由
     ADDRESS#=TARGET
     NETMASK#=mask
     GATEWAY#=GW
网络通讯条件:物理上两台机器连接,逻辑上有路由就通
15.global 类型ip地址: 全局可用(默认配置)
    link类型ip地址: 仅链接可用
    host类型ip地址: 仅本机可用(回环网卡)
16.网卡别名:
ip addr add 添加
永久写成文件:格式如下
cat /etc/sysconfig/network-scripts/ifcfg-eth0:1
DEVICE=eth0:1
IPADDR=10.0.0.100
PREFIX=8
17.多网卡 bonding:
  将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。直接给两块网卡设置同一IP地址是不可以的。通过 bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的MAC地址
0-6 Mode 7种模式
  • Mode 0 (balance-rr): 轮询(Round-robin)策略
  • Mode 1 (active-backup): 活动-备份(主备)策略
  • Mode 3 (broadcast):广播策略

配置文件:

/etc/sysconfig/network-scripts/ifcfg-bond0
查看bond0状态:
/proc/net/bonding/bond0
 
18.centos7 之后:修改ip配置文件生效命令
nmcli con reload
nmcli con up con-name
19.网络组 Network Teaming
网络组:是将多个网卡聚合在一起方法,从而实现冗错和提高吞吐量
多种方式 runner
  • broadcast
  • roundrobin
  • activebackup
  • loadbalance
  • lacp (implements the 802.3ad Link Aggregation Control Protocol)

网络组特点

  • 启动网络组接口不会自动启动网络组中的port接口
  • 启动网络组接口中的port接口总会自动启动网络组接口
  • 禁用网络组接口会自动禁用网络组中的port接口
  • 没有port接口的网络组接口可以启动静态IP连接
  • 启用DHCP连接时,没有port接口的网络组会等待port接口的加入
管理网络组配置文件:
/etc/sysconfig/network-scripts/ifcfg-team0
 
20.网桥
桥接:把一台机器上的若干个网络接口“连接”起来。其结果是,其中一个网口收到的报文会被复制给其
他网口并发送出去。
工具包:bridge-utils,目前 CentOS 8无此包