• 端口的理解


    1、端口是什么

    端口是面向连接服务(TCP)和无连接服务(UDP)的通信协议端口,是一种抽象的软件结构;端口是计算机软件层面与外界通讯交流的出入口。

    2、端口的分类

    从端口的性质来分,可以分为以下三类: 
    1)公认端口(Well Known Ports):这类端口也常称之为”常用端口”。这类端口的端口号从0到1023,它们紧密绑定于一些特定的服务。通常这些端口的通信明确表明了某种服务的协议,这种端口不可再重新定义它的作用对象。例如:80端口实际上总是HTTP通信所使用的,而23号端口则是Telnet服务专用的。这些端口通常不会被像木马这样的黑客程序利用。 
    2)注册端口(Registered Ports):端口号从1024到49151。它们松散地绑定于一些服务。也是说有许多服务绑定于这些端口,这些端口同样用于许多其他目的。这些端口多数没有明确的定义服务对象,不同程序可根据实际需要自己定义。 
    3)动态和/或私有端口(Dynamic and/or Private Ports):端口号从49152到65535。理论上,不应把常用服务分配在这些端口上。实际上,有些较为特殊的程序,特别是一些木马程序就非常喜欢用这些端口,因为这些端口常常不被引起注意,容易隐蔽。 
    从提供的服务方式来分,端口可分为面向连接和无连接,即TCP/UDP,面向连接和无连接服务就类似于打电话和写信,打电话需要连接而写信只需要你把信件投递出去就可以不管了。

    3、端口的作用/理解

    一台机器上面有很多服务,一个请求端会建立很多请求连接,那怎么区分这些服务和连接呢,所以出现了端口,相对于服务端,端口是用来区分不同服务,每个服务对应一个不同的端口;相对于客户端,端口是用来区分哪个连接,服务端知道回传数据给谁。端口信息会携带在TCP/UDP协议的报文信息中,包括目标IP、目标端口、本地IP、本地端口,所以服务端/客户端之间需要通信,服务端必须有一个对应的开放端口。只有处于listen状态的端口才能接受新的链接请求,当有新的请求到达并且被接受,系统会创建一个处于ESTABLISHED状态的链接。

    举个栗子: 
    使用以下命令查看当前的连接: 
    netstat -a -n -f inet 
    我们以结果集中存在的一个端口5900来分析: 
    没有连接的时候,结果如下: 
    tcp4 0 0 *.5900 *.* LISTEN 
    通过telnet 127.0.0.1 5900建立一个连接,结果集变成如下:

    tcp4       0      0  127.0.0.1.5900         127.0.0.1.52277        ESTABLISHED
    tcp4       0      0  127.0.0.1.52277        127.0.0.1.5900         ESTABLISHED
    tcp4       0      0  *.5900                 *.*                    LISTEN   
    • 1
    • 2
    • 3

    当再通过telnet 127.0.0.1 5900建立一个连接,结果集变成如下:

    tcp4       0      0  127.0.0.1.5900         127.0.0.1.52318        ESTABLISHED
    tcp4       0      0  127.0.0.1.52318        127.0.0.1.5900         ESTABLISHED
    tcp4       0      0  127.0.0.1.5900         127.0.0.1.52277        ESTABLISHED
    tcp4       0      0  127.0.0.1.52277        127.0.0.1.5900         ESTABLISHED
    tcp4       0      0  *.5900                 *.*                    LISTEN 
    • 1
    • 2
    • 3
    • 4
    • 5

    可以看见服务端端口一直不变,请求端会分配不同的端口号

    4、端口常用指令

    netstat查看端口使用情况 
    常用参数作用: 
    n表示不查询dns 
    t表示tcp协议 
    u表示udp协议 
    p表示查询占用的程序 
    l表示查询正在监听的程序

    查看端口使用情况:

    netstat –apn
    • 1

    查看进程使用端口:

    netstat –apn | grep PID/进程名称
    • 1

    查看端口被哪个进程使用

    netstat -apn | grep 端口号
    lsof -i:端口号
    • 1
    • 2

    参考文章:

    http://whx4j8.github.io/2016/03/16/tcp%E9%93%BE%E6%8E%A5%E7%AB%AF%E5%8F%A3%E7%9A%84%E7%90%86%E8%A7%A3/ 
    http://baike.baidu.com/link?url=jGDV2RyO0U_KoFIKI_dSwrf4qPnhRmwaeC9kFJsvciMcY1S0WbxnI3viJ_88dc463nUa_V829B0ktdUKvkbtfq#2

  • 相关阅读:
    Ueditor之SAE移植
    SAE flask及其扩展 bug指南
    SAE 安装未包含的第三方依赖包
    Bootstrap 和 LESS
    Device.js——检测设备平台、操作系统的Javascript 库
    Flask 富文本编辑器
    DDoS攻击
    WPF之数据绑定
    参数测试
    总结 一下UML 类图的关系
  • 原文地址:https://www.cnblogs.com/namehou/p/8468634.html
Copyright © 2020-2023  润新知