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都不一样,虽然都具有唯一性,但端口号从始至终都是一个样子从不改变的。

相关推荐
皓月盈江3 分钟前
Linux Debian13安装virtualbox-7.2_7.2.6-172322-Debian-trixie虚拟机平台无法运行的解决方法
linux·debian·虚拟机·virtualbox·debian13·virtualbox7.2.6·kernel driver
江湖有缘1 小时前
基于华为openEuler部署WikiDocs文档管理系统
linux·华为
Web项目开发2 小时前
Dockerfile创建Almalinux9镜像
linux·运维·服务器
pride.li9 小时前
开发板和Linux--nfs服务挂载
linux·运维·服务器
looking_for__9 小时前
【Linux】应用层协议
linux·服务器·网络
BB_CC_DD10 小时前
Linux截图工具(ubuntu18.04+flameshot(火焰截图))
linux
云泽80810 小时前
不止是命令:Linux 高频指令实战 + 芯片架构底层逻辑
linux·运维·服务器
j_xxx404_11 小时前
Linux:基础IO
linux·运维·服务器
以太浮标11 小时前
华为eNSP模拟器综合实验之- VLAN终结实践案例分析
网络·计算机网络·华为·智能路由器
wdfk_prog11 小时前
[Linux]学习笔记系列 -- [drivers][i2c]i2c-dev
linux·笔记·学习