1 什么是协议:即约定规则2
2 数据在网络传输常见的规则有哪些:http,ftp,pop3,pop,imap,流媒体协议
3 。 http 是htpyer text transform protocal: 即超文本传输协议 ,html 是超文本标记语言
4 http 的模型:是基于请求-响应的模型,协议部分分为请求部分,响应部分
5 请求部分格式: 请求行,请求头,请求体
响应部分格式:响应行,响应头,响应体
请求部分
请求行: 请求方式(常用get,post),请求资源的路径,请求协议和版本号
请求头:key:value的形式,分为两部分:一部分告诉服务端:客户端信息,第二部分是对本次请求的一些描述
例如我们请求 百度的logo :https://www.baidu.com/img/bd_logo1.png
请求体:请求方式为post时,才有请求体,我们表单 即客户端给服务端传递的数据
响应部分
响应头:
server:响应的服务器类型
常见面试问题:
1:当我们浏览器访问时,uri 中对某些字符有时使用了百分号编码,有时候却没有,那种方式更适合
2: 如何识别出那些数据是来自缓存,响应的http头部,哪个属性了这个响应可以被浏览器缓存
3:前端如果需要跨域,如何在不违背web架构下的安全策略
5:http的4XX,5XX分别表示什么含义,如何跟踪用户的行为
6:ssl性能优化时,为什么重点在session缓存或者ticket 票据呢
7:如在tcp中发现TIME_WAIT,CLOSE_WAIT,FIN_WAIT 状态时都是什么原因导致的
8:ipv6和ipv4有什么不同
http1.0 不支持实时服务端向客户端刷新数据,所以有了websocekt协议
但是在效率和多路复用中性能表现一般,所以有了http 2.0
当网络缓慢丢包率非常高的时候,或者在高并发的情况下有很多问题,就需要我们对更底层的协议进行了解
tcp是进程与进程之间的通信,主机和主机之间的通讯是ip
当我们放问一个url,然后得到对应的html,经过浏览器渲染,如果发现有超链接,例如js,图片css等会请求对应的文件,js解释器 解析,然后浏览器绘制ui界面
详细的过程
为什么协议要分那么多层:
这样的好处时:因为上层无需知道底层怎么实现的,当上层协议升级(例如http1.0 升级为2.0,对session一下没有影响)
但是也有害处:每次都要进行处理,会造成数据延迟
应用层:结局的是业务问题
表示层:负责将网络中的消息转化为应用层可识别的,tsl协议应用层不认识,需要进行转化
会话层:是概念化的一层,建立会话
传输成:解决进程的通信,例如主机收到报文,然后分发给对应的进程,tcp还做了报文的可达性和流量的控制
网络层:主机和主机
数据链路层:根据mac地址将数据发送给对应的交换机或路由器
物理层:物理介质
数据流风格:例如协议的分层,nginx也大量采用数据流风格