HTTP协议详解

一、TCP协议与HTTP协议

       TCP协议主要用于数据传输控制,HTTP协议主要用于应用层的数据交互,两者有本质的区别;

        HTTP协议工作在应用层,是第七层。TCP协议在第四层传输层,所以HTTP协议是建立在TCP协议的基础上。HTTP协议主要以客户端发送请求、服务端响应应答为标准。浏览器一般称为客户端,Web服务器一般称为服务端,比较常用的Web服务器比如:Nginx ,Apache。

         一般的流程就是:1,客户端打开任意一个端口向服务端的指定端口(默认80端口)发送HTTP请求,首先会建立TCP三次握手,TCP三次握手的目的就是保证数据传输的可靠性、稳定性,TCP三次握手通道建立成功后,会进行数据交互。

                                     2,当客户端请求的数据全部接受完毕后,HTTP服务器会断开TCP连接,整个HTTP连接过程非常短,也被称之为无状态的连接,无状态连接是指客户端每次向服务器发起HTTP请求时,每次请求都会建立一个新的HTTP连接,而不是在一个HTTP连接上进行数据交互。

二、资源定位标识符

       HTTP请求的内容资源由统一资源标识符来标识 (uniform resource identifiers URI)  关于资源定位及标识有三种

        URI: 统一资源标识符 (uniform resource identifier,URI)

        URL:统一资源定位符 (uniform resource locator,URL)

        URN:统一资源命名    (uniform resource name, URN)

我们常用的就是URL,对URL,我们详细说明一下,比如:

https://i.cnblogs.com/EditPosts.aspx?opt=1  

其实就是:

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

所以:

protocol:HTTP协议

host:主机或IP

path:路径 

query-string: 传递给服务器的参数及字符串,  像opt=1就是

anchor:锚定结束,(上条地址中是没有的)

三,HTTP与端口通信

HTTP Web服务器默认在本机会监听80端口,当然如果是HTTPS默认就会是443端口。在linux中,每个软件程序执行后,会以进程的方式启动,,程序就会启动并监听本地接口的端口。

端口是TCP/IP协议中应用层进程与传输层实体间的通信接口。端口是操作系统可分配的一种资源。应用程序通过系统调用与某个端口绑定后,传输层给该端口的数据会被该进程接收,相对应的进程发给传输层的数据都通过该端口绑定。

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

四,HTTP request和response详解

客户端浏览器向Web服务器发起request,Web服务器接到request后进行处理,会生成相应的response信息返回给浏览器,浏览器收到服务端的response信息后会进行解析处理,最终用户看见的网页内容就是浏览器解析出的response信息。

可以使用curl -v命令打印request和response信息 比如:

1,request

第一部分 :请求行,请求类型,访问的资源以及使用的HTTP协议版本,GET表示request请求的类型,  html表示访问资源,HTTP/1.1表示HTTP协议版本

第二部分:请求头部,指定服务器要使用的附加信息,User-Agent表示用户使用的代理软件,常指浏览器,Host表示服务器地址,也就是请求的主机

第三部分:请求行,请求头部后面的空行表示请求发送完毕

第四部分:请求数据,也叫body ,GET方式的请求的body默认为空

2,response

第一部分:响应行,包括HTTP版本号、状态码、状态消息。HTTP/1.1表示版本协议号,200表示返回状态吗,OK表示消息

第二部分:消息报头,响应头部附加信息,Date表示生成响应的日期和时间,Content-Type表示指定MIME类型的HTML(text/html),编码类型....等等

第三部分:空行,表示消息报头响应完毕

第四部分:响应正文,服务器返回给客户端的文本信息。

3,request类型

GET:向特定的资源发出请求,获取服务端数据

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

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

DELETE:请求删除request-URL所标识的服务器资源。

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

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

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

HEAD:和GET方式相同,只不过服务器响应时不会返回消息体

五,HTTP 1.0/1.1协议区别

在HTTP/1.1中

1,在一个TCP连接上可以传送多个HTTP请求和响应

2,多个请求和响应过程可以重叠

3,增加了更多的请求头和响应头,比如,Host,If-Unmodified-Since请求头等

         

原文地址:https://www.cnblogs.com/luoyan01/p/9935389.html