传输层——再谈端口号

小白苦学IT的博客主页⭐

初学者必看:Linux操作系统入门⭐

代码仓库:Linux代码仓库⭐

❤关注我一起讨论和学习Linux系统

前言

在计算机网络中,端口号扮演着至关重要的角色。尤其在传输层,端口号成为了区分不同应用程序或服务的唯一标识。通过端口号,操作系统能够准确地将数据流分配给相应的进程或服务。这种机制保证了网络数据的准确传输和高效处理。

再谈端口号

端口号(Port)标识了一个主机上进行通信的不同的应用程序;

在TCP/IP协议中, 用 "源IP", "源端口号", "目的IP", "目的端口号", "协议号" 这样一个五元组来标识一个通信(可以通过netstat -n查看);

端口号范围划分

端口号的范围被划分为几个不同的区间,每个区间都有其特定的用途和权限要求。通常,0到1023的端口号被称为知名端口号或系统端口号,这些端口号被预留给一些特定的服务使用,如HTTP、FTP等。而1024到49151的端口号被称为注册端口号,这些端口号可以由用户自行定义,但需要确保不与已有的服务冲突。49152到65535的端口号则被称为动态端口号或私有端口号,这些端口号通常用于临时性的通信需求。

认识知名端口号

有些服务器是非常常用的, 为了使用方便, 人们约定一些常用的服务器, 都是用以下这些固定的端口号:

  • ssh服务器, 使用22端口
  • ftp服务器, 使用21端口
  • telnet服务器, 使用23端口
  • http服务器, 使用80端口
  • https服务器, 使用443

执行下面的命令, 可以看到知名端口号

cat /etc/services

我们自己写一个程序使用端口号时, 要避开这些知名端口号.

两个问题

         1.一个进程是否可以bind多个端口号?

答案是肯定的。一个进程可以绑定多个端口号,以提供不同的服务或处理不同的通信需求。例如,一个Web服务器进程可能同时监听80端口(用于HTTP服务)和443端口(用于HTTPS服务)。

        2.一个端口号是否可以被多个进程bind?

通常情况下,一个端口号在同一时刻只能被一个进程绑定。这是为了确保数据传输的准确性和一致性。如果有多个进程试图绑定同一个端口号,操作系统通常会抛出错误或拒绝绑定请求。然而,在某些特殊情况下,如使用了端口共享技术或某些特定的网络编程模式,可能会实现多个进程共享同一个端口号的情况。但这种情况相对较少见,且需要谨慎处理以避免潜在的问题。

两个重要命令

在Linux系统中,netstatpidof是两个非常实用的命令,分别用于查看网络状态和查找进程的进程号。以下是这两个命令的基本用法和一些示例。

netstat命令

netstat命令用于显示网络连接、路由表、接口统计等网络相关信息。其基本语法为:

netstat [选项]

 

下面是一些常用的选项:

  • -a:显示所有连接和监听端口。
  • -t:显示TCP连接。
  • -u:显示UDP连接。
  • -n:以数字形式显示IP地址和端口号,而不是主机名和服务名。
  • -p:显示每个连接的进程ID和进程名称。
  • -l:显示监听状态的连接。
  • -r:显示路由表。
  • -s:显示网络接口统计信息。
示例:
  1. 显示所有连接和监听端口:

    netstat -a

  2. 显示TCP连接:

    netstat -t

  3. 显示UDP连接:

    netstat -u

  4. 显示与连接相关的进程:

    netstat -p

  5. 以数字形式显示IP地址和端口号:

    netstat -n

你可以根据需要组合这些选项,以便查看所需的信息。例如,如果你想查看所有TCP连接以及与之相关的进程,你可以使用:

netstat -tp

pidof命令

pidof命令用于查找指定名称的进程的进程号(PID)。其基本语法为:

pidof [选项] 进程名称

 

下面是一些常用的选项:

  • -s:仅返回一个进程号。
  • -c:仅显示具有相同“root”目录的进程。
  • -x:显示由脚本开启的进程。
  • -o:指定不显示的进程ID。
示例:

查找名为“gedit”的进程的PID:

pidof gedit

仅返回名为“firefox”的一个进程号(如果有多个):

pidof -s firefox

请注意,pidof命令只返回与指定进程名称匹配的PID,如果有多个进程具有相同的名称,它会返回所有这些进程的PID(除非使用了-s选项)。

相关推荐

  1. 小米汽车

    2024-04-21 14:56:04       43 阅读
  2. 敏捷开发

    2024-04-21 14:56:04       19 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-21 14:56:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-21 14:56:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-21 14:56:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-21 14:56:04       18 阅读

热门阅读

  1. cpp中的右值引用(&&)及其相关拓展知识

    2024-04-21 14:56:04       15 阅读
  2. 两个表归并为有序表

    2024-04-21 14:56:04       13 阅读
  3. vscode远程ubuntu16安装失败

    2024-04-21 14:56:04       12 阅读
  4. K8S之Resource Quotas

    2024-04-21 14:56:04       36 阅读
  5. 李沐47_转置卷积

    2024-04-21 14:56:04       50 阅读
  6. Redis中的Lua脚本(一)

    2024-04-21 14:56:04       16 阅读
  7. IO系列-2 Protobuf使用说明

    2024-04-21 14:56:04       18 阅读
  8. 什么是 jdbc,及其的作用

    2024-04-21 14:56:04       16 阅读