16、局域网LAN(local area network) 8
16、局域网LAN(local area network) 8
1、网络介绍:
vpn虚拟的网络
(1)计算机网络:把各种网络设备,通过某种媒介连接起来,通过某种规则网络规则进行通信。
把网络设备关联起来,通过某种网络规则。
- 资源共享的优点特点:
数据和应用程序,资源共享,网络存储,备份设备。
(3)常见网络物理组件:交换机、路由器、RJ-45连接器、网络接口卡、pc机。
2、网络应用程序
Web浏览器(Chrome,IE,Firefox等)
及时消息:(QQ,微信,钉钉)
电子邮件(Outlook,foxmail等)
协作(视频会议,VNC,Netmeeting,webex)
Web网络服务(apache,nginx,IIS)
文件网络服务(ftp,nfs(Unix下),Samba)
数据库服务(MySQL,MariaDB,mongodb)
中间件服务(Tomcat,Jboss)
安全服务(netfilter)
3、用户应用程序对网络的影响
批处理应用程序
ftp、TFTP、库存更新
无需人工交互
带宽很重要,但非关键性因素
交互式应用程序
库存查询、数据更新
人机交互
因为用户需等待响应,所以响应时间很重要,但并非关键性因素,除非要等待很长时间
实时应用程序
VoIP、视频
人与人的交互
端到端的延时至关重要
4、网络的特征
速度
成本
安全性
可用性
可拓展性
可靠性
拓扑
5、带宽
单位不一样:带宽100M位: 下载10M是字节:
对应的是八个位。
下载速度较慢的可能是下载的资源的服务器较慢。
6、物理拓扑分类
总线拓扑:有线电视,两端50Ω的电阻。
环状拓扑:
星型:教室用的。
网状拓扑:成本较高。关键的业务。避免单点失败。
逻辑拓扑:数据流动的方式,物理上是星型,传输数据是环状。描述了信息在网络中的流动的方式。Msau
逻辑和物理的并不同一。
7、主机到主机通信
旧模型
专有产品
由一个厂商控制应用程序和嵌入的软件
基于标准的模型(现在是基于标准的)
多厂商软件
分层方法
8、网络模型分层
七层模型:
ISO国际标准化组织。推出OSI标准
应用层
表示层
会话层
传输层
网络层
数据链层
物理层
特点:降低了复杂性、标准化接口、简化模块化设计、确保技术的互操作性、加快发展速度、简化教学
9、OSI模型的七层结构
(1)物理层:物理连接的问题,bit(位)概念,二进制。
(2)数据链路层:访问介质,定义如何格式化数据以便进行运输以及如何控制对网络的控制。frame帧,检查错误的功能。物理地址MAC地址。(与或非:)
(3)网络层:数据传输,逻辑地址,路由数据包,选择最佳的路径。
(4)传输层:数据可靠传输,检查错误的功能,
(5)会话层:建立和管理、终止会话。
(6)表示层:数据表示,确保接受系统可以读出该数据,ASCII是7位。
(7)应用层:为应用程序进程,提供身份验证,网络过程访问应用层。
下层都是为上次提供服务的。
10、数据封装
数据从上层到下层层层打包(应用层到物理层),HDR=报头
12、数据解封
从下层到上层解包(从物理层到应用层),有地址,表示上层是谁。下层带有上层服务的标记。
14、PDU
PDU:protocol Data Unit,协议数据单元是指对等层次之间传递的数据单位。
物理层的PDU是数据位bit
数据连层的PDU是数据帧frame
网络层的PDU是数据包packet
传输层的PDU是数据段segment
其他更高层次的PDU是消息message
mtu表示帧frame的大小。
15、三种通讯模式
广播:发送的数据的是所有用户设备
组播(多播):部分特定的计算机
单播:一对一的,接受数据的是一台主机,但是别的主机也会听到此消息。
16、局域网LAN(local area network)
LAN的组成:
Computers:pcs、servers
Interconnections:nics、media
Network devices:hubs、switches、routers
Protocols:Ethern、ip、arp、dhcp
17、网络线缆和接口
Twisted—pair:10baset Unshielded (UTP) Shielded (ST) 教室用的网线等
Coaxial: 10base2,10base5 thinet、thicknet 以前电视机利用的等
Fiber–optic:光纤
网络线缆和接口:UTP 非屏蔽 STP屏蔽 加一层金属薄膜
10baset 100米传输距离。双绞线。
传输距离较大利用中继器:
UTP:T568B标准。
(ethtool eth0)查看网络传输速度。
单工(一个方向传输)
半双工(轮流双向传输)half
全双工:同时双向传递。Full
UTP直通线和交叉线:10M以下的利用的都是12/36线。 12发送数据,36接收数据。
计算机和交换机是直连的,交换机上面做了交叉,不需要网线上做交叉了。
企业的路由器类似交换机的功能。Tx rx
以太网:DIX
802.3ae国际标准。
BI=双向数据 RX=接收数据receive data TX=传输数据。TRansmit data
1000BASE-T GBICGBIC是Giga Bitrate Interface Converter的缩写,是将千兆位电信号转换为光信号的接口器。
19、Ethernet frame结构
目标地址,原地址。46-1500,之间mtu。Ipx/spx novell netware
tcp/ip
II 代:
以太网最大帧1526,最小72. 1514是去掉头和尾部。
ethtool eth2 查看网络情况。
20、数据链路层
17、Mac地址
48位组成。前24bits生产厂家的编号,后面24bits是厂家的编号,世界唯一。
18、冲突检测的载波帧听多路访问csma/cd
19、hub集线器
Hub:多端口中继器
Hub并不记忆该信息包是由哪个MAC地址发出,哪个MAC地址在hub的哪个端口。
Hub特点:
共享带宽
半双工
冲突域:一个设备发送数据,另一个设备也同时发,发生了冲突,同一个冲突域。
广播域:当一个设备发广播,另一个主机设备收到了,两个设备在一个广播域中。
基于广播域的,泛红。
集线器hub在物理层。
网桥和交换机在数据链层。
20、以太网桥
交换式以太网的优势
拓展了网络带宽
隔断了冲突域,提高了效率,使网络冲突被现在在最先的范围内
交换机作为更加智能的交换设备,能够提供更多用户所要求的功能:优先级,虚拟网、远程检测。
学习的是学习的源地址,转发的是目标地址。
交换机不能隔断广播。
改变方法就是路由器。隔断广播域的作用,交换器做不到。
ARP基于广播机制的。
以太网桥的工作原理:
以太网桥监听数据帧中源MAC地址,学习MAC,建立MAC表
对于未知MAC地址,网桥将转发到除接受该帧的端口之外的所有端口
当网桥接收到一个数据帧时候,如果该帧的目的位于接收端口所在网段上,他就过滤掉该数据帧,如果目的的MAC地址在位于另外一个端口,网桥就将该帧转发到该端口。
当网桥接收到广播帧时候,他会立即转发到除接收端口之外的所有其他端口。
21、hub和交换机
集线器属于OSI的第一层物理层设备,而网桥属于OSI的第二层数据链路层设备
从工作方式来看,集线器就是一种广播模式,所有端口在一个冲突域中,网桥的可以通过端口格力冲突。
Hub是所有共享贡献和共享号带宽,网桥每个端口占用一个带宽。
22、路由器
Rzp协议:选择路由组少的。
Dspe协议:选择合适的。
路由表。Route -u查看路由信息。
广域网设备
分隔广播域
选择路由表中到大目标最好的路径
维护和检查路由信息
路由:把一个数据包从一个设备发送到不同的网络里的另一个设备上去,这些工作依靠理由器来完成。路由器只关心网络中的状态和决定网络中最佳路径,路由的实现依靠路由中的路由表来完成。
23、VLAN技术
交换机的隔断广播域功能。
安全
灵活管理
不能实现VLAN域VLAN之间的通信的,通讯的话还是要采用路由。
VLAN = 广播域=逻辑网络(subnet)
Trank协议:802.1Q
23、分层网络架构
核心层 core layer: 企业级应用快速转发。
分布层:distribution layer,广播域,路由,安全,远程接入,访问层汇聚。
访问层accesslayer:终端接入
24、TCP/IP协议栈
Transmission Control Protocol
/Internet Protocol
传输控制协议/因特网互联协议u
TCP/IP是一个Protocol Stack,包括TCP、IP、UDP、ICMP、RIP、TELNET、FTP、SMTP、ARP等许多协议u
最早发源于美国国防部(缩写为DoD)的因特网的前身ARPA网项目,1983年1月1日,TCP/IP取代了旧的网络控制协议NCP,成为今天的互联网和局域网的基石和标准,由互联网工程任务组负责维护u
共定义了四层u
和ISO参考模型的分层有对应
应用层
传输层
Internet层
网络访问层
WLAN:
WiFi
wapi中国
对应关系::::
应用层: 应用层:
表示层:
会话层:
传输层: 传输层:
Internet层: 网络层:
网络访问层:
(数据链路层) 数据链路层:
(物理层) 物理层:
网卡是数据链路层。
WiFi是数据链和物理层。
25、应用层:
26、传输层:
27、可靠性vs高效性(TCP vs UDP)
28、TCP协议特性
工作在传输层
面向连接协议
全双工协议
半关闭
错误检查
将数据打包成段,排序
确认机制
数据恢复,重传。
流量控制,滑动窗口
拥塞控制,慢启动和拥塞避免算法
29、TCP包头
端口和目标端口各是六万多个。65535个 ss-ntul
源端口、目标端口:计算机上的进程要和其他进程通信是要通过计算机端口的,而一个计算机端口某个时刻只能被一个进程占用,所以通过指定源端口和目标端口,就可以知道是哪两个进程需要通信。源端口、目标端口是用16位表示的,可推算计算机的端口个数为2^16个u
序列号:表示本报文段所发送数据的第一个字节的编号。在TCP连接中所传送的字节流的每一个字节都会按顺序编号。由于序列号由32位表示,所以每2^32个字节,就会出现序列号回绕,再次从 0 开始u
确认号:表示接收方期望收到发送方下一个报文段的第一个字节数据的编号。也就是告诉发送发:我希望你(指发送方)下次发送的数据的第一个字节数据的编号是这个确认号u
数据偏移:表示TCP报文段的首部长度,共4位,由于TCP首部包含一个长度可变的选项部分,需要指定这个TCP报文段到底有多长。它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。该字段的单位是32位(即4个字节为计算单位),4位二进制最大表示15,所以数据偏移也就是TCP首部最大60
u URG:表示本报文段中发送的数据是否包含紧急数据。后面的紧急指针字段(urgent
pointer)只有当URG=1时才有效
u ACK:表示是否前面的确认号字段是否有效。ACK=1,表示有效。只有当ACK=1时,前面的确认号字段才有效。TCP规定,连接建立后,ACK必须为1,带ACK标志的TCP报文段称为确认报文段
u PSH:提示接收端应用程序应该立即从TCP接收缓冲区中读走数据,为接收后续数据腾出空间。如果为1,则表示对方应当立即把数据提交给上层应用,而不是缓存起来,如果应用程序不将接收到的数据读走,就会一直停留在TCP接收缓冲区中
u RST:如果收到一个RST=1的报文,说明与主机的连接出现了严重错误(如主机崩溃),必须释放连接,然后再重新建立连接。或者说明上次发送给主机的数据有问题,主机拒绝响应,带RST标志的TCP报文段称为复位报文段
uSYN:在建立连接时使用,用来同步序号。当SYN=1,ACK=0时,表示这是一个请求建立连接的报文段;当SYN=1,ACK=1时,表示对方同意建立连接。SYN=1,说明这是一个请求建立连接或同意建立连接的报文。只有在前两次握手中SYN才置为1,带SYN标志的TCP报文段称为同步报文段
u FIN:表示通知对方本端要关闭连接了,标记数据是否发送完毕。如果FIN=1,即告诉对方:“我的数据已经发送完毕,你可以释放连接了”,带FIN标志的TCP报文段称为结束报文段
窗口大小:表示现在允许对方发送的数据量,也就是告诉对方,从本报文段的确认号开始允许对方发送的数据量
校验和:提供额外的可靠性
紧急指针:标记紧急数据在数据字段中的位置
选项部分:其最大长度可根据TCP首部长度进行推算。TCP首部长度用4位表示,选项部分最长为:(2^4-1)*4-20=40字节
常见选项:
Ø最大报文段长度:Maxium Segment Size,MSS
Ø窗口扩大:Windows Scaling
Ø时间戳: Timestamps
30、TCP包头选项
u1 最大报文段长度
指明自己期望对方发送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。但是随着时延和带宽比较大的通信产生(如卫星通信),需要更大的窗口
来满足性能和吞吐率,所以产生了这个窗口扩大选项
u3 时间戳
可以用来计算RTT(往返时间),发送方发送TCP报文时,把当前的时间值放入时间
戳字段,接收方收到后发送确认报文时,把这个时间戳字段的值复制到确认报文中,
当发送方收到确认报文后即可计算出RTT。也可以用来防止回绕序号PAWS,也可
以说可以用来区分相同序列号的不同报文。因为序列号用32为表示,每2^32个序
列号就会产生回绕,那么使用时间戳字段就很容易区分相同序列号的不同报文
31、映射第四层到应用程序
32、TCP协议PORT
/etc/sercives查看端口占用情况: grep xxxx /etc/services创建。
tcp:
udp:
tasklist
(ping -a 解析ip)
u 传输层通过port号,确定应用层协议u
Port number:u
tcp:传输控制协议,面向连接的协议;通信前需要建立虚拟链路;结束后拆除链路0-65535
udp:User Datagram Protocol,无连接的协议0-65535u
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_ran
建立连接:
源端口:
目的端口:
序列号:
确认号:
数据偏移:ack syn fin
33、TCP三次握手
- 主动发送请求,syn。
- 服务器回复,ack,syn。
- 客户
状态:netstat -nta
34、TCP四次挥手
不一定是客户或者服务器提出分手,
- 发送fin
- 回复ack
- 回复fin,ack
- 最终的Ack。 一个分手包,一个断开连接包,终止。
35、有限状态机FSM
CLOSED 没有任何连接状态
u LISTEN 侦听状态,等待来自远方TCP端口的连接请求
u SYN-SENT 在发送连接请求后,等待对方确认
u SYN-RECEIVED 在收到和发送一个连接请求后,等待对方确认
u ESTABLISHED 代表传输连接建立,双方进入数据传送状态
u FIN-WAIT-1 主动关闭,主机已发送关闭连接请求,等待对方确认
u FIN-WAIT-2 主动关闭,主机已收到对方关闭传输连接确认,等待对方发送关闭传输
连接请求
u TIME-WAIT 完成双向传输连接关闭,等待所有分组消失
u CLOSE-WAIT 被动关闭,收到对方发来的关闭连接请求,并已确认
u LAST-ACK 被动关闭,等待最后一个关闭传输连接确认,并等待所有分组消失
u CLOSING 双方同时尝试关闭传输连接,等待对方确认
客户端先发送一个FIN给服务端,自己进入了FIN_WAIT_1状态,这时等待接收服务端
的报文,该报文会有三种可能:
Ø 只有服务端的ACK
Ø 只有服务端的FIN
Ø 基于服务端的ACK,又有FIN
u 1、只收到服务器的ACK,客户端会进入FIN_WAIT_2状态,后续当收到服务端的FIN
时,回应发送一个ACK,会进入到TIME_WAIT状态,这个状态会持续2MSL(TCP报文段
在网络中的最大生存时间, RFC 1122标准的建议值是2min).客户端等待2MSL,是为了
当最后一个ACK丢失时,可以再发送一次。因为服务端在等待超时后会再发送一个FIN
给客户端,进而客户端知道ACK已丢失
u 2、只有服务端的FIN时,回应一个ACK给服务端,进入CLOSING状态,然后接收到服
务端的ACK时,进入TIME_WAIT状态
u 3、同时收到服务端的ACK和FIN,直接进入TIME_WAIT状态
36、TCP端口号
如果第一次传输三个,对方确认号为3,那么也就是成功传输2个,下个从新在3开始传输。
拥塞控制:
u网络中的带宽、交换结点中的缓存和处理机等,都是网络的资源。在某段时间,
若对网络中某一资源的需求超过了该资源所能提供的可承受的能力,网络的性
能就会变坏。这种情况就叫做拥塞
uTCP为提高网络利用率,降低丢包率,并保证网络资源对每条数据流的公平性。
即所谓的拥塞控制
uTCP拥塞控制的标准文档是RFC 5681,其中详细介绍了拥塞控制的四个部分:
慢启动(slow start)、拥塞避免(congestion avoidance)、快速重传(fast
retransmit)和快速恢复(fast recovery)。拥塞控制算法在Linux下有多种实
现,比如reno算法、vegas算法和cubic算法等。它们或者部分或者全部实现了
上述四个部分
u当前所使用的拥塞控制算法
/proc/sys/net/ipv4/tcp_congestion_control
37、UDP特性
u工作在传输层
u提供不可靠的网络访问
u非面向连接协议
u有限的错误检查
u传输性能高
u无数据恢复特性
UDP报头:没有编号,
38、Internet层
ttl: time to live。路由器的值是64减去显示的值。默认是64 ttl。
ttl 默认的数值。报文的数值64。
Ping -f ip地址。
Ping -s 报文的值。
禁止ping的文件; cat /pro/sys/net/ipv4/icmp_echo_ignore_all
echo 1 > /pro/sys/net/ipv4/icmp_echo_ignore_all
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 Iface
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 d4:ee:07:52:3a:46 C eth1
192.168.199.207 ether ac:c1:ee:7b:a3:5b C et
arp协议:address resolution protocol 地址解析协议。
ARP缓存:
arp -a
跨路由实现arp
39、Internet协议特征
u运行于 OSI 网络层
u面向无连接的协议
u独立处理数据包
u分层编址
u尽力而为传输
u无数据恢复功能
ip PDU报头
Ipv4
Ipv6是128位。
Ipv9:
u 版本:占4位,指 IP 协议的版本目前的IP协议版本号为4
u 首部长度:占4位,可表示的最大数值是15个单位,一个单位为4字节,因此IP 的首部
长度的最大值是60字节
u 区分服务:占8位,用来获得更好的服务,在旧标准中叫做服务类型,但实际上一直未被使
用过.后改名为区分服务.只有在使用区分服务(DiffServ)时,这个字段才起作用.一般的
情况下都不使用
u 总长度:占16位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为
65535 字节.总长度必须不超过最大传送单元 MTU
u 标识:占16位,它是一个计数器,通常,每发送一个报文,该值会加1, 也用于数据包
分片,在同一个包的若干分片中,该值是相同的
u 标志(flag):占3位,目前只有后两位有意义
u DF: Don‘t Fragment,中间的一位,只有当 DF=0 时才允许分片
u MF: More Fragment,最高位,MF=1表示后面还有分片。MF=0 表示最后一个
分片
片偏移:占12位,指较长的分组在分片后,该分片在原分组中的相对位置.片偏移
以8个字节为偏移单位
u生存时间:占8位,记为TTL (Time To Live) 数据报在网络中可通过的路由器数的
最大值,TTL 字段是由发送端初始设置一个 8 bit字段.推荐的初始值由分配数字
RFC 指定,当前值为 64.发送 ICMP 回显应答时经常把 TTL 设为最大值 255
u协议:占8位,指出此数据报携带的数据使用何种协议以便目的主机的IP层将数据
部分上交给哪个处理过程, 1表示为 ICMP 协议, 2表示为 IGMP 协议, 6表示为
TCP 协议, 17表示为 UDP 协议
u首部检验和:占16位,只检验数据报的首部不检验数据部分.这里不采用 CRC 检验
码而采用简单的计算方法
u源地址和目的地址:都各占4字节,分别记录源地址和目的地址
40、IP地址
Ip地址起到管理作用。
它们可唯一标识 IP 网络中的每台设备u
每台主机(计算机、网络设备、外围设备)必须具有唯一的
Ip地址由两个部分组成:
网络ID:标识网络
每个网段分配一个网络ID
主机ID:
标识单个主机 2^24-2个ip。
由组织分配给各设备。
一个网络主机数=2^主机ID-2
IPv4地址格式:点分十进制:
41、IP地址分类
uA类:
0 000 0000 – 0 111 1111: 1-127
网络数:126, 127
每个网络中的主机数:2^24-2
默认子网掩码:255.0.0.0
私网地址:10.0.0.0
8网络id 24主机id
uB类:
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
16 网络id 16主机id
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
24 网络id 8主机id
uD类:组播
1110 0000 – 1110 1111: 224-239
uE类:
240-255
42、公共IP
类 | 公共IP地址范围 |
A | 1.0.0.0到9.255.255.255
11.0.0.0到126.255.255.255 |
B | 128.0.0.0到172.15.255.255
172.32.0.0到191.255.255.255 |
C | 192.0.0.0到192.167.255.255
192.169.0.0到223.255.255.255 |
43、私有ip
类 | 私有地址范围 |
A | 10.0.0.0到10.255.255.255 10.0.0.0/8 |
B | 172.16.0.0到172.31.255.255 172.16.0.0/16 |
C | 192.168.0.0到192.168.255.255 192.168.0.0/24 |
44、保留地址
45、子网掩码
CIDR类:无类域间路由
根据情况灵活调整。
CIDR:表示法。 IP/网络ID位数。
Netmask:32bit,对应网络id位位1,对应主机id为0。
子网掩码:
A类:255.0.0.0
B类:255.255.0.0
C类:255.255.255.0
都可能成为子网掩码:
00000000 | 0 |
10000000 | 128 |
11000000 | 192 |
11100000 | 224 |
11110000 | 240 |
11111000 | 248 |
11111100 | 252 |
11111110 | 254 |
11111111 | 255 |
网络id的位数要查询前面的多少个1 ,多少个1,所以就是网络id就是多少位。
主机id是32-主机id的个数。2^差数-2.
现在的ip地址和子网掩码都是配合使用的。
思考题:200.201.164.100/26
子网掩码:255.255.255.192
网络主机数: 2^6-2=62
和0与的都为0
与1与的都为1
200.201.164.100
255.255.255.192
200.201.164.64
与后:
200 201.164.64网络id,只看网络id位。
A:192.168.1.100 255.255.255.0
B:192.168.1.200 255.255.255.0
判断A和B是否在一个网段,比较子网掩码,只是比较前24位,如果一致就在一个网段。
如果是192.168.1.100和192.168.2.200那么就不在一个网段。比较的还是网络id位数。网络id位数为1,主机id为0.
查看两个网络是否在一个网段呢?
A要与B之间通信:A的ip地址先与自己的子网掩码与,然后利用自己的子网掩码和B的IP地址与。
如果A的子网掩码为255.255.0.0 B的子网掩码为255.255.255.0.A与B通信的话,A认为与B在一个网段,B与A通信的话B认为和A不在一个网段。如果没有网关的话,ApingB是超时,BpingA是不可到达。
这就是网关作用和别的网段通信的机制。
自己和网关必须在一个网段。有了网段才可以和别的网段通信。
划分子网:将一个大网分割成多个小网,主机ID的位变少,网络ID变多,网络ID向主机借位N,将划分为2^N 个子网(公式)。
10.0.0.0
10.00000000.0.0
10.10000000.0.0
优化IP地址分配:
划分超网:路由记录,多个子网和成一个大网,把多个记录合并为小的条目。方便查找。
优化路由器的容量。
主机id向网络id借位:借几位网络id减少几位。前五位是一样的,后面是借位。
优化网络速度。
Network:网络id位
Subnet:借位。
Host:主机数
46、特殊地址
u 0.0.0.0
0.0.0.0不是一个真正意义上的IP地址。它表示一个集合:所有不清楚的主机和目的网络。
u 255.255.255.255
限制广播地址。对本机来说,这个地址指本网段内(同一广播域)的所有主机
u 127.0.0.1~127.255.255.254
本机回环地址,主要用于测试。在传输介质上永远不应该出现目的地址为“127.0.0.1”的数据包。
u 224.0.0.0到239.255.255.255
组播地址,224.0.0.1特指所有主机,224.0.0.2特指所有路由器。224.0.0.5指OSPF 路由器,地址
多用于一些特定的程序以及多媒体程序
u 169.254.x.x
如果Windows主机使用了DHCP自动分配IP地址,而又无法从DHCP服务器获取地址,系统会为主机分配这样地址。
47、跨网络通信
接口:本路由器出口
网关:
直接相连:0.0.0.0
非直接相连:下一个路由器的接口。
跨网络:路由
路由分类:主机路由 网络路由 默认路由;默认路由。
路由表不只是跨网络需要的。机器通讯的也需要。
优先级:精度越高,优先级越高。
route -n Linux里面的路由信息。
48、动态主机配置协议DHCP
discover:请求
offer:通知
request:广播
ack:确认
49、基本网络配置
一般包括如下内容:
主机名
IP/masknet
路由:默认网关
DNS服务器
主DNS服务器
次DNS服务器
第三DNS服务器
50、Centos6 网卡名称
接口命名方式:CentOS 6
以太网:eth[0,1,2,…]ppp:
ppp[0,1,2,…]u
网络接口识别并命名相关的udev配置文件:
/etc/udev/rules.d/70-persistent-net.rulesu
查看网卡:dmesg |grep –i
ethethtool -i eth0u
卸载网卡驱动:modprobe -r e1000rmmod e1000u
装载网卡驱动:modprobe e10
51、网络配置方式
静态指定:ifconfig route netstat
Ip:object{link,addr,route},ss,tc
System-config-network-tui,setup
配置文件
动态分配:
DHCP:Dynamic Host Configuration Protoco
52、配置网络接口
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
53、route命令
路由管理命令。
查看route -n
添加:route add
u路由管理命令
u查看:route -n
u添加:route add
route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
u目标:192.168.1.3 网关:172.16.0.1
route add -host 192.168.1.3 gw 172.16.0.1 dev eth0
u目标: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
u默认路由,网关: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
u删除:route del
route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]
u目标:192.168.1.3 网关:172.16.0.1
route del -host 192.168.1.3
u目标:192.168.0.0 网关:172.16.0.1
route del -net 192.168.0.0 netmask 255.255.255.0
两台机器不在一个网段,增加一条路由记录,路由记录是指向自己,或者是默认的都可以,然后之间可以通信。
54、配置动态路由
通过守护进程获取动态路由
- 安装quagga包
- 支持多种路由协议:RIP、OSPF和BGP
- 命令vtysh配置
55、netstat命令
unetstat – Print network connections, routing tables, interface statistics, masquerade
connections, and multicast memberships
u显示网络连接:
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
常用组合:
-tan, -uan, -tnl, -unl
u显示路由表:
netstat {–route|-r} [–numeric|-n]
-r: 显示内核路由表
-n: 数字格式
u显示接口统计数据:
netstat {–interfaces|-I|-i} [iface] [–all|-a] [–extend|-e] [–program|-p]
[–numeric|-n]
netstat -i
netstat –I=IFACE
ifconfig -s eth0
配置文件信息:
56、ip命令
配置Linux网络属性:ip命令
uip – 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]:仅显示处于激活状态的接口
ip addr { add | del } IFADDR dev STRING
[label LABEL]:添加地址时指明网卡别名
[scope {global|link|host}]:指明作用域
global: 全局可用
link: 仅链接可用
host: 本机可用
[broadcast ADDRESS]:指明广播地址
u ip address show – look at protocol addresses
[dev DEVICE]
[label PATTERN]
[primary and secondary]
u 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
u 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 eth0
格式:ss [OPTION]… [FILTER]
u netstat通过遍历proc来获取socket信息,ss使用netlink与内核tcp_diag模块通信获取socket信
息。
u选项:
-t: tcp协议相关
-u: udp协议相关
-w: 裸套接字相关
-x:unix sock相关
-l: listen状态的连接
-a: 所有
-n: 数字格式
-p: 相关的程序及PID
-e: 扩展的信息
-m:内存用量
-o:计时器信息
56、ss命令
FILTER : [ state TCP-STATE ] [ EXPRESSION ]
u TCP的常见状态:
tcp finite state machine:
LISTEN: 监听
ESTABLISHED:已建立的连接
FIN_WAIT_1
FIN_WAIT_2
SYN_SENT
SYN_RECV
CLOSED
u EXPRESSION:
dport =
sport =
示例:’( dport = :ssh or sport = :ssh )’
u 常用组合:
-tan, -tanl, -tanlp, -uan
uss -l 显示本地打开的所有端口uss -pl 显示每个进程具体打开的socketuss -t -a 显示所有tcp socketuss -u -a 显示所有的UDP Socektuss -o state established ‘( dport = :ssh or sport = :ssh )’ 显示所有已建立的ssh连接uss -o state established ‘( dport = :http or sport = :http )’ 显示所有已建立的HTTP连接uss -s 列出当前socket详细
57、网络配置文件
IP、MASK、GW、DNS相关配置文件:/etc/sysconfig/networkscripts/ifcfg-IFACE
u路由相关的配置文件:
/etc/sysconfig/network-scripts/route-IFACE
u/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”
uONBOOT:在系统引导时是否激活此设备
uTYPE:接口类型;常见有的Ethernet, Bridge
uUUID:设备的惟一标识
uIPADDR:指明IP地址
uNETMASK:子网掩码
uGATEWAY: 默认网关
uDNS1:第一个DNS服务器指向
uDNS2:第二个DNS服务器指向
uUSERCTL:普通用户是否可控制此设备
uPEERDNS:如果BOOTPROTO的值为“dhcp”,是否允许dhcp server分配的
dns服务器指向信息直接覆盖至/etc/resolv.conf文件中
58、主机名和本地解析器
配置当前主机的主机名:
hostname [HOSTNAME]
/etc/sysconfig/network
HOSTNAME=
u解析器执行正向和逆向查询
u/etc/hosts
- 本地主机名数据库和IP地址的映像
- 对小型独立网络有用
- 通常,在使用DNS前检查
- getent hosts 查看/etc/hosts 内容
59、dns名字解析
u /etc/resolv.conf
nameserver DNS_SERVER_IP1
nameserver DNS_SERVER_IP2
nameserver DNS_SERVER_IP3
search magedu.com
u /etc/nsswitch.conf
与/etc/hosts相比优先于DNS
u 正向解析:FQDN–>IP
dig -t A FQDN
host -t A FQDN
u 反向解析:IP–>FQDN
dig -x IP
host -t PTR IP
60、网络配置文件
/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#=GW
61、设备别名
u为每个设备别名生成独立的接口配置文件
- 关闭NetworkManager服务
- ifcfg-ethX:xxx
- 必须使用静态联网DEVICE=eth0:0IPADDR=10.10.10.10NETMASK=255.0.0.0ONPARENT=yes
注意:service network restart 生效u
参考/usr/share/doc/initscripts-*/sysconfig.t
主机名和主机头:
配置文件需要写到文件中去。
一个网卡上可以设置多个网卡名。
62、centos7网络属性配置
Centos7更改网卡名称
针对不同的环境,提前制作多个配置文件。针对环境进行处理。
u CentOS 6之前,网络接口使用连续号码命名:eth0、eth1等,当增加或删除网卡时,名
称可能会发生变化
u CentOS 7使用基于硬件,设备拓扑和设置类型命名:
u (1) 网卡命名机制
systemd对网络设备的命名方式
(a) 如果Firmware或BIOS为主板上集成的设备提供的索引信息可用,且可预测则
根据此索引进行命名,例如eno1
(b) 如果Firmware或BIOS为PCI-E扩展槽所提供的索引信息可用,且可预测,则根
据此索引进行命名,例如ens1
(c) 如果硬件接口的物理位置信息可用,则根据此信息进行命名,例如enp2s0
(d) 如果用户显式启动,也可根据MAC地址进行命名,enx2387a1dc56
(e) 上述均不可用时,则使用传统命名机制
63、网卡名称
u基于BIOS支持启用biosdevname软件
内置网卡:em1,em2
pci卡:pYpX Y:slot ,X:port
u(2) 名称组成格式
en: Ethernet 有线局域网
wl: wlan 无线局域网
ww: wwan无线广域网
名称类型:
o<index>: 集成设备的设备索引号
s<slot>: 扩展槽的索引号
x<MAC>: 基于MAC地址的命名
p<bus>s<slot>: enp2s1
采用传统命名方式
u使用传统命名方式:u
(1)编辑/etc/default/grub配置文件GRUB_CMDLINE_LINUX=”rhgb quiet net.ifnames=0或:修改/boot/grub2/grub.cfgu
(2)为grub2生成其配置文件grub2-mkconfig -o /etc/grub2.cfgu 或者/boot/grub/grub2.cfg 第一个linux16尾部加上 net.ifnames=0
(3)重启
64、centos7网络配置工具
CentOS7主机名
Ø 配置文件:/etc/hostname ,默认没有此文件,通过DNS反向解析获取主机名,主机名
默认为:localhost.localdomain
Ø 显示主机名信息
hostname
hostnamectl status
Ø 设置主机名
hostnamectl set-hostname centos7.magedu.com
Ø 删除文件/etc/hostname,恢复主机名localhost.localdomain
u CentOS 7网络配置工具
Ø 图形工具:nm-connection-editor
Ø 字符配置tui工具:nmtui
Ø 命令行工具:nmcli
地址配置工具:nmcli
u nmcli [ OPTIONS ] OBJECT { COMMAND | help }
device – show and manage network interfaces
nmcli device help
connection – start, stop, and manage network connections
nmcli connection help
u 修改IP地址等属性:
nmcli connection modify IFACE [+|-]setting.property value
setting.property:
ipv4.addresses ipv4.gateway
ipv4.dns1 ipv4.method manual | auto
u 修改配置文件执行生效:systemctl restart network
nmcli con reload
u nmcli命令生效: nmcli con down eth0 ;nmcli con up eth0
使用nmcli配置网络
uNeworkManager是管理和监控网络设置的守护进程
u设备即网络接口,连接是对网络接口的配置。一个网络接口可有多个连接配置,
但同时只有一个连接配置生效
u显示所有包括不活动连接
nmcli con show
u显示所有活动连接
nmcli con show –active
u显示网络连接配置
nmcli con show “System eth0“
u显示设备状态
nmcli dev status
显示网络接口属性
nmcli dev show eth0
u创建新连接default,IP自动通过dhcp获取
nmcli con add con-name default type Ethernet ifname eth0
u删除连接
nmcli con del default
u创建新连接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
使用nmcli配置:
启用static连接配置
nmcli con up static
u启用default连接配置
nmcli con up default
u查看帮助
nmcli con add help
使用nmcli配置网络
修改连接设置
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
uDNS设置,存放在/etc/resolv.conf文件中
PEERDNS=no 表示当IP通过dhcp自动获取时,dns仍是手动设置,不自动获取。等价于下
面命令:
nmcli con mod “system eth0” ipv4.ignore-auto-dns yes
nmcli命令:
网络配置文件:
设备配置被保存在文本文件中
- /etc/sysconfig/network-scripts/ifcfg-<name>
- 帮助文档列出完整选项列表:/usr/share/doc/initcripts-
*/sysconfig.txt
动态配置: 静态配置:
TYPE=Ethernet ip直接进行制定等
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=ffb3a88d-21ba-4897-aede-98a6a7d19c1e
DEVICE=ens33
ONBOOT=no
~
nmcli命令:
修改连接配置后,需要重新加载配置
nmcli con reload
nmcli con down “system eth0” 可被自动激活
nmcli con up “system eth0”
nmcli dev dis eth0 禁用网卡,访止被自动激活
u图形工具
nm-connection-editor
u字符工具
nmtui
nmtui-connect
nmtui-edit
nmtui-hostname
网络工具:
在命令行下测试网络的连通性
ž 显示主机名
hostname
ž 测试网络连通性
ping
mtr
ž 显示正确的路由表
ip route
u 确定名称服务器使用:
ž nslookup
ž host
ž dig
u 跟踪路由
- traceroute
- tracepath
网络客户端工具:
uftp,lftp:子命令:get、mget、ls、help
lftp [-p port] [-u user[,password]] SERVER
ulftpget URL
uwget [option]… [URL]…
-q: 静默模式
-c: 断点续传
-P:保存在指定目录
-O: 保存为指定的文件名
–limit-rate=: 指定传输速率,单位K,M等
ulinks URL
–dump
–source
Ipv4.method manual
一个网卡设置多套配置,方便操作。
静态动态:bootproto=dhcp。
links –dumps xxxxx.com抓取网页文字;
二、HTTP服务和Apache
1、Internet与中国的服务
uInternet最早来源于美国国防部高级研究计划局ARPA建立的ARPANet,1969年投入运行。1983年,ARPAnet分裂为两部分:ARPAnet和纯军事用的MILNET。当年1月,ARPA把TCP/IP协议作为ARPAnet的标准协议,这个以ARPAnet为主干网的网际互联网便被称为Internet。1986年,美国国家科学基金会建立计算机通信网络NSFnet。此后,NSFNet逐渐取代ARPANet在Internet的地位。1990年,ARPANet正式关闭
u北京时间1987年9月20日,钱天白建立起一个网络节点,通过电话拨号连接到国际互联网,向他的德国朋友发出来自中国的第一封电子邮件:Across the Great Wall we can reach every corner in the world,自此,中国与国际计算机网络开始连接在一起
1990年10月钱天白教授代表中国正式在国际互联网络信息中心的前身DDN-NIC注册登记了我国的顶级域名CN,并且从此开通了使用中国顶级域名CN的国际电子邮件服务。由于当时中国尚未正式连入Internet,所以委托德国卡尔斯鲁厄大学运行CN域名服务器
u 1993年3月2日中国科学院高能物理研究所租用AT&T公司的国际卫星信道接入美国斯坦福线性加速器中心(SLAC)的64K专线正式开通,专线开通后,美国政府以Internet上有许多科技信息和其它各种资源,不能让社会主义国家接入为由,只允许这条专线进入美国能源网而不能连接到其它地方。尽管如此,这条专线仍是我国部分连入Internet的第一根专线
u 1994年4月20日
中国实现与互联网的全功能连接,被国际上正式承认为有互联网的国家
u 1994年5月21日
在钱天白教授和德国卡尔斯鲁厄大学的协助下,中国科学院计算机网络信息中心完成了中国国家顶级域名(CN)服务器的设置,改变了中国的CN顶级域名服务器一直放在国外的历史
u 1996年1月
中国互联网全国骨干网建成并正式开通,开始提供服务
1995年4月
马云凑了两万块钱,成立杭州海博网络公司,专门给企业做主页
u 1997年5月
丁磊创立网易
u 1998年
张朝阳创立搜狐。
u 1998年6月18日
刘强东在中关村创办京东公司,代理销售光磁产品
u 1998年11月
马化腾和张志东成立深圳市腾讯计算机系统有限公司,OICQ开通
u 1998年12月
新浪网成立,关键人物:王志东
u 2000年1月
李彦宏创建了百度
u 2003年5月
阿里巴巴集团在创立淘宝网
u 2003年10月
淘宝网首次推出支付宝服务
u 2004年1月
京东多媒体网正式开通,启用域名www.jdlaser.com
u 2010年4月
雷军创办小米
u 2011年1月21日
腾讯公司推出微信 (WeChat)
u 2012年7月10日
北京小桔科技有限公司成立,滴滴司机端3个月后北京上线
u 2016年4月
摩拜单车在上海上线
2、中国互联网连接世界
1885年台湾建省,首任巡抚刘铭传派人与福州船政联系,使用船政电报学堂毕
业生为技术人员,于1887年铺设成功台湾淡水至福州川石海底电缆,全长117
海里。这是我国自行设计安装的第一条海底电缆。此电缆毁于第二次世界大战
u我国于1989年开始投入到全球海底光缆的投资与建设中来,并于1993年实现了
首条国际海底光缆的登陆(中日之间C-J海底光缆系统);随后在1997年,我国
参与建设的全球海底光缆系统(FLAG)建成并投入运营,这也是第一条在我国
登陆的洲际海底光缆
u中国连接世界目前共有8条光缆,四个登陆站允许入境,目前我国的登陆站设立
在三个城市的四个地区,分别是山东青岛登陆站(隶属中国联通)、上海崇明
登陆站(隶属中国电信)、上海南汇登陆站(隶属中国联通)和广东汕头登陆
站(隶属中国电信)
3、TCP/IP协议
4、跨Internet的主机间的通讯
在建立通信连接的每一端,进程间的传输要有两个标志:
uIP地址和端口号,合称为套接字地址 socket address
u客户机套接字地址定义了一个唯一的客户进程
u服务器套接字地址定义了一个唯一的服务器进程
5、Socket套接字
Socket:套接字,进程间通信IPC的一种实现,允许位于不同主机(或同一主机)
上不同进程之间进行通信和数据交换,SocketAPI出现于1983年,4.2 BSD实现
u Socket API:封装了内核中所提供的socket通信相关的系统调用
u Socket Domain:根据其所使用的地址
AF_INET:Address Family,IPv4
AF_INET6:IPv6
AF_UNIX:同一主机上不同进程之间通信时使用
u Socket Type:根据使用的传输层协议
SOCK_STREAM:流,tcp套接字,可靠地传递、面向连接
SOCK_DGRAM:数据报,udp套接字,不可靠地传递、无连接
SOCK_RAW: 裸套接字,无须tcp或tdp,APP直接通过IP包通信
系统调用u
套接字相关的系统调用:
socket(): 创建一个套接字
bind():绑定IP和端口
listen():监听
accept():接收请求
connect():请求连接建立
write():发送
read():接收
close():关闭
Socket通信示例:服务器端tcpserver.py
Import socket
HOST=’127.0.0.1′
PORT=9527
BUFFER=4096
sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.bind((HOST,PORT))
sock.listen(3)
print(‘tcpServer listen at: %s:%s\n\r’ %(HOST,PORT))
while True:
client_sock,client_addr=sock.accept()
print(‘%s:%s connect’ %client_addr)
while True:
recv=client_sock.recv(BUFFER)
if not recv:
client_sock.close()
break
print(‘[Client %s:%s said]:%s’ %(client_addr[0],client_addr[1],recv)) client_sock.send(‘tcpServer has received your message’)
sock.close
Socket通信示例:服务器端tcpclient.py
Import socket
HOST=’127.0.0.1′
PORT=9527
BUFFER=4096
sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.connect((HOST,PORT))
sock.send(‘hello, tcpServer!’)
recv=sock.recv(BUFFER)
print(‘[tcpServer said]: %s’ % recv)
sock.close
6、http服务通信过程
7、http相关术语
http: Hyper Text Transfer Protocol, 80/tcp
u html: Hyper Text Markup Language 超文本标记语言,编程语言
u 示例:
<html>
<head>
<title>html语言</title>
</head>
<body>
<h1>标题1</h1>
<p><a href=http://www.magedu.com>马哥教育</a>欢迎你</p>
<h2>标题2</h2>
</body>
</html>
u CSS: Cascading Style Sheet 层叠样式表
u js: javascript
uMIME: Multipurpose Internet Mail Extensions
多用途互联网邮件扩展 /etc/mime.types
u格式:major/minor
text/plain
text/html
text/css
image/jpeg
image/png
video/mp4
application/javascript
u参考:http://www.w3school.com.cn/media/media_mimeref.asp
8、http协议介绍
uhttp/0.9:1991,原型版本,功能简陋,只有一个命令GET。GET
/index.html ,服务器只能回应HTML格式字符串,不能回应别的格式
uhttp/1.0: 1996年5月,支持cache, MIME, method
每个TCP连接只能发送一个请求,发送数据完毕,连接就关闭,如果还要请求其
他资源,就必须再新建一个连接
引入了POST命令和HEAD命令
头信息是 ASCII 码,后面数据可为任何格式。服务器回应时会告诉客户端,数
据是什么格式,即Content-Type字段的作用。这些数据类型总称为MIME 多用途
互联网邮件扩展,每个值包括一级类型和二级类型,预定义的类型,也可自定义类
型。
常见Content-Type值:text/xml image/jpeg audio/mp3
http/1.1:1997年1月
Ø 引入了持久连接(persistent connection),即TCP连接默认不关闭,可以被多个请求
复用,不用声明Connection: keep-alive。对于同一个域名,大多数浏览器允许同时建
立6个持久连接
Ø 引入了管道机制(pipelining),即在同一个TCP连接里,客户端可以同时发送多个请
求,进一步改进了HTTP协议的效率
Ø 新增方法:PUT、PATCH、OPTIONS、DELETE
Ø 同一个TCP连接里面,所有的数据通信是按次序进行的。服务器只能顺序处理回应,
前面的回应慢,会有许多请求排队,造成”队头堵塞”(Head-of-line blocking)
Ø 为避免上述问题两种方法:一是减少请求数,二是同时多开持久连接。网页优化技
巧,比如合并脚本和样式表、将图片嵌入CSS代码、域名分片(domain sharding)等
Ø HTTP 协议不带有状态,每次请求都必须附上所有信息。请求的很多字段都是重复的,
浪费带宽,影响速度
Spdy:2009年,谷歌研发,解决 HTTP/1.1 效率不高问题
u
http/2.0:2015年
Ø 头信息和数据体都是二进制,称为头信息帧和数据帧
Ø 复用TCP连接,在一个连接里,客户端和浏览器都可以同时发送多个请求或回
应,且不用按顺序一一对应,避免了“队头堵塞“,此双向的实时通信称为多工
(Multiplexing)
Ø 引入头信息压缩机制(header compression),头信息使用gzip或compress压缩
后再发送;客户端和服务器同时维护一张头信息表,所有字段都会存入这个
表,生成一个索引号,不发送同样字段,只发送索引号,提高速度
Ø HTTP/2 允许服务器未经请求,主动向客户端发送资源,即服务器推送
(server push)
9、http工作机制
u工作机制:
http请求:http request
http响应:http response
一次http事务:请求<–>响应
uWeb资源:web resource
一个网页由多个资源构成,打开一个页面,会有多个资源展示出来,但是每个资
源都要单独请求。因此,一个“Web 页面”通常并不是单个资源,而是一组资源
的集合
Ø静态文件:无需服务端做出额外处理
文件后缀:.jpg, .html, .txt, .js, .css, .mp3, .avi
Ø动态文件:服务端执行程序,返回执行的结果
文件后缀:.asp, .php, .jsp
u提高HTTP连接性能
Ø并行连接:通过多条TCP连接发起并发的HTTP请求
Ø持久连接:keep-alive,长连接,重用TCP连接,以消除连接和关闭的时延,以事
务个数和时间来决定是否关闭连接
Ø管道化连接:通过共享TCP连接发起并发的HTTP请求
Ø复用的连接:交替传送请求和响应报文(实验阶段)
工作机制:http请求,多个请求。
一个网页由多个资源构成,打开一个页面,会有多个资源,每个资源都要单独请求。
串行,持久连接和管道。
URI:统一资源标识,分类。
URL:同一资源定位符。
10、http连接请求
11、串行和并行连接
12、URI
uURI: Uniform Resource Identifier 统一资源标识,分为URL和URN
ØURN: Uniform Resource Naming,统一资源命名
示例: P2P下载使用的磁力链接是URN的一种实现
magnet:?xt=urn:btih:660557A6890EF888666
ØURL: Uniform Resorce Locator,统一资源定位符,用于描述某服务器某特定资
源位置
Ø两者区别:URN如同一个人的名称,而URL代表一个人的住址。换言之,URN定义某事物的身份,而URL提供查找该事物的方法。URN仅用于命名,而不指定地址
13、URL组成
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag
>
u schame:方案,访问服务器以获取资源时要使用哪种协议
u user:用户,某些方案访问资源时需要的用户名
u password:密码,用户对应的密码,中间用:分隔
u Host:主机,资源宿主服务器的主机名或IP地址
u port:端口,资源宿主服务器正在监听的端口号,很多方案有默认端口号
u path:路径,服务器资源的本地名,由一个/将其与前面的URL组件分隔
u params:参数,指定输入的参数,参数为名/值对,多个参数,用;分隔
u query:查询,传递参数给程序,如数据库,用?分隔,多个查询用&分隔
u frag:片段,一小片或一部分资源的名字,此组件在客户端使用,用#分隔
URL示例
uhttp://www.magedu.com:8080/images/logo.jpg
uftp://mage:password@172.16.0.1/pub/linux.ppt
urtsp://videoserver/video_demo/
Real Time Streaming Protocol
uhttp://www.magedu.com/bbs/hello;gender=f/send;type=title
uhttps://list.jd.com/list.html?cat=670,671,672&ev=149_2992&sort=sort_t
otalsales15_desc&trans=1
uhttp://apache.org/index.html#projects-list
14、网站访问量查询
uIP(独立IP):即Internet Protocol,指独立IP数。一天内来自相同客户机IP地址只
计算一次,记录远程客户机IP地址的计算机访问网站的次数,是衡量网站流量
的重要指标
uPV(访问量): 即Page View, 页面浏览量或点击量,用户每次刷新即被计算一
次,PV反映的是浏览某网站的页面数,PV与来访者的数量成正比,PV并不是页
面的来访者数量,而是网站被访问的页面数量
uUV(独立访客):即Unique Visitor,访问网站的一台电脑为一个访客。一天内相
同的客户端只被计算一次。可以理解成访问某网站的电脑的数量。网站判断来
访电脑的身份是通过来访电脑的cookies实现的。如果更换了IP后但不清除
cookies,再访问相同网站,该网站的统计中UV数是不变的
u网站统计:http://www.alexa.cn/rank/
u示例:
u甲乙丙三人在同一台通过ADSL上网的电脑上(中间没有断网),分别访问
www.magedu.com网站,并且每人各浏览了2个页面,那么网站的流量统计是:
IP: 1 PV:6 UV:1
u若三人都是ADSL重新拨号后,各浏览了2个页面,则
IP: 3 PV:6 UV:1
15、Web服务一次完整的http请求处理过程
七个步骤。
1)建立连接:接受或拒绝连接请求。
2)接受请求:接收客户端请求报文中对某资源的一次清理过程。
u Web访问响应模型(Web I/O)
单进程I/O模型:启动一个进程处理用户请求,而且一次只处理一个,
多个请求被串行响应
多进程I/O模型:并行启动多个进程,每个进程响应一个连接请求
复用I/O结构:启动一个进程,同时响应N个连接请求
实现方法:多线程模型和事件驱动
多线程模型:一个进程生成N个线程,每线程响应一个连接请求
事件驱动:一个进程处理N个请求
复用的多进程I/O模型:启动M个进程,每个进程响应N个连接请求,
同时接收M*N个请求
3)处理请求:服务器对请求报文进行分析,并获取请求的资源及请求方法等相关信息。
元数据:请求报文首部<method> <URL> <VERSIONHEADERS 格式 name:value<request body>示例:Host: www.magedu.com 请求的主机名称Server: Apache/2.4.7Ø HTTP常用请求方式,Method GET、POST、HEAD、PUT、DELETE、TRACE、OPTIO
4)资源访问:路径映射等方式。
服务器获取请求报文中请求的资源web服务器,即存放了web资源的服务器负责向请求者提供对方请求的静态资源,或动态运行后生成的资源资源放置于本地文件系统特定的路径:DocRootDocRoot è /var/www/html/var/www/html/images/logo.jpghttp://www.magedu.com/images/logo.jpgØ web服务器资源路径映射方式:(a) docroot(b) alias(c) 虚拟主机docroot(d) 用户家目录docro
5)构建响应报文:MIME类型。
一旦Web服务器识别除了资源,就执行请求方法中描述的动作,并返回响应报文。响应报文中 包含有响应状态码、响应首部,如果生成了响应主体的话,还包括响应主体
(1)响应实体:如果事务处理产生了响应主体,就将内容放在响应报文中回送过去。响应报文中通常包括: 描述了响应主体MIME类型的Content-Type首部 描述了响应主体长度的Content-Length 实际报文的主体内容
(2)URL重定向:web服务构建的响应并非客户端请求的资源,而是资源另外一个访问路径永久重定向:http://www.360buy.com临时重定向:http://www.taobao.com
(3)MIME类型:
Web服务器要负责确定响应主体的MIME类型。多种配置服务器的方法可将
MIME类型与资源管理起来
魔法分类:Apache web服务器可以扫描每个资源的内容,并将其与一个已知模
式表(被称为魔法文件)进行匹配,以决定每个文件的MIME类型。这样做可能比较
慢,但很方便,尤其是文件没有标准扩展名时
显式分类:可以对Web服务器进行配置,使其不考虑文件的扩展名或内容,强
制特定文件或目录内容拥有某个MIME类型
类型协商: 有些Web服务器经过配置,可以以多种文档格式来存储资源。在这
种情况下,可以配置Web服务器,使其可以通过与用户的协商来决定使用哪种格
式(及相关的MIME类型)”最好
u6)发送响应报文
Web服务器通过连接发送数据时也会面临与接收数据一样的问题。服务器
可能有很多条到各个客户端的连接,有些是空闲的,有些在向服务器发送数据,还
有一些在向客户端回送响应数据。服务器要记录连接的状态,还要特别注意对持久
连接的处理。对非持久连接而言,服务器应该在发送了整条报文之后,关闭自己这
一端的连接。对持久连接来说,连接可能仍保持打开状态,在这种情况下,服务器
要正确地计算Content-Length首部,不然客户端就无法知道响应什么时候结束了
u7)记录日志
最后,当事务结束时,Web服务器会在日志文件中添加一个条目,来描述
已执行的事务
访问网址的过程:路由>>arp>>tcp三次握手>>详细的七次过程。
16、http服务器应用
http服务器程序,httpd apache nginx lighttpd
应用程序服务器:IIS .asp tomcat.jsp jetty 开源的servlet容器,基于Java的web容器。Resin CAUCHO公司,支持servlets和jsp的引擎webshpere(IBM), weblogic(BEA), jboss,oc4j(Oracl
市场占有率统计:www.netcraft.com
Httpd介绍
uhttpd
20世纪90年代初,国家超级计算机应用中心NCSA开发
1995年开源社区发布apache(a patchy server)
ASF: apache software foundation
FSF:Free Software Foundation
u特性:
Ø 高度模块化:core + modules
Ø DSO: Dynamic Shared Object 动态加/卸载
Ø MPM:multi-processing module多路处理模块
查询httpd的版本:rpm -qi httpd
查询信息:yum info httpd
查询配置信息:rpm -ql httpd
开启服务:centos6,service httpd restart
Centos7:systemctl httpd restart
检查语法:service httpd configtest
Centos6关闭防火墙:service iptables stop
进程查看:ps axu
17、MPM工作模式
u prefork:多进程I/O模型,每个进程响应一个请求,默认模型
一个主进程:生成和回收n个子进程,创建套接字,不响应请求
多个子进程:工作work进程,每个子进程处理一个请求;系统初始时,预先生成多个
空闲进程,等待请求,最大不超过1024个
uworker:复用的多进程I/O模型,多进程多线程,IIS使用此模型
一个主进程:生成m个子进程,每个子进程负责生个n个线程,每个线程响应一个请
求,并发响应请求:m*n
u event:事件驱动模型(worker模型的变种)
一个主进程:生成m个子进程,每个进程直接响应n个请求,并发响应请求:m*n,
有专门的线程来管理这些keep-alive类型的线程,当有真实请求时,将请求传递给服务
线程,执行完毕后,又允许释放。这样增强了高并发场景下的请求处理能力
httpd-2.2: event 测试版,centos6默认
httpd-2.4:event 稳定版,centos7默认
18、Httpd功能特性
虚拟主机:
IP、port、fqdn
CGI:common gateway interface,通用网关接口
反向代理
负载均衡
路径别名
丰富的用户认证机制
Basic
Digest
支持第三方模块
19、httpd安装
u版本:CentOS 6: 2.2CentOS 7: 2.4u
安装方式:rpm:centos发行版,稳定,建议使用编译:定制或特殊需求u
CentOS 6程序环境:httpd-2.2
配置文件:/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/*.conf
检查配置语法:httpd –tservice httpd configte
CentOS 6 httpd程序环境
u服务脚本:/etc/rc.d/init.d/httpd
脚本配置文件:/etc/sysconfig/httpd
u服务控制和启动:
chkconfig httpd on|off
service {start|stop|restart|status|configtest|reload} httpd
u站点网页文档根目录:
/var/www/html
u模块文件路径:
/etc/httpd/modules
/usr/lib64/httpd/modules
CentOS 6 httpd程序环境
u主程序文件:
/usr/sbin/httpd
/usr/sbin/httpd.worker
/usr/sbin/httpd.event
u主进程文件:
/etc/httpd/run/httpd.pid
u日志文件目录:
/var/log/httpd
access_log: 访问日志
error_log:错误日志
u帮助文档包:
httpd-manual
Httpd 2.2常见配置uhttpd配置文件的组成:u # grep “Section” /etc/httpd/conf/httpd.conf
### Section 1: Global Environment### Section 2: ‘Main’ server configuration### Section 3: Virtual Hostsu配置格式:directive valuedirective: 不区分字符大小写value: 为路径时,是否区分大小写,取决于文件
Httpd 2.2常见配置u
1)、显示服务器版本信息ServerTokens Major|Minor|Min[imal]|Prod[uctOnly]|OS|FullServerTokens Prod[uctOnly] :Server: ApacheServerTokens Major: Server: Apache/2ServerTokens Minor: Server: Apache/2.0ServerTokens Min[imal]: Server: Apache/2.0.41ServerTokens OS: Server: Apache/2.0.41 (Unix)ServerTokens Full (or not specified): Server: Apache/2.0.41 (Unix)
PHP/4.2.2 MyMod/1.2This setting applies to the entire server and cannot be enabled or disabled
on a virtualhost-by-virtualhost basis.After version 2.0.44, this directive also controls the information presented
by the ServerSignature directive. 建议使用:ServerTokens P
Httpd 2.2常见配置u
2)、修改监听的IP和PortListen [IP:]PORT(1) 省略IP表示为本机所有IP(2) Listen指令至少一个,可重复出现多次Listen 80Listen 8080
示例:Listen 192.168.1.100:8080
Lsten 80
Httpd 2.2常见配置
u 3)、持久连接
Persistent Connection:连接建立,每个资源获取完成后不会断开连接,而是继
续等待其它的请求完成,默认关闭持久连接
断开条件:数量限制:100
时间限制:以秒为单位, httpd-2.4 支持毫秒级
副作用:对并发访问量较大的服务器,持久连接功能会使用有些请求得不到响应
折衷:使用较短的持久连接时间
设置: KeepAlive On|Off
KeepAliveTimeout 15
MaxKeepAliveRequests 100
测试: telnet WEB_SERVER_IP PORT
GET /URL HTTP/1.1
Host: WEB_SERVER_IP
Httpd 2.2常见配置u
4)、MPM( Multi-Processing Module)多路处理模块prefork, worker, event(试验阶段)httpd-2.2不支持同时编译多个模块,所以只能编译时选定一个;rpm安装的包提供三个二进制程序文件,分别用于实现对不同MPM机制的支持确认方法:ps aux | grep httpd默认为/usr/sbin/httpd, 即prefork
Httpd 2.2常见配置u查看模块列表u查看静态编译的模块httpd -lu查看静态编译及动态装载的模块httpd –Mu动态模块加载:不需重启即生效u动态模块路径 /usr/lib64/httpd/module
Httpd 2.2常见配置
u更换使用的httpd程序:
u/etc/sysconfig/httpd
HTTPD=/usr/sbin/httpd.worker
重启服务生效
pstree -p|grep httpd 查看进程和线程
uHttpd 2.4 与之不同
以动态模块方式提供
配置文件:/etc/httpd/conf.modules.d/00-mpm.conf
httpd –M |grep mpm
重启服务生效
pstree -p|grep httpd 查看进程和线程
Httpd 2.2常见配置uprefork的默认配置:<IfModule prefork.c>StartServers 8MinSpareServers 5MaxSpareServers 20ServerLimit 256 最多进程数,最大20000MaxClients 256 最大并发MaxRequestsPerChild 4000 子进程最多能处理的请求数量。在处理MaxRequestsPerChild 个请求之后,子进程将会被父进程终止,这时候子进程占用的内存就会释放(为0时永远不释放)</IfModul
uworker的默认配置:
<IfModule worker.c>
StartServers 4
MaxClients 300
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0 无限制
</IfModule>
5)、DSO: Dynamic Shared Object
u加载动态模块配置
/etc/httpd/conf/httpd.conf
配置指定实现模块加载格式:
LoadModule <mod_name> <mod_path>
模块文件路径可使用相对路径:
相对于ServerRoot(默认/etc/httpd)
示例:
LoadModule auth_basic_module
modules/mod_auth_basic.so
6)、定义’Main’ server的文档页面路径
DocumentRoot “/path”
文档路径映射:
DocumentRoot指向的路径为URL路径的起始位置
示例:
DocumentRoot “/app/data“
http://HOST:PORT/test/index.html
–> /app/data/test/index.html
注意:SELinux和iptables的状态
u7)、定义站点主页面
DirectoryIndex index.html index.html.var
8)、站点访问控制常见机制
可基于两种机制指明对哪些资源进行何种访问控制
访问控制机制有两种:客户端来源地址,用户账号
Ø 文件系统路径:
<Directory “/path”>
…
</Directory>
<File “/path/file”>
…
</File>
<FileMatch “PATTERN”>
…
</FileMatch>
ØURL路径:<Location “”>…</Location><LocationMatch “”>…</LocationMatch>u示例:<FilesMatch “\.(gif|jpe?g|png)$”<Files “?at.*”> 通配符<Location /status><LocationMatch “/(extra|special)/data
针对路径、文件和正则表达式匹配。
9)、<Directory>中“基于源地址”实现访问控制
Ø (1) Options:后跟1个或多个以空白字符分隔的选项列表
在选项前的+,- 表示增加或删除指定选项
常见选项:
Indexes:指明的URL路径下不存在与定义的主页面资源相符
的资源文件时,返回索引列表给用户
FollowSymLinks:允许访问符号链接文件所指向的源文件
None:全部禁用
All: 全部允许
示例:
u<Directory /web/docs>
Options Indexes FollowSymLinks
</Directory>
<Directory /web/docs/spec>
Options FollowSymLinks
</Directory>
u<Directory /web/docs>
Options Indexes FollowSymLinks
</Directory>
<Directory /web/docs/spec>
Options +Includes -Indexes
</Directory>
u(2) AllowOverride
与访问控制相关的哪些指令可以放在指定目录下的.htaccess(由
AccessFileName指定)文件中,覆盖之前的配置指令
只对<directory>语句有效
AllowOverride All: 所有指令都有效
AllowOverride None:.htaccess 文件无效
AllowOverride AuthConfig Indexes 除了AuthConfig 和Indexes的其它指令都无法
覆盖
u(3) order和allow、deny
放在directory, .htaccess中
order:定义生效次序;写在后面的表示默认法则
Order allow,deny 放在后面的优先级更高 默认设置最后的优先生效,控制远程主机的访问。
Order deny,allow
Allow from和Deny from:定义客户端地址
客户端地址:
IP
网络: 172.16
172.16.0.0
172.16.0.0/16
172.16.0.0/255.255.0.0
u示例:
<files “*.txt”>
order deny,allow
deny from 172.16. 100.100
allow from 172.16
</files>
<files “*.txt”>
order allow,deny
deny from 172.16.100.100
allow from 172.16
</files>
10)、日志设定
日志类型:
访问日志
错误日志
错误日志:
ErrorLog logs/error_log
LogLevel warn
LogLevel 可选值:
debug, info, notice, warn,error
crit, alert, emerg
访问日志:
Ø 定义日志格式:LogFormat format strings
LogFormat “%h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\””
combined
Ø 使用日志格式:
CustomLog logs/access_log combined
参考帮助:http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats
Ø %h 客户端IP地址
Ø %l 远程用户,启用mod_ident才有效,通常为减号“-”
Ø %u 验证(basic,digest)远程用户,非登录访问时,为一个减号“-”
- %t 服务器收到请求时的时间
- %r First line of request,即表示请求报文的首行;记录了此次请求的“方法”,
“URL”以及协议版本
- %>s 响应状态码
- %b 响应报文的大小,单位是字节;不包括响应报文http首部
- %{Referer}i 请求报文中首部“referer”的值;即从哪个页面中的超链接跳转至
当前页面的
- %{User-Agent}i 请求报文中首部“User-Agent”的值;即发出请求的应用程
序
11)、设定默认字符集
AddDefaultCharset UTF-8
中文字符集:GBK, GB2312, GB18030
u 12)、定义路径别名
格式: Alias /URL/ “/PATH/”
DocumentRoot “/www/htdocs”
http://www.magedu.com/download/bash.rpm
==>/www/htdocs/download/bash.rpm
Alias /download/ “/rpms/pub/”
http://www.magedu.com/download/bash.rpm
==>/rpms/pub/bash.rpm
http://www.magedu.com/images/logo.png
==>/www/htdocs/images/logo.png
u 13)、基于用户的访问控制
Ø 认证质询:WWW-Authenticate:响应码为401,拒绝客户端请求,并说明要求客户
端提供账号和密码
Ø 认证:Authorization:客户端用户填入账号和密码后再次发送请求报文;认证通过时,
则服务器发送响应的资源
Ø 认证方式两种:
basic:明文
digest:消息摘要认证,兼容性差
Ø 安全域:需要用户认证后方能访问的路径;应该通过名称对其进行标识,以便于告
知用户认证的原因
Ø 用户的账号和密码
虚拟账号:仅用于访问某服务时用到的认证标识
存储:文本文件,SQL数据库,ldap目录存储,nis等
ubasic认证配置示例:
(1) 定义安全域
<Directory “/path”>
Options None
AllowOverride None
AuthType Basic
AuthName “String“
AuthUserFile “/PATH/HTTPD_USER_PASSWD_FILE”
Require user username1 username2 …
</Directory>
允许账号文件中的所有用户登录访问:
Require valid-user
u(2) 提供账号和密码存储(文本文件)
使用专用命令完成此类文件的创建及用户管理
htpasswd [options] /PATH/HTTPD_PASSWD_FILE username
-c:自动创建文件,仅应该在文件不存在时使用
-m:md5格式加密,默认方式
-s: sha格式加密
-D:删除指定用户
u 基于组账号进行认证
Ø (1) 定义安全域
<Directory “/path”>
AuthType Basic
AuthName “String”
AuthUserFile “/PATH/HTTPD_USER_PASSWD_FILE”
AuthGroupFile “/PATH/HTTPD_GROUP_FILE”
Require group grpname1 grpname2 …
</Directory>
Ø (2) 创建用户账号和组账号文件;
组文件:每一行定义一个组
GRP_NAME: username1 username2 …
u示例:
<Directory “/www/htdocs/admin”>
Options None
AllowOverride None
AuthType Basic
AuthName “Administator private”
AuthUserFile “/etc/httpd/conf.d/.htpasswd”
AuthGroupFile “/etc/httpd/conf.d/.htgroup”
Require group webadmins
</Directory>
vim /etc/httpd/conf.d/.htgroup
webadmins:wang mage
远程客户端和用户验证的控制
uSatisfy ALL|Any
ALL 客户机IP和用户验证都需要通过才可以
Any客户机IP和用户验证,有一个满足即可
u示例:
Require valid-user
Order allow,deny
Allow from 192.168.1
Satisfy Any
u14)、ServerSignature On | Off | EMail
当客户请求的网页并不存在时,服务器将产生错误文档,缺省情况下由于打开
了 ServerSignature选项,错误文档的最后一行将包含服务器的名字、Apache的版
本等信息
如果不对外显示这些信息,就可以将这个参数设置为Off
设置为Email,将显示ServerAdmin 的Email提示
u15)、status页面
LoadModule status_module modules/mod_status.so
<Location /server-status>
SetHandler server-status
Order allow,deny
Allow from 172.16
</Location>
ExtendedStatus On 显示扩展信息
16)、虚拟主机
u 站点标识: socket
IP相同,但端口不同
IP不同,但端口均为默认端口
FQDN不同:
请求报文中首部
Host: www.magedu.com
u 有三种实现方案:
基于ip:为每个虚拟主机准备至少一个ip地址
基于port:为每个虚拟主机使用至少一个独立的port
基于FQDN:为每个虚拟主机使用至少一个FQDN
u 注意:一般虚拟机不要与main主机混用;因此,要使用虚拟主机,
一般先禁用main主机
禁用方法:注释中心主机的DocumentRoot指令即可
虚拟主机的配置方法:
<VirtualHost IP:PORT>
ServerName FQDN
DocumentRoot “/path”
</VirtualHost>
建议:上述配置存放在独立的配置文件中
u其它可用指令:
ServerAlias:虚拟主机的别名;可多次使用
ErrorLog: 错误日志
CustomLog:访问日志
<Directory “/path”> </Directory>
Alias
u基于IP的虚拟主机示例:
<VirtualHost 172.16.100.6:80>
ServerName www.a.com
DocumentRoot “/www/a.com/htdocs”
</VirtualHost>
<VirtualHost 172.16.100.7:80>
ServerName www.b.net
DocumentRoot “/www/b.net/htdocs”
</VirtualHost>
<VirtualHost 172.16.100.8:80>
ServerName www.c.org
DocumentRoot “/www/c.org/htdocs”
</VirtualHost>
基于FQDN的虚拟主机:
NameVirtualHost *:80 httpd2.4不需要此指令
<VirtualHost *:80>
ServerName www.a.com
DocumentRoot “/www/a.com/htdocs”
</VirtualHost>
<VirtualHost *:80>
ServerName www.b.net
DocumentRoot “/www/b.net/htdocs”
</VirtualHost>
<VirtualHost *:80>
ServerName www.c.org
DocumentRoot “/www/c.org/htdocs”
</VirtualHost>
uhttp协议
http/0.9, http/1.0, http/1.1, http/2.0
uhttp协议:stateless 无状态
服务器无法持续追踪访问者来源
u解决http协议无状态方法
cookie 客户端存放
session 服务端存放
uhttp事务:一次访问的过程
请求:request
响应:response
20、http响应报文
响应报文的开始行是状态行。
状态行包括三项内容:即HTTP对的版本,状态码。
以及解释状态码的简单短语。
报文语法格式:
urequest报文
<method> <request-URL> <version>
<headers>
<entity-body>
uresponse报文
<version> <status> <reason-phrase>
<headers>
<entity-body>
umethod: 请求方法,标明客户端希望服务器对资源执行的动作
GET、HEAD、POST等
version:
HTTP/<major>.<minor>
ustatus:
三位数字,如200,301, 302, 404, 502; 标记请求处理过程中发生的情况
ureason-phrase:
状态码所标记的状态的简要描述
uheaders:
每个请求或响应报文可包含任意个首部;每个首部都有首部名称,后面跟一
个冒号,而后跟一个可选空格,接着是一个值
uentity-body:请求时附加的数据或响应时附加的数据
uMethod 方法:
GET:从服务器获取一个资源
HEAD:只从服务器获取文档的响应首部
POST:向服务器输入数据,通常会再由网关程序继续处理
PUT:将请求的主体部分存储在服务器中,如上传文件
DELETE:请求删除服务器上指定的文档
TRACE:追踪请求到达服务器中间经过的代理服务器
OPTIONS:请求服务器返回对指定资源支持使用的请求方法
u协议查看或分析的工具:
tcpdump, wireshark,tshark
Httpd2.2常见连接配置:
持久连接。
业务量不大,非持久连接:
游戏网站,长期和服务器连接的,采用持久性连接。
默认的主页面文件。
页面跳转命令:
日志页面:
Curl -I 向远程服务器访问,查看报文头部。
不显示版本信息;prod
21、http协议状态码分类
1)状态码分类:
Status(状态码):
100-101:信息提示
200-206成功
300-305 重定向
400-415错误信息,客户端错误
500-505:错误类信息,服务器端错误
2)http协议的常用状态码
200:成功。请求数据通过响应报文的entity-body部分发送;OK
301:永久重定向。 域名不用了,域名会淘汰。请求的URL指向的资源已经被删除;但在响应报文中通过首部
Location指明了资源现在所处的新位置;Moved Permanently
302:临时重定向。 旧的域名还会使用,只是临时跳转。响应报文Location指明资源临时新位置 Moved Temporarily
304:访问过,本机有缓存。客户端发出了条件式请求,但服务器上的资源未曾发生改变,则通过响应此响应状态码通知客户端;Not Modified
401:需要输入账号和密码。
403:请求被禁止
404:访问的资源不存在
500:服务器内部错误:
502:后端服务器:代理服务器从后端服务器收到了一条伪响应,如无法连接到网关;Bad
Gateway
503:服务不可用,临时服务器维护或过载,服务器无法处理请求
504:网关
22、首部字段
HTTP 首部字段包含的信息最为丰富。首部字段同时存在于请求和响应报文内,并涵盖 HTTP 报文相关的内容信息。使用首部字段是为了给客服端和服务器端提供报文主体大小、所使用的语言、认证信息等内容
首部字段结构HTTP 首部字段是由首部字段名和字段值构成的,中间用冒号“:”
分隔
u 字段值对应单个 HTTP 首部字段可以有多个值
u 报文首部中出现了两个或以上具有相同首部字段名的首部字段时,在规范内尚未明确,根据浏览器内部处理逻辑的不同,优先处理的顺序可能不同,结果可能并不一致
u headers:
u 格式:
u Name: Value
Request URL:http://www.magedu.com/
Request Method:GET
Status Code:200 OK
Remote Address:101.200.188.230:80
Response Headers
view source
Connection:keep-alive
Content-Encoding:gzip
Content-Type:text/html; charset=UTF-8
Date:Sun, 29 Jan 2017 14:32:30 GMT
Server:Tengine
Transfer-Encoding:chunked
Vary:Accept-Encoding
X-Pingback:http://www.magedu.com/xmlrpc.php
Request Headers
view source
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip, deflate, sdch
Accept-Language:zh-CN,zh;q=0.8
Cache-Control:max-age=0Connection:keep-aliveCookie:53gid2=10104634518015; 53gid0=10104634518015; 53gid1=10104634518015; 53revisit=1485699843851; 53uvid=1;
onliner_zdfq72145423=0; CNZZDATA1260642320=1664910013-1485697454-%7C1485697454; visitor_type=old;
53kf_72145423_keyword=; kf_72145423_keyword_ok=1; Hm_lvt_4a78dc1643884da1c990c4c878832e70=1485699844;
Hm_lpvt_4a78dc1643884da1c990c4c878832e70=1485700088Host:www.magedu.comUpgrade-Insecure-Requests:1User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.76
Safari/537.
23、http协议首部
首部的分类:
Ø通用首部:请求报文和响应报文两方都会使用的首部
Ø请求首部:从客户端向服务器端发送请求报文时使用的首部。补充了请求的附
加内容、客户端信息、请求内容相关优先级等信息
Ø响应首部:从服务器端向客户端返回响应报文时使用的首部。补充了响应的
附加内容,也会要求客户端附加额外的内容信息
Ø实体首部:针对请求报文和响应报文的实体部分使用的首部。补充了资源内
容更新时间等与实体有关的的信息
Ø扩展首部
u通用首部:
Date: 报文的创建时间
Connection:连接状态,如keep-alive, close
Via:显示报文经过的中间节点(代理,网关)
Cache-Control:控制缓存,如缓存时长
MIME-Version:发送端使用的MIME版本
Warning:错误通知
请求首部:
Accept:通知服务器自己可接受的媒体类型
Accept-Charset: 客户端可接受的字符集
Accept-Encoding:客户端可接受编码格式,如gzip
Accept-Language:客户端可接受的语言
Client-IP: 请求的客户端IP
Host: 请求的服务器名称和端口号
Referer:跳转至当前URI的前一个URL
User-Agent:客户端代理,浏览器版本
条件式请求首部:
Expect:允许客户端列出某请求所要求的服务器行为
If-Modified-Since:自从指定的时间之后,请求的资源是否发生过修改
If-Unmodified-Since:与上面相反
If-None-Match:本地缓存中存储的文档的ETag标签是否与服务器文档的Etag不
匹配
If-Match:与上面相反
u 安全请求首部:
Authorization:向服务器发送认证信息,如账号和密码
Cookie: 客户端向服务器发送cookie
u 代理请求首部:
Proxy-Authorization: 向代理服务器认证
u响应首部:
Ø信息性:
Age:从最初创建开始,响应持续时长
Server:服务器程序软件名称和版本
Ø协商首部:某资源有多种表示方法时使用
Accept-Ranges:服务器可接受的请求范围类型
Vary:服务器查看的其它首部列表
Ø安全响应首部:
Set-Cookie:向客户端设置cookie
WWW-Authenticate:来自服务器对客户端的质询列表
实体首部:
Allow: 列出对此资源实体可使用的请求方法
Location:告诉客户端真正的实体位于何处
Content-Encoding:对主体执行的编码
Content-Language:理解主体时最适合的语言
Content-Length: 主体的长度
Content-Location: 实体真正所处位置
Content-Type:主体的对象类型,如text
缓存相关:
ETag:实体的扩展标签
Expires:实体的过期时间
Last-Modified:最后一次修改的时间
24、Cookie
uHTTP 是一种无状态协议。协议自身不对请求和响应之间的通信状态进行保存。
也就是说在 HTTP 这个级别,协议对于发送过的请求或响应都不做持久化处理。
这是为了更快地处理大量事务,确保协议的可伸缩性,而特意把 HTTP 协议设
计成如此简单的。可是随着 Web 的不断发展,很多业务都需要对通信状态进行
保存。于是引入了 Cookie 技术。使用 Cookie 的状态管理Cookie 技术通过在
请求和响应报文中写入 Cookie 信息来控制客户端的状态。Cookie 会根据从服
务器端发送的响应报文内的一个叫做 Set-Cookie 的首部字段信息,通知客户端
保存Cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报
文中加入 Cookie 值后发送出去。服务器端发现客户端发送过来的 Cookie 后,
会去检查究竟是从哪一个客户端发来的连接请求,然后对比服务器上的记录,
最后得到之前的状态信息
Set-Cookie首部
uSet-cookie首部字段示例:
Set-Cookie: status=enable; expires=Fri, 24 Nov 2017 20:30:02 GMT;
path=/;
uNAME=VALUE 赋予 Cookie 的名称和其值,此为必需项
uexpires=DATE Cookie 的有效期,若不明确指定则默认为浏览器关闭前为止
upath=PATH 将服务器上的文件目录作为Cookie的适用对象,若不指定则
默认为文档所在的文件目录
udomain=域名 作为 Cookie 适用对象的域名,若不指定则默认为创建
Cookie的服务器的域名
uSecure 仅在 HTTPS 安全通信时才会发送 Cookie
uHttpOnly 加以限制使 Cookie 不能被 JavaScript 脚本访问
25、curl工具
curl工具
curl是基于URL语法在命令行方式下工作的文件传输工具,它支持FTP, FTPS,
HTTP, HTTPS, GOPHER, TELNET, DICT, FILE及LDAP等协议。curl支持HTTPS认
证,并且支持HTTP的POST、PUT等方法, FTP上传, kerberos认证,HTTP上
传,代理服务器,cookies,用户名/密码认证, 下载文件断点续传,上载文件断
点续传, http代理服务器管道( proxy tunneling),还支持IPv6,socks5代理服
务器,通过http代理服务器上传文件到FTP服务器等,功能十分强大
ucurl [options] [URL…]
-A/–user-agent <string> 设置用户代理发送给服务器
-e/–referer <URL> 来源网址
–cacert <file> CA证书 (SSL)
-k/–insecure 允许忽略证书进行 SSL 连接
curl工具常用选项
–compressed 要求返回是压缩的格式
-H/–header <line>自定义首部信息传递给服务器
-i 显示页面内容,包括报文首部信息
-I/–head 只显示响应报文首部信息
-D/–dump-header <file>将url的header信息存放在指定文件中
–limit-rate <rate> 设置传输速度
–basic 使用HTTP基本认证
-u/–user <user[:password]>设置服务器的用户和密码
-L 如果有3xx响应码,重新发请求到新位置
-o <file> 将网络文件保存为指定的文件中
-O 使用URL中默认的文件名保存文件到本地
-0/–http1.0 使用HTTP 1.0
curl工具常用选项
-C – 选项可对文件使用断点续传功能
-c/–cookie-jar <file name> 将url中cookie存放在指定文件中
-x/–proxy <proxyhost[:port]> 指定代理服务器地址
-X/–request <command> 向服务器发送指定请求方法
-U/–proxy-user <user:password> 代理服务器用户和密码
-T 选项可将指定的本地文件上传到FTP服务器上
–data/-d 方式指定使用POST方式传递数据
-b name=data 从服务器响应set-cookie得到值,返回给服务器
26、mod_deflate模块
使用mod_deflate模块压缩页面优化传输能力。
指定压缩比。
适用场景:
(1) 节约带宽,额外消耗CPU;同时,可能有些较老浏览器不支持
(2) 压缩适于压缩的资源,例如文本文件
LoadModule deflate_module modules/mod_deflate.so SetOutputFilter DEFLATE
# Restrict compression to these MIME types
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/css
uLevel of compression (Highest 9 – Lowest 1)
uDeflateCompressionLevel 9
u排除特定旧版本的浏览器,不支持压缩
Netscape 4.x 只压缩text/html
BrowserMatch ^Mozilla/4 gzip-only-text/html
Netscape 4.06-08三个版本 不压缩
BrowserMatch ^Mozilla/4\.0[678] no-gzip
Internet Explorer标识本身为“Mozilla / 4”,但实际上是能够处理请求的压缩。
如果用户代理首部匹配字符串“MSIE”(“B”为单词边界”),就关闭之前定
义的限制
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
27、https
u https:http over ssl
u SSL会话的简化过程
(1) 客户端发送可供选择的加密方式,并向服务器请求证书
(2) 服务器端发送证书以及选定的加密方式给客户端
(3) 客户端取得证书并进行证书验证
如果信任给其发证书的CA
(a) 验证证书来源的合法性;用CA的公钥解密证书上数字签名
(b) 验证证书的内容的合法性:完整性验证
(c) 检查证书的有效期限
(d) 检查证书是否被吊销
(e) 证书中拥有者的名字,与访问的目标主机要一致
(4) 客户端生成临时会话密钥(对称密钥),并使用服务器端的公钥加密此数据发送给服务器,
完成密钥交换
(5) 服务用此密钥加密用户请求的资源,响应给客户端
u 注意:SSL是基于IP地址实现,单IP的主机仅可以使用一个https虚拟主机
28、https实现
(1) 为服务器申请数字证书
测试:通过私建CA发证书
(a) 创建私有CA
(b) 在服务器创建证书签署请求
(c) CA签证
u (2) 配置httpd支持使用ssl,及使用的证书
yum -y install mod_ssl
配置文件:/etc/httpd/conf.d/ssl.conf
DocumentRoot
ServerName
SSLCertificateFile
SSLCertificateKeyFile
u (3) 测试基于https访问相应的主机
openssl s_client [-connect host:port] [-cert filename] [-CApath directory] [-CAfile
filename]
29、http重定向https
u将http请求转发至https的URLu
重定向Redirect [status] URL-path URLu
status状态:ØPermanent:Returns a permanent redirect status (301) indicating that the resource
has moved permanentlyØTemp:Returns a temporary redirect status (302). This is the defaultu示例:Redirect temp / https://www.magedu.co
http over ssl
https的实现:
yum install mod_ssl 安装证书模块。
30、HSHS
HSTS:HTTP Strict Transport Security
服务器端配置支持HSTS后,会在给浏览器返回的HTTP首部中携带
HSTS字段。浏览器获取到该信息后,会将所有HTTP访问请求在内部
做307跳转到HTTPS。而无需任何网络过程
u HSTS preload list
是Chrome浏览器中的HSTS预载入列表,在该列表中的网站,使用
Chrome浏览器访问时,会自动转换成HTTPS。Firefox、Safari、
Edge浏览器也会采用这个列表
u 实现HSTS示例:
vim /etc/httpd/conf/httpd.conf
Header always set Strict-Transport-Security “max-age=15768000”
RewriteEngine on
RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]
31、httpd自带的工具程序
uhttpd自带的工具程序
htpasswd:basic认证基于文件实现时,用到的账号密码文件生成工具
apachectl:httpd自带的服务控制脚本,支持start和stop
rotatelogs:日志滚动工具
access.log –>
access.log, access.1.log –>
access.log, acccess.1.log, access.2.log
32、httpd的压力测试工具
httpd的压力测试工具
Øab, webbench, http_load, seige
ØJmeter 开源
ØLoadrunner 商业,有相关认证
Øtcpcopy:网易,复制生产环境中的真实请求,并将之保存
Øab [OPTIONS] URL
来自httpd-tools包
-n:总请求数
-c:模拟的并行数
-k:以持久连接模式测试
ulimit –n # 调整能打开的文件数
Ssl会话的简化过程:
私钥和公钥是成对使用的。
CA:整数信任机构。
33、httpd-2.4
u新特性
Ø MPM支持运行为DSO机制;以模块形式按需加载
Øevent MPM生产环境可用
Ø异步读写机制
Ø支持每模块及每目录的单独日志级别定义
Ø每请求相关的专用配置
Ø增强版的表达式分析式
Ø毫秒级持久连接时长定义
Ø基于FQDN的虚拟主机不需要NameVirutalHost指令
Ø新指令,AllowOverrideList
Ø支持用户自定义变量
Ø更低的内存消耗
u修改了一些配置机制
不再支持使用Order, Deny, Allow来做基于IP的访问控制
u新模块
Ø(1) mod_proxy_fcgi
FastCGI Protocol backend for mod_proxy
Ø(2) mod_remoteip
Replaces the apparent client remote IP address and hostname for the request
with the IP address list presented by a proxies or a load balancer via the request
headers.
Ø(3) mod_ratelimit
Provides Bandwidth Rate Limiting for Clients
34、centos7httpd程序环境
CentOS 7:httpd-2.4
u 安装方法:rpm,编译安装
u Rpm安装程序环境:
Ø 配置文件:
/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/*.conf
Ø 模块相关的配置文件:
/etc/httpd/conf.modules.d/*.conf
Ø systemd unit file:
/usr/lib/systemd/system/httpd.service
Ø 主程序文件:
/usr/sbin/httpd
httpd-2.4支持MPM的动态切换
日志文件:
/var/log/httpd
access_log:访问日志
error_log:错误日志
u站点文档:
/var/www/html
u模块文件路径:
/usr/lib64/httpd/modules
u服务控制:
systemctl enable|disable httpd.service
systemctl {start|stop|restart|status} httpd.service
httpd-2.4配置u配置应用:u
(1) 切换使用的MPMØ Centos 7:/etc/httpd/conf.modules.d/00-mpm.conf
启用要启用的MPM相关的LoadModule指令即可Ø
centos6编译安装: vim /etc/httpd24/httpd.conf
Include /etc/httpd24/extra/httpd-mpm.conf
LoadModule mpm_event_module modules/mod_mpm_event.sou
(2)主目录: DocumentRoot /pa
u(3) 基于IP的访问控制:
无明确授权的目录,默认拒绝
允许所有主机访问:Require all granted
拒绝所有主机访问:Require all denied
控制特定的IP访问:
Require ip IPADDR:授权指定来源的IP访问
Require not ip IPADDR:拒绝特定的IP访问
控制特定的主机访问:
Require host HOSTNAME:授权特定主机访问
Require not host HOSTNAME:拒绝
HOSTNAME:
FQDN:特定主机
domin.tld:指定域名下的所有主机
u不能有失败,至少有一个成功匹配才成功,即失败优先
<RequireAll>
Require all granted
Require not ip 172.16.1.1 拒绝特定IP
</RequireAll>
u多个语句有一个成功,则成功,即成功优先
<RequireAny>
Require all denied
require ip 172.16.1.1 允许特定IP
</RequireAny>
u(4) 虚拟主机
基于FQDN的虚拟主机不再需要NameVirutalHost指令
<VirtualHost *:80>
ServerName www.b.net
DocumentRoot “/apps/b.net/htdocs”
<Directory “/apps/b.net/htdocs”>
Options None
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
注意:任意目录下的页面只有显式授权才能被访问
u(4) ssl:安装mod_ssl,和httpd-2.2相同配置
u(5) KeepAlive on
KeepAliveTimeout #ms
MaxKeepAliveRequests 100
毫秒级持久连接时长定义
35、APR
uAPR(Apache portable Run-time libraries,Apache可移植运行库) 主要为上
层的应用程序提供一个可以跨越多操作系统平台使用的底层支持接口库。在早
期的Apache版本中,应用程序本身必须能够处理各种具体操作系统平台的细节,
并针对不同的平台调用不同的处理函数
u随着Apache的进一步开发,Apache组织决定将这些通用的函数独立出来并发
展成为一个新的项目。这样,APR的开发就从Apache中独立出来,Apache仅
仅是使用 APR而已。目前APR主要还是由Apache使用,由于APR的较好的移植
性,因此一些需要进行移植的C程序也开始使用APR,开源项目比如用于服务器
压力测试的Flood loader tester,该项目不仅仅适用于Apache,
http://httpd.apache.org/test/flood
36、centos6编译安装httpd-2.4
u安装httpd-2.4
Ø依赖于apr-1.4+, apr-util-1.4+, [apr-iconv]
Øapr: apache portable runtime,解决跨平台实现
ØCentOS 6:默认:apr-1.3.9, apr-util-1.3.9
u安装前准备开发包:
Ø开发环境包组:
Development Tools,Server
相关包:pcre-devel,openssl-devel expat-devel
u下载源代码并解压缩:
httpd-2.4.27.tar.bz2
apr-1.6.2.tar.bz2
apr-util-1.6.0.tar.bz2
方法一:
u安装apr-1.4+cd apr-1.6.2./configure –prefix=/app/aprmake && make installu安装apr-util-1.4+cd ../apr-util-1.6.0./configure –prefix=/app/apr-util –with-apr=/app/apr/make -j 2 && make insta
u编译安装httpd-2.4cd ../httpd-2.4.27./configure –prefix=/app/httpd24 –enable-so –enable-ssl –enable-cgi –enablerewrite –with-zlib –with-pcre –with-apr=/app/apr/ –with-apr-util=/app/apr-util/ –enable-modules=most –enable-mpms-shared=all –with-mpm=preforkmake -j 4 && make insta
方法二:
ucp -av apr-1.6.2 httpd-2.4.27/srclib/aprucp -av apr-util-1.6.0 httpd-2.4.27/srclib/apr-utilucd httpd-2.4.27/
./configure –prefix=/app/httpd24 –enable-so –enable-ssl –enable-cgi –enable-rewrite –with-zlib –with-pcre –with-includedapr –enable-modules=most –enable-mpms-shared=all –withmpm=prefork
make && make installuHttpd编译过程:/usr/local/apache24/build/config.niceu自带的服务控制脚本:/usr/local/httpd24/bin/apachec
vim /etc/profile.d/httpd24.sh
export PATH=/app/http24/bin:$PATH
u vim /etc/man.config
MANPATH /usr/local/apache24/man
u 自定义启动脚本(参考httpd-2.2的服务脚本)
cp /etc/rc.d/init.d/httpd /etc/rc.d/init.d/httpd24
vim /etc/rc.d/init.d/httpd24
apachectl=/usr/local/httpd24/bin/apachectl
httpd=${HTTPD-/usr/local/httpd24/bin/httpd}
pidfile=${PIDFILE-/usr/local/httpd24/logs/httpd.pid}
lockfile=${LOCKFILE-/var/lock/subsys/httpd24}
chkconfig –add httpd24 ;chkconfig –list httpd24
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/100243