http协议整理如下
2018-03-01 23:30
246 查看
首先请看一些问题整理如下
HTTP 和 TCP 有什么关系 TCP 的三次握手过程 TCP 的四次挥手过程(附加)TCP 和 UDP 的区别 TCP 包为什么需要
Seq 包为什么会乱序 说说 HTTP 协议 HTTP 1.0 和 HTTP 1.1 的差别 HTTP 头部有
哪些字段 为什么 HTTP 是无连接的
有没有保持长连接的 HTTP
我们先一下http协议
http协议是应用层的协议简称超文本传输协议特点一下四个方面http协议一是基于tcp协议所以就有一个问题的产生为什么http采用tcp协议而不使用udp协议
1,如果用UDP,网页源文件传输后不是会错误百出嘛,浏览器解析的时候不是疯掉了!!!
2,udp链接不安全,不可靠,主要应用在不安全性要求不高,效率要求比较高的应用程序,比如聊天程序
http要处理电子商务的应用。
3,http协议只定义了应用层的东西,下层的可靠性要传输层来保证,但是没有说一定要用tcp,只要是可以保证可靠性传输层协议都可以承载http,比如有基于sctp的http实现。 http也不是不能通过udp承载,在手机上就有人自己开发基于reliable udp的http协议,不过都是非标准的**
http协议的特点
简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
支持B/S及C/S模式
所有的http状态吗
分为4类 2xx 3xx 4xx 5xx(具体自己去查)
http的请求报文和应答报文格式如下
HTTP之请求消息Request客户端发送一个HTTP请求到服务器的请求消息包括以下格式:
请求行(request line)、请求头部(header)、空行和请求数据四个部分组成。
GET /562f25980001b1b106000338.jpg HTTP/1.1 Host img.mukewang.com User-Agent Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36 Accept image/webp,image/*,*/*;q=0.8 Referer http://www.imooc.com/ Accept-Encoding gzip, deflate, sdch Accept-Language zh-CN,zh;q=0.8 第一部分:请求行,用来说明请求类型,要访问的资源以及所使用的HTTP版本. GET说明请求类型为GET,[/562f25980001b1b106000338.jpg]为要访问的资源,该行的最后一部分说明使用的是HTTP1.1版本。 第二部分:请求头部,紧接着请求行(即第一行)之后的部分,用来说明服务器要使用的附加信息 从第二行起为请求头部,HOST将指出请求的目的地.User-Agent,服务器端和客户端脚本都能访问它,它是浏览器类型检测逻辑的重要基础.该信息由你的浏览器来定义,并且在每个请求中自动发送等等 第三部分:空行,请求头部后面的空行是必须的 即使第四部分的请求数据为空,也必须有空行。 第四部分:请求数据也叫主体,可以添加任意的其他数据 Http的应答报文如下 ``` html HTTP/1.1 200 OK Date: Fri, 22 May 2009 06:07:21 GMT Content-Type: text/html; charset=UTF-8 <html> <head></head> <body> <!--body goes here--> </body> </html> 第一部分:状态行,由HTTP协议版本号, 状态码, 状态消息 三部分组成。 第一行为状态行,(HTTP/1.1)表明HTTP版本为1.1版本,状态码为200,状态消息为(ok) 第二部分:消息报头,用来说明客 b4ae 户端要使用的一些附加信息 第二行和第三行为消息报头, Date:生成响应的日期和时间;Content-Type:指定了MIME类型的HTML(text/html),编码类型是UTF-8 第三部分:空行,消息报头后面的空行是必须的 第四部分:响应正文,服务器返回给客户端的文本信息。 空行后面的html部分为响应正文
http 的post和get请求
get请求:
get请求是在URL中进行发送的 安全性比较差(明文)so 长度有限制(2048)get请求时保存在浏览器的历史记录中回退没有任何影响 可以做成书签
get请求只能用于取数据
post请求:
post请求只会在http报文的主体里出现长度没有限制post不会出现在历史记录中,回退会重新提交数据
post对任何人都是不可见的不会出现在web服务器的日志中
http协议中的长连接和短链接(http1.0和http1.1)
参考本篇文章HTTP协议采用“请求-应答”模式,当使用普通模式,即非KeepAlive模式时,每个请求/应答客户和服务器都要新建一个连接,完成 之后立即断开连接(HTTP协议为无连接的协议);当使用Keep-Alive模式(又称持久连接、连接重用)时,Keep-Alive功能使客户端到服 务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。
HTTP1.1规定了默认保持长连接(HTTP persistent connection ,也有翻译为持久连接),数据传输完成了保持TCP连接不断开(不发RST包、不四次握手),等待在同域名下继续用这个通道传输数据;相反的就是短连接。
问题如果浏览器何时关闭这个链接在keep_alive 下?
首先key_alive 是有时间的time_out。1是判断传输数据是否达到了Content-Length指示的大小;
2动态生成的文件没有Content-Length,它是分块传输(chunked),这时候就要根据chunked编码来判断,chunked编码的数据在最后有一个空chunked块,表明本次传输数据结束。
http和https
(来自知乎)https://www.zhihu.com/question/19577317https默认时443端口
http是HTTP协议运行在TCP之上。所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。https是HTTP运行在SSL/TLS之上,SSL/TLS运行在TCP之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。此外客户端可以验证服务器端的身份,如果配置了客户端验证,服务器方也可以验证客户端的身份。[b]http请求 三次链接完成之后直接传输数据(数据时明文)[/b]
[b]https:(保证网站的可信和数据传输过程中的安全)[/b]
具体SSL工作的过程参看这篇博客
附上一张图简单的表示基本的工作原理
最后一个问题 :浏览器中输入一个URL发生什么,用到哪些协议?
参考博客(具体查看参考博客内容)总共分为5部分
DNS域名解析.查找DNS获取对应服务器的IPTCP建立链接
发起http请求
接受http响应
页面解析
相关文章推荐
- 最新QQ的http协议整理
- HTTP协议知识整理
- http协议知识整理(转)
- HTTP1.0协议的Status-Code大集合,整理出来给大家分享一下
- http协议常用功能整理之web缓存
- http与websocket两种协议下的跨域基于ASP.NET MVC--竹子整理
- 最新QQ的http协议整理
- Http协议详解(稍加整理)
- http协议常用功能整理
- JAVA爬虫与HTTP协议整理
- 3.1:HTTP协议错误整理
- 刚刚在看52单片机和GPS通信程序的时候,看到了一个函数,absacc.h,貌似从来没有遇到过,百度了一下,结合自己的理解,整理如下: http://blog.sina.com.cn/s/blog_4
- http协议知识点整理
- http协议知识整理
- http协议知识整理
- HTTP 协议整理(转)
- http协议整理
- Http协议知识整理
- HTTP协议简介_动力节点Java学院整理
- HTTP协议详解_动力节点Java学院整理