Moosphan / Android-Daily-Interview

:pushpin:每工作日更新一道 Android 面试题,小聚成河,大聚成江,共勉之~
5.47k stars 776 forks source link

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

Open MoJieBlog opened 4 years ago

MoJieBlog commented 4 years ago

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

ClericYi commented 4 years ago

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

ghl7231699 commented 4 years ago

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

manondidi commented 4 years ago

四层 应用层 传输层 网络层 数据链路层 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 如果不是严格模式 也是可以进行抓包的

mlinqirong commented 2 years ago

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

mlinqirong commented 2 years ago

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