K.I.S.S---Keep IT Simple,Stupid!    人生苦短,我用Python

网站端口号到底代表什么意思/进程如何监听端口号?

 
分类: 问答 2024年8月16日
简介:从技术上讲,端口号是16位的无符号整数,这意味着端口号的取值范围是0到65535。这个数字嵌入到网络数据包的传输层报头中,通常是TCP报头或UDP报头。

端口号是一个16位的数字,范围从0到65535。它用于区分同一台计算机上运行的不同网络服务或应用程序。网络端口号并不是物理上存在于网卡上,而是一个软件层面的概念。它存在于操作系统的网络堆栈中,用于管理和区分网络通信中的不同服务或应用程序。

网络端口号与网卡的关系

  • 网卡(Network Interface Card, NIC):这是计算机上的物理设备,负责在计算机和网络之间发送和接收数据。它处理的是数据链路层的事务,主要涉及以太网帧的传输和接收。
  • 操作系统的网络堆栈:当数据包通过网卡进入计算机时,网卡将数据包传递给操作系统的网络堆栈。网络堆栈处理数据包的各个协议层(从数据链路层到应用层),最终在传输层根据数据包中的端口号将数据路由到相应的进程或应用程序。

端口号的分类

  • 公认端口(Well-known Ports):范围为0-1023,这些端口号通常由常见的协议和服务使用,如HTTP(80)、HTTPS(443)、FTP(21)、SMTP(25)等。
  • 注册端口(Registered Ports):范围为1024-49151,这些端口号可用于用户注册的应用程序和服务,但不受官方的严格管理。
  • 动态/私有端口(Dynamic/Private Ports):范围为49152-65535,这些端口号通常由操作系统动态分配,用于短暂的、临时的通信。

 

底层机制

  • 内核网络栈处理:当数据包到达网络接口时,操作系统的内核网络栈负责将数据包解包并检查目标端口号。内核会查找绑定到该端口的套接字,并将数据传递给相应的进程。
  • 套接字与端口的映射:内核维护一个端口到套接字的映射表,用于快速查找哪个套接字监听哪个端口。
  • 监听端口是通过绑定套接字到特定的IP地址和端口号实现的。进程通过调用bind()listen()accept()等系统调用来处理网络连接和数据。
  • 操作系统内核负责管理端口到套接字的映射,将数据包路由到正确的进程。



注:当前文章会不定期进行更新。如果您对本文有更好的建议,有新资料推荐, 可以点击: 欢迎分享优秀网站
这个位置将来会放广告

我想等网站访问量多了,在这个位置放个广告。网站纯公益,但是用爱发电服务器也要钱啊 ----------狂奔的小蜗牛