首页 > 代码库 > HTTP基础

HTTP基础

Web基础:

1.1网络基础tcp/ip

计算机两边想要通信,双方就要基于相同的方法。基于c/s机制,确定谁是客户端,服务端。不同的硬件,操作系统之间的通信,所有的一切需要一种规则,我们就把这种规则称为协议。

协议中存在各种各样的内容,像这样把相关联的协议集合起来总称为tcp/ip


技术分享


利用tcp/ip通信,发送方会从上往下走,发送到服务器端在从下网上走。

 

首先服务器方要先启动,并根据请示提供相应服务:

1、打开一通信通道并告知本地主机,它愿意在某一个公认地址上接收客户请求。

2、在传输层把从应用层接受到的请求报文分割,

3、接收到重复服务请求,处理该请求并发送应答信号。

4、返回第二步,等待另一客户请求

5、关闭服务器。

 

tcp协议:面向连接协议,可靠,稳定。通信前建立链路,结束后拆除链路。端口范围:0-65535

udp协议:无连接协议,速度快。端口范围:0-65535

IANA:

0-1023:永久的分配给固定的应用使用:

1024-41951:注册端口,要求并不是特别严格,分配给程序注册为某应用使用。

 

套接字

Socket:ipc的一种实现:允许位于不同主机(甚至同一主机)上,不同进程之间通信,实现数据交换。

tcp套接字:SOCK_STREAM 

udp套接字:SOCK_DGRAM 

裸套接字:SOCK_RAM

 

tcp协议的特性

tcp位于传输层,提供可靠的字节流服务:

字节流服务:将大块数据分割成以报文段为单位的数据包进行管理。

可靠性传输:采用三次握手策略,当tcp把数据包传送过去之后,会确认数据包是否到达。如果数据包莫名中断,tcp协议会再次发送相同数据包。

 

技术分享

 

套接字系统调用:

socket():创建一个套接字;

bind():绑定

listen():监听

accept():接收请求

connect():请求连接建立

write():发送

read():接收

send(),rcv(),sendto(),recvfrom()

 

网页基础知识:

http:hyper text transfer protocol

Html:编程语言,超文本标记语言;

<html>

<head>

<title>TITLE</title>

</head>

<body>

<h1></h1>

<p>blabla <a href=http://www.mamicode.com/http://www.a.com/log.jpg>blabla</a></p>

 

</body>

</html>

 

CSS:层叠样式表

Js:javascript

 

URL和URI

URL:(Uniform Resource Locator)统一资源定位符

URI:(Uniform Resource ldentifier)同一资源标识符

URI的格式:

scheme://user:pass@www.example.com:80/html/index.html.uid=1#ch1

方案名 // 用户名,密码@主机名称:端口/带层次的文件路径?查询字段#片段标识符

 

 

http协议版本:

http/0.9:原型版本

http/1.0:

http/1.1:

http/2.0

 

1.2http请求模型:

http协议是客户端发送请求,服务器端回应。

技术分享


 

一次完整的http请求;

1.建立请求

持久连接

非持久连接

2.接收请求:

接受来自网络的请求报文中对某一个请求的过程:

并发响应模型(web I/O):

单进程I/O结构:启动一个处理用户请求,而且一次只处理1个,多个请求被串行响应:

多进程I/O结构:并行启动多个进程,每个进程响应一个请求

复用I/O结构:一个进程响应多个请求:

多线程模型:一个进程生成多个线程,每个线程响应多个请求;

事件驱动

复用的多进程I/O结构:启动多个(m)进程,每个进程响应n个请求;

 

3.处理了请求:对请求报文进行分析,并获取请求的资源以及请求的方法相关信息

元数据:请求报文首部

<method><URL><VERSION>

Host:www.a.com 请求的主机名称

Connection:

 

4.访问资源:获取请求报文中请求的资源

web服务器,既存放了web资源的服务器,负责向请求者提供对方请求的静态资源,或动态运行后生成的资源,这些资源放在本地某个路径下,此路径称为DocRoot

/var/www/html/image/Log.jpg

www.a.com/image/Log.jpg

 

web服务器资源路径映射方式:

DocRoot

Alias

虚拟主机DocRoot

用户家目录DocRoot

 

5.创建响应报文

资源MIME类型:

显示分类:

魔法分类:

协商分类:

重定向:

web服务器构建响应并非客户端请求的资源,而是资源另外一个访问路径

 

6.发送响应报文

 

7.记录日志

 

http服务器程序:

httpd(apache

Nginx

 

应用程序服务器:

IIS

Tomcat,jetty

 

httpd的特性:

高度模块化:core+modules

DSO:dynamic shared o‘bject

MPM:多线程处理模块

Prefork:多进程模型,每个进程响应一个请求:

一个主进程,负责生成n个子进程,子进程也成为工作进程,每个子进程处理一个用户请求,即使没有用户请求,也会预先生成多个空闲进程,随时等待请求到达,最大不会超过1024个。

 

Worker:多线程模型,每个线程响应一个请求;

一个主进程:生成多个子进程,每个子进程负责生成多个线程,每个线程响应一个请求;

m进程,n线程:m*n

 

Event:事件驱动模型,每个线程响应n个请求:(httpd-2.4)

一个主进程:生成n个子进程,每个子进程直接n个请求;

m*n

 

httpd的功能特性:

虚拟主机

Ip,portFQDN

CGI:通用网关接口 实在动态页面的技术。

反向代理

负载均衡

路径别名

丰富的认证机制:basicdigest

支持第三方模块

 

 

 


本文出自 “眼眸刻着你的微笑” 博客,请务必保留此出处http://dengaosky.blog.51cto.com/9215128/1856587

HTTP基础