计算机网络
-
OSI七层模型
- 应用层:具体的应用协议:HTTP、FTP等
- 表示层
- 会话层
- 传输层:TCP、UDP协议,将数据加上TCP/UDP头
- 网络层:IP协议,将数据加上IP头部
- 数据链路层:将数据加上帧头部,封装成数据帧
- 物理层:原样发送数据链路层传递过来的数据帧
-
物理层传输的单位是什么
- 比特
-
GET是否可以在body中放置内容
- http协议中GET请求是可以带body的,后端可以接受GET请求中的body,但是web浏览器会限制GET请求不携带请求体。因此不推荐在body中放置参数
-
http请求body是否有大小限制
- 浏览器对body大小没有限制,但是web服务器有限制,可以在web服务器中进行配置
-
http包是如何到达服务器的
- 查询ip:客户端先检查本地是否有对应的IP地址,若找到则返回响应的IP地址。若没找到则请求上级DNS服务器,直至找到或到根节点。(浏览器缓存→系统缓存→路由器缓存→ISP DNS缓存→从根域名服务器递归搜索)
- 建立连接三次握手:发送端先发送一个带有SYN(synchronize)标志的数据包给接收端,在一定的延迟时间内等待接收的回复。接收端收到数据包后,传回一个带有SYN/ACK标志的数据包以示传达确认信息。接收方收到后再发送一个带有ACK标志的数据包给接收端以示握手成功。在这个过程中,如果发送端在规定延迟时间内没有收到回复则默认接收方没有收到请求,而再次发送,直到收到回复为止。
- 通信
- 断开链接四次挥手
- 客户端发起请求,请求断开链接。FIN=1
- 服务器收到客户端的请求断开链接的报文之后,返回确认信息。ACK=1。这个时候,客户端不能给服务器发送信息报文,只能接收。但是服务器要是还有信息要传给服务器,仍然能传送。
- 当服务器也没有了可以传的信息之后,给客户端发送请求结束的报文。FIN=1,ACK=1
- 客户端接收到FIN=1的报文之后,返回确认报文,ACK=1。发送完毕之后,客户端进入等待状态,等待两个时间周期。关闭。
-
TLS工作原理
- 混合加密,非对称加密保证会话密钥安全,对称加密使用会话密钥加密数据保证信息传输安全
- 完整性,将数据跟数据摘要一同加密进行发送,解密后将数据取摘要与解密出来的摘要对比是否一致
- 数字证书:利用CA公开的公钥去验证服务器发送的公钥证书是否可信
-
客户端如何知道服务端下发的CA证书是没有被劫持篡改过的
- 使用CA公钥对服务器下发的CA证书中的数字签名进行解密,再跟CA证书中的服务器公钥取摘要进行比对,若一致,则未被篡改
-
客户端如何验证CA证书是合法的
- CA认证机构生成一对秘钥,公钥和私钥
- 公钥证书包含:数字签名、服务器公钥
- 数字签名:服务器公钥取摘要再用认证机构私钥加密
- 服务器将公钥证书发送给客户端,客户端验证公钥证书
- 客户端使用CA认证机构的公钥去解密公钥证书里的数字签名,从而得到服务器公钥摘要
- 客户端对服务器公钥取摘要,对比上一步的公钥摘要是否相同
-
GET与POST区别
-
url可见性:
get,参数url可见;
post,url参数不可见
-
数据传输上:
get,通过拼接url进行传递参数;
post,通过body传输参数
-
缓存性:
get请求是可以缓存的
post请求不可以缓存
-
后退页面的反应
get请求页面后退时,不产生影响
post请求页面后退时,会重新提交请求
-
传输数据的大小
get一般传输数据大小不超过2k-4k(根据浏览器不同,限制不一样)
post请求传输数据的大小根据服务器 配置设定。
-
安全性
原则上post肯定要比get安全,传输参数时url不可见
-
数据包
GET产生一个TCP数据包;POST产生两个TCP数据包。对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。两次包的TCP在验证数据包完整性上,有非常大的优点。并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。
-
-
http请求URL长度限制是多少
-
HTTP协议没有对URL长度做出限制,但是不同的浏览器有不同的长度限制
-
IE浏览器对URL的长度现限制为2048字节
-
Firefox(Browser)对URL的长度限制为65536字节。
-
Safari(Browser)对URL的长度限制为80000字节。
-
Opera(Browser)对URL的长度限制为190000字节。
-
Google(chrome)对URL的长度限制为8182字节。
-
-
http常用请求方法有哪些
- GET:从服务器取数据
- POST:提交数据给服务器处理
- HEAD:从服务器获取文档首部
- PUT:将请求的主体内容存在服务器上
- DELETE:从服务器删除数据
- OPTIONS:预检请求,沟通哪些请求方法、头部字段是可以使用的