IP与进程

数据进入主机的内部是目的还是手段?

如上图所示,一个数据从主机A到主机B后,这个数据进入主机内部后,是如何让主机B进行运行和识别该数据,这个数据传输到主机B是手段还是目的?

举个例子,聊天是人在聊天,下载文件是人在使用计算机进行下载,浏览网页是人在浏览,那么人是如何知晓聊天记录以及送达,下载的文件是何时下载完毕,网页信息是如何让人查看到的。

同时,聊天包括聊天的过程,聊天软件的启动,下载文件的下载进度,网页信息的信息传达和网页的运行,都是一种进程的表现,所以换句话说,聊天是进程在维持聊天传输和接收聊天信息,下载的文件是进程在进行下载和保存,网页的打开和关闭是进程的开启和关闭。

所以数据的传输实质上是从主机A的某一个进程,将数据传输到主机B的某一个进程中,数据传输的本质就是进程和进程之间的数据传输。

所以,一个数据从主机A传输到主机B中,这个数据需要进入的是主机B的某一个接收该数据的进程中。

数据传输到主机并不是目的,而是一种手段,是让数据传输到 进程的手段。

如何标识主机的唯一性,和数据的唯一性?

如上所述,数据是进入到主机的某个进程中,那么在一个主机当中,进程有许多个,如何判断哪一个进程是该数据需要进入的呢?

其中,在之前的文章中已经说明过,IP地址是用来标识主机的唯一性

所以,也可以用一组数据来表示某个进程的唯一性!

端口号:

  • 端口号是一个 2 字节 16 位的整数。
  • 端口号用来标识一个进程,告诉操作系统,当前的这个数据要交给哪一个进程来处理。
  • IP 地址+端口号能够标识网络上的某一台主机的某一个进程。
  • 一个端口号只能被一个进程占用。

为了标识主机内部的进程,使用了端口号,端口号是传输层协议的内容;在传输层中,传输层的报头中会写上目的端口号,表示去哪一个端口,每一个进程都会绑定一个端口号,当数据报文抵达目标主机后,会把数据交给对应的端口 ,也就是对应的进程。

端口号范围划分:

  • 0-1023:知名端口号, HTTP,FTP,SSH 等这些广为使用的应用层协议,他们的端口号都是固定的。
  • 1024-65535: 操作系统动态分配的端口号,客户端程序的端口号,就是由操作系统从这个范围分配的。

为什么不用pid来表示进程的唯一性呢?

在之前的学习中,我们可以知晓,用来标识进程的不只是端口号,还有pid,那么为什么不适用pid来表示进程的唯一性,或者说,为什么不在网络传输中使用pid进行数据传输呢?

1、 如果使用pid表示唯一性是可以的,pid本身就有唯一性,但是pid在网络协议栈中充当进程唯一性也可以,但是pid是一个系统级别的概念,而端口号、传输等是网络级的概念,但是如果使用pid进行标识标识网络传输时,进程的唯一性,那么这就是系统级和网络级的强耦合。

强耦合也就是耦合度过高,就会给双方带来巨大的问题隐患,所以需要做到解耦!系统就是系统的,网络就是网络的,这样便于管理。

2、同时在系统当中,并不是每一个进程都想要进行网络通信,所以只有需要进行网络通信的进程才需要端口号,如果是使用pid作为进程进行网络通信的唯一性,那么就会导致根本分不清谁需要进行网络通信,而且pid是会发生变化的,一个进程在重启数次后,它每次的pid都不一样,虽然都具有唯一性,但端口号从始至终都是一个样子从不改变的。

相关推荐
远游客07132 分钟前
centos stream 8下载安装遇到的坑
linux·服务器·centos
马甲是掉不了一点的<.<3 分钟前
本地电脑使用命令行上传文件至远程服务器
linux·scp·cmd·远程文件上传
jingyu飞鸟4 分钟前
centos-stream9系统安装docker
linux·docker·centos
超爱吃士力架33 分钟前
邀请逻辑
java·linux·后端
fantasy_arch1 小时前
CPU性能优化-磁盘空间和解析时间
网络·性能优化
cominglately3 小时前
centos单机部署seata
linux·运维·centos
魏 无羡3 小时前
linux CentOS系统上卸载docker
linux·kubernetes·centos
CircleMouse3 小时前
Centos7, 使用yum工具,出现 Could not resolve host: mirrorlist.centos.org
linux·运维·服务器·centos
是Dream呀3 小时前
Python从0到100(七十八):神经网络--从0开始搭建全连接网络和CNN网络
网络·python·神经网络
木子Linux4 小时前
【Linux打怪升级记 | 问题01】安装Linux系统忘记设置时区怎么办?3个方法教你回到东八区
linux·运维·服务器·centos·云计算