봉황대 in CS

IP와 포트 본문

Server

IP와 포트

등 긁는 봉황대 2021. 10. 7. 16:37

[ 211002 2주차 강의 정리(2) ] + 워크북 & 스터디 내용 추가 (211010)

* IP (Internet Protocol)

     : 인터넷 상의서의 고유한 주소 (숫자)

       IPv4 일반적으로 사용 → IPv6로 넘어가는 추세


* IPv4 (Internet Protocol Version 4)

   : 총 4개의 숫자 군으로 표시, 각 숫자 군은 마침표로 구분, 각 숫자는 0~255까지의 자연수 중 하나 (ex. 121.254.243.201)

   → IPv4를 사용하여 표시할 수 있는 인터넷 주소는 최대 256^4개 (약 43억 개)

   → 인터넷 사용자 수가 급증하면서 주소 고갈 문제 생김

   ⇒ IPv6

 

* IPv6 (Internet Protocol Version 6)

   : IPv4의 한계인 주소 고갈, 멀티미디어 서비스 대응 미약 등을 고려한 차세대 인터넷 프로토콜

 

   IPv4와의 차이점 ? (자세한 비교1) (자세한 비교2)

          1. 128비트의 인터넷 주소 체계 (IPv4의 주소 공간 4배)

          2. 헤더 포맷을 단순화

          3. 데이터를 특성에 맞게 분류 및 처리하여 향상된 서비스 지원

          4. 보안 & 개인보호 기능 지원

          5. 주소 개수가 거의 무한대, 규모 및 단말기 수에 따른 순차적 할당 가능


* 도메인 (domain)

     : IP에 이름을 부여한 것!

       ex) www.naver.com  → 125.209.222.141 (자동으로 연결되도록 설정됨) 

* 도메인 네임 시스템 (Domain Name System, DNS)

     : 호스트의 도메인 이름을 호스트의 네트워크 주소로 바꾸거나 그 반대의 변환을 수행할 수 있도록 하기 위해 개발

 

인터넷은 2개의 주요 이름 공간을 관리 (도메인 네임 계층 & IP 주소 공간)

→ DNS는 도메인 네임 계층을 관리하며 해당 네임 계층과 주소 공간 간의 변환 서비스를 제공


* 포트 (port)

1. 정의

     : 서버로 들어가는 관문 (어떤 프로토콜을 사용할 것인가?)

예시


2. 표기

     : IP주소:포트번호

       ex) 127.0.0.1:8080


3. 종류

종류 번호
잘 알려진 포트 (프로토콜 별 포트) 0 ~ 1023
등록된 포트 (Application) 1024 ~ 49151
동적 포트 (동적 할당 시 사용하는 포트) 49152 ~ 65535

4. 프로토콜 별 포트 번호 (다 외우자ㅏㅏ)

프로토콜 포트 번호
HTTP 80
HTTPS 443
FTP 21
SFTP 22
SSH 22
MySQL 3306
••• •••

* SFTP와 SSH는 왜 같은 포트 번호를 사용할까?

SFTP : SSH(보안) 파일 전송 프로토콜

SSH-2 버전은 SFTP에 통합 → SFTP 명령 실행하고 데이터를 교환할 수 있는 완전한 암호화 & 보안 전송 계층을 제공

1. SFTP 서버 소프트웨어가 시스템에 설치되면 2. 호스트에 대한 SSH 키를 생성

(사용자가 데이터 전송을 위해 시스템에 액세스 하기 위해 다른 사용자 및 그룹에 자격 증명과 권한을 생성하고 부여)

(자세한 설명)


5. 포트는 항상 열려 있을까?

포트에도 웨이터가 있어야 포트 역할을 제대로 한다!

여기서 웨이터?? : 데몬 프로세스


* 데몬(daemon) 프로세스

     : 서비스의 요청에 대해 듣고 응답을 하는 백그라운드 프로세스 (자세한 설명)

       운영체제에서 이름이 'd'로 끝나는 프로세스들이 대표적 (httpd, mysqld, sshd ...)

       프로토콜 번호에 따라서 할당됨

 

데몬이 제대로 작동한다 == 해당 포트의 요청을 잘 듣고 있다 == 포트 리스닝 중!


* 서버에 들어오는 것은 어렵지만 나가는 것은 쉽다! (들어올 땐 맘대로 지만 나갈 땐 아니란다 리버스)

      : 포트는 서버를 통하는 문 → 언제나 모든 포트를 개방하는 것은 위험 (악성 코드, 바이러스 유포 등)

        ⇒ 보호를 위한 Inbound/Outbound 규칙이 존재


* Inbound

   : 서버 안으로 네트워크 데이터가 들어가는 것

   → Inbound 규칙 : 클라이언트가 서버의 데이터에 접속하는 권한(해당 데이터 읽기, 권한 여부에 따라 생성/수정/삭제 허용)에 대한 규칙

       (기본적으로 인바운드 규칙은 모든 포트를 닫는 것을 전재로 한다 → 설정하지 않은 포트들은 사용 불가)

 

* Outbound

   : 서버 밖으로 네트워크 데이터가 나가는 것

   → Outbound 규칙 : 서버에서 반출할 수 있는 데이터(다운로드할 수 있는가 없는가)에 대한 규칙

       (기본 옵션으로 모든 포트에게 허용되어 있는 편)

 

(자세한 설명)


* 정리!!

* ☆ : 아무나 건들면 안 되는 중요한 자원들 (냉장고) → SSH가 서버 관리자만이 들어갔다 나올 수 있도록 함


논의하면 좋은 것들..

* 패킷에 IP와 Port가 들어가야 하는 이유?

   : 요청이나 응답이 어느 문으로 / 어느 프로토콜로 가야할지 정확히 알아야 하니께?

* 서버 보안을 위해서 어떤 부분을 신경 써야 할까?

   : SSH (중요한 자원들을 서버 관리자만이 건들 수 있도록 함)

반응형

'Server' 카테고리의 다른 글

[Server] Offset 기반 vs. Cursor 기반 Pagination (feat. nGrinder 부하 테스트)  (0) 2025.01.20
REST API  (0) 2021.11.14
API / HTTP Packet / HTTP Method  (0) 2021.11.07
Key & Table 간의 관계  (0) 2021.10.25
Proxy  (0) 2021.10.11
Comments