http详解

作者: 一代骄马 | 来源:发表于2018-04-27 14:48 被阅读49次

    IPV4和IPV6的区别 - 小蚂蚁zoe - 博客园

    1. IPv6 把 IP 地址由 32 位增加到 128 位,

    2.、报头格式的简化

    3、对可选项更大的支持

    4、身份验证和保密

    5.加强了对移动设备的支持

    一、HTTP协议扫盲(一)HTTP协议的基本概念和通讯原理 - 长安快马 - 博客园

    1.HTTP TCP UDP

    HTTP协议,又叫做超文本传输协议,是关于如何在网络上传输 HTML文档的一种通讯协议。

    HTTP协议采用客户/服务器通信模式

    HTTP协议建立在TCP/IP协议的基础上,规定了浏览器和web服务器之间的通信细节

    TPC/IP协议是传输层协议,解决的是数据如何在网络中传输的问题;HTTP是应用层协议,解决的是如何包装数据的问题。

    我们在传输数据时可以只使用(传输层)TCP/IP协议,但是那样的话没有应用层便无法识别数据内容,要使传输的数据有意义必须使用到应用层协议,

    应用层协议有很多,比如HTTP、FTP、TELNET等,也可以自己定义应用层协议。

    WEB通讯使用HTTP协议作应用层协议,封装HTTP 文本信息,然后使用TCP/IP做传输层协议将它发到网络上。

    HTTP(超文本传输协议)是利用TCP在两台电脑(通常是Web服务器和客户端)之间传输信息的协议。客户端使用Web浏览器发起HTTP请求给Web服务器,Web服务器发送被请求的信息给客户端。 

    2.OSI模型

    下面图表描述TCP/IP和其他的协议在最初OSI模型中的位置:

    「开放式通信系统互联参考模型(Open System Interconnection,OSI/RM,Open Systems Interconnection Reference Model),是国际标准化组织(ISO)提出的一个试图使各种计算机在世界范围内互连为网络的标准框架,简称OSI

    7 应用层 例如HTTP、SMTP、SNMP、FTP、Telnet、SIP、SSH、NFS、RTSP、XMPP、Whois、ENRP

    6 表示层 例如XDR、ASN.1、SMB、AFP、NCP

    5 会话层 例如ASAP、TLS、SSH、ISO 8327 / CCITT X.225、RPC、NetBIOS、ASP、Winsock、BSD sockets

    4 传输层 例如TCP、UDP、RTP、SCTP、SPX、ATP、IL

    3 网络层 例如IP、ICMP、IGMP、IPX、BGP、OSPF、RIP、IGRP、EIGRP、ARP、RARP、 X.25

    2 数据链路层 例如以太网、令牌环、HDLC、帧中继、ISDN、ATM、IEEE 802.11、FDDI、PPP

    1 物理层 例如线路、无线电、光纤、信鸽

    3、网页通讯过程

    打开一个网页需要浏览器发送很多次Request

    1. 当你在浏览器输入URL http://www.cnblogs.com 的时候,浏览器发送一个Request去获取 http://www.cnblogs.com 的html. 服务器把Response发送回给浏览器.

    2. 浏览器分析Response中的 HTML,发现其中引用了很多其他文件,比如图片,CSS文件,JS文件。

    3. 浏览器会自动再次发送Request去获取图片,CSS文件,或者JS文件。

    4. 等所有的文件都下载成功后。 网页就被显示出来了。

    4.http 长链接 短链接

    http协议是无状态的,同一个客户端的这次请求和上次请求是没有对应关系,对http服务器来说,它并不知道这两个请求来自同一个客户端。 为了解决这个问题, Web程序引入了Cookie机制来维护状态.

    HTTP 对 TCP 连接的使用,分为两种方式:俗称“短连接”和“长连接”(“长连接”又称“持久连接”,洋文叫做“Keep-Alive”或“Persistent Connection”)

    假设有一个网页,里面包含好多图片,还包含好多【外部的】CSS 文件和 JS 文件。在“短连接”的模式下,浏览器会先发起一个 TCP 连接,拿到该网页的 HTML 源代码(拿到 HTML 之后,这个 TCP 连接就关闭了)。然后,浏览器开始分析这个网页的源码,知道这个页面包含很多外部资源(图片、CSS、JS)。然后针对【每一个】外部资源,再分别发起一个个 TCP 连接,把这些文件获取到本地(同样的,每抓取一个外部资源后,相应的 TCP 就断开)

    相反,如果是“长连接”的方式,浏览器也会先发起一个 TCP 连接去抓取页面。但是抓取页面之后,该 TCP 连接并不会立即关闭,而是暂时先保持着(所谓的“Keep-Alive”)。然后浏览器分析 HTML 源码之后,发现有很多外部资源,就用刚才那个 TCP 连接去抓取此页面的外部资源。

    Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间

    HTTP协议扫盲(二)HTTP协议的请求方法、请求头和响应头 - 长安快马 - 博客园

    1.Http协议定义了很多与服务器交互的方法,最基本的有4种,分别是GET,POST,PUT,DELETE.

    request header

    1、Cache 头域

    1.1、If-Modified-Since

    1.2、If-None-Match. 

    1.3、Pragma

    防止页面被缓存, 在HTTP/1.1版本中,它和Cache-Control:no-cache作用一模一样

    1.4、Cache-Control

    作用: 这个是非常重要的规则。 这个用来指定Response-Request遵循的缓存机制。各个指令含义如下

    Cache-Control:Public  可以被任何缓存所缓存()

    Cache-Control:Private    内容只缓存到私有缓存中

    Cache-Control:no-cache  所有内容都不会被缓存

    2、Client 头域

    2.1、Accept

    作用: 浏览器端可以接受的媒体类型,

    例如:  Accept: text/html  代表浏览器可以接受服务器回发的类型为 text/html  也就是我们常说的html文档,

    如果服务器无法返回text/html类型的数据,服务器应该返回一个406错误(non acceptable)

    通配符 * 代表任意类型

    例如  Accept: */*  代表浏览器可以处理所有类型,(一般浏览器发给服务器都是发这个)

    2.2、Accept-Encoding:

    作用: 浏览器申明自己接收的编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方法(gzip,deflate),(注意:这不是只字符编码);

    例如: Accept-Encoding: gzip, deflate

    2.3、Accept-Language

    作用: 浏览器申明自己接收的语言。

    语言跟字符集的区别:中文是语言,中文有多种字符集,比如big5,gb2312,gbk等等;

    例如: Accept-Language: en-us

    2.4、User-Agent

    作用:告诉HTTP服务器, 客户端使用的操作系统和浏览器的名称和版本.

    我们上网登陆论坛的时候,往往会看到一些欢迎信息,其中列出了你的操作系统的名称和版本,你所使用的浏览器的名称和版本,这往往让很多人感到很神奇,实际上,服务器应用程序就是从User-Agent这个请求报头域中获取到这些信息User-Agent请求报头域允许客户端将它的操作系统、浏览器和其它属性告诉服务器。

    例如: User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; CIBA; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; InfoPath.2; .NET4.0E)

    2.5、Accept-Charset

    作用:浏览器申明自己接收的字符集,这就是本文前面介绍的各种字符集和字符编码,如gb2312,utf-8(通常我们说Charset包括了相应的字符编码方案);

    例如:

    3、Cookie/Login 头域

    3.1、Cookie:

    作用: 最重要的header, 将cookie的值发送给HTTP 服务器

    4、Entity头域

    4.1、Content-Length

    作用:发送给HTTP服务器数据的长度。

    例如: Content-Length: 38

    4.2、Content-Type

    作用:

    例如:Content-Type: application/x-www-form-urlencoded

    5、Miscellaneous 头域

    5.1、Referer:

    作用: 提供了Request的上下文信息的服务器,告诉服务器我是从哪个链接过来的,比如从我主页上链接到一个朋友那里,他的服务器就能够从HTTP Referer中统计出每天有多少用户点击我主页上的链接访问他的网站。

    例如: Referer:http://translate.google.cn/?hl=zh-cn&tab=wT

    6、Transport 头域

    6.1、Connection

    例如: Connection: keep-alive  当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接

    例如:  Connection: close  代表一个Request完成后,客户端和服务器之间用于传输HTTP数据的TCP连接会关闭, 当客户端再次发送Request,需要重新建立TCP连接。

    6.2、Host(发送请求时,该报头域是必需的)

    作用: 请求报头域主要用于指定被请求资源的Internet主机和端口号,它通常从HTTP URL中提取出来的

    例如: 我们在浏览器中输入:http://www.guet.edu.cn/index.html

    浏览器发送的请求消息中,就会包含Host请求报头域,如下:

    Host:http://www.guet.edu.cn

    此处使用缺省端口号80,若指定了端口号,则变成:Host:指定端口号

    response code

    2.2、302 Found

    重定向,新的URL会在response 中的Location中返回,浏览器将会自动使用新的URL发出新的Request

    2.3、304 Not Modified

    代表上次的文档已经被缓存了, 还可以继续使用,

    2.4、400 Bad Request  客户端请求与语法错误,不能被服务器所理解

    2.5、403 Forbidden 服务器收到请求,但是拒绝提供服务

    2.6、404 Not Found

    2.7、500 Internal Server Error 服务器发生了不可预期的错误

    2.8、503 Server Unavailable 服务器当前不能处理客户端的请求,一段时间后可能恢复正常

    详情-->HTTP协议状态码详解(HTTP Status Code) - 长安快马 - 博客园

    response header


    1、Cache头域

    1.1、Date

    作用:  生成消息的具体时间和日期

    例如: Date: Sat, 11 Feb 2012 11:35:14 GMT

    1.2、Expires

    作用: 浏览器会在指定过期时间内使用本地缓存

    例如: Expires: Tue, 08 Feb 2022 11:35:14 GMT

    1.3、Vary

    作用:

    例如: Vary: Accept-Encoding

    2、Cookie/Login 头域

    2.1、P3P

    作用: 用于跨域设置Cookie, 这样可以解决iframe跨域访问cookie的问题

    例如: P3P: CP=CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR

    2.2、Set-Cookie

    作用: 非常重要的header, 用于把cookie 发送到客户端浏览器, 每一个写入cookie都会生成一个Set-Cookie.

    例如: Set-Cookie: sc=4c31523a; path=/; domain=.acookie.taobao.com

    3、Entity头域

    3.1、ETag

    作用:  和If-None-Match 配合使用。 (实例请看上节中If-None-Match的实例)

    例如: ETag: "03f2b33c0bfcc1:0"

    3.2、Last-Modified:

    作用: 用于指示资源的最后修改日期和时间。(实例请看上节的If-Modified-Since的实例)

    例如: Last-Modified: Wed, 21 Dec 2011 09:09:10 GMT

    3.3、Content-Type

    作用:WEB服务器告诉浏览器自己响应的对象的类型和字符集,

    例如:

    Content-Type: text/html; charset=utf-8

    Content-Type:text/html;charset=GB2312

    Content-Type: image/jpeg

    3.4、Content-Length

    例如: Content-Length: 19847

    3.5、Content-Encoding

    WEB服务器表明自己使用了什么压缩方法(gzip,deflate)压缩响应中的对象。

    例如:Content-Encoding:gzip

    3.6、Content-Language

    作用: WEB服务器告诉浏览器自己响应的对象的语言者

    例如: Content-Language:da

    4、Miscellaneous 头域

    4.1、Server:

    作用:指明HTTP服务器的软件信息

    例如:Server: Microsoft-IIS/7.5

    4.2、X-AspNet-Version:

    作用:如果网站是用ASP.NET开发的,这个header用来表示ASP.NET的版本

    例如: X-AspNet-Version: 4.0.30319

    4.3、X-Powered-By:

    作用:表示网站是用什么技术开发的

    例如: X-Powered-By: ASP.NET

    5、Transport头域

    5.1、Connection

    例如: Connection: keep-alive  例如:  Connection: close

    6、Location头域

    6.1、Location

    作用: 用于重定向一个新的位置, 包含新的URL地址

    详细的header列表

    HTTP协议扫盲(三)HTTP协议的请求头列表和分类描述 - 长安快马 - 博客园

    为了支持多媒体数据类型,后来使用了附加在文档之前的MIME数据类型信息来标识数据类型。

    三、HTTP协议扫盲(四)HTTP协议进阶 - MIME类型 - 长安快马 - 博客园

    超文本标记语言文本 .html text/html

    xml文档 .xml text/xml

    XHTML文档 .xhtml application/xhtml+xml

    普通文本 .txt text/plain

    RTF文本 .rtf application/rtf

    PDF文档 .pdf application/pdf

    Microsoft Word文件 .word application/msword

    PNG图像 .png image/png

    GIF图形 .gif image/gif

    JPEG图形 .jpeg,.jpg image/jpeg

    au声音文件 .au audio/basic

    MIDI音乐文件 mid,.midi audio/midi,audio/x-midi

    RealAudio音乐文件 .ra, .ram audio/x-pn-realaudio

    MPEG文件 .mpg,.mpeg video/mpeg

    AVI文件 .avi video/x-msvideo

    GZIP文件 .gz application/x-gzip

    TAR文件 .tar application/x-tar

    任意的二进制数据 application/octet-stream

    HTTP协议扫盲(五)HTTP请求防篡改 - 长安快马 - 博客园

    https

    HTTPS和HTTP的区别主要如下:

      1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

      2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

      3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

      4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

     (3)HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。

      (4)谷歌曾在2014年8月份调整搜索引擎算法,并称“比起同等HTTP网站,采用HTTPS加密的网站在搜索结果中的排名将会更高”。

    HTTPS的缺点

      虽然说HTTPS有很大的优势,但其相对来说,还是存在不足之处的:

      (1)HTTPS协议握手阶段比较费时,会使页面的加载时间延长近50%,增加10%到20%的耗电;

      (2)HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响;

      (3)SSL证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用。

       (4)SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗。

      (5)HTTPS协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的,SSL证书的信用链体系并不安全,特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行。

    相关文章

      网友评论

        本文标题:http详解

        本文链接:https://www.haomeiwen.com/subject/wamblftx.html