HTTP
Posted youngbig
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP相关的知识,希望对你有一定的参考价值。
相关引用:
https://www.jianshu.com/p/80e25cb1d81a
http://blog.51cto.com/13570193/2108347
https://blog.csdn.net/green703338130/article/details/79402405
正文:
HTTP协议:Hyper Text Transfer Protocol(超文本传输协议)
应用层,建立在TCP上,无状态协议
流程:客户端—》发送HTTP请求--》服务器--》处理请求--》访问服务器资源--》发送HTTP响应给客户端
方式:HTTP使用URI来传输数据和建立连接
URI: Uniform Resource Identifiers, 统一资源标识符,包含了查找某个资源的足够的信息,比如:资源路径
URL:Uniform Resource Locator,统一资源定位符,是特殊类型的URI。
请求 + 响应 组成了一个事务,事务结束后在服务端增加一条log
请求(Request):
请求行(request line)、请求头部(header)、空行和请求数据四个部分组成。
响应(Response):
状态栏、消息报头、空行和响应正文四部分组成。
状态栏 组成:HTTP协议版本号,状态码,状态消息
状态码:
1xx:指示信息--表示请求已接收,继续处理
2xx:成功--表示请求已被成功接收、理解、接受
3xx:重定向--要完成请求必须进行更进一步的操作
4xx:客户端错误--请求有语法错误或请求无法实现
5xx:服务器端错误--服务器未能实现合法的请求
请求方法:
HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。
HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。
GET:请求数据是空的,对URL长度有限制,IE的是(2K+35=2083字节)
POST安全性比GET安全性要高,因为GET提交的用户名和密码会明文出现在URL上
HTTP请求/响应步骤:
1、客户端连接到Web服务器:客户端发起,与服务器端口(默认80),创建TCP套接字连接
2、发送HTTP请求:请求行,请求头部,空行,请求数据
3、服务器接受请求并返回响应
4、释放TCP连接
若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;
若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求
5、客户端解析html内容
例子:
在浏览器地址栏键入URL,按下回车之后会经历以下流程:
1、浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;
2、解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接;
3、浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求(GET方法),该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器;
4、服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器;
5、释放TCP连接;
6、浏览器将该 html 文本并显示内容;
HTTP和HTTPS:
https协议需要到ca申请证书,且采用了SSL加密传输。
http端口:80,https端口:443
HTTP和FTP
FTP:File Transfer Protocol,文件传输协议
使用场景:一台主机向一台远程主机上传文件或者从远程主机下载文件
1. 同:
(1)都是应用层协议;
(2)都运行在TCP上,即都使用TCP(而不是UDP)作为其支撑的运输层协议。
2. 异:
(1)HTTP是超文本传输协议,是面向网页的;FTP是文件传输协议,是面向文件的。
(2)HTTP协议默认端口:80号端口。FTP协议默认端口:21号端口。
(3)FTP的控制信息是带外(out-of-band)传送的,而HTTP的控制信息是带内(in-band)传送的。
以上是关于HTTP的主要内容,如果未能解决你的问题,请参考以下文章