Web服务
Internet上主机之间的通讯需要有两个重要的标志:IP和端口号,两者合称为套接字地址 socket address
客户端主机套接字地址定义了一个唯一的客户进程(端口号可随机)
服务器套接字地址定义了一个唯一的服务器进程(端口号需要固定)
端口号总范围是0-65535,但是0-1023范围内端口号是系统端口或叫特权端口,只限管理员使用
HTTP(Hyper Text Transfer Protocol)是应用于TCP/IP协议的应用层的超文本传输协议,基于TCP协议,默认端口号为80
HTTP服务通信的过程:(服务端S、客户端C)
html是超文本的编辑语言,使得文本内容更加美观,基本运用的格式如下:
<html>
<head>
<title>输入定义的网页标签名
</title>
</head>
<body>
<img src=“输入调用的图片、logo等文件路径”>
<h1>“要输入的字符内容”</h1>
<p><a href=超链接地址>需要被连接的字符</a>不需要超链接的字符</p>
</body>
</html>
这些html语言编辑的文件一般存放在默认的httpd服务的默认站点/var/www/html/目录下并以.html结尾
为了能够实现多媒体的传输,HTTP协议就利用MIME(Multipurpose Internet Mail Extensions)多用途的邮件扩展协议来支持,在CentOS系统中 /etc/mime.types 文件中可查看支持的多媒体类型
HTTP协议
目前市面上正常使用的协议为三种:http/1.0、http/1.1(主流)、http/2.0
http/1.0:
每个TCP协议连接中只能发送一个请求,发送数据完毕,连接就关闭;若还需要获取其他资源,则需要另外建立新的TCP连接
支持多种method方法指令:GET(请求数据)、POST(上传数据)、HEAD(查看http报文首部)
http/1.1:(在http/1.0协议基础上升级)
引入持久连接,即TCP连接建立之后,默认不关闭,客户端可以发送多个请求,在多数浏览器中,支持同时开启6个持久连接
新增了一些其他method指令:PUT、PATCH、OPTIONS、DELETE,但是不常用
存在的缺点是,每个TCP连接中,数据通信是按照次序进行,可能会造成请求排队堵塞
http/2.0:(在http/1.1协议基础上升级)
每个TCP连接中,客户端与浏览器可以同时发送多个请求与回应
服务器可以未经请求情况下,主动推送资源给客户端
TCP连接在这三种协议中,从开始的每次单个连接只能执行一次请求===>升级到按照顺序单个连接可处理客户端的多个请求===>再到可不按照顺序客户端和服务端同时发送多个请求或回应
http协议是属于无状态协议,服务器是无法跟踪访问者来源的,为解决此问题,一般是通过如下方法:
cookie与session的结合 (每个服务器会设置cookie的数量)
工作机制:当客户端访问某个服务器网站时,服务器端会自动的生成一个cookie信息,发送给客户端并设定唯一的一个编号,客户端会将此cookie信息存储在文件中,若是客户端在此访问相同的服务器网站,会携带此带编号的cookie信息,服务端则通过此编号,在session中将客户端此前相关访问信息与之关联,从而记录下来,实现跟踪
HTTP经常使用的状态码以及相关含义,如下:
200: 成功,请求数据通过响应报文的entity-body部分发送;OK
301: 请求的URL指向的资源已经被删除;但在响应报文中通过首部Location指明了资源现在所处的新位置;Moved Permanently
302: 响应报文Location指明资源临时新位置 Moved Temporarily
304: 客户端发出了条件式请求,但服务器上的资源未曾发生改变,则通过响应此响应状态码通知客户端;Not Modified
401: 需要输入账号和密码认证方能访问资源;Unauthorized
403: 请求被禁止;Forbidden
404: 服务器无法找到客户端请求的资源;Not Found
500: 服务器内部错误;Internal Server Error
502: 代理服务器从后端服务器收到了一条伪响应,如无法连接到网关;Bad Gateway
503 : 服务不可用,临时服务器维护或过载,服务器无法处理请求
504 : 网关超时
HTTP工作机制