为什么要分层?
网络不稳定,传输失败会发生,为了稳定。
因为网络是不稳性的, 而且网络中的数据可能会很大,如果中途传失败了则还得重头开始将此数据传一遍,那网络的利用率是极低的
为什么有HTTP:
为什么有TCP? 1、拆分:将数据进行分段进行传输,所以可以将大数据拆成几段。
处理包的分发。数据拆分及重试。 2、重传:
比如说1、2、4传输成功了,但是!!3失败了,那只要重新传第3块数据既可,如果不分块那等于得重传整个数据,效率大大降低,我们知道TCP是可靠的传输,如果传输失败了则会重新传。
而对应的不可靠传输则为UDP,比如我们玩游戏如果因为网络原因卡住了,待网络正常之后,卡掉的那部分是不需要重新再传一遍的。
为什么有IP?路由、网络寻址、数据传输。 这一层是不会管数据有没有传成功了。
为什么有LINK? 数据链路层,为网络提供实质的支持,如以太网(双绞线。但还有电视盒子网,线材不一样)、WIFI,比较好理解
什么叫做连接
通信双方建立确认「可以通信」,不会将对方的消息丢弃,即为「建立连接」。
IP无状态,TCP有状态。
让我知道你是谁就是连接。
Java里的Socket,连接成功返回Socket。
长连接
哪怕client不主动申请断开,基站也会强制断开。
为什么要⻓连接?有些场景需要不断开,比如两人需要保持连接聊天、更常见的是消息推送。
因为移动⽹络并不在 Internet 中,⽽是在运营商的内网,并不具有真正的公网 IP,因此当某个 TCP 连接在一段时间不通信之后,⽹关会出于⽹络性能考虑⽽关闭这条 TCP 连接和公⽹的连接通道,导致这个TCP端⼝不再能收到外部通信消息,即 TCP 连接被动关闭。
⻓连接的实现方式?
心跳。即在一定间隔时间内,使用 TCP 连接发送超短无意义消息来让⽹关不能将⾃⼰定义为「空闲连接」,从而防止⽹关将⾃⼰的连接关闭。