¿Qué es un puerto?

"Puerto" de computadora es la traducción del inglés puerto, que puede considerarse como la salida de comunicación entre la computadora y el mundo exterior. Entre ellos, los puertos en el campo del hardware

también se denominan interfaces, como puertos USB, puertos serie, etc. Los puertos en el campo del software generalmente se refieren a puertos de protocolo de comunicación en la red para servicios de conexión y servicios sin conexión. Es una estructura de software abstracta, que incluye algunas estructuras de datos y buffers de E/S (entrada y salida básica).

Primero puede comprender los protocolos orientados a la conexión y sin conexión.

Las características principales de los servicios orientados a la conexión son: Los servicios orientados a la conexión pasan por tres etapas: Antes de que los datos se transmitan. transferido, la conexión se establece primero. Después de establecer la conexión, luego se transmiten los datos. Después de transferir los datos, se libera la conexión. Los servicios orientados a la conexión pueden garantizar el orden de la transmisión de datos y la confiabilidad de la transmisión.

Las características de los servicios sin conexión son: los servicios sin conexión sólo tienen una etapa de transmisión de datos. Elimina gastos generales distintos de la comunicación de datos. Mientras la entidad emisora ​​esté activa, no es necesario que la entidad receptora también lo esté. Su ventaja es que es flexible, conveniente y rápido, y es particularmente adecuado para transmitir una pequeña cantidad de mensajes esporádicos. Sin embargo, los servicios sin conexión no pueden evitar la pérdida, duplicación o desorden de los mensajes.

Distinguir los conceptos de "servicios orientados a la conexión" y "servicios sin conexión". Un ejemplo particularmente simple y vívido es: hacer llamadas telefónicas y escribir cartas. Si dos personas quieren hablar por teléfono, primero deben establecer una conexión: marcar un número, esperar una respuesta antes de poder transferirse información entre sí y, finalmente, liberar la conexión: colgar el teléfono. Escribir

una carta no es tan complicado. Después de completar la dirección y el nombre, simplemente tírela al buzón y el destinatario la recibirá. El protocolo TCP/IP no tiene conexión en la capa de red (los paquetes de datos solo se envían a Internet, cómo se transmiten, llegan y si llegan son administrados por el equipo de red). El "puerto" es el contenido de la capa de transporte y está orientado a la conexión. Los puertos inferiores a 1024 en el protocolo tienen definiciones exactas y corresponden a algunos servicios comunes en Internet.

Estos servicios comunes se pueden dividir en dos tipos: usar puertos TCP (orientados a conexión, como hacer llamadas telefónicas) y usar puertos UDP (sin conexión, como escribir cartas).

Un puerto de comunicación en una red que puede ser nombrado y direccionado es un recurso asignable del sistema operativo. Según el protocolo de siete capas de red OSI (Modelo de referencia de interconexión de sistemas abiertos), la mayor diferencia entre la capa de transporte y la capa de red es que la capa de transporte proporciona capacidades de comunicación de procesos. La dirección final de la comunicación de la red incluye no solo la dirección del host. , pero también algún tipo de identificador que describe el proceso. Por tanto, el puerto de protocolo propuesto por el protocolo TCP/IP puede considerarse como un identificador del proceso de comunicación de la red.

Después de que la aplicación (generalmente llamada proceso después de cargarse en la memoria y ejecutarse) establece una conexión (vinculación, enlace) con un determinado puerto a través de una llamada al sistema,

el transporte La capa los pasa al puerto. Los datos son recibidos por el proceso correspondiente y los datos enviados por el proceso correspondiente a la capa de transporte salen de este puerto. En la implementación del protocolo

TCP/IP, las operaciones de puerto son similares a las operaciones de E/S generales. Obtener un puerto mediante un proceso equivale a obtener una

I/ local y única. O archivo. Similar a los descriptores de archivos, puede acceder a ellos utilizando métodos normales de lectura y escritura. Cada puerto tiene un descriptor entero llamado número de puerto, que se utiliza para distinguir diferentes puertos. Dado que los protocolos TCP y UDP de la capa de transporte TCP/IP son dos módulos de software completamente independientes, sus respectivos números de puerto también son independientes entre sí. Por ejemplo, TCP tiene un número de puerto 255 y UDP también puede tener un número de puerto 255. No hay conflicto entre los dos.

Existen dos métodos básicos de asignación de números de puerto: el primero se llama asignación global, que es un método de asignación centralizada que está unificado por una agencia central reconocida y autorizada según las necesidades del usuario. al público El segundo tipo es la asignación local, también conocida como conexión dinámica, es decir, cuando el proceso necesita acceder al servicio de la capa de transporte, se aplica al sistema operativo local y el sistema operativo devuelve el número de puerto único local. Luego, el proceso llama al sistema apropiado

para conectarse al puerto (vinculación, vinculación). La asignación de números de puerto TCP/IP combina los dos métodos anteriores. El número de puerto se divide en dos partes y una pequeña cantidad se utiliza como puerto reservado y se asigna al proceso de servicio de manera global. Cada servidor estándar tiene un puerto reconocido globalmente llamado puerto público. Incluso en máquinas diferentes, los números de puerto son los mismos. Los puertos restantes son puertos libres y se asignan localmente

. TCP y UDP estipulan que los puertos menores a 256 se pueden utilizar como puertos reservados.

Los números de puerto se pueden dividir en tres categorías:

(1) Puertos conocidos: del 0 al 1023, están estrechamente vinculados a algunos servicios. Normalmente la comunicación en estos puertos indica claramente el protocolo de un determinado servicio. Por ejemplo: el puerto 80 es siempre comunicación HTTP.

(2) Puertos Registrados: del 1024 al 49151. Están vagamente vinculados a algunos servicios. Esto significa que hay muchos servicios vinculados a estos puertos, que también se utilizan para muchos otros fines. Por ejemplo: muchos sistemas manejan puertos dinámicos que comienzan alrededor de 1024.

(3) Puertos Dinámicos y/o Privados: del 49152 al 65535. En teoría, estos puertos no deberían asignarse al servicio. En la práctica, a las máquinas se les suelen asignar puertos dinámicos a partir de 1024. Pero hay excepciones: el puerto RPC de SUN comienza en 32768

.

Los administradores del sistema pueden "redireccionar" puertos:

Una técnica común es redirigir un puerto a otra dirección. Por ejemplo, el puerto HTTP predeterminado es 80 y muchas personas lo redireccionan a otro puerto, como el 8080. Si esto cambia, debería utilizar esta dirección: 8080/net/port.htm para acceder a este artículo (por supuesto, esto es sólo un ejemplo teórico).

La redirección se implementa para ocultar el puerto predeterminado reconocido y reducir la tasa de daño. De esta forma, si alguien quiere atacar un puerto predeterminado reconocido, primero deberá realizar un escaneo de puertos. La mayoría de las redirecciones de puertos son similares a los puertos originales. Por ejemplo, la mayoría de los puertos HTTP se cambian de 80: 81, 88, 8000, 8080, 8888. De manera similar, el puerto POP es originalmente 110, pero a menudo se redirige al 1100. También hay muchos casos en los que se seleccionan números con especial significado en estadística, como 1234, 23456, 34567, etc. Mucha gente tiene otras razones para elegir números impares, 42, 69, 666, 31337. Recientemente, cada vez más troyanos de acceso remoto (RAT) utilizan el mismo puerto predeterminado.

Por ejemplo, el puerto predeterminado de NetBus es 12345. Blake R. Swopes señaló que hay otra razón para usar puertos redirigidos. En los sistemas UNIX, si desea escuchar puertos por debajo de 1024, necesita privilegios de root. Si no tiene privilegios de root y desea abrir un servicio web, debe instalarlo en un puerto superior. Además, algunos cortafuegos de ISP bloquearán el tráfico en puertos bajos, por lo que incluso si eres propietario de toda la máquina, tendrás que redirigir el puerto.