一、常见的网络物理组件
路由器
交换机(RJ-45连接器和pc)
pc
pc
交换机(网络接口卡)
pc
pc
二、网络应用程序
1、Web浏览器(chrome、IE、Firefox等)
2、即时消息(QQ、微信、钉钉等)
3、电子邮件(Outlook、foxmail等)
4、协作(视频会议、VNC、Netmeeting、WebEx等)
5、web网络服务(apache、nginx,IIS)
6、文件网络服务(ftp、nfs、samba)
7、数据库服务(MySQL、MariaDB、MongoDB)
8、中间件服务(Tomcat、JBoss)
9、安全服务(Netfilter)
三、用户应用程序对网络的影响
1、批处理应用程序
1、FTP、TFTP、库存更新
2、无需直接人工交互
3、带宽很重要,但并非关键因素
2、交互式应用程序
1、库存查询、数据库更新
2、人机交互
3、因为用户需等待响应,所以响应时间很重要,但并非关键性因素,除非等待很长时间
3、实施应用程序
1、VoIP、视频
2、人与人的交互
3、端到端的延迟至关重要
四、网络的特征
1、速度
2、成本
3、安全性
4、可用性
5、可扩展性
6、可靠性
7、拓扑
五、物理拓扑分类
1、物理拓扑描述了物理设备的布线方式
1、总线拓扑
总线拓扑的网络结构是将网络中的各个节点设备用一根总线(如同轴电缆等)挂接起来,实现计算机网络的功能。
任何连接在总线上的计算机都能在总线上发信号,并且所有计算机都能接收信号。
终结器的作用,吸收脉冲信号,防止反射,总线拓扑两边必须有终结器2、星型拓扑 1、通过中心点传输 2、单一故障点3、扩展星型拓扑 1、比星型拓扑的复原能力更强4、环拓扑 1、信号绕环传输 2、单一故障点5、双环拓扑 信号沿相反方向传输 比单环的复原能力更强6、全网状拓扑 容错能力强 实施成本高7、比分网状拓扑在容错能力与成本之间寻求平衡
六、了解主机到主机通信
1、旧模型
1、专有产品
2、由一个厂商控制应用程序和嵌入的软件
2、基于标准的模型
1、多厂商软件
2、分层方法
七、网络模型分层
OSI 模型的七层解构
降低复杂性、标准化接口、简化模块化设计、确保技术的互操作性、加快发展速度、简化教学
分层名称
功能
每层功能概览
7 应用层
(网络进程访问应用层)
为应用程序进程(例如电子邮件、文件传输和终端仿真
提供网络服务)
提供用户身份验证
针对每个应用的协议
电子邮件<-------------------->电子邮件协议
远程登录<-------------------->远程登录协议
文件传输<-------------------->文件传输协议
6 表示层(数据表示)
确保接收系统可以读出该数据
格式化数据
构建数据
协商用于应用层的数据传输语法
提供加密
(o′┏▽┓`o) ---网络标准格式--->⬜⬜⬜⬜⬜⬜⬜⬜⬜
接收不同表现形式的信息,如文字流、图像、声音等
5 会话层 (主机间通信)
建立、管理和终止在应用程序间的会话
何时建立连接,何时断开连接以及保持多久的连接
设备<------------------------------------>设备
4 传输层(传输问题)
确保数据传输的可靠性
建立、维护和终止虚拟电路
通过错误检测和恢复
信息流控制来保障可靠性
是否有数据丢失
设备--------->--------->---------->设备
3 网络层(数据传输)
路由数据包
选择传递数据的最佳路径
支持逻辑寻址和路径选择
经过哪个路由器传送到目标地址
|----路由器-------路由器
设备----路由器------路由器----路由器----设备
2 数据链路层(访问介质)
定义如何格式化数据以便进行传输以及如何控制对网络
的访问
支持错误检测
数据帧--------->0101--------->比特流
数据帧和比特流之间的转换
设备----|------|-------->设备
|分段转发|
1 物理层(二进制传输)
为启动、维护以及关闭物理链路定义了电气规范,机械
规范,过程规范和功能规范
0101---------0101
比特流与电子信号之间的切换
连接器与网线的规格
数据封装
八、PDU
1、PDU:Protocol Data Unit,协议数据单元,对等层次之间传递的数据单位
2、物理层的PDU是数据位 bit
3、数据链路层的PDU是数据帧 frame
4、网络层的PDU是数据包 packet
5、传输层的PDU是数据段segment
6、其他更高层次的PDU是消息 message
九、三种通讯模式
1、单播
2、组播
3、广播
十、TCP包头
1、源端口、目标端口:计算机上的进程要和其他进程通信是要通过计算机端口的,而一个算机端口某个时刻只能被一个进程占用,所以通过指定源端口和目标端口,就可以知道是哪两个进程需要通信。源端口、目标端口是用16位表示的,可推算计算机的端口个数为2^16个
2、序列号:表示本报文段所发送数据的第一个字节的编号。在TCP连接中所传送的字节流的每一个字节都会按顺序编号。由于序列号由32位表示,所以每2^32个字节,就会出现序列号回绕,再次从 0 开始
3、确认号:表示接收方期望收到发送方下一个报文段的第一个字节数据的编号。也就是告诉发送发:我希望你(指发送方)下次发送的数据的第一个字节数据的编号是这个确认号
4、数据偏移:表示TCP报文段的首部长度,共4位,由于TCP首部包含一个长度可变的选项部分,需要指定这个TCP报文段到底有多长。它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。该字段的单位是32位(即4个字节为计算单位),4位二进制最大表示15,所以数据偏移也就是TCP首部最大60字节
十一、TCP包头
1、URG:表示本报文段中发送的数据是否包含紧急数据。后面的紧急指针字段(urgent pointer)只有当URG=1时才有效
2、ACK:表示是否前面的确认号字段是否有效。ACK=1,表示有效。只有当ACK=1时,前面的确认号字段才有效。TCP规定,连接建立后,ACK必须为1,带ACK标志的TCP报文段称为确认报文段
3、PSH:提示接收端应用程序应该立即从TCP接收缓冲区中读走数据,为接收后续数据腾出空间。如果为1,则表示对方应当立即把数据提交给上层应用,而不是缓存起来,如果应用程序不将接收到的数据读走,就会一直停留在TCP接收缓冲区中
4、RST:如果收到一个RST=1的报文,说明与主机的连接出现了严重错误(如主机崩溃),必须释放连接,然后再重新建立连接。或者说明上次发送给主机的数据有问题,主机拒绝响应,带RST标志的TCP报文段称为复位报文段
5、SYN:在建立连接时使用,用来同步序号。当SYN=1,ACK=0时,表示这是一个请求建立连接的报文段;当SYN=1,ACK=1时,表示对方同意建立连接。SYN=1,说明这是一个请求建立连接或同意建立连接的报文。只有在前两次握手中SYN才置为1,带SYN标志的TCP报文段称为同步报文段
6、FIN:表示通知对方本端要关闭连接了,标记数据是否发送完毕。如果FIN=1,即告诉对方:“我的数据已经发送完毕,你可以释放连接了”,带FIN标志的TCP报文段称为结束报文段
窗口大小:表示现在允许对方发送的数据量,也就是告诉对方,从本报文段的确认号开始允许对方发送的数据量
校验和:提供额外的可靠性
紧急指针:标记紧急数据在数据字段中的位置
选项部分:其最大长度可根据TCP首部长度进行推算。TCP首部长度用4位表示,选项部分最长为:(2^4-1)*4-20=40字节
常见选项:
最大报文段长度:Maxium Segment Size,MSS
窗口扩大:Windows Scaling
时间戳: Timestamps
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个序列号就会产生回绕,那么使用时间戳字段就很容易区分相同序列号的不同报文
十一、TCP三次握手
SYN-SENT同步已发送
LISTEN收听
SYN-RCVD同步收到
ESRAB-LISHED已建立连接
十二、TCP的四次挥手
十三、有限状态机
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报文段在网络中的最大生存时间,RFC 1122标准的建议值是2min).客户端等待2MSL,是为了当最后一个ACK丢失时,可以再发送一次。因为服务端在等待超时后会再发送一个FIN给客户端,进而客户端知道ACK已丢失
2、只有服务端的FIN时,回应一个ACK给服务端,进入CLOSING状态,然后接收到服务端的ACK时,进入TIME_WAIT状态
3、同时收到服务端的ACK和FIN,直接进入TIME_WAIT状态
十四:客户端的典型状态转移
客户端通过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 指定孤儿连接在内核中生存的时间
十五: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)
十六、UDP特性
工作在传输层
提供不可靠的网络访问
非面向连接协议
有限的错误检查
传输性能高
无数据恢复特性
十七、Internet协议特征
运行于 OSI 网络层
面向无连接的协议
独立处理数据包
分层编址
尽力而为传输
无数据恢复功能
IP PDU报头
1、 版本:占4位,指 IP 协议的版本目前的IP协议版本号为4
2、首部长度:占4位,可表示的最大数值是15个单位,一个单位为4字节,因此IP 的首部长度的最大值是60字节
3、区分服务:占8位,用来获得更好的服务,在旧标准中叫做服务类型,但实际上一直未被使用过.后改名为区分服务.只有在使用区分服务(DiffServ)时,这个字段才起作用.一般的情况下都不使用
4、总长度:占16位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节.总长度必须不超过最大传送单元 MTU
5、标识:占16位,它是一个计数器,通常,每发送一个报文,该值会加1, 也用于数据包分片,在同一个包的若干分片中,该值是相同的
6、标志(flag):占3位,目前只有后两位有意义
7、DF: Don‘t Fragment,中间的一位,只有当 DF=0 时才允许分片
8、MF: More Fragment,最高位,MF=1表示后面还有分片。MF=0表示最后一个分片
9、片偏移:占12位,指较长的分组在分片后,该分片在原分组中的相对位置.片偏移以8个字节为偏移单位
10、生存时间:占8位,记为TTL (Time To Live) 数据报在网络中可通过的路由器数的最大值,TTL 字段是由发送端初始设置一个 8 bit字段.推荐的初始值由分配数字 RFC 指定,当前值为64.发送 ICMP 回显应答时经常把 TTL 设为最大值 255
11、协议:占8位,指出此数据报携带的数据使用何种协议以便目的主机的IP层将数据部分上交给哪个处理过程, 1表示为 ICMP协议, 2表示为 IGMP 协议, 6表示为 TCP 协议, 17表示为UDP 协议
12、首部检验和:占16位,只检验数据报的首部不检验数据部分.这里不采用 CRC 检验码而采用简单的计算方法
13、源地址和目的地址:都各占4字节,分别记录源地址和目的地址
14、片偏移以8个字节为偏移单位
15、假定MTU=1400,三个包id=100相同, 前两个 mf=1,最后一个mf=0
十八、IP地址
1、它们可唯一标识 IP 网络中的每台设备
2、每台主机(计算机、网络设备、外围设备)必须具有唯一的地址
3、IP地址由两部分组成:
• 网络ID:
• 标识网络
• 每个网段分配一个网络ID
• 主机 ID:
• 标识单个主机
• 由组织分配给各设备
4、IPv4地址格式:点分十进制记法5、IP地址分类A类: 0 000 0000 - 0 111 1111: 1-127 网络数:126, 127 每个网络中的主机数:2^24-2 默认子网掩码:255.0.0.0 私网地址:10.0.0.0B类: 10 00 0000 - 10 11 1111:128-191 网络数:2^14 每个网络中的主机数:2^16-2 默认子网掩码:255.255.0.0 私网地址:172.16.0.0-172.31.0.0C类: 110 0 0000 - 110 1 1111: 192-223 网络数:2^21 每个网络中的主机数:2^8-2 默认子网掩码:255.255.255.0 私网地址:192.168.0.0-192.168.255.0D类:组播 1110 0000 - 1110 1111: 224-239E类: 240-2556、公共IP地址7、私有IP地址7、特殊地址 1、0.0.0.0 0.0.0.0不是一个真正意义上的IP地址。它表示一个集合:所有不清楚的主机和目的网络。 2、255.255.255.255 限制广播地址。对本机来说,这个地址指本网段内(同一广播域)的所有主机 3、127.0.0.1~127.255.255.254 本机回环地址,主要用于测试。在传输介质上永远不应该出现目的地址为“127.0.0.1”的 数据包。 4、224.0.0.0到239.255.255.255 组播地址,224.0.0.1特指所有主机,224.0.0.2特指所有路由器。224.0.0.5指OSPF 路由器,地址多用于一些特定的程序以及多媒体程序 5、169.254.x.x 如果Windows主机使用了DHCP自动分配IP地址,而又无法从DHCP服务器获取地址,系统会为主机分配这样地址。8、保留地址9、子网掩码10、有子网的子网络11、子网掩码的八位12、可变长度子网掩码13、Subnet地址14、优化IP地址分配15、跨网络通信 1、跨网络通信:路由 2、路由分类: 主机路由 网络路由 默认路由 3、优先级:精度越高,优先级越高16、动态主机配置协议DHCP17、基本网络配置 1、将Linux主机接入到网络,需要配置网络相关设置。 2、一般包括如下内容: 主机名 IP/netmask 路由:默认网关 DNS服务器 主DNS服务器 次DNS服务器 第三DNS服务器18、CentOS 6网卡名称 1、接口命名方式:CentOS 6 以太网:eth[0,1,2,...] ppp:ppp[0,1,2,...] 2、网络接口识别并命名相关的udev配置文件: /etc/udev/rules.d/70-persistent-net.rules 3、查看网卡: dmesg |grep –i eth ethtool -i eth0 4、卸载网卡驱动: modprobe -r e1000 rmmod e1000 5、装载网卡驱动: modprobe e100019、网络配置方式 1、静态指定: ifconfig, route, netstat ip: object {link, addr, route}, ss, tc system-config-network-tui,setup 配置文件 2、动态分配: DHCP: Dynamic Host Configuration Protocol20、配置网络接口 ifconfig命令 ifconfig [interface] ifconfig -a ifconfig IFACE [up|down] ifconfig interface [aftype] options | address ... ifconfig IFACE IP/netmask [up] ifconfig IFACE IP netmask NETMASK 注意:立即生效 启用混杂模式:[-]promisc21、route命令 1、路由管理命令 2、查看:route -n 3、添加:route add route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If] 4、目标:192.168.1.3 网关:172.16.0.1 route add -host 192.168.1.3 gw 172.16.0.1 dev eth0 5、目标: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 6、默认路由,网关: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 7、删除:route del route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If] 8、目标:192.168.1.3 网关:172.16.0.1 route del -host 192.168.1.3 9、目标:192.168.0.0 网关:172.16.0.1 route del -net 192.168.0.0 netmask 255.255.255.022、配置动态路由 通过守护进程获取动态路由 • 安装quagga包 • 支持多种路由协议:RIP、OSPF和BGP • 命令vtysh配置23、netstat命令 1、netstat - Print network connections, routing tables, interface,statistics, masquerade connections, and multicast memberships 2、显示网络连接: netstat [--tcp|-t] [--udp|-u] [--raw|-w] [--listening|-l] [--all|-a] [--numeric|-n] [--extend|-e[--extend|-e]] [--program|-p] -t: tcp协议相关 -u: udp协议相关 -w: raw socket相关 -l: 处于监听状态 -a: 所有状态 -n: 以数字显示IP和端口; -e:扩展格式 -p: 显示相关进程及PID 3、常用组合: -tan, -uan, -tnl, -unl 4、显示路由表: netstat {--route|-r} [--numeric|-n] -r: 显示内核路由表 -n: 数字格式 5、显示接口统计数据: netstat {--interfaces|-I|-i} [iface] [--all|-a] [--extend|-e] [--program|-p] [--numeric|-n] netstat -i netstat –I=IFACE ifconfig -s eth024、ip命令 1、配置Linux网络属性:ip命令 2、ip - show / manipulate routing, devices, policy routing and tunnels ip [ OPTIONS ] OBJECT { COMMAND | help } OBJECT := { link | addr | route } ip link - network device configuration set dev IFACE 可设置属性: up and down:激活或禁用指定接口 ifup/ifdown show [dev IFACE]:指定接口 [up]:仅显示处于激活状态的接口 3、ip addr { add | del } IFADDR dev STRING [label LABEL]:添加地址时指明网卡别名 [scope {global|link|host}]:指明作用域 global: 全局可用 link: 仅链接可用 host: 本机可用 [broadcast ADDRESS]:指明广播地址 4、ip address show - look at protocol addresses [dev DEVICE] [label PATTERN] [primary and secondary] 5、ip address flush - 使用格式同show 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 label eth0:0 6、ip route - routing table management 添加路由:ip route add ip route add TARGET via GW dev IFACE src SOURCE_IP TARGET: 主机路由:IP 网络路由:NETWORK/MASK ip route add 192.168.0.0/24 via 172.16.0.1 ip route add 192.168.1.13 via 172.16.0.1 添加网关:ip route add default via GW dev IFACE ip route add default via 172.16.0.1 删除路由:ip route delete ip route del TARGET 显示路由:ip route show|list 清空路由表:ip route flush [dev IFACE] [via PREFIX] ip route flush dev eth025、ss命令 1、格式:ss [OPTION]... [FILTER] 2、netstat通过遍历proc来获取socket信息,ss使用netlink与内核tcp_diag模块通信获取socket信息。 3、选项: -t: tcp协议相关 -u: udp协议相关 -w: 裸套接字相关 -x:unix sock相关 -l: listen状态的连接 -a: 所有 -n: 数字格式 -p: 相关的程序及PID -e: 扩展的信息 -m:内存用量 -o:计时器信息 4、FILTER : [ state TCP-STATE ] [ EXPRESSION ] 5、TCP的常见状态: tcp finite state machine: LISTEN: 监听 ESTABLISHED:已建立的连接 FIN_WAIT_1 FIN_WAIT_2 SYN_SENT SYN_RECV CLOSED 6、EXPRESSION: dport = sport = 示例:’( dport = :ssh or sport = :ssh )’ 7、常用组合: -tan, -tanl, -tanlp, -uan 8、常见用法 ss -l 显示本地打开的所有端口 ss -pl 显示每个进程具体打开的socket ss -t -a 显示所有tcp socket ss -u -a 显示所有的UDP Socekt ss -o state established '( dport = :ssh or sport = :ssh)' 显示所有已建立的ssh连接 ss -o state established '( dport = :http or sport =:http )' 显示所有已建立的HTTP连接 ss -s 列出当前socket详细信息26、网络配置文件 1、IP、MASK、GW、DNS相关配置文件:/etc/sysconfig/network-scripts/ifcfg-IFACE 2、路由相关的配置文件:/etc/sysconfig/network-scripts/route-IFACE 3、/etc/sysconfig/network-scripts/ifcfg-IFACE: 说明参考/usr/share/doc/initscripts-9.49.30/sysconfig.txt DEVICE:此配置文件应用到的设备 HWADDR:对应的设备的MAC地址 BOOTPROTO:激活此设备时使用的地址配置协议,常 用的dhcp, static, none, bootp NM_CONTROLLED:NM是NetworkManager的简写, 此网卡是否接受NM控制;建议CentOS6为“no" 4、ONBOOT:在系统引导时是否激活此设备 5、TYPE:接口类型;常见有的Ethernet, Bridge 6、UUID:设备的惟一标识 7、IPADDR:指明IP地址 8、NETMASK:子网掩码 9、GATEWAY: 默认网关 10、DNS1:第一个DNS服务器指向 11、DNS2:第二个DNS服务器指向 12、USERCTL:普通用户是否可控制此设备 13、PEERDNS:如果BOOTPROTO的值为“dhcp”,是否允许dhcp server分配的dns服务器指向信息直接覆盖至/etc/resolv.conf文件中27、主机名和本地解析器 1、配置当前主机的主机名: hostname [HOSTNAME] /etc/sysconfig/network HOSTNAME= 2、解析器执行正向和逆向查询 3、/etc/hosts • 本地主机名数据库和IP地址的映像 • 对小型独立网络有用 • 通常,在使用DNS前检查 • getent hosts 查看/etc/hosts 内容28、dns名字解析 1、/etc/resolv.conf nameserver DNS_SERVER_IP1 nameserver DNS_SERVER_IP2 nameserver DNS_SERVER_IP3 search magedu.com 2、/etc/nsswitch.conf 与/etc/hosts相比优先于DNS 3、正向解析:FQDN-->IP dig -t A FQDN host -t A FQDN 4、反向解析:IP-->FQDN dig -x IP host -t PTR IP29、网络配置文件 1、/etc/sysconfig/network-scripts/route-IFACE • 注意:需service network restart生效 • 两种风格: (1) TARGET via GW 如:10.0.0.0/8 via 172.16.0.1 (2) 每三行定义一条路由 ADDRESS#=TARGET NETMASK#=mask GATEWAY#=GW30、网卡别名 1、对虚拟主机有用 2、将多个IP地址绑定到一个NIC上 eth0:1 、eth0:2、 eth0:3 3、ifconfig命令: ifconfig eth0:0 192.168.1.100/24 up ifconfig eth0:0 down 4、ip命令: ip addr add 172.16.1.2/16 dev eth0 ip addr add 172.16.1.1/16 dev eth0 label eth0:0 ip addr add 172.16.1.2/16 dev eth0 label eth0:0 ip addr del 172.16.1.1/16 dev eth0 label eth0:0 ip addr flush dev eth0 label eth0:031、设备别名 1、为每个设备别名生成独立的接口配置文件 • 关闭NetworkManager服务 • ifcfg-ethX:xxx • 必须使用静态联网 DEVICE=eth0:0 IPADDR=10.10.10.10 NETMASK=255.0.0.0 ONPARENT=yes 2、注意:service network restart 生效 3、参考/usr/share/doc/initscripts-*/sysconfig.txt32、网卡名称 1、基于BIOS支持启用biosdevname软件 内置网卡:em1,em2 pci卡:pYpX Y:slot ,X:port 2、名称组成格式 en: Ethernet 有线局域网 wl: wlan 无线局域网 ww: wwan无线广域网 名称类型: o<index>: 集成设备的设备索引号 s<slot>: 扩展槽的索引号 x<MAC>: 基于MAC地址的命名 p<bus>s<slot>: enp2s133、采用传统命名方式 1、使用传统命名方式: 2、(1) 编辑/etc/default/grub配置文件 GRUB_CMDLINE_LINUX="rhgb quiet net.ifnames=0" 或:修改/boot/grub2/grub.cfg 3、(2) 为grub2生成其配置文件 grub2-mkconfig -o /etc/grub2.cfg 4、(3) 重启系统34、CentOS 7网络配置工具 1、CentOS7主机名 2、配置文件:/etc/hostname ,默认没有此文件,通过DNS反向解析获取主机名,主机名默认为:localhost.localdomain 3、显示主机名信息 hostname hostnamectl status 4、设置主机名 hostnamectl set-hostname centos7.magedu.com 5、删除文件/etc/hostname,恢复主机名localhost.localdomain 6、CentOS 7网络配置工具 7、图形工具:nm-connection-editor 8、字符配置tui工具:nmtui 9、命令行工具:nmcli35、nmcli命令 1、地址配置工具:nmcli 2、nmcli [ OPTIONS ] OBJECT { COMMAND | help } device - show and manage network interfaces nmcli device help connection - start, stop, and manage network connections nmcli connection help 3、修改IP地址等属性: nmcli connection modify IFACE [+|-]setting.property value setting.property: ipv4.addresses ipv4.gateway ipv4.dns1 ipv4.method manual | auto 4、修改配置文件执行生效:systemctl restart network nmcli con reload 5、nmcli命令生效: nmcli con down eth0 ;nmcli con up eth036、使用nmcli配置网络 1、NeworkManager是管理和监控网络设置的守护进程 2、设备即网络接口,连接是对网络接口的配置。一个网络接口可有多个连接配置,但同时只有一个连接配置生效 3、显示所有包括不活动连接 nmcli con show 4、显示所有活动连接 nmcli con show --active 5、显示网络连接配置 nmcli con show "System eth0“ 6、显示设备状态 nmcli dev status 7、显示网络接口属性 nmcli dev show eth0 8、创建新连接default,IP自动通过dhcp获取 nmcli con add con-name default type Ethernet ifname eth0 9、删除连接 nmcli con del default 10、创建新连接static ,指定静态IP,不自动连接 nmcti con add con-name static ifname eth0 autoconnect no type Ethernet ipv4.addresses 172.25.X.10/24 ipv4.gateway 172.25.X.254 11、启用static连接配置 nmcli con up static 12、启用default连接配置 nmcli con up default 13、查看帮助 nmcli con add help 14、修改连接设置 nmcli con mod“static” connection.autoconnect no nmcli con mod “static” ipv4.dns 172.25.X.254 nmcli con mod “static” +ipv4.dns 8.8.8.8 nmcli con mod “static” -ipv4.dns 8.8.8.8 nmcli con mod “static” ipv4.addresses “172.25.X.10/24 172.25.X.254” nmcli con mod “static” +ipv4.addresses 10.10.10.10/16 15、DNS设置,存放在/etc/resolv.conf文件中 PEERDNS=no 表示当IP通过dhcp自动获取时,dns仍是手动设置,不自动获取。等价于下面命令:nmcli con mod “system eth0” ipv4.ignore-auto-dns yes37、nmcli命令38、网络配置文件 1、设备配置被保存在文本文件中 • /etc/sysconfig/network-scripts/ifcfg-<name> • 帮助文档列出完整选项列表:/usr/share/doc/initcripts-*/sysconfig.txt39、nmcli命令 1、修改连接配置后,需要重新加载配置 nmcli con reload nmcli con down “system eth0” 可被自动激活 nmcli con up “system eth0” nmcli dev dis eth0 禁用网卡,访止被自动激活 2、图形工具 nm-connection-editor 3、字符工具 nmtui nmtui-connect nmtui-edit nmtui-hostname40、测试网络工具 1、在命令行下测试网络的连通性 显示主机名 hostname 2、测试网络连通性 ping mtr 3、显示正确的路由表 ip route 4、确定名称服务器使用: nslookup host dig 5、跟踪路由 • traceroute • tracepath41、网络客户端工具 1、ftp,lftp:子命令:get、mget、ls、help lftp [-p port] [-u user[,password]] SERVER 2、lftpget URL 3、wget [option]... [URL]... -q: 静默模式 -c: 断点续传 -P:保存在指定目录 -O: 保存为指定的文件名 --limit-rate=: 指定传输速率,单位K,M等 4、links URL --dump --source