应届生小白面试经大白话之------http协议(原创)
讲概念http协议概念首先我们得了解什么是http协议,然后和别人提提“三次握手”,“四次挥手”,基本概念以及一些参数是个啥意思,然后知道为什么要三次,是四次,而不是更多次就够用了。接下來我就针对这几点分享自己这方面的应届面试经。
- 什麽是HTTP协议?
大白话就这么说 : "HTTP全称Hyper(海怕儿) Text(特斯特) Transfer(穿司法儿) Protocol(破若特扣) 超级的, 文本,传输 ,协议 , 简称之超文本传输协议, 它是基于TCP/IP通信协议来传递数据的一个协议,具有高效 灵活 无状态等特点. "
上面括弧是为了方便英语像我一样差的人读出这些英文单词的, 小中心企业能说上几句英语妥妥加分哈, 当然别人继续追问你什么是无状态, 怎么解决无状态等等 ,就需要你大学里有足够的知识储备了, 一般不问, 说完这个赶紧把面试官带入下一个"坑",中小型公司一般不会追问滴.
- 三次握手
说完上面引号里面的内容,赶紧加上一句: " 因为它是基于tcp协议的嘛,客户端与服务端建立连接需要进行三次握手. " 然后成功把面试带入下一个话题, 什么是三次握手,
- (1)浏览器主机 >>> 服务器:SYN=1,ACK=0,seq=x;
- (2)服务器 >>> 浏览器主机:SYN=1,ACK=1,seq=y,ack=y+1;
- (3)浏览器主机 >>> 服务器:ACK=1,seq=x+1,ack=y+1。
这些参数大学里没弄明白的话,就这么用大白话来说: "
第一次客户端向服务端发送请求(SYN),请求建立连接; 第二次然后服务端收到请求(根据SYN), 然后回复给客户端我收到了(ACK); 第三次然后客户端根据服务端传递过来的参数进行比较确认一致后, 建立连接, "
大概意思就这么一说,一般面试官都不会深问了, 可能他自己都记不得了嘿嘿嘿.
- 3. 四次挥手
说完三次挥手, 也要快速的把话题转到四次挥手上, 不要给面试官深入问你的机会, 要在面试官之前, 尽可能的多展现自己 , 就用这么一句白话承接下文就可以了:
"当客户端与服务端交流差不多后,就要断开连接了,断开连接要进行四次挥手来断开" ,
然后就成功的带入下一个话题什么是四次挥手:
第一次挥手: 客户端告诉服务端" 我完事了(FIN)”, 然后自己处于等待结束连接的状态.
第二次挥手: 服务端收到客户端消息知道"它完事儿了", 但是它要给告诉客户端, “我知道你完事儿(ACK), 我再给你说两句(FIN不会立即跟着ACK返回)”
第三次挥手: 客户端还处于等待结束连接的状态, 服务器端也完事了, 自身此时处于等待关闭连接的状态, 并对告诉客户端, “我也好了, 咱们结束吧(FIN)”。
第四次挥手:客户端收到服务端也结束了消息, 也要告诉服务端一声(ACK), 因为连接和断开要双方都按下关闭操作才能断开, ( 客户端会设置定时任务持续发送消息到服务端, 服务端收到了后就客户端这边断开连接, 有默认时间的, 如果一段时间没响应直接当做它收到了 ) 服务器端接收到客户端发来的断开消息通知就立刻关闭服务器端的连接.
挥手好像有点多了, 反正到此 , 一般面试官会觉得, 这个小白, 底子不错 .学习能力不错 ,
扩展 : 1. 为什么连接要三次握手 ? 而不是两次 或者四次呢?
大白话就这么说 : " 既要保证数据可靠性,要有提高效率,三次就够了, 多了效率降低, 少了,就没办法保证数据传输的可靠性. "
这么一说 ,面试官如果还问 ,你就随便根据上面这个扯一扯 ,一般其实他也不记得了 ,只想问倒你 , 那就假装被问倒了, 其实已经够了.
2. 为什么挥手要四次, 而不是 三次呢 ?
大白话就这么说: " 如果前两次少一次,那么就是有一方不同意关闭, 如果后两次少一次,就关闭不了, 因为客户端传递过来的FIN不是立即返回的 , 必须等服务端把报文都发送完事才行; "