Moosphan / Android-Daily-Interview

:pushpin:每工作日更新一道 Android 面试题,小聚成河,大聚成江,共勉之~

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

2019-12-31:TCP/IP协议分为哪几层?TCP和HTTP分别属于哪一层?

MoJieBlog opened this issue · comments

2019的最后一天。大家元旦快乐。

可以说是五层,也可以说是四层,四层时是把数据链路层和物理层整合为网际接口层。 TCP位于传输层,http位于应用层

一般意义的话是分为四层,分别是:应用层、传输层、网络层、数据链路层。TCP、UDP位于传输层,Http位于应用层。如果分为五层的话,多了个物理层

四层
应用层 传输层 网络层 数据链路层
http是 应用层 tcp 是传输层 ip是网络层
http 每次请求 需要 三次握手四次挥手
三次握手
第一次 客户端发送seq 确定了 客户端的 发送能力 和服务端的接收能力
第二次 服务端返回 seq 和 ack 客户端确认了自己的发送能力和接收能力
第三次 客户端发送 ack 服务端确定了自己的发送能力
由此进行数据传输
tpc断开时 需要四次挥手
第一次 客户端发送 fin 给服务端,第二次服务端收到 返回ack 等于 甲乙通话中,甲告诉乙我已经说完了,乙说我知道了
然后中间可能还有传输内容 乙还有话对甲说
第三次 服务端发送fin给客户端 第四次 客户端发送ack给服务端 等于 乙告诉甲 我要说的话说完了,甲说知道了, 由此双方挂断电话

tcp是基于连接的 所以相对可靠, udp是直接发送 速度快但是不可靠
tcp可靠基于三次握手和四次挥手,和ack(回执机制) 如果客户端给服务端发送数据后没收到回执,会在一定条件下重复发送, 并且他们在连接过程中中断 又会重新三次握手

http1.1 引入了 keepalive机制 长连接 不必每次请求 都是三次握手四次挥手, 而是在超时时间内利用同一个 连接
http2.0 把基于文本传输改为基于二进制传输 多路复用

https 是在 http的基础上加上ssl 安全套接字 加入了认证加密 增加了一定的安全性,但也不是完全安全.在app中需要将https证书改为严格模式,并且要提前将证书放在客户端,如果放在服务端下证书有可能被人抓走. https 如果不是严格模式 也是可以进行抓包的

TCP/IP协议分为 应用层 传输层 网络层 网络接口层
TCP属于传输层
http属于应用层

TCP/IP协议分为 应用层 传输层 网络层 网络接口层
TCP属于传输层
http属于应用层