Linux 的端口和套接字

22 篇文章 0 订阅
16 篇文章 0 订阅

端口

Linux 的端口是一个逻辑概念,是传输层协议的内容,其由 TCP/IP 协议定义,是一个 0–65535 之间的一个2字节16位的整数。

端口号(port)用来标识一个进程, 告诉操作系统当前的数据要交给哪一个进程来处理,IP地址 + 端口号能够标识网络上的某一台主机的某一个进程;一个进程可以绑定多个端口号,但是一个端口号不能被多个进程绑定,一个端口号只能被一个进程占用。

传输层协议(TCP和UDP)的数据段中有两个端口号, 分别叫做源端口号和目的端口号,就是在描述 “数据是谁发的, 要发给谁”。

端口号范围划分

  • 0 - 1023:“固定”端口,指一些常用的软件或者 TCP/IP 协议中确定和公布的,通常来说不会被其他程序使用。
  • 1024 - 65535:操作系统动态分配的端口号, 客户端程序的端口号就是由操作系统从这个范围分配。

Linux 中的常见“固定”端口和对应的协议

协议端口号
FTP21
TELNET23
TFTP69
SNMP161
SSH22
HTTP80
SMTP25
DNS53
HTTPS443

可用如下命令查看“固定”端口

cat /etc/services

netstat
netstat 是一个用来查看网络状态的重要工具.
语法:netstat [选项]
功能:查看网络状态
常用选项

  • n 拒绝显示别名,能显示数字的全部转化成数字
  • l 仅列出有在 Listen (监听) 的服务状态
  • p 显示建立相关链接的程序名
  • t (tcp)仅显示tcp相关选项
  • u (udp)仅显示udp相关选项
  • a (all)显示所有选项,默认不显示LISTEN相关选项

pidof
查看服务器的进程 id 。
语法:pidof [进程名]
功能:通过进程名, 查看进程id

套接字

套接字(Sockets),即网络进程的进程 ID ,和普通的进程 ID 不同,网络进程的ID 是由运行这个进程的计算机的 IP 地址以及这个进程使用的端口(Port)组成的,在同一台计算机上,一个端口只能分配给一个进程,这样就可以确定网络中计算机上的一个进程。

套接字的组成

在这里插入图片描述
可以使用 netstat-all 命令来查看当前系统中网络应用进程的套接字和端口。

Linux 的套接字包括了BSD套接字和INET套接字两部分。

BSD套接字接口是Linux套接字的基础,套接字可以看成一种特殊的管道, BSD套接字通常包括以下几种类型:

  • Steam(数据流):该套接字提供了两个方向的序列数据流,这些数据流保证在传输过程中数据不丢失、不破坏或不重复,数据流套接字由 Internet(INET)地址族的 TCP 协议所支持。
  • Datagram(数据报):该套接字也提供两个方向上的数据传送,但不像数据流套接字,它们不提供消息到达的保证。即使到达也不保证这些数据报按照一定的顺序到达(或丢失、重复)。这种类型的套接字由 Internet 地址族的 UDP 协议所支持。
  • Raw(原始套接字):该套接字允许进程直接访问底层协议。例如,可以为以太网设备打开一个 Raw Socket,以使用原始 IP 数据进行传输。
  • Reliable Delivered Message(可靠传递消息):该套接字非常类似于数据报套接字,但是可保证数据的可靠传输。
  • Sequenced Packets(顺序数据报):这个套接字类似于数据流套接字,但数据包的大小固定。
  • Packet(包):这不是标准的 BSD 套接字类型,它是一个 Linux 特定的扩展,允许进程在设备层直接访问 Packet。

在 Linux 网络编程中最常使用的是支持 TCP 协议的数据流套接字、支持 UDP 协议的数据报套接字和可以直接对底层协议 IP 进行访问的原始格式套接字。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值