Internet概念
Internet:将不同的计算机网络连接起来,实现不同的计算机网络之间的通信
Socket套接字
socket:允许位于不同主机(或同一主机)上不同进程之间进行通信和数据交换
-
socket套接字可以理解为主机的ip地址+进程的端口号
-
端口号:用来唯一标识一台主机上的进程
-
ip地址:用来唯一标识一台主机
万维网:WWW(world wide web)
万维网就是一个信息储藏库,通过超链接的方式将存储信息的站点逻辑上连接起来。然后使用统一资源定位符(URI)来唯一标识这些资源。
HTTP协议(HyperText Transfer Protocol,超文本传输协议):
-
HTTP协议:主要是用来访问万维网中资源的一个协议。
-
HTTP协议是应用层协议,它传输层使用的是tcp协议,默认使用80端口。
URI:
-
URI: Uniform Resource Identifier 统一资源标识,分为URL 和 URN
-
URL:Uniform Resorce Locator,统一资源定位符,用于描述某服务器某特定资源位置
-
URN:Uniform Resource Naming,统一资源命名
区别:
URN如同一个人的名称,而URL代表一个人的住址。换言之,URN定义某事物的身份,而URL提供查找该事物的方法。URN仅用于命名,而不指定地址
URL组成:
通用格式:
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>
-
scheme:方案,访问服务器以获取资源时要使用哪种协议,如http、ftp等
-
user:用户,某些方案访问资源时需要的用户名
-
password:密码,用户对应的密码,中间用:分隔
-
Host:主机,资源宿主服务器的主机名或IP地址
-
port:端口,资源宿主服务器正在监听的端口号,很多方案有默认端口号
-
path:路径,服务器资源的本地名,由一个/将其与前面的URL组件分隔
-
params:参数,指定输入的参数,参数为名/值对,多个参数,用;分隔
-
query:查询,传递参数给程序,如数据库,用?分隔,多个查询用&分隔
-
frag:片段,一小片或一部分资源的名字,此组件在客户端使用,用#分隔
实例:
http://h5.pdfdo.com/Download/100922070758.pdf?t=254
https://www.zhihu.com/question/32248310/answer/59281731
?数据库中的参数
#文件中的标签,大文件切成若干片段,指定位置添加标签。
HTTP工作机制:
客户端发起请求,服务端回应请求。--- 这个过程称为一次http事务
web资源:一个"Web 页面”通常并不是单个资源,而是一组资源的集合
资源类型:
-
静态资源:服务器端文件和客户端文件一样
文件后缀:.html, .txt, .jpg, .js, .css, .mp3, .avi -
动态资源:应用程序,服务端将程序的执行结果返回给客户端
文件后缀:.php, .jsp ,.asp
访问网站获取资源过程:
-
客户端浏览器通过tcp的三次握手连接到服务器端,
-
客户端通过http协议发送http请求,
-
服务端响应客户端的请求返回对应的资源文件。
http连接请求的访问方式
-
串行连接:每下载一个资源都要进行三次握手和四次挥手的过程。比如一个网页200个资源就要进行200次连接。(效率低下)
-
并行连接:同时建立多个tcp连接来下载资源(并发资源消耗大)
-
持久连接:建立连接之后,每个资源下载的时候都不断开连接。
-
管道:并行连接和持久连接的综合,建立持久连接后同时下载多个资源。
-
复用连接:交替传输请求报文,请求和响应报文同时互相发送。
http协议版本以及区别
-
0.9版本:1991年发布,只支持发送get指令,已经淘汰了
-
1.0版本:1996年发布,增加了其他的一些指令,例如post指令。缺点:效率不高
-
1.1版本:1997年发布,引入了持久连接技术,以及其他的一些指令(put、delete等)等。
-
2.0版本:2005年发布,HTTP2.0是SPDY的升级版
http请求处理过程
-
建立连接:客户端通过tcp的三次握手和服务端建立连接
-
接收请求:服务端接收请求
-
处理请求:服务端处理请求(get、post等请求)
-
访问资源:服务端从磁盘上找到对应的资源
-
构建响应报文:服务端将这些文件资源构建成响应报文
-
发送响应报文:服务端发送响应报文给客户端
-
记录日志:事务结束后服务端记录对应的日志信息。
http请求处理过程种服务端接收请求报文的IO模型
-
单进程I/O模型:服务端开启一个进程,同一时间只能处理一个请求,多个请求被串行响应
-
多进程I/O模型:服务端开启多个进程,每个进程响应一个连接请求
-
复用I/O结构:启动一个进程,通过一个连接复用器将多个用户的请求连接过来,通过优先相应继续处理的请求,实现同时响应N个连接请求
-
复用的多进程I/O模型:启动M个进程,每个进程响应N个连接请求,同时接收M*N个请求