봉황대 in CS
IP와 포트 본문
[ 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 |