HTTP基础

简介:

Web基础:

1.1网络基础tcp/ip

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

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


wKiom1YiLi_ApTYgAAFs2DbOx7c202.jpg


利用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协议会再次发送相同数据包。

 

wKioL1YiLlPSOTrYAAELagFvJmQ710.jpg

 

套接字系统调用:

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.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协议是客户端发送请求,服务器端回应。

wKiom1YiL06Q_1VZAACZ9_9Rgoo069.jpg


 

一次完整的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

支持第三方模块



本文转自 dengaosky 51CTO博客,原文链接:http://blog.51cto.com/dengaosky/1856587,如需转载请自行联系原作者

相关文章
|
域名解析 网络协议 网络架构
《图解HTTP》-WEB及网络基础学习笔记
简单来说,客户端就是个人使用的电脑,而服务端就是服务器。通过电脑访问服务器上的资源,用的就是HTTP协议。
106 0
《图解HTTP》-WEB及网络基础学习笔记
|
域名解析 缓存 网络协议
Web基础与HTTP协议
域名概念回顾: IP地址不易记忆,域名用于代替IP地址,方便记忆。 两台主机通信,是通过IP地址访问,所以需要将域名解析成IP地址。 早期使用Hosts文件解析域名,但随着域名的增多,工作量巨大,维护困难。 之后使用DNS (Domain Name Server,域名服务器) 进行域名解析。
152 0
|
域名解析 云安全 缓存
HTTP 协议基础 | 学习笔记
快速学习 HTTP 协议基础,介绍了 HTTP 协议基础系统机制, 以及在实际应用过程中如何使用。
115 0
HTTP 协议基础 | 学习笔记
|
网络协议 安全 网络安全
【图解Http 学习摘要】三、HTTP 协议基础、四次挥手
【图解Http 学习摘要】三、HTTP 协议基础、四次挥手
【图解Http 学习摘要】三、HTTP 协议基础、四次挥手
|
缓存 安全
[ web基础篇 ] HTTP状态码表
[ web基础篇 ] HTTP状态码表
115 0
|
网络协议 JavaScript 前端开发
《图解HTTP》读书总结-第一章-了解Web及网络基础
本文为个人总结的《图解HTTP》第一章的读书笔记
88 0
《图解HTTP》读书总结-第一章-了解Web及网络基础
|
XML JSON JavaScript
Android | 网络技术基础梳理——WebView以及HTTP运用(HttpURLConnection及OkHttp)、XML以及JSON解析(demo+bug)
Android | 网络技术基础梳理——WebView以及HTTP运用(HttpURLConnection及OkHttp)、XML以及JSON解析(demo+bug)
|
存储 前端开发 JavaScript
前端基础——HTTP详解
前端基础——HTTP详解
182 0
前端基础——HTTP详解
|
JSON Java 数据格式
Java基础—实现微服务模块接收Http请求回调数据
本文中详细介绍在微服务模块中实现接收公网Http请求数据回调接口说明。
749 0
Java基础—实现微服务模块接收Http请求回调数据
|
存储 XML JSON
【前端面试题】前端基础 | 八股文 | HTTP网络 | Vue | React 下
【前端面试题】前端基础 | 八股文 | HTTP网络 | Vue | React
383 0