http的工作流程:
客户端---服务端通信过程
请求----响应的模型
建立连接:tcp/ip协议与服务器建立连接(三次握手),客户端向服务器的80端口发送连接请求
发送请求:一旦连接建立之后,客户端就像服务端发送http请求。http请求:由一个请求行和多个头部字段组成
请求方式:get post
服务端处理请求:根据请求的方式和内容进行处理。服务端会读取请求头的字段,解析参数,处理数据等等
服务端返回响应:形成一个http响应,响应由一个响应行,包含多个字段。响应内容包含重要的内容状态码,用于表示服务端对于请求的处理结果
面试题:
http的状态码
1xx:信息提示100-101 无实际作用
2xx:成功,表示请求处理结果成功 200
3xx:重定向,304表示请求的是缓存
4xx:客户端错误,403 404,请求的页面不存在或者没有权限访问
403:请求的页面禁止访问
404:服务器无法请求的页面
5xx:服务器错误
- 内部服务器错误
500:检查防火墙,检查进程也就是服务状态,检查端口,检查配置文件,端口号被占用
502:无效网关
503:请求的服务器不可用,可能下线了
504:网关请求超时
生产中常见的状态码:
200 ok:请求成功
301:永久重定向
302:临时重定向
304:访问的是本地缓存
403:Forbidden,禁止客户访问该页面
404:NOT FOUND,服务器无法找到被请求的页面
500:inetnal server error,内部服务器错误
502:BAD geteway,网关失效(服务端的网关失效)
503:server Unavailable,服务器不可用(网站维护)
504:GATEWAY timeout,网关请求超时(服务端处于维护或者路由器故障)
传输数据:一旦服务器生成了http响应,会通过之前建立的连接将响应返回给客户端
响应当中包含了请求的资源(网页内容)以及其他的需要传输的数据(一般是自定义)
关闭连接:响应发送完成,服务端就会进入连接关闭,http1.1 time_wait。双方还在建立连接,只是双方之间不在有数据传输。一旦有新的请求,连接可以继续使用。160秒 会话保持或者长连接
http1.1会一次性获取页面的全部资源,然后发起四次挥手。只是不再传输数据,连接并没有断开
客户端解析和现实响应:
客户端收到http响应之后,解析响应内容,包括页面解析,显示图片,播放视频
主要靠的是浏览器
客户端也可以继续发送请求,或者打开新的连接,请求其他资源
http的请求方式:
get的方式:
get向服务器放送请求的数据,依照http协议来进行get就是请求
请求行:
请求体:
Accept:客户端可以接受的数据类型
Accept-Encoding:客户端可以接受的编码格式,以及数据是否需要压缩
Accept-Language:客户端可以接受的语言类型
Cache-Control:数据再本地缓存的时间
Connection:连接的处理方式,一般都是会话保存
host:表示请求的ip和端口号,也可以理解为请求的主机名
User-Agent:客户端请求使用的浏览器信息
响应头:
响应体:
post:向服务端发送数据,按照http协议进行,服务器添加数据,post的请求方式会修改服务器上的数据
get和post的区别:
get的请求可以换粗
get的请求还可以保存在浏览器的cookie中
get的请求长度有限制
get就是获取数据
post的请求不能被缓存,也不会保存在浏览器的cookie中
post请求没有长度限制
请求的字符串不会显示,比较安全
小工具:
telnet:可以测试服务器的指定断开是否正常
yum -y install telnet
命令:telnet 192.168.233.20 80
nc:
命令:
test1:nc -l 8888
test2:nc 192.168.233.10 8888