计算机网络-TCP/IP协议族

一系列协议所组成的一个网络分层模型。


为什么要分层

由于现实网络的不稳定性以及不可靠性,所以需要将大数据进行分块传输,才能保障传输效率。但是应用层有许多协议,所有的协议都可能需要分块传输以及稳定传输等众多功能需求,所以为了能够复用一部分相同或者相似的功能,我们使用了分层,方便各个功能模块的解耦和复用。

如果网络能够稳定的话,那么分成两层也就够了。一层为应用层 HTTP,第二层就直接可以是数据链路层了。


四层网络模型

层级 协议
应用层 - HTTP
- FTP
- DNS
传输层 - TCP
- UDP
网络层 - IP
数据链路层 - 以太网
- Wi-Fi

应用层负责完成我们所期望的实际的工作的内容。

但是因为现实网络的不稳定性以及不可靠性,所以有了传输层来用于分块传输。但是由于有些数据在网络不稳定的时候即使丢失了也不需要进行重传,所以在 TCP 之外有了一个 UDP,他们并行存在,都位于传输层。如果所有的协议都不需要重传的话,那么也就不需要这一层了。

但是为了对他们有一个共同的下位支持,所以分离出来了一个有着 IP 协议的网络层。网络层负责以最小的单位发送和接受上层分块的网络数据以及选址、路由等最下层的网络方面工作。这些工作主要就是 IP 协议做的。

最下层的数据链路层可以看作是一个物理级别的支持,当然也不止是纯粹的物理设备,比如还有线缆标准,无线网络标准等等用于保障数据的发送和接受不会出现歧义的内容。


七层网络模型

由 OSI 制定。较四层模型更加的细致。


TCP 连接

什么是连接

通信双方建立确认「可以通信」,不会将对方的消息丢弃,即为「建立连接」。

通过双方建立连接,可以使得双方认识彼此,在以后的通信中可以不用每次确认身份而直接开始交流。

建立连接后,双方会各自确定一个端口,当使用该端口,发送或接受信息时,就可以直接确认对方的身份了。

将端口更加具象化后,就成为了 Java 中的 Socket(套接字)类,即 Java 对于 TCP 的端口的一个具体的实现。

Socket n. 插口

TCP 连接的建立与关闭

建立:三次握手

  • 开启双方的认识和交流。

  • 开启端口。

关闭:四次挥手

  • 忘记对方,结束双方的交流。

  • 释放资源,关闭端口。

长连接

为什么要长连接

因为移动网络并不在 Internet 中,而是在运营商的内网,并不具有真正的公网 IP, 因此当某个 TCP 连接在一段时间不通信之后,网关会出于网络性能考虑而关闭这条 TCP 连接和公网的连接通道,导致这个 TCP 端口不再能收到外部通信消息,即 TCP 连接被动关闭。

长连接的实现方式:心跳

在一定的时间间隔之内,不断的使用 TCP 的连接去发送一些超级短的且没有意义的消息到对方。目的是确认双方之间的连接是通畅的,让网关不能将自己定义为「空闲连接」,从而防止网关将自己的连接关闭。


计算机网络-TCP/IP协议族
https://luoyuy.top/posts/92834ef31539/
作者
LuoYu-Ying
发布于
2022年12月27日
许可协议