涉及的知识点:服务器 加密 web 浏览器 url 面试题 session cookie摘要: HTTP协议在 OSI 七层模型中,HTTP协议位于最顶层的应用层中。通过浏览器会见网页就直接使用了 HTTP 协议。使用 HTTP 协议时,客户端首先与服务端的 80 端口建设一个 TCP 毗连,然后在这个毗连的基础上举行请求和应答,以及数据的交流。
HTTP协议在 OSI 七层模型中,HTTP协议位于最顶层的应用层中。通过浏览器会见网页就直接使用了 HTTP 协议。
使用 HTTP 协议时,客户端首先与服务端的 80 端口建设一个 TCP 毗连,然后在这个毗连的基础上举行请求和应答,以及数据的交流。HTTP 有两个常用版本,划分是 1.0 和 1.1。主要区别在于 HTTP 1.0 中每次请求和应答都市使用一个新的 TCP 毗连,而从 HTTP 1.1 开始,运行在一个 TCP 毗连上发送多个下令和应答。
因此大幅度淘汰了 TCP 毗连的建设和断开,提高了效率。常用的HTTP方法有哪些?GET:用于请求会见已经被URL(统一资源标识符)识此外资源,可以通过URL传参给服务器。POST:用于传输信息给服务器,主要功效与Get方法类似,但一般推荐POST方式。
PUT:传输文件,报文主体包罗文件内容,生存到对应URL位置。HEAD:获取报文首部,与GET方法类似,只是不返回报文主体,一般用于验证URL是否有效。DELET:删除文件,与PUT方法相反,删除对应URL位置的文件。
OPTIONS:查询相应URL支持的HTTP方法。get和post的区别get是从服务器上获取数据,post是向服务器传送数据。get是把参数数据行列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。
post是通过HTTP 的post机制,将表单内各个字段与其内容放置在HTML header内一起传送到ACTION属性所指的URL地址。用户看不到这个历程。
对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。get传送的数据量较小,因为受URL限制,不能大于2KB,可是效率高。post传送的数据量较大,一般被默认为不受限制,所以上传文件时只能用post。
但理论上,IIS4中最大量为80KB,IIS5中为100KB。get宁静性很是低,因为URL是可见的,可能会泄露私密信息,如密码等,post宁静性较高。
可是执行效率却比Post方法好。get方式只能支持ASCII字符,向服务器传的中文字符可能会乱码。post支持尺度字符集,可以正确通报中文字符。
get请求可以被缓存,可以被收藏为书签,但 post 不行。get请求会保留在浏览器的历史记载中,post 不会。SO:1、get方式的宁静性较Post方式要差些,包罗秘密信息的话,建议用Post数据提交方式;2、在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式PS: POST 请求仅比 GET 请求略宁静一点,它的数据不在 URL 中,但依然以明文的形式存放于 HTTP 的请求头中。HTTP请求报文与响应报文花样请求报文包罗三部门:请求行:包罗请求方法、URI、HTTP版本信息请求首部字段请求内容实体响应报文包罗三部门:状态行:包罗HTTP版本、状态码、状态码的原因短语响应首部字段响应内容实体常见的HTTP相应状态码200:请求被正常处置惩罚204:请求被受理但没有资源可以返回206:客户端只是请求资源的一部门,服务器只对请求的部门资源执行GET方法,相应报文中通过Content-Range指定规模的资源。
301:永久性重定向302:暂时重定向303:与302状态码有相似功效,只是它希望客户端在请求一个URI的时候,能通过GET方法重定向到另一个URI上304:发送附带条件的请求时,条件不满足时返回,与重定向无关307:暂时重定向,与302类似,只是强制要求使用POST方法400:请求报文语法有误,服务器无法识别401:请求需要认证403:请求的对应资源克制被会见404:服务器无法找到对应资源500:服务器内部错误503:服务器正忙常见HTTP首部字段通用首部字段(请求报文与响应报文都市使用的首部字段)Date:建立报文时间Connection:毗连的治理Cache-Control:缓存的控制Transfer-Encoding:报文主体的传输编码方式请求首部字段(请求报文会使用的首部字段)Host:请求资源所在服务器Accept:可处置惩罚的媒体类型Accept-Charset:可吸收的字符集Accept-Encoding:可接受的内容编码Accept-Language:可接受的自然语言响应首部字段(响应报文会使用的首部字段)Accept-Ranges:可接受的字节规模Location:令客户端重新定向到的URIServer:HTTP服务器的安装信息实体首部字段(请求报文与响应报文的的实体部门使用的首部字段)Allow:资源可支持的HTTP方法Content-Type:实体主类的类型Content-Encoding:实体主体适用的编码方式Content-Language:实体主体的自然语言Content-Length:实体主体的的字节数Content-Range:实体主体的位置规模,一般用于发出部门请求时使用一次完整的HTTP请求事务包罗以下四个环节建设起客户机和服务器毗连。建设毗连后,客户机发送一个请求给服务器。
服务器收到请求给予响应信息。客户端浏览器将返回的内容剖析并出现,断开毗连。一次完整的HTTP请求所履历的7个步骤HTTP通信机制是在一次完整的HTTP通信历程中,Web浏览器与Web服务器之间将完成下列7个步骤:建设TCP毗连->发送请求行->发送请求头->(到达服务器)发送状态行->发送响应头->发送响应数据->断TCP毗连建设TCP毗连在HTTP事情开始之前,Web浏览器首先要通过网络与Web服务器建设毗连,该毗连是通过TCP来完成的,该协议与IP协议配合构建 Internet,即著名的TCP/IP协议族,因此Internet又被称作是TCP/IP网络。
HTTP是比TCP更高条理的应用层协议,凭据规则, 只有低层协议建设之后才气,才气举行更层协议的毗连,因此,首先要建设TCP毗连,一般TCP毗连的端口号是80。Web浏览器向Web服务器发送请求行一旦建设了TCP毗连,Web浏览器就会向Web服务器发送请求下令。例如:GET /sample/hello.jsp HTTP/1.1。
Web浏览器发送请求头浏览器发送其请求下令之后,还要以头信息的形式向Web服务器发送一些此外信息,之后浏览器发送了一空缺行来通知服务器,它已经竣事了该头信息的发送。Web服务器应答客户机向服务器发出请求后,服务器会客户机回送应答, HTTP/1.1 200 OK ,应答的第一部门是协议的版本号和应答状态码。Web服务器发送应答头正如客户端会随同请求发送关于自身的信息一样,服务器也会随同应答向用户发送关于它自己的数据及被请求的文档。Web服务器向浏览器发送数据Web服务器向浏览器发送头信息后,它会发送一个空缺行来表现头信息的发送到此为竣事,接着,它就以Content-Type应答头信息所形貌的花样发送用户所请求的实际数据。
Web服务器关闭TCP毗连一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP毗连,然后如果浏览器或者服务器在其头信息加入了这行代码:Connection:keep-aliveTCP毗连在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的毗连发送请求。保持毗连节约了为每个请求建设新毗连所需的时间,还节约了网络带宽。HTTP优化TCP复用:TCP毗连复用是将多个客户端的HTTP请求复用到一个服务器端TCP毗连上,而HTTP复用则是一个客户端的多个HTTP请求通过一个TCP毗连举行处置惩罚。
前者是负载平衡设备的奇特功效;尔后者是HTTP 1.1协议所支持的新功效,现在被大多数浏览器所支持。内容缓存:将经常用到的内容举行缓存起来,那么客户端就可以直接在内存中获取相应的数据了。压缩:将文本数据举行压缩,淘汰带宽SSL加密(SSL Acceleration):使用SSL协议对HTTP协议举行加密,在通道内加密并加速TCP缓冲:通过接纳TCP缓冲技术,可以提高服务器端响应时间和处置惩罚效率,淘汰由于通信链路问题给服务器造成的毗连肩负。
HTTP的缺点通信使用明文不加密,内容可能被窃听不验证通信方身份,可能遭到伪装无法验证报文完整性,可能被窜改HTTP1.1版本新特性默认持久毗连节约通信量,只要客户端服务端任意一端没有明确提出断 - 管线化,客户端可以同时发出多个HTTP请求,而不用一个个等候响应断点续传 (实际上就是使用HTTP消息头使用分块传输编码,将实体主体分块传输)Cookie和Session的区别HTTP 是一种无状态的毗连,客户端每次读取 web页面时,服务器都市认为这是一次新的会话。但有时候我们又需要持久保持某些信息,好比登录时的用户名、密码,用户上一次毗连时的信息等。
这些信息就由 Cookie 和 Session 生存。Cookiecookie实际上是一小段文本信息。客户端请求服务器,如果服务器需要记载该用户状态,就使用response向客户端浏览器发表一个cookie,客户端浏览器会把cookie生存起来,当浏览器再次请求会见该网站时,浏览器把请求的网站连同该cookie一同提交给服务器,服务器检查该cookie,以此来辨认用户状态。
简朴来说,cookie的事情原理可总结如下:client毗连serverclient生成cookie(有效期),再次会见时携带cookieserver凭据cookie的信息识别用户身份SessionSession是服务器端使用的一种记载客户端状态的机制,使用上比Cookie简朴一些。同一个客户端每次和服务端交互时,不需要每次都传回所有的 Cookie 值,而是只要传回一个 ID,这个 ID 是客户端第一次会见服务器的时候生成的,而且每个客户端是唯一的。这样每个客户端就有了一个唯一的 ID,客户端只要传回这个 ID 就行了,这个 ID 通常是 name为 JSESIONID 的一个 Cookie。
Session依据这个id来识别是否为同一用户(只认ID不认人)。区别:cookie数据存放在客户的浏览器上,session数据放在服务器上。cookie不是很宁静,别人可以分析存放在当地的COOKIE并举行COOKIE欺骗思量到宁静应当使用session。session会在一定时间内生存在服务器上。
当会见增多,会比力占用你服务器的性能思量到减轻服务器性能方面,应当使用COOKIE。单个cookie生存的数据不能凌驾4K,许多浏览器都限制一个站点最多生存20个cookie。免费赠送关注 + 转发后, 私信关键字 " HTTP " (大写哟) 即可获取 http权威指南 的电子书一本记得转发,转发,转发, 重要的事情多说两遍, 转发后再私信,才可以获取哟~。
本文来源:im电竞-www.zhongwanhui.com