网络管理基础

1.PDU: Protocol Data Unit,协议数据单元是指对等层次之间传递的数据单位 
物理层的 PDU是数据位 bit 
数据链路层的 PDU是数据帧 frame 
网络层的PDU是数据包 packet 
传输层的 PDU是数据段 segment 
其他更高层次的PDU是消息 message

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

3.TCP包头
源端口、目标端口:计算机上的进程要和其他进程通信是要通过计算机端口的,而一个计算机端口某个时刻只能被一个进程占用,
所以通过指定源端口和目标端口,就可以知道是哪两个进程需要通信。源端口、目标端口是用16位表示的,可推算计算机的端口个数为 2^16个 
序列号:表示本报文段所发送数据的第一个字节的编号。在TCP连接中所传送的字节流的每一个字节都会按顺序编号。由于序列号由32位表示,
所以每2^32个字节,就会出现序列号回绕,再次从0开始 
确认号:表示接收方期望收到发送方下一个报文段的第一个字节数据的编号。也就是告诉发送发:我希望你(指发送方)下次发送的数据的第一个字节数据的编号是这个确认号 
数据偏移:表示TCP报文段的首部长度,共4位,由于TCP首部包含一个长度可变的选项部分,需要指定这个TCP报文段到底有多长。它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。
该字段的单位是32位(即4个字节为计算单位),4位二进制最大表示15,所以数据偏移也就是TCP首部最大60字节
URG:表示本报文段中发送的数据是否包含紧急数据。后面的紧急指针字段(urgent pointer)只有当URG=1时才有效 
ACK:表示是否前面的确认号字段是否有效。ACK=1,表示有效。只有当ACK=1时,前面的确认号字段才有效。TCP规定,连接建立后,ACK必须为1,带ACK标志的TCP报文段称为确认报文段 
PSH:提示接收端应用程序应该立即从TCP接收缓冲区中读走数据,为接收后续数据腾出空间。如果为1,则表示对方应当立即把数据提交给上层应用,而不是缓存起来,如果应用程序不将接收到的数据读走,就会一直停留在TCP接收缓冲区中 
RST:如果收到一个RST=1的报文说明与主机的连接出现了严重错误(如主机崩溃),必须释放连接,然后再重新建立连接。或者说明上次发送给主机的数据有问题,主机拒绝响应,带RST标志的TCP报文段称为复位报文段 
SYN:在建立连接时使用,用来同步序号。当SYN=1,ACK=0时,表示这是一个请求建立连接的报文段;当SYN=1,ACK=1时,表示对方同意建立连接。SYN=1,说明这是一个请求建立连接或同意建立连接的报文。只有在前两次握手中SYN才置为1,带SYN标志的TCP报文段称为同步报文段 
FIN:表示通知对方本端要关闭连接了,标记数据是否发送完毕。如果FIN=1,即告诉对方:“我的数据已经发送完毕,你可以释放连接了”,带FIN标志的TCP报文段称为结束报文段
窗口大小:表示现在允许对方发送的数据量,也就是告诉对方,从本报文段的确认号开始允许对方发送的数据量 
校验和:提供额外的可靠性 
紧急指针:标记紧急数据在数据字段中的位置 
选项部分:其最大长度可根据TCP首部长度进行推算。TCP首部长度用4位表示,选项部分最长为:(2^4-1)*4-20=40字节
常见选项:最大报文段长度:Maxium Segment Size,MSS 
窗口扩大:Windows Scaling 
时间戳:Timestamps

4.TCP包头选项
(1)最大报文段长度
指明自己期望对方发送TCP报文段时那个数据字段的长度。默认是536字节。数据字段的长度加上TCP首部的长度才等于整个TCP报文段的长度。
MSS不宜设的太大 也不宜设的太小。若选择太小,极端情况下,TCP报文段只含有1字节数据,在IP层传输的数据报的开销至少有40字节(包括TCP报文段的首部和IP数据报的首部)。
这样,网络的利用率就不会超过1/41。若TCP报文段非常长,那么在IP层传输时就有可能要分解成多个短数据报片。在终点要把收到的各个短数据报片装配成原来的TCP报文段。
当传输出错时还要进行重传,这些也都会使开销增大。因此MSS应尽可能大,只要在IP层传输时不需要再分片就行。在连接建立过程中,双方都把自己能够支持的MSS写入这一字段。
MSS只出现在SYN报文中。即:MSS出现在SYN=1的报文段中
(2)窗口扩大
为了扩大窗口,由于TCP首部的窗口大小字段长度是16位,所以其表示的最大数是 65535。但是随着时延和带宽比较大的通信产生(如卫星通信),需要更大的窗口来满足性能
和吞吐率,所以产生了这个窗口扩大选项
(3)时间戳
可以用来计算RTT(往返时间),发送方发送TCP报文时,把当前的时间值放入时间戳字段,接收方收到后发送确认报文时,把这个时间戳字段的值复制到确认报文中,
当发送方收到确认报文后即可计算出RTT。也可以用来防止回绕序号PAWS,也可以说可以用来区分相同序列号的不同报文。因为序列号用32为表示,每2^32个序列号就会产生回绕,
那么使用时间戳字段就很容易区分相同序列号的不同报文

5.TCP协议PORT
传输层通过port号,确定应用层协议 
Port number: 
tcp:传输控制协议,面向连接的协议;通信前需要建立虚拟链路;结束后拆除链路 0-65535 
udp:User Datagram Protocol,无连接的协议 0-65535 
IANA:互联网数字分配机构(负责域名,数字资源,协议分配)
0-1023:系统端口或特权端口(仅管理员可用) ,众所周知,永久的分配给固定的系统
应用使用,22/tcp(ssh), 80/tcp(http), 443/tcp(https)
1024-49151:用户端口或注册端口,但要求并不严格,分配给程序注册为某应用使用,1433/tcp(SqlServer),1521/tcp(oracle), 3306/tcp(mysql),11211/tcp/udp (memcached)
49152-65535:动态端口或私有端口,客户端程序随机使用的端口
其范围的定义:/proc/sys/net/ipv4/ip_local_port_range

6.有限状态机FSM:Finite State Machine
CLOSED 没有任何连接状态 
LISTEN 侦听状态,等待来自远方TCP端口的连接请求 
SYN-SENT 在发送连接请求后,等待对方确认 
SYN-RECEIVED 在收到和发送一个连接请求后,等待对方确认 
ESTABLISHED 代表传输连接建立,双方进入数据传送状态 
FIN-WAIT-1 主动关闭,主机已发送关闭连接请求,等待对方确认 
FIN-WAIT-2 主动关闭,主机已收到对方关闭传输连接确认,等待对方发送关闭传输连接请求 
TIME-WAIT 完成双向传输连接关闭,等待所有分组消失 
CLOSE-WAIT 被动关闭,收到对方发来的关闭连接请求,并已确认 
LAST-ACK 被动关闭,等待最后一个关闭传输连接确认,并等待所有分组消失 
CLOSING 双方同时尝试关闭传输连接,等待对方确认

客户端先发送一个FIN给服务端,自己进入了FIN_WAIT_1状态,这时等待接收服务端的报文,该报文会有三种可能: 
只有服务端的ACK 
只有服务端的FIN 
基于服务端的ACK,又有FIN 
1、只收到服务器的ACK,客户端会进入FIN_WAIT_2状态,后续当收到服务端的FIN时,回应发送一个ACK,会进入到TIME_WAIT状态,
这个状态会持续2MSL(TCP报文段在网络中的最大生存时间, RFC1122标准的建议值是2min).客户端等待2MSL,是为了当最后一个ACK丢失时,可以再发送一次。
因为服务端在等待超时后会再发送一个FIN 给客户端,进而客户端知道ACK已丢失 
2、只有服务端的FIN时,回应一个ACK给服务端,进入CLOSING状态,然后接收到服务端的ACK时,进入TIME_WAIT状态 
3、同时收到服务端的ACK和FIN,直接进入TIME_WAIT状态

7.客户端的典型状态转移
客户端通过connect系统调用主动与服务器建立连接connect系统调用首先给服务器发送一个同步报文段,使连接转移到SYN_SENT状态 
此后connect系统调用可能因为如下两个原因失败返回: 
1、如果connect连接的目标端口不存在(未被任何进程监听),或者该端口仍被处于TIME_WAIT状态的连接所占用(见后文),则服务器将给客户端发送一个复位报文段,connect调用失败。 
2、如果目标端口存在,但connect在超时时间内未收到服务器的确认报文段, 则connect调用失败。 
connect调用失败将使连接立即返回到初始的CLOSED状态。如果客户端成功收到服务器的同步报文段和确认,则connect调用成功返回,连接转移至ESTABLISHED状态
当客户端执行主动关闭时,它将向服务器发送一个结束报文段,同时连接进入FIN_WAIT_1状态。若此时客户端收到服务器专门用于确认目的的确认报文段,则连接转移至
FIN_WAIT_2状态。当客户端处于FIN_WAIT_2状态时,服务器处于CLOSE_WAIT状态,这一对状态是可能发生半关闭的状态。此时如果服务器也关闭连接(发送结束报文段),则客户端将给予确认并进入TIME_WAIT状态 
客户端从FIN_WAIT_1状态可能直接进入TIME_WAIT状态(不经过FIN_WAIT_2 状态),前提是处于FIN_WAIT_1状态的服务器直接收到带确认信息的结束报文段(而不是先收到确认报文段,再收到结束报文段)
处于FIN_WAIT_2状态的客户端需要等待服务器发送结束报文段,才能转移至TIME_WAIT状态,否则它将一直停留在这个状态。如果不是为了在半关闭状态下继续接收数据,
连接长时间地停留在FIN_WAIT_2状态并无益处。连接停留在FIN_WAIT_2状态的情况可能发生在:客户端执行半关闭后,未等服务器关闭连接就强行退出了。此时客户端连接由
内核来接管,可称之为孤儿连接(和孤儿进程类似) 
Linux为了防止孤儿连接长时间存留在内核中,定义了两个内核参数:
/proc/sys/net/ipv4/tcp_max_orphans 指定内核能接管的孤儿连接数目 
/proc/sys/net/ipv4/tcp_fin_timeout 指定孤儿连接在内核中生存的时间

8.TCP超时重传
异常网络状况下(开始出现超时或丢包),TCP控制数据传输以保证其承诺的可靠服务 
TCP服务必须能够重传超时时间内未收到确认的TCP报文段。为此,TCP模块为每个TCP报文段都维护一个重传定时器,该定时器在TCP报文段第一次被发送时启动。
如果超时时间内未收到接收方的应答,TCP模块将重传TCP报文段并重置定时器。至于下次重传的超时时间如何选择,以及最多执行多少次重传,就是TCP的重传策略 
与TCP超时重传相关的两个内核参数: 
/proc/sys/net/ipv4/tcp_retries1,指定在底层IP接管之前TCP最少执行的重传次数,默认值是3 
/proc/sys/net/ipv4/tcp_retries2,指定连接放弃前TCP最多可以执行的重传次数,默认值15(一般对应13~30min)

9.拥塞控制
网络中的带宽、交换结点中的缓存和处理机等,都是网络的资源。在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可承受的能力,网络的性能就会变坏。
这种情况就叫做拥塞 
TCP为提高网络利用率,降低丢包率,并保证网络资源对每条数据流的公平性。即所谓的拥塞控制 
TCP拥塞控制的标准文档是RFC 5681,其中详细介绍了拥塞控制的四个部分:慢启动(slow start)、拥塞避免(congestion avoidance)、快速重传(fast retransmit)
和快速恢复(fast recovery)。拥塞控制算法在Linux下有多种实现,比如reno算法、vegas算法和cubic算法等。它们或者部分或者全部实现了上述四个部分 
当前所使用的拥塞控制算法 /proc/sys/net/ipv4/tcp_congestion_control

10.UDP特性
工作在传输层 
提供不可靠的网络访问 
非面向连接协议 
有限的错误检查 
传输性能高 
无数据恢复特性

11.ARP表
[root@centos7 ~]#ip neigh
192.168.74.1 dev eth0 lladdr 00:50:56:c0:00:01 REACHABLE
192.168.74.254 dev eth0 lladdr 00:50:56:e3:29:de STALE
192.168.199.1 dev eth1 lladdr d4:ee:07:52:3a:46 STALE
192.168.199.207 dev eth1 lladdr ac:c1:ee:7b:a3:5b STALE
[root@centos7 ~]#arp -n
Address HWtype HWaddress Flags Mask face
192.168.74.1 ether 00:50:56:c0:00:01 C eth0
192.168.74.254 ether 00:50:56:e3:29:de C eth0
192.168.199.1 ether de:ee:07:52:3a:46 C eth1
192.168.199.207 ether ac:c1:ee:7b:a3:5b C eth1

12.Internet 协议特征
运行于OSI网络层 
面向无连接的协议 
独立处理数据包 
分层编址 
尽力而为传输 
无数据恢复功能

13.IP PDU 报头
版本:占4位,指 IP 协议的版本目前的IP协议版本号为4 
首部长度:占4位,可表示的最大数值是15个单位,一个单位为4字节,因此IP的首部长度的最大值是60字节 
区分服务:占8位,用来获得更好的服务,在旧标准中叫做服务类型,但实际上一直未被使用过.后改名为区分服务.只有在使用区分服务(DiffServ)时,
这个字段才起作用.一般的情况下都不使用 
总长度:占16位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节.总长度必须不超过最大传送单元 MTU 
标识:占16位,它是一个计数器,通常,每发送一个报文,该值会加1,也用于数据包分片,在同一个包的若干分片中,该值是相同的 
标志(flag):占3位,目前只有后两位有意义 
DF: Don‘t Fragment,中间的一位,只有当 DF=0 时才允许分片 
MF: More Fragment,最高位,MF=1表示后面还有分片。MF=0表示最后一个分片
片偏移:占12位,指较长的分组在分片后,该分片在原分组中的相对位置.片偏移以8个字节为偏移单位 
生存时间:占8位,记为TTL (Time To Live) 数据报在网络中可通过的路由器数的最大值,TTL字段是由发送端初始设置一个8bit字段.推荐的初始值由分配数字RFC指定,当前值为
64.发送 ICMP 回显应答时经常把 TTL 设为最大值 255 
协议:占8位,指出此数据报携带的数据使用何种协议以便目的主机的IP层将数据部分上交给哪个处理过程, 1表示为ICMP协议,2表示为IGMP协议,6表示为TCP协议, 17表示为UDP协议
首部检验和:占16位,只检验数据报的首部不检验数据部分.这里不采用 CRC 检验码而采用简单的计算方法 
源地址和目的地址:都各占4字节,分别记录源地址和目的地址

14.IP地址
它们可唯一标识 IP 网络中的每台设备 
每台主机(计算机、网络设备、外围设备)必须具有唯一的地址 
IP地址由两部分组成:
• 网络ID: • 标识网络 • 每个网段分配一个网络ID
• 主机ID: • 标识单个主机 • 由组织分配给各设备

15.IP地址分类
A类: 0 000 0000 – 0 111 1111: 1-127
网络数:126, 127
每个网络中的主机数:2^24-2
默认子网掩码:255.0.0.0
私网地址:10.0.0.0 

B类: 10 00 0000 – 10 11 1111:128-191
网络数:2^14
每个网络中的主机数:2^16-2
默认子网掩码:255.255.0.0
私网地址:172.16.0.0-172.31.0.0

C类: 110 0 0000 – 110 1 1111: 192-223
网络数:2^21
每个网络中的主机数:2^8-2
默认子网掩码:255.255.255.0
私网地址:192.168.0.0-192.168.255.0

D类:组播 1110 0000 – 1110 1111: 224-239

E类: 240-255

16.其他
(1)单工:单向
双工:双向
全双工:同时双向
半双工:轮流双向

(2)网桥可以分割冲突域,但无法阻隔广播域。
(3)ethtool eth0(1,2…) :查看网卡信息
(4)route -n : 查看路由表
(5)网卡作用于:数据链路层
路由器作用于:网络层
交换机作用于:数据链路层
wifi作用于:数据链路层
(6)查看各种协议的端口号:cat /etc/services

20180428

1.私有IP地址
A类 10.0.0.0 到 10.255.255.255

B类 172.16.0.0 到 172.31.255.255

C类 192.168.0.0 到 192.168.255.255

2.特殊地址
0.0.0.0 0.0.0.0不是一个真正意义上的IP地址。它表示一个集合:所有不清楚的主机和目的网络。 
255.255.255.255 限制广播地址。对本机来说,这个地址指本网段内(同一广播域)的所有主机 
127.0.0.1~127.255.255.254 本机回环地址,主要用于测试。在传输介质上永远不应该出现目的地址为“127.0.0.1”的数据包。 
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服务器获取地址,系统会为主机分配这样地址。

3.保留地址
网络地址:000000000000
广播地址:111111111111

4.跨网络通信
跨网络通信:路由 
路由分类: 主机路由 网络路由 默认路由 
优先级:精度越高,优先级越高

5.基本网络配置
将Linux主机接入到网络,需要配置网络相关设置。 
一般包括如下内容:
主机名
IP/netmask
路由:默认网关
DNS服务器
主DNS服务器
次DNS服务器
第三DNS服务器

6.CentOS 6网卡名称
接口命名方式:CentOS 6
以太网:eth[0,1,2,…]
ppp:ppp[0,1,2,…](拨号类型,以较少使用) 
网络接口识别并命名相关的udev配置文件: /etc/udev/rules.d/70-persistent-net.rules 
查看网卡: dmesg |grep –i eth
ethtool -i eth0 
卸载网卡驱动: modprobe -r e1000
rmmod e1000 
装载网卡驱动: modprobe e1000

7.网络配置方式
静态指定:
ifconfig, route, netstat
ip: object {link, addr, route}, ss, tc
system-config-network-tui,setup
配置文件 
动态分配:
DHCP: Dynamic Host Configuration Protocol

8.配置网络接口
ifconfig命令
ifconfig [interface]
ifconfig -a
ifconfig IFACE [up|down]
ifconfig interface [aftype] options | address …
ifconfig IFACE IP/netmask [up]
ifconfig IFACE IP netmask NETMASK
注意:立即生效
启用混杂模式:[-]promisc

9.route命令
路由管理命令 
查看:route -n 
添加:route add
route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If] 
目标:192.168.1.3 网关:172.16.0.1
route add -host 192.168.1.3 gw 172.16.0.1 dev eth0 
目标:192.168.0.0 网关:172.16.0.1
route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1 dev eth0
route add -net 192.168.0.0/24 gw 172.16.0.1 dev eth0
默认路由,网关:172.16.0.1
route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.0.1
route add default gw 172.16.0.1 
删除:
route del route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If] 
目标:192.168.1.3 网关:172.16.0.1
route del -host 192.168.1.3 
目标:192.168.0.0 网关:172.16.0.1
route del -net 192.168.0.0 netmask 255.255.255.0

10.配置动态路由
通过守护进程获取动态路由
• 安装quagga包
• 支持多种路由协议:RIP、OSPF和BGP
• 命令vtysh配置

11.其他
(1)CIDR:无类域间路由表示法:IP/网络ID位数
(2)划分子网:一个大网络(主机多=主机ID多,网络ID位少),划分成多个小网络(主机少=主机ID位数少,网络ID位数多),网络ID位向主机ID位借N个位,划分成2^N个小网。
(3)合并超网:多个小网络合并成一个大网,主机ID位向网络ID位借位。(找相同位)
(4)路由表的构成:
①目标:数据包发送的目标路径
②netmask:配合目标路径
③interface:本路由的出口
④gateway:直连:网关无需配置
非直连:下一个路由器临近本路由器的接口地址
(5)cat /proc/sys/net/ipv4/ip_forward : 0 改成 1 :启动路由功能
(6)追踪路由:traceroute
mtr
tracepath
(7)公式:①网络(网段)数量=2^可变网络ID数
②一个网路的主机数量=2^主机ID位数-2=2^(32-网络ID位数)-2
③网络ID=IP与子网掩码netmask
④划分子网数=划分成2^N个(网络ID位向主机ID位借N位)

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/97330

(0)
上一篇 2018-05-02 08:50
下一篇 2018-05-02 14:48

相关推荐