Python学习第十三周总结

网络协议和管理、http服务和Apache

一、网络协议和管理 1

1、网络介绍: 1

2、网络应用程序 2

3、用户应用程序对网络的影响 2

4、网络的特征 3

5、带宽 3

6、物理拓扑分类 3

7、主机到主机通信 3

8、网络模型分层 4

9、OSI模型的七层结构 4

10、数据封装 5

12、数据解封 6

13、对等通信 6

14、PDU 6

15、三种通讯模式 7

16、局域网LAN(local area network) 8

17、网络线缆和接口 9

18、LAN标准 14

19、Ethernet frame结构 14

20、数据链路层 15

17、Mac地址 15

18、冲突检测的载波帧听多路访问csma/cd 16

19、hub集线器 17

20、以太网桥 17

21、hub和交换机 20

22、路由器 20

23、VLAN技术 21

23、分层网络架构 22

24、TCP/IP协议栈 23

25、应用层: 24

26、传输层: 24

27、可靠性vs高效性(TCP   vs  UDP) 25

28、TCP协议特性 25

29、TCP包头 25

30、TCP包头选项 27

31、映射第四层到应用程序 28

32、TCP协议PORT 28

33、TCP三次握手 30

34、TCP四次挥手 30

35、有限状态机FSM 31

36、TCP端口号 34

37、UDP特性 36

38、Internet层 37

39、Internet协议特征 51

40、IP地址 53

41、IP地址分类 54

42、公共IP 55

43、私有ip 56

44、保留地址 56

45、子网掩码 56

46、特殊地址 62

47、跨网络通信 62

48、动态主机配置协议DHCP 63

49、基本网络配置 63

50、Centos6 网卡名称 63

51、网络配置方式 64

52、配置网络接口 64

53、route命令 64

54、配置动态路由 65

55、netstat命令 65

56、ip命令 66

56、ss命令 67

57、网络配置文件 68

58、主机名和本地解析器 69

59、dns名字解析 69

60、网络配置文件 69

61、设备别名 70

62、centos7网络属性配置 70

63、网卡名称 71

64、centos7网络配置工具 71

一、网络协议和管理 1

1、网络介绍: 1

2、网络应用程序 2

3、用户应用程序对网络的影响 2

4、网络的特征 3

5、带宽 3

6、物理拓扑分类 3

7、主机到主机通信 3

8、网络模型分层 4

9、OSI模型的七层结构 4

10、数据封装 5

12、数据解封 6

13、对等通信 6

14、PDU 6

15、三种通讯模式 7

16、局域网LAN(local area network) 8

17、网络线缆和接口 9

18、LAN标准 14

19、Ethernet frame结构 14

20、数据链路层 15

17、Mac地址 15

18、冲突检测的载波帧听多路访问csma/cd 16

19、hub集线器 17

20、以太网桥 17

21、hub和交换机 20

22、路由器 20

23、VLAN技术 21

23、分层网络架构 22

24、TCP/IP协议栈 23

25、应用层: 24

26、传输层: 24

27、可靠性vs高效性(TCP   vs  UDP) 25

28、TCP协议特性 25

29、TCP包头 25

30、TCP包头选项 27

31、映射第四层到应用程序 28

32、TCP协议PORT 28

33、TCP三次握手 30

34、TCP四次挥手 30

35、有限状态机FSM 31

36、TCP端口号 34

37、UDP特性 36

38、Internet层 37

39、Internet协议特征 51

40、IP地址 53

41、IP地址分类 54

42、公共IP 55

43、私有ip 56

44、保留地址 56

45、子网掩码 56

46、特殊地址 62

47、跨网络通信 62

48、动态主机配置协议DHCP 63

49、基本网络配置 63

50、Centos6 网卡名称 63

51、网络配置方式 64

52、配置网络接口 64

53、route命令 64

54、配置动态路由 65

55、netstat命令 65

56、ip命令 66

56、ss命令 67

57、网络配置文件 68

58、主机名和本地解析器 69

59、dns名字解析 69

60、网络配置文件 69

61、设备别名 70

62、centos7网络属性配置 70

63、网卡名称 71

64、centos7网络配置工具 71

二、HTTP服务和Apache 75

1、Internet与中国的服务 75

2、中国互联网连接世界 76

3、TCP/IP协议 77

4、跨Internet的主机间的通讯 77

5、Socket套接字 78

6、http服务通信过程 81

7、http相关术语 82

8、http协议介绍 83

9、http工作机制 84

10、http连接请求 85

11、串行和并行连接 85

12、URI 86

13、URL组成 86

14、网站访问量查询 87

15、Web服务一次完整的http请求处理过程 88

16、http服务器应用 89

17、MPM工作模式 90

18、Httpd功能特性 92

19、httpd安装 93

20、http响应报文 102

21、http协议状态码分类 105

22、首部字段 106

23、http协议首部 107

24、Cookie 108

25、curl工具 109

26、mod_deflate模块 110

27、https 111

28、https实现 112

29、http重定向https 112

30、HSHS 112

31、httpd自带的工具程序 113

32、httpd的压力测试工具 113

33、httpd-2.4 113

34、centos7httpd程序环境 114

35、APR 116

36、centos6编译安装httpd-2.4 116

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

逻辑和物理的并不同一。

图片1

7、主机到主机通信

旧模型

专有产品

由一个厂商控制应用程序和嵌入的软件

基于标准的模型(现在是基于标准的)

多厂商软件

分层方法

 

8、网络模型分层

七层模型:

ISO国际标准化组织。推出OSI标准

应用层

表示层

会话层

传输层

网络层

数据链层

物理层

 

特点:降低了复杂性、标准化接口、简化模块化设计、确保技术的互操作性、加快发展速度、简化教学

 

9、OSI模型的七层结构

(1)物理层:物理连接的问题,bit(位)概念,二进制。

(2)数据链路层:访问介质,定义如何格式化数据以便进行运输以及如何控制对网络的控制。frame帧,检查错误的功能。物理地址MAC地址。(与或非:)

(3)网络层:数据传输,逻辑地址,路由数据包,选择最佳的路径。

(4)传输层:数据可靠传输,检查错误的功能,

(5)会话层:建立和管理、终止会话。

(6)表示层:数据表示,确保接受系统可以读出该数据,ASCII是7位。

(7)应用层:为应用程序进程,提供身份验证,网络过程访问应用层。

下层都是为上次提供服务的。

 

10、数据封装

数据从上层到下层层层打包(应用层到物理层),HDR=报头

图片2

12、数据解封

从下层到上层解包(从物理层到应用层),有地址,表示上层是谁。下层带有上层服务的标记。

图片3

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的缩写,是将千兆位电信号转换为光信号的接口器。

图片4

19、Ethernet frame结构

目标地址,原地址。46-1500,之间mtu。Ipx/spx  novell  netware

 

tcp/ip

 

II  代:

以太网最大帧1526,最小72.    1514是去掉头和尾部。

ethtool  eth2  查看网络情况。

 

20、数据链路层

图片5

17、Mac地址

48位组成。前24bits生产厂家的编号,后面24bits是厂家的编号,世界唯一。

图片6

 

18、冲突检测的载波帧听多路访问csma/cd

图片7

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、应用层:

图片8

26、传输层:

图片9

27、可靠性vs高效性(TCP   vs  UDP)

图片10

28、TCP协议特性

工作在传输层

面向连接协议

全双工协议

半关闭

错误检查

将数据打包成段,排序

确认机制

数据恢复,重传。

流量控制,滑动窗口

拥塞控制,慢启动和拥塞避免算法

 

29、TCP包头

 

端口和目标端口各是六万多个。65535个   ss-ntul

图片11

源端口、目标端口:计算机上的进程要和其他进程通信是要通过计算机端口的,而一个计算机端口某个时刻只能被一个进程占用,所以通过指定源端口和目标端口,就可以知道是哪两个进程需要通信。源端口、目标端口是用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、映射第四层到应用程序

图片12

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状态

 

图片14图片15图片16图片13

36、TCP端口号

图片17图片18图片19图片20图片21

如果第一次传输三个,对方确认号为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层

图片22图片23图片24

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

图片25图片26

图片27图片28图片29图片30图片31图片32图片33图片34图片35图片36图片37图片38图片39图片40图片41图片42图片43图片44图片45图片46

图片47图片48

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字节,分别记录源地址和目的地址

图片49图片50图片51

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、保留地址

图片52

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、串行和并行连接

 

 

 

12URI

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

发表评论

登录后才能评论

联系我们

400-080-6560

在线咨询:点击这里给我发消息

邮件:1823388528@qq.com

工作时间:周一至周五,9:30-18:30,节假日同时也值班