面试问道聊一聊HTTP协议吧,瞬间懵逼,特写下记录,并记录简答过程,形成一个固有思路

1.HTTP协议是基于应用层的面向对象的超文本传输协议。是基于TCP/IP通信协议来传递数据的。

2.HTTP有如下特点,⑤点:客户/服务器模式,简单快捷,灵活,无状态,无连接。

3.HTTP协议包含请求和响应

聊一聊HTTP协议吧!_服务器

请求包含:请求行 Method+URI+Version
消息报头包含一系列协议,也成头协议
请求正文即具体向服务器发送的内容,举例GET和POST

响应包含:状态行 Version+Code+Description
消息报头 头协议
响应正文:一般是 AJAX中如 HTML或JSON(常用)或String

4.HTTP工作原理

1.客户端连接到Web服务器
2.发送HTTP请求
3.服务器接受请求并返回HTTP响应
4.释放连接TCP连接
5.客户端浏览器解析HTML内容

5.在浏览器地址栏键入URL,按下回车之后会经历以下流程

1、浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;

2、解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接;

3、浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器;

4、服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器;

5、释放 TCP连接;

6、浏览器将该 html 文本并显示内容;  

6.GET和POST区别

1.GET提交,请求的数据会附在URL之后,POST提交:把提交的数据放置在是HTTP包的包体中。区别明文显示。
2. IE对URL长度的限制是2083字节(2K+35) 其他也有类似,所以造成GET和POST传输大小限制
3. GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值。
4. POST的安全性要比GET的安全性高。比如:通过GET提交数据,用户名和密码将明文出现在URL上,因为(1)登录页面有可能被浏览器缓存;(2)其他人查看浏览器的历史纪录,那么别人就可以拿到你的账号和密码了,除此之外,使用GET提交数据还可能会造成Cross-site request forgery攻击

7.说下HTTP+Method有哪些?

常用的GET,POST,PUT,DELETE。
特殊的如TRACE,OPTIONS,HEAD.
保留的有CONNECT

GET 请求指定的页面信息,并返回实体主体。
HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
PUT 从客户端向服务器传送的数据取代指定的文档的内容。
DELETE 请求服务器删除指定的页面。
CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
OPTIONS 允许客户端查看服务器的性能。
TRACE 回显服务器收到的请求,主要用于测试或诊断。

8.HTTP协议中的消息报头也称头协议有

Http报头分为通用报头,请求报头,响应报头和实体报头
常见的如下:

Host:请求资源的Intenet主机和端口号
Accept 发送端(客户端)希望接受的数据类型
Pragma 包含实现特定的指令
Cache-Control:缓存机制
Referer:允许客户端指定请求uri的源资源地址
User-Agent 发出请求的用户信息
Range 可以请求实体的一个或者多个子范围
Date头域表示消息发送的时间
Content-Type 希望接受的数据类型是

9.状态行中的状态码

1xx:指示信息–表示请求已接收,继续处理
100 在HTTP1.1 试探访问
200 成功
3xx:重定向–要完成请求必须进行更进一步的操作
401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
403 Forbidden //服务器收到请求,但是拒绝提供服务 Shiro框架和Spring Security
404 Not Found //请求资源不存在,eg:输入了错误的URL
500 Internal Server Error //服务器发生不可预期的错误
503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
eg:HTTP/1.1 200 OK (CRLF)