HTTP协议

it2022-05-07  47

1  资源定位标识符

HTTP请求的内容资源由统一资源标识符(uniform resource identifiers,URI)来标识

关于资源定位及标识有三种:

1)统一资源标识符(uniform resource identifiers,URI):用来唯一标识一个资源

2)统一资源定位器(uniform resource locator,URL):是一种具体的URI,URL可以用来标识一个资源,而且可以访问或者获取该资源

3)统一资源命名(uniform resource name,URN):通过名字来标识或者识别资源

如下图URI、URL、RUN的区别

 

URL肯定是一个URI,但是一个URI并不一定是一个URL;URI是资源标识符,所有他只要求具有"标识性",而URL是和URI的主要区别就是,URL除了具有URI的“标识性”以外,还具有定位功能,可以用来描述资源的具体位置,还指明了获取资源所采用的协议。

URN也是URL的一种表现形式,它和URL的区别就是与资源的位置无关,正式由于位置的无关性,被某个URN标识的资源在位置发生变化时,其URI可以保持不变。

URL资源标识格式:

protocol://host[:port]/path/.../[?query-string][#anchor]

protocol:基于某种协议,常见协议有:HTTP、HTTPS、FTP、RSYNC等

host:服务器的IP地址或者域名

port:服务器的端口号

path:访问资源在服务器的路径

query-string:传递给服务器的参数及字符串

anchor:锚点结束

例:http://www.example.com/newindex/plus/list.php?tid=2#test

2  HTTP与端口通信

端口:是TCP/IP协议中应用层进程与传输层协议实体间的通信接口

TCP/IP协议中引入了一种被称为套接字(socket)的应用程序接口。基于socket接口技术,一台计算机就可以与任何一台具有socket接口的计算机进行通信,而监听的端口在服务器端也称之为socket接口

3  HTTP request与response

3.1  Request请求过程

客户端发起request,request分3部分,分别包括request line(请求行)、request header(请求头部)、body(请求数据),如下图:

 

使用curl –v 打印requests与response处理流程

 

1)  请求行(request line)

GET /index.html HTTP/1.1

指定请求类型(GET)、访问的资源(/index.html)及使用的HTTP协议版本(HTTP/1.1)

2)  请求头部(request header)

User-Agent: curl/7.29.0

Host: 192.168.10.10

Accept: */*

指定服务器要使用的附加信息,User-Agent表示用户使用的代理软件,常指浏览器

3)  空行

请求头部后面的空行表示请求头发送完毕

4)  请求数据(body)

可以添加任意数据,GET请求的body内容默认为空,一般POST请求会有内容(例如name=test)

3.2  Response响应过程

Response响应信息:响应状态行、响应头部、空行、响应正文(body)

 

1)  响应状态行

HTTP/1.1 200 OK

包括HTTP协议版本号(HTTP/1.1)、状态码(200)和状态消息(OK)

2)  响应头部

响应头部附加信息

3)  空行

表示消息头部响应完毕

4)  响应正文(body)

 

服务器返回给客户端的信息

3.3  Request请求方法

1)  Get方法:向特定的资源发出请求,获取服务器端数据

2)  POST方法:向Web服务器提交数据进行处理请求,常指提交新数据

3)  PUT方法:向Web服务器提交上传最新内容,常指更新数据

4)  DELETE方法:请求删除request-URL所标识的服务器资源

5)  TRACE方法:回显服务器收到的请求,主要用于测试或诊断

6)  CONNECT方法:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器

7)  OPTIONS方法:返回服务器针对特定资源所支持的HTTP请求方法

8)  HEAD方法:HEAD方法跟GET方法相同,只不过服务器响应时不会返回消息体

4  HTTP1.0/1.1协议区别

HTTP/1.0中默认使用短连接(建立连接——数据传输——关闭连接...建立连接——数据传输——关闭连接)

HTTP/1.1中默认使用长连接(建立连接——数据传输...(保持连接)...数据传输——关闭连接)

HTTP的长连接和短连接本质上是TCP长连接和短连接

4.1  短连接

客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。当客户端浏览器访问的某个HTML或其他类型的Web页中包含有其他的Web资源,每遇到一个Web资源,浏览器就会重新建立一个HTTP会话。短连接对于服务器来说管理较为简单,存在的连接都是有用的连接,不需要额外的控制手段。但如果客户请求频繁,将在TCP的建立和关闭操作上浪费较多时间和带宽

4.2  长连接

长连接在响应头加入这行代码:Connection:keep-alive当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接需要客户端和服务端都支持长连接。长连接可以省去较多的TCP建立和关闭的操作,减少浪费,节约时间。对于频繁请求资源的客户端适合使用长连接。但当client与server之间的连接一直不关闭,随着客户端连接越来越多,server会保持过多连接,导致server端服务受损

5  HTTP状态码

HTTP状态码用来表示Web服务器HTTP response状态的3位数字代码,常见的状态码范围分类如下:

100~199:用于指定客户端相应的某些动作200~299:用于表示请求成功300~399:已移动的文件且被包含在定位头信息中指定新的地址信息400~499:用于指出客户端的错误500~599:用于指出服务器的错误

6  HTTP MIME类型支持

      浏览器接收到Web服务器的response信息,浏览器会进行解析,在解析页面之前,浏览器必须启动本地相应的应用程序来处理获取到的文件类型。

      基于多用途互联网邮件扩展类型(multipurpose internet mail extensions,MIME),可以明确某种文件在客户端用某种应用程序来打开,当改扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。

      在HTTP response消息中,MIME类型被定义在Content-Type header中。例如Content-Type:text/html,表示默认指定该文件为HTML类型;exe 文件的Content-Type:application/octet-stream等。

转载于:https://www.cnblogs.com/longBlogs/p/9585880.html


最新回复(0)