Linux运维七:网络基础
1:网线
2:交换机,路由器
交换机(Switch)意为“开关”是一种用于电(光)信号转发的网络设备。它可以为接入交换机的任意两个网络节点提供独享的电信号通路。最常见的交换机是以太网交换机。其他常见的还有电话语音交换机、光纤交换机等。(主要品牌有:DLINK,H3C,CISCO)
路由器(Router),是连接因特网中各局域网、广域网的设备,它会根据信道的情况自动选择和设定路由,以最佳路径,按前后顺序发送信号。(主要品牌有:CISCO)
3:OSI七层网络模型
需要了解的是OSI7层模型,以及这些层上都对应哪些协议!见:http://www.cnblogs.com/ginvip/p/6368101.html
OSI七层模型的视频见:点击查看
4:协议
网络协议为计算机网络中进行数据交换而建立的规则、标准或约定的集合。
常见的有:http协议,tcp/ip协议
1)必须会的:tcp/ip协议的三次握手和四次断开过程
参考文章1:【TCP/IP协议三次握手与四次握手流程解析:http://www.2cto.com/net/201310/251896.html】
参考文章2:百度文库
参考视频:点击查看
2)http协议的工作原理
HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。下图表明了这种请求/响应模型。
以下是HTTP请求/响应的步骤:
(1)客户端连接到Web服务器
一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。例如,http://www.oakcms.cn。
(2)发送HTTP请求
通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。
(3)服务器接受请求并返回HTTP响应
Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。
(4)释放连接TCP连接
Web服务器主动关闭TCP套接字,释放TCP连接;客户端被动关闭TCP套接字,释放TCP连接。
(5)客户端浏览器解析HTML内容
客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。
HTTP协议的无状态性
HTTP协议是无状态的(stateless)。也就是说,同一个客户端第二次访问同一个服务器上的页面时,服务器无法知道这个客户端曾经访问过,服务器也无法分辨不同的客户端。HTTP的无状态特性简化了服务器的设计,使服务器更容易支持大量并发的HTTP请求。
持久连接
HTTP1.0使用的是非持久连接,客户端必须为每一个待请求的对象建立并维护一个新的连接。因为同一个页面可能存在多个对象,所以非持久连接可能使一个页面的下载变得十分缓慢,而且这种短连接增加了网络传输的负担。HTTP1.1引入了持久连接,允许在同一个连接中存在多次数据请求和响应,即在持久连接情况下,服务器在发送完响应后并不关闭TCP连接,而客户端可以通过这个连接继续请求其他对象。
5:IP地址的分类
IP地址的分类见:http://www.cnblogs.com/ginvip/p/6364899.html
私网地址:下面的网络地址段就是分配给专用网络地址使用的
10.0.0.1/8 (10.0.0.0 到 10.255.255.255)
172.16.0.0/12 (172.16.0.0 到 172.31.255.255)
192.168.0.0/16 (192.168.0.0 到 192.168.255.255)
169.254.0.0/16 (169.254.0.0 到 169.254.255.255)
其他地址:IDC机房,办公室ISP给我们分配的外网地址
6:用户访问网站流程图
7:DNS原理及解析过程
网络通讯大部分是基于TCP/IP的,而TCP/IP是基于IP地址的,所以计算机在网络上进行通讯时只能识别如“202.96.134.133”之类的IP地址,而不能认识域名。我们无法记住10个以上IP地址的网站,所以我们访问网站时,更多的是在浏览器地址栏中输入域名,就能看到所需要的页面,这是因为有一个叫“DNS服务器”的计算机自动把我们的域名“翻译”成了相应的IP地址,然后调出IP地址所对应的网页。
什么是DNS?
DNS( Domain Name System)是“域名系统”的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,它用于TCP/IP网络,它所提供的服务是用来将主机名和域名转换为IP地址的工作。DNS就是这样的一位“翻译官”,它的基本工作原理可用下图来表示。
DNS域名称
域名系统作为一个层次结构和分布式数据库,包含各种类型的数据,包括主机名和域名。DNS数据库中的名称形成一个分层树状结构称为域命名空间。域名包含单个标签分隔点,例如:im.qq.com。完全限定的域名 (FQDN) 唯一地标识在 DNS 分层树中的主机的位置,通过指定的路径中点分隔从根引用的主机的名称列表。 下图显示与主机称为 im 内 qq.com DNS 树的示例。 主机的 FQDN 是 im.qq.com。
DNS 域的名称层次结构
DNS域名称空间的组织方式
按其功能命名空间中用来描述 DNS 域名称的五个类别的介绍详见下表中,以及与每个名称类型的示例。
DNS 和 Internet 域
互联网域名系统由名称注册机构负责维护分配由组织和国家/地区的顶级域在 Internet 上进行管理。 这些域名按照国际标准 3166。 一些很多现有缩写,保留以供组织中,以及两个字母和三个字母的国家/地区使用的缩写使用下表所示。一些常见的DNS域名称如下图:
资源记录
DNS 数据库中包含的资源记录 (RR)。 每个 RR 标识数据库中的特定资源。我们在建立DNS服务器时,经常会用到SOA,NS,A之类的记录,在维护DNS服务器时,会用到MX,CNAME记录。
常见的RR见下图:
Dns服务的工作过程
当 DNS 客户机需要查询程序中使用的名称时,它会查询本地DNS 服务器来解析该名称。客户机发送的每条查询消息都包括3条信息,以指定服务器应回答的问题。
● 指定的 DNS 域名,表示为完全合格的域名 (FQDN) 。
● 指定的查询类型,它可根据类型指定资源记录,或作为查询操作的专门类型。
● DNS域名的指定类别。
对于DNS 服务器,它始终应指定为 Internet 类别。例如,指定的名称可以是计算机的完全合格的域名,如im.qq.com,并且指定的查询类型用于通过该名称搜索地址资源记录。
DNS 查询以各种不同的方式进行解析。客户机有时也可通过使用从以前查询获得的缓存信息就地应答查询。DNS 服务器可使用其自身的资源记录信息缓存来应答查询,也可代表请求客户机来查询或联系其他 DNS 服务器,以完全解析该名称,并随后将应答返回至客户机。这个过程称为递归。
另外,客户机自己也可尝试联系其他的 DNS 服务器来解析名称。如果客户机这么做,它会使用基于服务器应答的独立和附加的查询,该过程称作迭代,即DNS服务器之间的交互查询就是迭代查询。
DNS 查询的过程如下图所示。
1、在浏览器中输入www.qq.com域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。
2、如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。
3、如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/ip参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。
4、如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。
5、如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(qq.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找qq.com域服务器,重复上面的动作,进行查询,直至找到www.qq.com主机。
6、如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。不管是本地DNS服务器用是是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。
从客户端到本地DNS服务器是属于递归查询,而DNS服务器之间就是的交互查询就是迭代查询。
有关DNS服务的安装配置,见后续博文!
DNS解析原理命令查看实践:
企业面试题:一个域名,如:www.cnblogs.com,请使用dig命令查看该域名的整个解析过程?
[root@Gin scripts]# dig 8.8.8.8 www.baidu.com +trace ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> 8.8.8.8 www.baidu.com +trace ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 2524 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0 ;; QUESTION SECTION: ;8.8.8.8. IN A ;; AUTHORITY SECTION: . 3600 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2017020400 1800 900 604800 86400 ;; Query time: 239 msec ;; SERVER: 202.106.0.20#53(202.106.0.20) ;; WHEN: Sat Feb 4 15:15:36 2017 ;; MSG SIZE rcvd: 100 . 35840 IN NS e.root-servers.net. . 35840 IN NS c.root-servers.net. . 35840 IN NS g.root-servers.net. . 35840 IN NS i.root-servers.net. . 35840 IN NS h.root-servers.net. . 35840 IN NS l.root-servers.net. . 35840 IN NS m.root-servers.net. . 35840 IN NS f.root-servers.net. . 35840 IN NS k.root-servers.net. . 35840 IN NS d.root-servers.net. . 35840 IN NS j.root-servers.net. . 35840 IN NS b.root-servers.net. . 35840 IN NS a.root-servers.net. ;; Received 228 bytes from 8.8.8.8#53(8.8.8.8) in 77939 ms com. 172800 IN NS f.gtld-servers.net. com. 172800 IN NS l.gtld-servers.net. com. 172800 IN NS g.gtld-servers.net. com. 172800 IN NS b.gtld-servers.net. com. 172800 IN NS m.gtld-servers.net. com. 172800 IN NS c.gtld-servers.net. com. 172800 IN NS e.gtld-servers.net. com. 172800 IN NS h.gtld-servers.net. com. 172800 IN NS i.gtld-servers.net. com. 172800 IN NS a.gtld-servers.net. com. 172800 IN NS k.gtld-servers.net. com. 172800 IN NS j.gtld-servers.net. com. 172800 IN NS d.gtld-servers.net. ;; Received 491 bytes from 202.12.27.33#53(202.12.27.33) in 78137 ms baidu.com. 172800 IN NS dns.baidu.com. baidu.com. 172800 IN NS ns2.baidu.com. baidu.com. 172800 IN NS ns3.baidu.com. baidu.com. 172800 IN NS ns4.baidu.com. baidu.com. 172800 IN NS ns7.baidu.com. ;; Received 201 bytes from 192.54.112.30#53(192.54.112.30) in 66527 ms www.baidu.com. 1200 IN CNAME www.a.shifen.com. a.shifen.com. 1200 IN NS ns5.a.shifen.com. a.shifen.com. 1200 IN NS ns2.a.shifen.com. a.shifen.com. 1200 IN NS ns4.a.shifen.com. a.shifen.com. 1200 IN NS ns3.a.shifen.com. a.shifen.com. 1200 IN NS ns1.a.shifen.com. ;; Received 228 bytes from 61.135.165.235#53(61.135.165.235) in 73 ms
DNS域名解析命令总结:
dig命令总结见:http://www.cnblogs.com/ginvip/p/6365605.html
nslookup
[root@Gin scripts]# nslookup > baidu.com Server: 202.106.0.20 Address: 202.106.0.20#53 Non-authoritative answer: Name: baidu.com Address: 111.13.101.208 Name: baidu.com Address: 220.181.57.217 Name: baidu.com Address: 180.149.132.47 Name: baidu.com Address: 123.125.114.144
host
[root@Gin scripts]# host www.baidu.com www.baidu.com is an alias for www.a.shifen.com. www.a.shifen.com has address 111.206.223.205 www.a.shifen.com has address 111.206.223.206
ping
[root@Gin scripts]# ping -c2 www.baidu.com PING www.a.shifen.com (111.206.223.206) 56(84) bytes of data. 64 bytes from 111.206.223.206: icmp_seq=1 ttl=128 time=52.9 ms 64 bytes from 111.206.223.206: icmp_seq=2 ttl=128 time=78.6 ms --- www.a.shifen.com ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 5217ms rtt min/avg/max/mdev = 52.976/65.821/78.667/12.848 ms
8:网卡知识
网卡配置文件:/etc/sysconfig/network-scripts/ifcfg-eth0,有关该配置文件中的各字段详解见:http://www.cnblogs.com/ginvip/p/6351740.html
网卡生效推荐步骤:
ifdown eth0 ifup eth0 /etc/init.d/network restart #此方法针对所有网卡
网卡配置的DNS优先于/etc/resolv.conf配置的,并且重启网卡,会把/etc/resolv.conf里覆盖
网络如果没有配置DNS,那么在/etc/resolv.conf里配置会生效,如果有多块网卡(DHCP获取方式)的时候,可能会覆盖/etc/resolv.conf里已有的配置
推荐修改主机名的规范步骤:
a)hostname ginlinux
b)vi /etc/sysconfig/network
c)vi /etc/hosts
默认网关的配置:
第一生效文件:
[root@Gin scripts]# grep -i gate /etc/sysconfig/network-scripts/ifcfg-eth0 GATEWAY=192.168.17.2
第二生效文件:
[root@Gin scripts]# grep -i gate /etc/sysconfig/network
命令行优先,临时生效:
[root@gin ~]# route add default gw 192.168.17.1 [root@gin ~]# route del default gw 192.168.17.1
route功能很多,不仅仅配置默认网关
查看默认网关:
[root@Gin scripts]# netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 192.168.17.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0 0.0.0.0 192.168.17.2 0.0.0.0 UG 0 0 0 eth0 [root@Gin scripts]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.17.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0 0.0.0.0 192.168.17.2 0.0.0.0 UG 0 0 0 eth0
9:查看网络信息
1:ifconfig查看配置别名ip等
linux下网卡可支持多个IP地址,如用下面的命令给eth1网卡再增加一个IP:
[root@Gin scripts]# ifconfig eth1:0 192.168.17.130 netmask 255.255.255.0 up 或者: [root@Gin scripts]# ifconfig eth1:0 192.168.17.130/24 up
这种IP称为VIP,虚拟IP,主机重启即失效!如果手动取消可使用下面的命令:
[root@Gin scripts]# ifconfig eth1:0 down
2:用IP的方式配多个IP,辅助IP,辅助IP的形式:keepalived 高可用一直都是用的辅助IP
ip命令详解见:http://www.cnblogs.com/ginvip/p/6367803.html
[root@Gin scripts]# ip addr add 192.168.17.130/24 dev eth1:3
3:route
route命令总结见:http://www.cnblogs.com/ginvip/p/6367850.html
4:netstat
netstat命令总结见:http://www.cnblogs.com/ginvip/p/6367913.html
5:lsof
lsof命令总结见:http://www.cnblogs.com/ginvip/p/6367939.html
10:网络及服务故障排查
例:检查老男孩教育的网站是否有问题
A:ping www.etiantian.org icmp协议,(高速公路有没有修通),linux可以禁止icmp
ping -c3 -i2 -s512 www.baidu.com
B:traceroute www.baidu.com 基础检查,各个高速节点有没有修通
traceroute www.baidu.com -n
有关traceroute命令总结见:http://www.cnblogs.com/ginvip/p/6368460.html
C:telnet www.baidu.com 80 检查服务器WEB有没有开启,服务开没开,以及防火墙有没有挡住(让不让这个服务通过,让不让你跑汽车)
也可以使用nmap , nc命令
nmap 10.0.0.25 -p 80
nc
如果不通:
1)80服务没开或端口不存在
2)fw防火墙阻挡了
3)服务监听的端口不在连接的IP上(127.0.0.1:25)
4)ISP运营商默认不开端口,申请开端口
D:win下,跟踪路由
tracert -d www.baidu.com
抓包工具:
tcpdump : tcpdump -n icmp -i eth0
tcpdump高手必用的命令
企业面试题
一:已知一个端口为333,如何查看端口对应的服务名
方法1: [root@gin ~]# lsof -i :333 方法2: [root@gin ~]# netstat -lnput |grep 333
二:作为网管,局域网的某个机器无法上网,怎么排查
以win32为例:排查方法 (基本思路,在客户端上执行)
(一)单台机器上不了网
a)ping www.baidu.com ,如果通,但还不能上网,可能是浏览器等的问题
b)ping网关,目的是排除物理链路(网线,网卡,驱动,IP设置等)。
如果ping网关不通,则查看ip设置,然后ping 自己设置的ip或ping网内其它机器ip。
如果ping自己ip不通:检查ip设置,网卡驱动,物理链路;如果ping网内其它机器ip是通的,网关限制你联网了
c)ping网关通的情况下,检查DNS的设置情况是否正确。
1、检查方法是ping公网ip,看通畅情况(平时要记几个外部ip) ping 203.81.19.1
2、host/dig/nslookup检查域名解析
d)上网路由器以及ISP线路问题
登录路由,检查上级线路,打电话给ISP技术
e)辅助排查:IP地址冲突,其他人能否上网,ARP病毒,核心交换机坏了,交换机环路(看日志)
(二)如果是大面积上不了网:
路由器,ISP,核心交换机,ARP病毒欺骗网关,网关地址被占用,LDNS出问题,核心交换机坏了,交换机环路
三:作为linux运维,客户反应你布局的网站服务器访问慢,打不开,如何排错
先分清楚是个例还是全部。假设网站域名为:www.vip.com
1:路是否通的问题
a)ping www.vip.com
如果ping是通的,不丢包:可能是http服务的问题(服务宕机,服务过载了)
如果ping是通的,丢包:可能是机房带宽不稳定,各个线路不稳定
如果ping不通,则ping www.baidu.com ,机房宕了,或者http服务的问题(服务宕机,服务过载了)
b)linux系统下可用:traceroute -d www.baidu.com 从客户端到服务器之间各个线路,让机房配合
2:机房业务是否OK
c)telnet www.vip.com 80 检查服务器web服务有没有开启以及防火墙有没有挡住
nmap www.vip.com -p 80;curl www.vip.com or wget www.vip.com,相当于浏览器访问
d)提供服务的服务器是否资源过载,服务器及服务连接数过多,负载高,CPU高,IO高等
3:外部问题
e)服务器购买的带宽满了,通过流量监控服务查看
f)内链外链(调用外部网站网址有问题)
4:其他问题
个别客户自身问题,如:用户的线路和网站带宽的线路不符
5:集群架构(数百台服务器提供服务)
g)检查web服务
h)数据库问题,登陆数据库,看是否有慢查询语句 show proceslist,调用MYSQL配置,优化SQL语句
j)存储等问题,如:NFS , MFS的负载及磁盘IO高
本节小结(必须要掌握的):
1)tcp/ip协议的三次握手和四次断开过程
2)http协议的工作原理
3)机器无法上网
4)网站打开慢
5)DNS解析原理
6)OSI7层网络模型
7)如何查看已知端口对应的是什么服务名
8)route如何添加一个网络路由