http协议

作者: 七里花海 | 来源:发表于2017-12-10 18:13 被阅读4次

    http协议

    1.背景介绍

    2.知识剖析

    3.常见问题

    4.解决方案

    5.编码实战

    6.扩展思考

    7.参考文献

    8.更多讨论

    1.背景介绍

    什么是http协议?

    http协议(HyperText Transfer Protocol,超文本传协议)是一种用于分布式,协作式和超媒体信息系统的应用层协议,

    是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。

    特点:

    1、简单快速:客户向服务器请求服务时,只需传送请求方法和路径。

    请求方法常用的有GET、HEAD、POST等。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

    灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

    3.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

    4.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

    5、支持B/S及C/S模式。

    2.知识剖析

    URL

    HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。URL是一种特殊类型的URI,全称是UniformResourceLocator,

    中文叫统一资源定位符,是互联网上用来标识某一处资源的地址,包含了用于查找某个资源的足够的信息。

    以下面这个URL为例,介绍下普通URL的各部分组成:

    http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name

    1.协议部分:该URL的协议部分为“http:”,这代表网页使用的是HTTP协议。在Internet中可以使用多种协议,如HTTP,FTP等等本例中使用的是HTTP协议。在"HTTP"后面的“//”为分隔符。

    2.域名部分:该URL的域名部分为“www.aspxfans.com”。一个URL中,也可以使用IP地址作为域名使用。

    3.端口部分:跟在域名后面的是端口,域名和端口之间使用“:”作为分隔符。端口不是一个URL必须的部分,如果省略端口部分,将采用默认端口。

    4.虚拟目录部分:从域名后的第一个“/”开始到最后一个“/”为止,是虚拟目录部分。虚拟目录也不是一个URL必须的部分。本例中的虚拟目录是“/news/”

    5.文件名部分:从域名后的最后一个“/”开始到“?”为止,是文件名部分,如果没有“?”,则是从域名后的最后一个“/”开始到“#”为止,是文件部分,如果没有“?”和“#”,那么从域名后的最后一个“/”开始到结束,都是文件名部分。

    本例中的文件名是“index.asp”。文件名部分也不是一个URL必须的部分,如果省略该部分,则使用默认的文件名

    6.锚部分:从“#”开始到最后,都是锚部分。本例中的锚部分是“name”。锚部分也不是一个URL必须的部分。

    7.参数部分:从“?”开始到“#”为止之间的部分为参数部分,又称搜索部分、查询部分。本例中的参数部分为“boardID=5&ID=24618&page=1”。参数可以允许有多个参数,参数与参数之间用“&”作为分隔符。

    3.常见问题

    http请求content-Type有几种?

    Content-Type,内容类型,用于定义网络文件的类型和网页的编码,浏览器根据该参数来决定数据的打开方式。

    Content-Type使用的是 “主类型/子类型; 额外参数” (  [type]/[subtype]; parameter )的数值格式。

    “主类型” (type)主要有以下几种:

    1. text:用于标准化地表示的文本信息,文本消息可以是多种字符集和或者多种格式的; 默认是text/plain。

    2. multipart:用于连接消息体的多个部分构成一个消息,这些部分可以是不同类型的数据; 默认是multipart/mixed。

    3. application:用于传输应用程序数据或者二进制数据; 默认是application/octet-stream。

    4. message:用于包装一个E-mail消息。

    5. image:用于传输静态图片数据。

    6. audio:用于传输音频或者音声数据。

    7. video:用于传输动态影像数据,可以是与音频编辑在一起的视频数据格式。

    “子类型” (subtype)用于指定"主类型"的详细形式。 其中以x-开头表示该类别尚未标准化 。当客户端不能确定“子类型”时,会根据“主类型”来获取默认的子类型。

    "额外参数" (parameter)用于指定请求/响应内容的字符编码格式。例如text/html;charset=utf-8;

    http状态码

    1开头代表消息,代表请求已被接收,需要继续处理,这类响应只是临时响应

    2开头代表成功,这一类型的状态码代表请求已成功被服务器接收,理解

    3开头代表重定向.这类状态码代表需要客户端采取进一步的操作才能完成请求,通常,这些状态码用来重定向,后续的地址(重定向目标)在本次响应的location域中指明

    4开头代表请求错误,这类状态码代表客户端看起来可能发生了错误,妨碍了服务器的处理

    5开头代表服务器在处理请求的过程有错误或者异常状态发生

    常见的状态码

    200:请求已成功,请求所希望的响应头或数据体将随此响应返回。

    404:请求失败,请求所希望得到的资源未被在服务器上发现,出现这个错误的最有可能的原因是服务器端没有这个页面。

    500:服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,这个问题都会在服务器端的源代码出现错误时出现。

    Get和post请求方法有什么区别?

    根据HTTP标准,HTTP请求可以使用多种请求方法,到HTTP1.1包括八种方法:

    GET, POST,HEAD,OPTIONS, PUT, DELETE, TRACE 和 CONNECT。

    4.解决方案

    区别:

    1.GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=123456. POST方法是把提交的数据放在HTTP包的Body中.

    2.GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制。

    3.GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值。

    4.GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码。

    5.编码实战

    6.扩展思考

    http协议适用场景

    缺点:

    1.传输速度慢,数据包大。

    2.如实现实时交互,服务器性能压力大

    3.数据传输安全性差

    1.公司oa系统:Office Automation System ,意为办公自动化系统。使用局域网,较为安全。

    2.各种互联网服务。

    7.参考文献

    https://www.cnblogs.com/li0803/archive/2008/11/03/1324746.html

    http://blog.csdn.net/kfanning/article/details/6062118/

    更多讨论:

    长连接和短连接?

    HTTP1.1规定了默认保持长连接(HTTP persistent connection ,也有翻译为持久连接),数据传输完成了保持TCP连接不断开(不发RST包、不四次握手),等待在同域名下继续用这个通道传输数据;相反的就是短连接。

    http协议和tcp协议的区别是什么?

    术语TCP/IP代表传输控制协议/网际协议,指的是一系列协议。“IP”代表网际协议,TCP和UDP使用该协议从一个网络传送数据包到另一个网络。把IP想像成一种高速公路,它允许其它协议在上面行驶并找到到其它电脑的出口。TCP和UDP是高速公路上的“卡车”,它们携带的货物就是像HTTP,文件传输协议FTP这样的协议等。

    Http协议中Http1.0与1.1区别?

    http://blog.csdn.net/elifefly/article/details/3964766/

    PPT地址:

    https://ptteng.github.io/PPT/PPT-java/JAVA-task2-http.xml.html#/

    相关文章

      网友评论

        本文标题:http协议

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