Linux学习73 http协议及web服务基础
一、Web Service
1、应用层:http,https
a、实现某类具体应用
2、传输层协议:TCP,UDP,SCTP
3、IANA(互联网地址名称分配机构)
a、0-1023:众所周知,永久地分配给固定的应用使用,特权端口
b、1024-41951:亦为注册端口,但要求不是特别严格,分配给程序注册为某应用使用;3306/tcp,11211/tcp
c、41952+:客户端程序随机使用的端口,动态端口,或私有端口;其范围定义在/proc/sys/net/ipv4/ip_local_port_range中
4、BSD Socket:IPC的一种实现,允许位于不同主机(也可以是同一主机)上的进程之间进行通信;
a、Socket API(封装了内核中的socket通信相关的系统调用,通过库调用提供给程序员)
(1)、基本TCP客户/服务器程序的套接字函数
1)、服务端过程
socket:向内核系统调用或库调用请求创建套接字。
bind:如果创建成功了就绑定在这个套接字上
listen:开始监听套接字
accept:负责接收客户端请求,如果没有接收到就处于阻塞状态,一直阻塞到有客户端访问。可以用htop命令来追踪一个进程打开的系统调用。
2)、客户端
socket:请求创建一个套接字
connect:向服务端发送请求这个套接字
(2)、SOCK_STREAM:tcp套接字
(3)、SOCK_DGRAM:UDP套接字
(4)、SOCK_RAW:raw套接字,也称作裸套接字
b、根据套接字所使用的地址格式,socket Domain:
(1)、AF_INET:Address Family,IPv4的地址
(2)、AF_INET6:ipv6
(3)、AF_UNIX:同一主机上的不同进程间基于socket套接字通信使用的一种地址:Unix_SOCK
4、TCP FSM:CLOSED,LISTEN,SYN_SENT,SYN_RECV,ESTABLISHED,FIN_WAIT,CLOSE_WAIT,FIN_WAIT2,LAST_ACK,TIMEWAIT,CLOSED
5、TCP协议的特性
a、建立连接:三次握手
b、将数据打包成段:校验和(CRC32),MTU
c、确认,重传及超时
d、排序:逻辑序号
e、流量控制:滑动窗口算法
二、http
1、http(hyper text transfer protocol):超文本传输协议,应用层协议,80/tcp
a、html(hyper text mark language):超文本标记语言,编程语言
b、协议版本
(1)、http/0.9,原型版本,功能捡漏
(2)、http/1.0:cache,MIME,method
1)、MIME:Multipurpose Internet Mail Extesion
2)、method:GET,POST,HEAD,PUT,DELETE,TRACE,OPTIONS
(3)、http/1.1:增强了缓存功能。
spdy
(4)、http/2.0
rfc
2、工作模式
a、http请求报文:http request
b、http响应报文:http response
c、一次请求和一次响应的模式就叫做一次http事务
d、web资源:web resource
(1)、静态资源(无须服务端做出额外处理):.jpg,.png,.gif,.html,.txt,.js,.css,.mp3...
(2)、动态资源(服务端需要通过执行程序做出处理,发送给客户端的是程序的运行结果):.php,.jsp
(3)、注意:一个页面中展示的资源可能有多个,每个资源都需要单独请求
(4)、资源的标识机制:URL
1)Uniform Resource Locator:用于描述服务器某特定资源的位置
例如:http://www.sina.com.cn/index.html
2)、Scheme://Server:[:port][/PATH/TO/SOME_RESOURCE]
3、一次完整的http请求处理过程:
a、建立或处理连接:接收请求或拒绝请求
b、接收请求:接收来自于网络上的主机请求报文中对某特定资源的一次请求过程
c、处理请求:对请求报文进行解析,获取客户端请求的资源及请求方法等相关信息
d、访问资源:获取请求报文中请求的资源
e、构建响应报文
f、发送响应报文
g、记录日志