포트란?

Kiwoong Park·2022년 11월 4일
1

소켓과 포트 차이가 넘나 햇갈려 ..

포트란 무엇인가?

  • Port 는 물리적 연결이 아님.

  • 프로그램이나 서비스에서 정보를 교환하기 위해 사용되는 논리적 연결

  • 포트는 컴퓨터 또는 서버에서 사용될 프로그램이나 서비스를 특정 지어줌.
    - Ex. Web page, FTP, Email, Etc..

    • 네트워크를 통해 데이터를 주고받는 프로세스를 식별하기 위해 호스트 내부적으로 프로세스가 할당받는 고유한 값
  • 포트는 프로그램이나 서비스를 식별 할 수 있는 고유한 숫자를 가짐.
    - 0 - 65535 사이

    • 80, 433 - Web pages(HTTP, HTTPS)
    • 21 - FTP(File Transfer Protocol)
    • 25 - Email
  • Port는 항상 IP 주소와 연관되어 있음
    - 네트워크에 연결된 모든 종류의 장치를 노드(Node)라고 하는데, 노드 중에서도 네트워크 주소인 IP 주소가 할당된 것들을 호스트라고 함.

    • 호스트IP 주소와 포트번호가 합쳐져서 네트워크를 통해 데이터 교환을 할 수 있음.
      • Ex. 66.94.34.13:21
        • 네트워크를 통해 데이터 교환을 한다는 것은, 호스트의 프로세스까지 데이터가 오고 간다는 것을 의미하기 때문에 포트번호를 통해 데이터가 필요한 프로세스까지 전달되어야 한다.
    • IP 주소는 서버의 위치를 결정지을 수 있고, 포트 번호는 해당 서버에서 사용하고 싶은 서비스 혹은 프로그램을 결정함.
  • 대부분의 사람들이 매일 사용하는 포트는 80번으로 HTTP(Hypertext Transfer Protocol), 즉 웹페이지의 포트 번호임.

  • 만약 우리가 구글 사이트에서 검색을 하고자 http://wwww.google.com을 웹 브라우저에 타이핑하면 우리의 호스트는 DNS를 통해 구글 IP 주소(215.114.85.17) 에 http의 포트번호인 80을 추가하여 215.114.85.17:80으로 구글 웹서버에 도착하게 된다. 이렇게 위의 주소가 구글 웹서버에 도착하면 IP 주소는 더 이상 사용되지 않고, 포트 번호만 남아서 구글 웹서버가 80번 포트번호를 확인하고 해당 요청을 웹서비스로 전달한다. 그렇게 웹서비스로 구글 서버에 전달이 되면 우리는 구글 웹페이지를 볼 수 있게 된다.
    - 이 모든 작업을 사용자는 보지 못하며, 알고 싶다면 Netstat을 통해 Network statistics, 즉 현재 네트워크 연결과 포트 활동을 우리 컴퓨터로 알 수 있다.

  • Port 번호는 0-65535IANA(Internet Assigned Numbers Authority)에 따라서 할당된다.
    - 포트 번호는 3가지 카테고리로 분류할 수 있다.
    • 0-1023는 시스템 포트 혹은 잘 알려진 포트번호라고 불림.
      • Ex. 80(HTTP), 443(HTTPS), 25(SMTP), 21(FTP) 등
    • 1024 - 49151은 유저 혹은 등록된 포트로 불림.
      • 위의 포트 번호는 회사나 특정 서비스를 위한 개발자들에게 등록될 수 있음
        • Ex. 1102 - Adobe Server / 1433 - Microsoft SQL Server / 1416 - Novell / 1527 - Oracle
    • 49152 - 65535는 동적(dynamic) 혹은 프라이빗 포트로 불림
      • 위 포트는 client-side 포트로 자유롭게 사용이 가능함.
        • 우리 컴퓨터가 세션 중에 임시로 할당할 수 있음.(Ex. When viewing a web page)
        • 우리 컴퓨터가 다른 컴퓨터나 서버에서 서비스나 프로그램의 사용을 원할 때 아래와 같은 포트번호를 할당함.

소켓이란?

  • 소켓(Socket)은, 프로세스가 네트워크를 통해서 데이터를 주고받으려면 반드시 열어야 하는 창문 같은 것.
  • 프로세스가 데이터를 보낼 때 보내는 측과 받는 측, 양측 다 소켓을 열어야 한다.
  • 송신측이 소켓이라는 창문을 열고 데이터를 보내면 네트워크 모델에 따라 목적지 호스트에 데이터가 도착하게되고,
  • 데이터를 담은 박스에 적힌 수신측의 포트 번호와 같은 포트를 할당받은 프로세스를 찾아서, 그 프로세스의 소켓을 통해 해당 프로세스에 데이터를 전달함.
  • 소켓을 열기 위해서는 호스트에 할당된 IP 주소, 포트 번호, 프로토콜(Protocol) 등이 필요하며, 이 세 가지가 소켓을 정의함.
  • 소켓을 통해 동시에 사용자가 접근 할 수 있음. 소켓을 어려 개를 만들면 고유번호가 필요한데 "디스크립터"라는 소켓의 번호가 부여되여 동시 수용을 할 수 있음.
profile
You matter, never give up

0개의 댓글

관련 채용 정보