对,我就是骗你进来的。嘿嘿嘿... 既然来了就看看再走嘛html
做为一个学通讯出身的前端,说道http、tcp什么的,算是到了个人领域了。(我会告诉你我上课净睡觉了,啥也没学到吗?)此次给你们讲讲http,提升水平、丰富知识。(要不是为了面试,谁会管什么ttp呀,对我是就这么肤浅)前端
要说http就绕不开tcp,TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来讲,两者没有可比性。可是,http是基于tcp协议的。web
TCP三次握手和四次挥手?面试
被问烂了的问题了,这里不详细讲了,三次握手:浏览器
四次挥手:缓存
还不懂的童鞋,去找别人的文章好好看看!服务器
TCP和UDP的区别?微信
仔细阅读上面传输层里写的内容,懂了吗?(不懂?不懂背下来啊,混蛋!) 网络
Http协议是创建在TCP协议基础之上的,当浏览器须要从服务器获取网页数据的时候,会发出一次Http请求。Http会经过TCP创建起一个到服务器的链接通道,当本次请求须要的数据完毕后,Http会当即将TCP链接断开,这个过程是很短的。因此Http链接是一种短链接,是一种无状态的链接。异步
所谓的无状态,是指浏览器每次向服务器发起请求的时候,不是经过一个链接,而是每次都创建一个新的链接。若是是一个链接的话,服务器进程中就能保持住这个链接而且在内存中记住一些信息状态。而每次请求结束后,链接就关闭,相关的内容就释放了,因此记不住任何状态,成为无状态链接。
无耻盗图
发送端在层与层间传输数据时,没通过一层都会被加上首部信息,接收端每通过一层都会删除一条首部
HTTP的英文全称?
开玩笑的,这个显然不是重点,可是不排除有人会去问,仍是要知道的: 超文本传输协议(HyperText Transfer Protocol)
状态码?
状态码就那些,经常使用的记住就好了:
2XX 成功
3XX 重定向
4XX 客户端错误
5XX 服务器错误
HTTP协议格式?
HTTP的请求和响应的消息协议是同样的,分为三个部分,起始行、消息头和消息体。这三个部分以CRLF做为分隔符。最后一个消息头有两个CRLF,用来表示消息头部的结束。
HTTP请求的起始行称为请求行,形如GET /index.html HTTP/1.1
HTTP响应的起始行称为状态行,形如200 ok
消息头部有不少键值对组成,多个键值对之间使用CRLF做为分隔符,也能够彻底没有键值对。形如Content-Encoding: gzip 消息体是一个字符串,字符串的长度是由消息头部的Content-Length键指定的。若是没有Content-Length字段说明没有消息体,譬如GET请求就是没有消息体的,POST请求的消息体通常用来放置表单数据。GET请求的响应返回的页面内容也是放在消息体里面的。咱们平时调用API返回的JSON内容都是放在消息体里面的。
HTTP的无状态性?
所谓HTTP协议的无状态性是指服务器的协议层无需为不一样的请求之间创建任何相关关系,它特指的是协议层的无状态性。可是这并不表明创建在HTTP协议之上的应用程序就没法维持状态。应用层能够经过会话Session来跟踪用户请求之间的相关性,服务器会为每一个会话对象绑定一个惟一的会话ID,浏览器能够将会话ID记录在本地缓存LocalStorage或者Cookie,在后续的请求都带上这个会话ID,服务器就能够为每一个请求找到相应的会话状态。
输入url到页面加载都发生了什么事情?(最最常问的来了)
仍是要注重一下版权的,本文部份内容来源于大佬码洞,更全更深刻的知识在那里,还不快去关注,而后感谢大佬对个人宽容。