通信网络技术基础知识(网络通信是通过什么实现的)

1.2台主机如何通信在这里,我们不讨论两台主机是如何网络连接的,而是研究两台主机建立网络连接后如何通过网络进行通信。 如果你学到了《计算机网络》,你就会知道下图所示的“数据在图层之间传播的过程”吧。 此图从计算机网络协议栈的角度说明了两台计算机上的两个进程是如何通信。 既然是共识,共识就是规则,是抽象的。 在此图中,我们只知道数据是如何抽象地在网络协议层间流动的,而我们知道两台主机之间的数据传输实质上是通过它们之间的“物理传输介质”实现的。 只要简单地理解为网线就可以了。 因为这不是我们要讨论的重点。 但是,在一个主机内部,我的APP应用程序的数据是如何流向网线的? 从网线获取的数据是怎么来我的APP应用的? 对这两个问题的回答从这张图中得不到。 这是因为与操作系统知识有关。

2 .流程数据是如何出现在网上的(基于Linux )。该图反映了操作系统的知识。 简单来说,用户进程将发送的数据放在用户缓冲区中,然后调用系统并调用write进入内核。 进入内核后的事情由操作系统负责。 操作系统将您的用户缓冲区中的数据复制到内核缓冲区,将内核缓冲区中的数据复制到网卡,然后通过“网线接口”传递到网络线路。 用户进程接收数据时,将进程反向即可。 请告诉我这张图来自哪本书。

3 .插座(插座)是什么? 首先看看如果没有插座会怎么样。 可见程序员将直接面对这些复杂的协议。 也就是说,效率低下,容易出错。

有了插座之后,是这样的:

因此,套接字是APP应用层和TCP/IP协议系列之间的软件抽象层,是一组接口。 在设计模式中,套接字其实是门模式,把复杂的TCP/IP协议族隐藏在Socket接口后面,用户只需调用简单的套接字提供的接口,复杂的网络协议就是套接字实现的。 不需要深入理解tcp/udp协议。 套接字已经封装。 只要按照套接字的规定编程,编写的程序当然就遵循网络协议的标准。

4 .用户进程和套接字的关系是,为了实现两台主机上的两个进程之间的通信,我们的用户进程或APP应用程序只是与套接字进行交互。 套接字发送用户进程的数据,接收所需的数据并将其带到用户进程中。所以说,人们常说的IO模型,BIO、NIO和AIO,select、poll和epoll这些概念,都是用户进程和套接字打交道的方式,人们探究的就是这两者之间怎么打交道才能使得用户进程更加高效。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注