포트의 프로토콜 포트
IP 주소를 집에 비유한다면 포트는 집으로 드나드는 문이다. 실제 집에는 문이 몇 개밖에 없지만 IP 주소에는 최대 65536(예: 2^16)개의 포트가 있을 수 있습니다! 포트는 0~65535(2^16-1) 범위의 정수인 포트 번호로 표시됩니다.
인터넷에서 각 호스트는 TCP/IP 프로토콜을 통해 데이터 패킷을 보내고 받습니다. 각 데이터 패킷은 대상 호스트의 IP 주소를 기반으로 인터넷에서 라우팅 선택을 수행하고 데이터 패킷이 전송됩니다. 원활하게 목적지 호스트로. 대부분의 운영 체제는 동시에 실행되는 여러 프로그램(프로세스)을 지원하는데, 동시에 실행되는 많은 프로세스 중 대상 호스트는 수신된 데이터 패킷을 어느 프로세스로 전송해야 할까요? 분명히 이 문제는 해결되어야 하며 포트 메커니즘이 도입됩니다.
로컬 운영 체제는 프로토콜 포트(종종 포트라고 부르는 프로토콜 포트)를 필요한 프로세스에 할당합니다. 각 프로토콜 포트는 80, 139, 445와 같은 양의 정수로 식별됩니다. , 등. 목적지 호스트가 데이터 패킷을 수신하면 메시지 헤더에 있는 목적지 포트 번호를 기준으로 해당 포트로 데이터를 전송하고, 이 포트에 해당하는 프로세스는 데이터를 수신하고 다음 패킷의 도착을 기다립니다. 데이터 세트. 이 시점에서 포트의 개념은 여전히 추상적으로 느껴지므로 저를 계속 따라오시고 물러나지 마십시오.
포트는 실제로 대기열입니다. 운영 체제는 각 프로세스에 서로 다른 대기열을 할당합니다. 매우 특별한 상황에서는 데이터 패킷이 대상 포트에 따라 해당 대기열로 푸시됩니다. 대기열이 오버플로될 수 있지만 운영 체제에서는 각 프로세스가 자체 대기열의 크기를 지정하고 조정할 수 있습니다.
데이터 패킷을 수신하는 프로세스는 자신의 포트를 열어야 할 뿐만 아니라 데이터 패킷을 보내는 프로세스도 포트를 열어야 합니다. 이러한 방식으로 소스 포트가 식별됩니다. 수신자가 성공적으로 패킷을 이 포트로 전송할 수 있도록 데이터 패킷을 전송합니다.
포트 세부 정보
각 네트워크의 서비스 기능이 다르기 때문에 호스트에 FTP와 WWW 서비스 중이 모두 있는 경우 처리를 위해 서로 다른 패킷을 서로 다른 서비스로 보내야 합니다. , 다른 사람이 보낸 데이터 패킷은 TCP의 포트 번호에 따라 FTP 서비스 또는 WWW 서비스에 의해 처리됩니다.
· 각 TCP 연결은 한쪽 끝(일반적으로 클라이언트)에서 요청을 시작해야 합니다. 이 포트는 일반적으로 1024보다 큰 값으로 무작위로 선택됩니다(0-1023이 일반적으로 웰 포트로 사용되기 때문). 알려진 서버이며 FTP, HTTP, SMTP 등) 포트 번호를 계속 진행하세요! TCP 패킷은 SYN 플래그를 설정합니다! 이것은 전체 연결의 첫 번째 패킷입니다.
· 다른 쪽 끝(일반적으로 서버)이 이 요청을 수락하면(특수 서비스는 FTP 포트 21과 같은 특수 포트에서 수행되어야 함) 전체 연결의 두 번째 패킷이 요청 측으로 다시 전송됩니다! SYN 플래그 외에 ACK 플래그도 설정되고 동시에 로컬 측에서 연결 요구를 기다리는 리소스가 생성됩니다.
· 그러면 요청 측이 1위를 차지합니다. 응답 패킷 후에는 확인 패킷으로 상대방에게 응답해야 합니다. 이때 패킷에는 ACK 플래그만 전달됩니다(사실 후속 연결의 모든 패킷에는 ACK 플래그가 전달되어야 합니다). p>
· 서버가 요청 측으로부터 승인(ACK) 패킷(즉, 전체 연결의 세 번째 패킷)을 수신한 후에만 두 끝 사이의 연결이 공식적으로 설정될 수 있습니다. 이것이 소위 TCP 연결의 '3방향 핸드셰이크' 원리입니다.
3방향 핸드셰이크 후 클라이언트 측 포트는 일반적으로 1024보다 높은 포트를 임의로 획득합니다. 호스트 측의 경우 해당 시점에 서비스에서 어떤 포트를 여는지에 따라 다릅니다. 예를 들어 WWW의 경우 80을 선택합니다. FTP는 일반 연결 채널로 21을 사용합니다!
요컨대 여기서 말하는 포트는 컴퓨터 하드웨어의 I/O 포트가 아니라 소프트웨어 형태의 개념이다. 제공되는 다양한 유형의 서비스에 따라 포트는 두 가지 유형으로 구분됩니다. 하나는 TCP 포트이고 다른 하나는 UDP 포트입니다. 컴퓨터가 서로 통신할 때 두 가지 방법이 있습니다. 하나는 정보를 보낸 후 정보가 도착했는지 확인하는 것입니다. 즉, 이 방법은 주로 TCP 프로토콜을 사용하고, 다른 하나는 이를 무시하는 것입니다. , 정보 도착 여부를 확인하지 않고 보내는 방법은 대부분 UDP 프로토콜을 사용합니다. 이 두 프로토콜에 해당하는 서비스에서 제공하는 포트는 TCP 포트와 UDP 포트로 구분됩니다.
그런 다음 공격자가 소프트웨어를 사용하여 대상 컴퓨터를 검사하고 대상 컴퓨터에서 열린 포트를 획득하면 대상 컴퓨터가 어떤 서비스를 제공하는지 알 수 있습니다. 서비스를 제공하려면 서비스 소프트웨어에 취약점이 있어야 한다는 사실을 우리는 모두 알고 있습니다. 이를 기반으로 공격자는 대상 컴퓨터에 대한 사전 이해를 얻을 수 있습니다.
컴퓨터에 너무 많은 포트가 열려 있고 관리자가 이에 대해 알지 못하는 경우 두 가지 상황이 있습니다. 하나는 서비스가 제공되지만 관리자가 주의를 기울이지 않는 것입니다. 예를 들어 IIS를 설치할 때 소프트웨어가 자동으로 많은 포트를 추가합니다. 관리자는 이를 눈치채지 못할 수도 있습니다. 하나는 공격자가 트로이 목마를 사용하여 서버를 설치하고 특수 포트를 통해 통신한다는 것입니다. 두 상황 모두 매우 위험합니다. 최종 분석에서 관리자는 서버가 제공하는 서비스를 이해하지 못하므로 시스템 보안 요소가 감소합니다.