首页 > 代码库 > HTTP相关知识总结
HTTP相关知识总结
1 HTTP概述
1.1 HTTP简介
HTTP是Hyper Text Transfer Protocol(超文本转移协议)的缩写。HTTP是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。
HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。
1.2 HTTP在网络模型中位置
TCP/IP结构对应OSI | |
TCP/IP | OSI |
应用层 | 应用层 表示层 会话层 |
主机到主机层(TCP)(又称传输层) | 传输层 |
网络层(IP)(又称互联层) | 网络层 |
网络接口层(又称链路层) | 数据链路层 |
物理层 |
TCP/IP结构对应OSI | ||
OSI中的层 | 功能 | TCP/IP协议族 |
应用层 | 文件传输,电子邮件,文件服务,虚拟终端 | TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等 |
表示层 | 翻译、加密、压缩 | 没有协议 |
会话层 | 对话控制、建立同步点(续传) | 没有协议 |
传输层 | 端口寻址、分段重组、流量、差错控制 | TCP,UDP |
网络层 | 逻辑寻址、路由选择 | IP,ICMP,OSPF,EIGRP,IGMP |
数据链路层 | 成帧、物理寻址、流量,差错,接入控制 | SLIP,CSLIP,PPP,MTU |
物理层 | 设置网络拓扑结构、比特传输、位同步 | ISO2110,IEEE802,IEEE802.2 |
1.3 版本介绍
HTTP协议已经演化出了很多版本,它们中的大部分都是向下兼容的。在RFC 2145中描述了HTTP版本号的用法。客户端在请求的开始告诉服务器它采用的协议版本号,而后者则在响应中采用相同或者更早的协议版本。下面分别对各个版本进行介绍:
HTTP/0.9
已过时。只接受GET一种请求方法,没有在通讯中指定版本号,且不支持请求头。由于该版本不支持POST方法,因此客户端无法向服务器传递太多信息。
HTTP/1.0
这是第一个在通讯中指定版本号的HTTP协议版本,至今仍被广泛采用,特别是在代理服务器中。
HTTP/1.1
当前版本。持久连接被默认采用,并能很好地配合代理服务器工作。还支持以管道方式在同时发送多个请求,以便降低线路负载,提高传输速度。
HTTP/1.1相较于HTTP/1.0协议的区别主要体现在:
l 缓存处理
l 带宽优化及网络连接的使用
l 错误通知的管理
l 消息在网络中的发送
l 互联网地址的维护
l 安全性及完整性
在HTTP 0.9和1.0使用非持续连接,在非持续连接下,每个tcp只连接一个web对象,连接在每个请求-回应对后都会关闭。现在在HTTP 1.1使用持续连接,不必为每个web对象创建一个新的连接,一个连接可以传送多个对象。这种连接持续化显著地减少了请求延迟,因为客户不用在首次请求后再次进行TCP交互确认创建连接。
HTTP1.1还进行了带宽优化,例如1.1引入了分块传输编码来允许流化传输持续连接上发送的内容,取代原先的buffer式传输。HTTP管道允许客户在上一个回应被收到前发送多重请求从而进一步减少了延迟时间。
2 HTTP基本概念及属性
2.1 客户端与服务端介绍
HTTP是一个客户端终端(用户)和服务器端(网站)请求和应答的标准。通过使用Web浏览器、网络爬虫或者其它的工具,客户端发起一个HTTP请求到服务器上指定端口(默认端口为80)。我们称这个客户端为用户代理程序(user agent)。应答的服务器上存储着一些资源,比如HTML文件和图像。我们称这个应答服务器为源服务器(origin server)。
HTTP的通信过程就是客户端向服务端发送请求和服务端在收到请求时响应 过程。
2.2 HTTP请求方法
2.2.1 HTTP请求方法概述
HTTP/1.1协议中共定义了八种方法来表明Request-URI指定的资源的不同操作方式:
1) OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向Web服务器发送‘*‘的请求来测试服务器的功能性。
2) HEAD:向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。
3) GET:向特定的资源发出请求。注意:GET方法不应当被用于产生“副作用”的操作中,例如在web app.中。其中一个原因是GET可能会被网络蜘蛛等随意访问。
4) POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和已有资源的修改。
5) PUT:向指定资源位置上传其最新内容。
6) DELETE:请求服务器删除Request-URI所标识的资源。
7) TRACE:回显服务器收到的请求,主要用于测试或诊断。
8) CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。通常用于SSL加密服务器的链接。
方法名称是区分大小写的。当某个请求所针对的资源不支持对应的请求方法的时候,服务器应当返回状态码405(Method Not Allowed);当服务器不认识或者不支持对应的请求方法的时候,应当返回状态码501(Not Implemented)。
HTTP服务器至少应该实现GET和HEAD方法,其他方法都是可选的。当然,所有的方法支持的实现都应当符合上述的方法各自的语义定义。此外,除了上述方法,特定的HTTP服务器还能够扩展自定义的方法。
在上述8种方法中,常用的有GET和POST方法。
2.2.2 HTTP常用请求方法
用户如没有设置,默认情况下浏览器向服务器发送的都是get请求,例如在浏览器直接输入地址访问,点超链接访问等都是get,用户如想把请求方式该为post,可通过更改表单的提交方式实现。
2.2.2.1 GET
如请求方式为GET方式,则可以在请求的URL地址后以?的形式带上交给服务器的数据,多个数据之间以&进行分隔,例如:
GET /mail/1.html?name=abc&password=xyz HTTP/1.1
GET方式的特点:由于附在url地址后面,数据大小不能超过1K。
2.2.2.2 POST
如请求方式为POST方式,则可以在请求的实体内容中向服务器发送数据,例如:
POST /servlet/ParamsServlet HTTP/1.1
Host:
Content-Type: application/x-www-form-urlencoded
Content-Length: 28
name=abc&password=xyz
POST方式的特点:传送的数据量无限制。
2.3 HTTP 报文介绍
2.3.1 http请求报文
2.3.1.1 http请求报文结构
HTTP请求报文由3部分组成(请求行+请求头+请求体):
下面是一个实际的请求报文:
①是请求方法,GET和POST是最常见的HTTP方法,除此以外还包括DELETE、HEAD、OPTIONS、PUT、TRACE。不过,当前的大多数浏览器只支持GET和POST,Spring 3.0提供了一个HiddenHttpMethodFilter,允许你通过“_method”的表单参数指定这些特殊的HTTP方法(实际上还是通过POST提交表单)。服务端配置了HiddenHttpMethodFilter后,Spring会根据_method参数指定的值模拟出相应的HTTP方法,这样,就可以使用这些HTTP方法对处理方法进行映射了。
②为请求对应的URL地址,它和报文头的Host属性组成完整的请求URL,③是协议名称及版本号。
④是HTTP的报文头,报文头包含若干个属性,格式为“属性名:属性值”,服务端据此获取客户端的信息。
⑤是报文体,它将一个页面表单中的组件值通过param1=value1¶m2=value2的键值对形式编码成一个格式化串,它承载多个请求参数的数据。不但报文体可以传递请求参数,请求URL也可以通过类似于“/chapter15/user.html?param1=value1¶m2=value2”的方式传递请求参数。
2.3.1.2 http请求头信息详解
HTTP请求中的常用消息头:
1) Accept: text/html,image/*
客户机告诉服务器 自己支持的类型。如果是:Accept:*/* 我什么都支持。
2) Accept-Charset: ISO-8859-1
用于告诉服务器,客户机采用的编码。
3) Accept-Encoding: gzip,compress
用于告诉服务器,客户机支持的压缩格式。
4) Accept-Language: en-us,zh-cn
客户机的语言环境。
5) Host: www.it315.org:80
客户机通过这个头告诉服务器,想访问的主机名。
6) If-Modified-Since: Tue, 11 Jul 2000 18:23:51GMT
客户机通过这个头告诉服务器,资源的缓存时间。
7) Referer: http://www.it315.org/index.jsp
防盗链,告诉服务器,从哪个资源访问服务器。
8) User-Agent: Mozilla/4.0 (compatible; MSIE5.5; Windows NT 5.0)
告诉服务器,自己的软件环境。
9) Cookie
客户机通过这个头可以向服务器带数据。
10) Connection:close/Keep-Alive
请求完后是否保持连接。
11) Date: Tue, 11 Jul 2000 18:23:51 GMT
客户端访问服务器的时间。
2.3.2 http响应报文
2.3.2.1 http响应报文结构
HTTP的响应报文也由三部分组成(响应行+响应头+响应体):
以下是一个实际的HTTP响应报文:
①报文协议及版本;
②状态码及状态描述;
③响应报文头,也是由多个属性组成;
④响应报文体,即我们真正要的内容。
2.3.2.2 http响应头信息详解
1) Location: http://www.nihao.org/index.jsp
这个头配合302状态码使用,用于告诉客户找谁
2) Server:apache tomcat
服务器通过这个头,告诉浏览器服务器的类型
3) Content-Encoding: gzip
服务器通过这个头,告诉浏览器数据的压缩格式
4) Content-Length: 80
服务器通过这个头,告诉浏览器回送数据的长度
5) Content-Language: zh-cn
回送语言环境
6) Content-Type: text/html; charset=GB2312
服务器通过这个头,告诉浏览器回送数据类型
7) Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT
服务器通过这个头,告诉浏览器当前资源缓存时间
8) Refresh: 1;url=http://www.it315.org
服务器通过这个头,告诉浏览器隔多长时间刷新一次
9) Content-Disposition: attachment; filename=aaa.zip
服务器通过这个头,以下载方式打开这个头
10) Set-Cookie:SS=Q0=5Lb_nQ; path=/search
11) Transfer-Encoding
服务器通过这个头,告诉浏览器数据传送格式。
12) ETag
缓存相关的头 ,可以做到实时更新
13) 13 Expires: -1//3种禁止缓存的头字段
控制浏览器数据的缓存多长时间 -1或0不缓存,
14) Cache-Control: no-cache
15) Pragma: no-cache
服务器通过14,15这两个头,控制浏览器不要缓存
16) Connection:close/Keep-Alive
继续保持连接还是断开
17) Date: Tue, 11 Jul2000 18:23:51 GMT
服务器回写数据的时间.
2.4 服务端响应状态码
2.4.1 http响应状态码简介
HTTP状态码(HTTP StatusCode)是用以表示网页服务器HTTP响应状态的3位数字代码。如经常还访问某个网页时会遇到503,404等错误。
一些常见的状态码为:
1) 200-服务器成功返回网页
2) 404-请求的网页不存在
3) 503-服务不可用
2.4.2 常用响应状态码介绍
l 1xx(临时响应)
表示临时响应并需要请求者继续执行操作的状态代码。
100:Continue(继续) 请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。
101:Switching Protocols(切换协议)请求者已要求服务器切换协议,服务器已确认并准备切换。
l 2xx(成功)
表示成功处理了请求的状态代码。
200:OK(成功)服务器已成功处理了请求。通常,这表示服务器提供了请求的网页。
201:Created(已创建)请求成功并且服务器创建了新的资源。
202:Accepted(已接受)服务器已接受请求,但尚未处理。
203:Non-AuthoritativeInformation(非授权信息)服务器已成功处理了请求,但返回的信息可能来自另一来源。
204:No Content(无内容)服务器成功处理了请求,但没有返回任何内容。
205:Reset Content(重置内容)服务器成功处理了请求,但没有返回任何内容。
206:Partial Content(部分内容)服务器成功处理了部分 GET 请求。
l 3xx(重定向)
表示要完成请求,需要进一步操作。通常,这些状态代码用来重定向。
300:Multiple Choices(多种选择)针对请求,服务器可执行多种操作。服务器可根据请求者 (user agent) 选择一项操作,或提供操作列表供请求者选择。
301:Moved Permanently(永久移动)请求的网页已永久移动到新位置。服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。
302:Found(临时移动)服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
303:See Other(查看其他位置)请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。
304:Not Modified(未修改)自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。
305:Use Proxy(使用代理)请求者只能使用代理访问请求的网页。如果服务器返回此响应,还表示请求者应使用代理。
307:Temporary Redirect(临时重定向)服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
l 4xx(请求错误)
这些状态代码表示请求可能出错,妨碍了服务器的处理。
400:Bad Request(错误请求)服务器不理解请求的语法。
401:Unauthorized(未授权)请求要求身份验证。对于需要登录的网页,服务器可能返回此响应。
403:Forbidden(禁止)服务器拒绝请求。
404:Not Found(未找到)服务器找不到请求的网页。
405:Method Not Allowed(方法禁用)禁用请求中指定的方法。
406:Not Acceptable(不接受)无法使用请求的内容特性响应请求的网页。
407:Proxy AuthenticationRequired(需要代理授权)此状态代码与 401(未授权)类似,但指定请求者应当授权使用代理。
408:Request Timeout(请求超时)服务器等候请求时发生超时。
409:Conflict(冲突)服务器在完成请求时发生冲突。服务器必须在响应中包含有关冲突的信息。
410:Gone(已删除)如果请求的资源已永久删除,服务器就会返回此响应。
411:Length Required(需要有效长度)服务器不接受不含有效内容长度标头字段的请求。
412:Precondition Failed(未满足前提条件)服务器未满足请求者在请求中设置的其中一个前提条件。
413:Request Entity TooLarge(请求实体过大)服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。
414:Request-URI Too Long(请求的 URI 过长)请求的 URI(通常为网址)过长,服务器无法处理。
415:Unsupported MediaType(不支持的媒体类型)请求的格式不受请求页面的支持。
416:Requested Range NotSatisfiable(请求范围不符合要求)如果页面无法提供请求的范围,则服务器会返回此状态代码。
417:Expectation Failed(未满足期望值)服务器未满足"期望"请求标头字段的要求。
l 5xx(服务器错误)
这些状态代码表示服务器在尝试处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求出错。
500:Internal Server Error(服务器内部错误)服务器遇到错误,无法完成请求。
501:Not Implemented(尚未实施)服务器不具备完成请求的功能。例如,服务器无法识别请求方法时可能会返回此代码。
502:Bad Gateway(错误网关)服务器作为网关或代理,从上游服务器收到无效响应。
503:Service Unavailable(服务不可用)服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。
504:Gateway Timeout(网关超时)服务器作为网关或代理,但是没有及时从上游服务器收到请求。
505:HTTP Version Not Supported(HTTP 版本不受支持)服务器不支持请求中所用的 HTTP 协议版本。
3 HTTP通信流程
HTTP客户端与服务端通信过程如下:
l URL(统一资源定位符)自动解析
HTTPURL包含了用于查找某个资源的足够信息,基本格式如下:http://host[“:”port][abs_path],其中http表示使用HTTP协议来定位网络资源;host表示合法的主机域名或IP地址,port指定一个端口号,缺省80;abs_path指定请求资源的URI(统一资源标识符);如果URL中没有给出abs_path,那么当它作为请求URI时,必须以“/”的形式给出,通常这个工作浏览器自动帮我们完成。
例如:输入www.baidu.com;浏览器会自动转换成:HTTP:// www.baidu.com/
l 获取IP,建立TCP连接
浏览器地址栏中输入“http://www.xxx.com/”并提交之后,首先它会在DNS本地缓存表中查找,如果有则直接告诉IP地址。如果没有则要求网关DNS进行查找,如此下去,找到对应的IP后,则返回会给浏览器。
当获取IP之后,就开始与所请求的Tcp建立三次握手连接,连接建立后,就向服务器发出HTTP请求。
l 客户端向服务器发出HTTP请求
一旦建立了TCP连接,客户端就会向服务器发送请求命令,接着以头信息的形式向服务器发送一些别的信息,之后客户端发送了一空白行来通知服务器,它已经结束了该头信息的发送。
l 服务器应答,并向客户端发送数据
客户机向服务器发出请求后,服务器会客户机回送应答,如:
HTTP/1.1200 OK
应答的第一部分是协议的版本号和应答状态码,正如客户端会随同请求发送关于自身的信息一样,服务器也会随同应答向用户发送关于它自己的数据及被请求的文档。
服务器向客户端发送头信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据。
l 服务器关闭TCP连接
一般情况下,一旦服务器向客户端发送了客户端请求的数据,它就要关闭TCP连接,如果客户端或者服务器在其头信息加入了这行代码:
Connection:keep-alive
TCP连接在发送后将仍然保持打开状态,于是,客户端可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。
4 HTTP与其他网络协议的比较
4.1 http与TCP/UDP的比较
TCP(传输控制协议),提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接前,TCP连接都将被一直保持下去。断开连接时服务器和客户端均可以主动发起断开TCP连接的请求
TCP发送的包有序号,对方收到包后要给一个反馈,如果超过一定时间还没收到反馈就自动执行超时重发,因此TCP最大的优点是可靠。一般网页(http)、邮件(SMTP)、远程连接(Telnet)、文件(FTP)传送就用TCP
UDP(用户数据报协议),是一个无连接的简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快
UDP是面向消息的协议,通信时不需要建立连接,数据的传输自然是不可靠的,UDP一般用于多点通信和实时的数据业务,比如语音广播、视频、QQ、TFTP(简单文件传送)、SNMP(简单网络管理协议)、RTP(实时传送协议)RIP(路由信息协议,如报告股票市场,航空信息)、DNS(域名解释)。注重速度流畅。
HTTP协议是建立在TCP协议之上的一种应用,HTTP连接使用的是“请求—响应”的方式,不仅在请求时需要先建立连接,而且需要客户端向服务器发出请求后,服务器端才能回复数据。在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。由于HTTP在每次请求结束后都会主动释放连接,因此HTTP连接是一种“短连接”,要保持客户端程序的在线状态,需要不断地向服务器发起连接请求。通常的做法是即时不需要获得任何数据,客户端也保持每隔一段固定的时间向服务器发送一次“保持连接”的请求,服务器在收到该请求后对客户端进行回复,表明知道客户端“在线”。若服务器长时间无法收到客户端的请求,则认为客户端“下线”,若客户端长时间无法收到服务器的回复,则认为网络已经断开。
4.2 http与ftp的比较
1. HTTP协议是用来浏览网站的,而FTP是用来访问和传输文件的,FTP文件传输有点批量上传和维护网站的意思,而HTTP文件传输更多的是为终端用户提供文件传输,比如电影、图片、音乐之类。
2. HTTP 和 FTP 客户端:通常的HTTP客户端就是浏览器,而FTP服务可以通过命令行或者用户自有的图形界面客户端。
3. HTTP 头:HTTP 头包含了 metadata ,比如说最后更改的日期、编码方式、服务器名称版本还有其他的一些信息,而这些在FTP中是不存在的。
4. FTP要比HTTP早出现10年左右。
5. 数据格式:FTP能传输ACSII数据或者二进制格式的数据,而HTTP只用二进制格式。
6. HTTP中的流水线:HTTP支持流水线,这就意味着客户端可以在上一个请求处理完之前,发出下一个请求,其结果就是多次请求数据之前省掉了部分服务器客户端往返时延。而FTP并没有这项支持。
7. HTTP中的动态端口:FTP一个最大的问题就是它使用两个连接,第一个连接用来发送控制指令,当接受或者发送数据的时候,又打开第二个TCP连接。而HTTP在双向传输中使用动态端口。
8. HTTP中的持久连接:对一个HTTP会话来讲,客户端可以维护一个单个的连接并使用它进行任意数量的数据传输。FTP每次有数据的需要时都创建一个新的连接。重复的创建新的连接带来的体验并不好,因为每次创建连接都必须让双方握手验证,这消耗了很多时间。
9. HTTP中的压缩算法:HTTP提供了一个在一些压缩算法中客户端和服务器共同协商选择的办法。其中gzip可以说是最有影响力的一种,而FTP中并不存在这种复杂的算法。
10. HTTP支持代理:HTTP一个很大的特点就是支持代理,这种功能是构建在协议里的,而FTP并不支持。
11. 而FTP也能脱颖而出的一点是这个协议是直接面向文件级别的。这意味着FTP有可以通过命令列出远程服务器上的目录列表等功能,而HTTP没有这个概念。
12. 速度。最终的结果会因具体的情况而异,单次传输一个静态的文件,FTP传输更快,当传输多个文件时,HTTP更快。
FTP的速度优势来源:
1) 没有在发出的数据中加入meta-data,仅传输原二进制文件。
2) 没有过度的分块编码。
HTTP的速度优势来源:
1) 重用已存在的持久连接,从而有更好的TCP表现。
2) 流水线的支持使得从同一个服务器上请求多个文件更快。
3) 自动的压缩机制使得传输的数据更少。
4) 没有命令/应答机制最大限度的减少了往返时延。
13. HTTP适合上传小文件,FTP适合上传大文件。HTTP上传,在客户端需要把文件全部载入内存,而FTP有明显的天生的优势,不需要将文件全部载入内存中。如果确定文件比较小,可以采用http协议来上传,如果文件比较大的话,最好采用ftp来上传。在局域网中,超过了500M的文件一般就不适合使用http协议来上传了。
如果要让HTTP支持大文件的话,有几个选择:
a) 加大服务器内存,因为客户端文件会缓存到服务器内存中。(未经验证)
b) 分块的http上传,也就是通过http协议一块一块的上传文件,然后合并所有的快。
c) 开发上传插件,或者flash,或者silverlight,或者activeX。
4.2 http与https的比较
HTTPS(安全超文本传输协议)它是一个安全通信通道,是在http协议基础上增加了使用SSL加密传送信息的协议。
HTTPS基于HTTP开发,用于在客户计算机和服务器之间交换信息。它使用安全套接字层(SSL)进行信息交换,简单来说它是HTTP的安全版。
HTTPS是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作,并返回网络上传送回的结果。HTTPS实际上应用了Netscape的安全全套接字层(SSL)作为HTTP应用层的子层。(HTTPS使用端口443,而不是象HTTP那样使用端口80来和TCP/IP进行通信。)SSL使用40 位关键字作为RC4流加密算法,这对于商业信息的加密是合适的。HTTPS和SSL支持使用X.509数字认证,如果需要的话用户可以确认发送者是谁。
HTTPS和HTTP的区别概括为:
1) https协议需要到ca(CA即证书管理机构)申请证书,一般免费证书很少,需要交费。
2) http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议
3) http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。
4) http的连接很简单,是无状态的。
5) https协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议要比http协议安全。
HTTP相关知识总结