HTTP和HTTPS动车和高铁有什么区别别吗?

https比http更安全吗?为什么大多数网站还是使用http? - 知乎39被浏览11476分享邀请回答62 条评论分享收藏感谢收起42 条评论分享收藏感谢收起查看更多回答在开发中我们需要和后台进行数据的交互,但是咋样交互呢?通常我们是通过网络请求进行数据的交互,一般使用http/https/tcp/udp等进行数据的交互.
http长连接和短连接
1. HTTP协议与TCP/IP协议的关系
  HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠的传递数据包,使在网络上的另一端收到发端发出的所有包,并且顺序与发出顺序一致。TCP有可靠,面向连接的特点。
2. 如何理解HTTP协议是无状态的
  HTTP协议是无状态的,指的是协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。也就是说,打开一个服务器上的网页和你之前打开这个服务器上的网页之间没有任何联系。HTTP是一个无状态的面向连接的协议,无状态不代表HTTP不能保持TCP连接,更不能代表HTTP使用的是UDP协议(无连接)。
3. 什么是长连接、短连接?
  在HTTP/1.0中,默认使用的是短连接。也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。如果客户端浏览器访问的某个HTML或其他类型的 Web页中包含有其他的Web资源,如JavaScript文件、图像文件、CSS文件等;当浏览器每遇到这样一个Web资源,就会建立一个HTTP会话。
但从&HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头有加入这行代码:
Connection:keep-alive
  在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的 TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接要客户端和服务端都支持长连接。
HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接。3.1 TCP连接
  当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接 时它们可以释放这个连接,连接的建立是需要三次握手的,而释放则需要4次握手,所以说每个连接的建立都是需要资源消耗和时间消耗的
经典的三次握手示意图:
经典的四次握手关闭图:
3.2 TCP短连接
  我们模拟一下TCP短连接的情况,client向server发起连接请求,server接到请求,然后双方建立连接。client向server 发送消息,server回应client,然后一次读写就完成了,这时候双方任何一个都可以发起close操作,不过一般都是client先发起 close操作。为什么呢,一般的server不会回复完client后立即关闭连接的,当然不排除有特殊的情况。从上面的描述看,短连接一般只会在 client/server间传递一次读写操作
短连接的优点是:管理起来比较简单,存在的连接都是有用的连接,不需要额外的控制手段
3.3 TCP长连接
  接下来我们再模拟一下长连接的情况,client向server发起连接,server接受client连接,双方建立连接。Client与server完成一次读写之后,它们之间的连接并不会主动关闭,后续的读写操作会继续使用这个连接。
首先说一下TCP/IP详解上讲到的TCP保活功能,保活功能主要为服务器应用提供,服务器应用希望知道客户主机是否崩溃,从而可以代表客户使用资源。如果客户已经消失,使得服务器上保留一个半开放的连接,而服务器又在等待来自客户端的数据,则服务器将应远等待客户端的数据,保活功能就是试图在服务 器端检测到这种半开放的连接。
如果一个给定的连接在两小时内没有任何的动作,则服务器就向客户发一个探测报文段,客户主机必须处于以下4个状态之一:
客户主机依然正常运行,并从服务器可达。客户的TCP响应正常,而服务器也知道对方是正常的,服务器在两小时后将保活定时器复位。
客户主机已经崩溃,并且关闭或者正在重新启动。在任何一种情况下,客户的TCP都没有响应。服务端将不能收到对探测的响应,并在75秒后超时。服务器总共发送10个这样的探测 ,每个间隔75秒。如果服务器没有收到一个响应,它就认为客户主机已经关闭并终止连接。
客户主机崩溃并已经重新启动。服务器将收到一个对其保活探测的响应,这个响应是一个复位,使得服务器终止这个连接。
客户机正常运行,但是服务器不可达,这种情况与2类似,TCP能发现的就是没有收到探查的响应。
3.4&长连接短连接操作过程
短连接的操作步骤是:
建立连接&&数据传输&&关闭连接...建立连接&&数据传输&&关闭连接
长连接的操作步骤是:
建立连接&&数据传输...(保持连接)...数据传输&&关闭连接
4. 长连接和短连接的优点和缺点
  由上可以看出,长连接可以省去较多的TCP建立和关闭的操作,减少浪费,节约时间。对于频繁请求资源的客户来说,较适用长连接。不过这里存在一个问题,存活功能的探测周期太长,还有就是它只是探测TCP连接的存活,属于比较斯文的做法,遇到恶意的连接时,保活功能就不够使了。在长连接的应用场景下,client端一般不会主动关闭它们之间的连接,Client与server之间的连接如果一直不关闭的话,会存在一个问题,随着客户端连接越来越多,server早晚有扛不住的时候,这时候server端需要采取一些策略,如关闭一些长时间没有读写事件发生的连接,这样可 以避免一些恶意连接导致server端服务受损;如果条件再允许就可以以客户端机器为颗粒度,限制每个客户端的最大长连接数,这样可以完全避免某个蛋疼的客户端连累后端服务。
短连接对于服务器来说管理较为简单,存在的连接都是有用的连接,不需要额外的控制手段。但如果客户请求频繁,将在TCP的建立和关闭操作上浪费时间和带宽。
长连接和短连接的产生在于client和server采取的关闭策略,具体的应用场景采用具体的策略,没有十全十美的选择,只有合适的选择。
5. 什么时候用长连接,短连接?&&  长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况,。每个TCP连接都需要三步握手,这需要时间,如果每个操作都是先连接,再操作的话那么处理速度会降低很多,所以每个操作完后都不断开,次处理时直接发送数据包就OK了,不用建立TCP连接。例如:数据库的连接用长连接, 如果用短连接频繁的通信会造成socket错误,而且频繁的socket 创建也是对资源的浪费。&&&  而像WEB网站的http服务一般都用短链接,因为长连接对于服务端来说会耗费一定的资源,而像WEB网站这么频繁的成千上万甚至上亿客户端的连接用短连接会更省一些资源,如果用长连接,而且同时有成千上万的用户,如果每个用户都占用一个连接的话,那可想而知吧。所以并发量大,但每个用户无需频繁操作情况下需用短连好。
6.HTTPS和HTTP
& &&http和https概述
& &(Hypertext Transfer Protocol Vertion 1.1)超文本传输协议-版本1.1它是用来在Internet上传送超文本的传送协议。它是运行在族之上的HTTP应用协议,它可以使浏览器更加高效,使减少。任何服务器除了包括以外,还有一个HTTP驻留程序,用于响应用用户请求。您的浏览器是HTTP客户,向服务器发送请求,当浏览器中输入了一个开始文件或点击了一个超级链接时,浏览器就向服务器发送了,此请求被送往由IP地址指定的URL。驻留程序接收到请求,在进行必要的操作后回送所要求的文件。
&HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议&它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作,并返回网络上传送回的结果。HTTPS实际上应用了Netscape的完全套接字层(SSL) & & 作为HTTP应用层的子层。(HTTPS使用端口443,而不是象HTTP那样使用端口80来和TCP/IP进行通信。)SSL使用40 位关键字作为RC4流加密算法,这对于商业 &信息的加密是合适的。HTTPS和SSL支持使用数字认证,如果需要的话用户可以确认发送者是谁。
& & http和https区别
  一、https协议需要到ca申请证书,一般免费证书很少,需要交费。&  二、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。&  三、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。&  四、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
7.POST和GET区别&
1. get是从服务器上获取数据,post是向服务器传送数据。2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。3. 对于get方式,用Request.QueryString获取变量的值,对于post方式,用Request.Form获取提交的数据。4. get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。5. get安全性非常低,post安全性较高。但是执行效率却比Post方法好。 建议:1、get方式的安全性较Post方式要差些,包含机密信息的话,建议用Post数据提交方式;2、在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式;
阅读(...) 评论()面试问HTTP 和HTTPS怎么答 - 简书
面试问HTTP 和HTTPS怎么答
Q1 : HTTP Socket TCP UDP都是什么?HTTP 全称是超文本传输协议,是一个应用层的协议。用于客户端和服务端之间进行通讯。TCP/UDP 都是传输层协议。TCP是可靠的,我们常说的三次握手连接,四次握手断开都是说的TCP。而UDP是不可靠的。Socket 则是从传输层抽象出来的接口层。
Q2 : HTTP连接和Socket连接有什么区别?分别在什么情况下使用?HTTP 是基于TCP的短连接。需要经过三次握手建立连接,且无法保持始终连接。Socket 是长连接。基于TCP的Socket连接,一旦建立三次握手,除非一方主动断开,否则连接状态一直保存。也可以基于UDP进行Socket连接。HTTP连接,服务端无法主动发消息,采用的是'请求-响应'机制。客户端没有发消息给服务端,服务端无法推送消息给客户端。Socket连接,一方可以随时向另一方发起会话。双方不需要时刻保持连接在线用HTTP。eg : 客户端资源获取、上传文件等。即时通讯应用需要用Socket连接。eg : 微信、苹果的APNs等。
Q3 : HTTPS是什么?和HTTP有什么区别?HTTPS就是HTTP加上SSL/TLS。TLS(Transport Layer Security)传输层安全协议,作用是在传输层对网络连接加密。SSL就是TLS的前身。HTTP端口是80,是无状态的。HTTPS端口是443,是可以进行加密传输、身份认证的网络协议。http协议时超文本传输协议。
https是安全的超文本传输协议,是安全版的http协议,使用安全套接字层(SSL)进行信息交换。
https协议主要针对解决http协议以下不足:
1.通信使用明文(不加密),内容可能会被窃听
2.不验证通信方身份,应此可能遭遇伪装
3.无法证明报文的完整性(即准确性),所以可能已遭篡改
http+加密+认证+完整性保护=https
https并非是应用层的一种新协议,只是http通信接口部分用SSL(Secure socket Layer)和TLS(Transport Layer Security)协议代替而已。通常,http是直接和tcp通信的,当使用SSL时,则演变成先和SSL通信,再由SSL和TCP通信了。
SSL是独立于HTTP协议的,所以不光是http协议,其他运行在应用层的协议,如smtp和telnet协议,也可配合ssl协议使用。
https采用共享密钥加密和公开密钥加密两种混合加密机制。(共享密钥一般发送密钥会被窃听;公开密钥加密,如果根据密文和公开密钥恢复信息原文是异常困难的,必须通过私有密钥才能办到)
既然https那么安全可靠,什么不一直使用https呢?
其中一个主要原因是,因为与纯文本通信相比,加密通信会消耗更多的cup以及内存资源。除此,要进行https通信,证书是必不可少的。而是用证书必须向认证机构(CA)购买。
本文已收录于以下专栏:
相关文章推荐
使用c语言实现了一个简单的web服务器。程序支持html,css,js,jpg,gif格式的请求
HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/...
网络编程的基本概念,TCP/IP协议简介
8.1.1 网络基础知识
  计算机网络形式多样,内容繁杂。网络上的计算机要互相通信,必须遵循一定的协议。目前使用最广泛的网络协议是Internet上所使...
Android基本布局1. LinearLayout
2. RelativeLayout
3. TableLayout
4. Frame...
什么是 HTTPS?
HTTPS (基于安全套接字层的超文本传输协议 或者是 HTTP over SSL) 是一个 Netscape 开发的 Web 协议。
你也可以说:HTTPS = H...
转自:/ok-lanyan/archive//2591204.html
HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速...
HTTP协议主要应用是在服务器和客户端之间,客户端接受超文本。
服务器按照一定规则,发送到客户端(一般是浏览器)的传送通信协议。与之类似的还有文件传送协议(filetrans...
他的最新文章
讲师:汪剑
讲师:刘道宽
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)如何将HTTP站点转换成HTTPS、及后续问题
稿源:博客园
文/那年那月
https及https的本地测试环境搭建。asp.net结合https的代码实现http网站转换成https网站,以及之后遇到的问题等。
一:什么是https
SSL(Security&& Socket&& Layer)全称是加密套接字协议层,它位于HTTP协议层和TCP协议层之间,用于建立用户与服务器之间的加密通信,确保所传递信息的安全性,同时SSL安全机制是依靠数字证书来实现的。
SSL基于公用密钥和私人密钥,用户使用公用密钥来加密数据,但解密数据必须使用相应的私人密钥。使用SSL安全机制的通信过程如下:用户与IIS服务器建立连接后,服务器会把数字证书与公用密钥发送给用户,用户端生成会话密钥,并用公共密钥对会话密钥进行加密,然后传递给服务器,服务器端用私人密钥进行解密,这样,用户端和服务器端就建立了一条安全通道,只有SSL允许的用户才能与IIS服务器进行通信。
提示:SSL网站不同于一般的Web站点,它使用的是&HTTPS&协议,而不是普通的&HTTP&协议。因此它的URL(统一资源定位器)格式为&https://网站域名&。
二:https的本地测试环境搭建
三:asp.net 结合 https的代码实现
https是由IIS,浏览器来实现的传输层加密,不需要特意的编码。。。平时怎么在asp.net里面编写代码,就怎么写。
很可能要问,为什么我的站点使用了https之后,用firebug之类的软件查看值提交的时候,还是会显示明文呢?例如,博客园的登陆界面提交。
http:///login.aspx
为什么这里还是能看到明文的用户名和密码呢?
原因是因为:https(ssl)的加密是发生在应用层与传输层之间,所以,在传输层看到的数据才是经过加密的,而我们捕捉到的http post的,是应用层的,是还没经过加密的数据。
加密的数据只有客户端和服务器端才能得到明文 客户端到服务端的通信是安全的
支付宝也是https的,但是他的同时也增加了安全控件来保护密码, 以前认为这个只是用来防键盘监听的,其实,看下面http post截获的密码:这个安全控件把给request的密码也先加了密,紧接着https再加次密,果然是和钱打交道的,安全级别高多了:)
有好的文章希望站长之家帮助分享推广,猛戳这里
本网页浏览已超过3分钟,点击关闭或灰色背景,即可回到网页

我要回帖

更多关于 苹果8和7有什么区别 的文章

 

随机推荐