工作中需要的计算机网络知识

78 阅读3分钟

为什么没有 100% 可靠的通信协议?

比如 A 和 B 进行通信,A 向 B 发送一条消息,B 再收到后再回复 A 一条消息,表示自己收到了,但是 B 无法 100% 保证这条消息可以被 A 收到,因为传输的过程中可能会遇到各种各样的问题。即使我们通过各种约定来多次确认,或者其他方式,我们最终只能把可靠率提高,但是无法达到 100%。

电话是怎么工作的?

简单来说,我们家里有座机,当我们做拨号的时候,我们是向邮电局传递了信息,再由邮电局的电路传递到我们的拨打的目标,其中里面最重要的概念是:电话是基于物理电路的,所以如果没有邮电局,或者邮电局电路出了故障,那么我们就无法拨打电话了,也就是传统的电路交换网络

计算机网络是基于电路交换网络的吗?

不是,比如我们用一台电脑,去访问某个服务器,我们的电脑和服务器之间并没有一条真实的线路连接,取而代之的是一种叫虚电路的概念。假设我们在家里访问淘宝网,当我们敲下回车的时候,那么我们就相当于发送了一个报文,报文中有淘宝网的 IP 地址和端口,就相当于说明了我们的目标地点,那这个报文是直接就到达了淘宝的服务器吗?并不是,我们会先找到最近的网络设备,一般是路由器,而路由器也遵循着就近原则,他会发送给我们的网络供应商,以此类推,这种传递的过程,又被称为一跳,而整个过程叫做分组交换,因为我们与目标点并没有实际的线路连接,而是通过一个个设备交换传输过去。而所有设备都遵循的这种协议,就是 IP协议

为什么需要 TCP 协议?

计算机网络分成了许多层,其目的是为了让每一个各司其职,只完成自己负责的工作。在我们的日常工作中,一般需要了解传输层应用层

我们都知道一个网络设备,会有一个 IP 地址,那么当网络层的数据传输到这个 IP 地址的时候,我们需要通过端口来区分这个数据具体是给这个设备中的哪个应用程序,把数据分发到端口的这层,就是传输层,我们分为 TCP/UDP。

为什么有了 TCP 之后还需要 HTTP?

就像我们有了 C 语言后还需要 Java,TCP 确实屏蔽了底层的一些细节,但是 TCP 是基于流的,如果要传输数据的话,没有办法很好地区分数据的边界,需要自行约定一些解析规则,总之就是在某些场景下没有那么好用,所以才有了其他协议,但是非常多的协议都是基于 TCP 的。

什么是 Socket 编程?

我们有了网络层负责 IP 传输,有了 TCP 负责端口传输,那么 Socket 就是调用操作系统提供的能力,能够将某个 IP 的某个端口,与另一个 IP 的某个端口进行连接,从而收发数据。

待补充