2 / 3

스키마는 그렇고, 어떻게 데이터를 주고 받을것이냐에 대한 명세가 포트로 나오는거야?

예상 시간: 5분

스키마는 그렇고, 어떻게 데이터를 주고 받을것이냐에 대한 명세가 포트로 나오는거야?

스키마는 그렇고, 어떻게 데이터를 주고 받을것이냐에 대한 명세가 포트로 나오는거야?


스킴(Scheme)과 포트의 관계

약간 다릅니다. 정리하면:

개념역할예시
스킴(Scheme)어떤 프로토콜로 통신할지https, ftp, ssh
포트(Port)서버의 어느 문으로 들어갈지443, 21, 22

프로토콜이 "어떻게 주고받을지"를 정의

https://example.com
└─┬─┘

  └─ "HTTP 프로토콜 + TLS 암호화로 통신해"
     
     → 요청 형식: GET /path HTTP/1.1
     → 응답 형식: HTTP/1.1 200 OK
     → 헤더, 바디 구조 등 모두 HTTP 명세에 정의됨

스킴 = 프로토콜 = 통신 규약 (데이터 형식, 순서, 규칙)


포트는 "어느 서비스로 연결할지"

서버 하나에 여러 서비스가 돌아갈 수 있음:

서버 (example.com)

├─ 포트 80  → HTTP 웹서버
├─ 포트 443 → HTTPS 웹서버
├─ 포트 22  → SSH 서버
├─ 포트 21  → FTP 서버
├─ 포트 3306 → MySQL 데이터베이스
└─ 포트 5432 → PostgreSQL 데이터베이스

포트 = 서버 안의 "문 번호"


비유: 호텔

스킴 = 어떤 언어로 대화할지 (한국어, 영어, 일본어)
포트 = 호텔의 몇 번 방으로 갈지 (101호, 102호, 103호)
 
https://hotel.com:443
  │              │
  │              └─ "443호 방으로 가세요"
  └─ "HTTPS 언어로 말할게요"

기본 포트 (Default Port)

각 프로토콜마다 약속된 기본 포트가 있음:

스킴기본 포트생략 가능
http://80http://example.com = http://example.com:80
https://443https://example.com = https://example.com:443
ftp://21
ssh://22
postgresql://5432
mongodb://27017

그래서 평소에 포트를 안 써도 되는 것:

https://google.com      ← 포트 443 생략됨
https://google.com:443  ← 같은 의미

포트를 바꾸면?

https://example.com:8080
  • 여전히 HTTPS 프로토콜로 통신 (스킴이 정의)
  • 하지만 443이 아닌 8080번 포트로 연결
  • 서버가 8080에서 HTTPS 서비스를 돌리고 있어야 함

정리

https://example.com:443/api/users
└─┬─┘   └────┬────┘└┬┘ └───┬───┘
  │          │      │      │
  │          │      │      └─ 경로 (어떤 리소스?)
  │          │      └─ 포트 (어느 문으로?)
  │          └─ 호스트 (어느 서버?)
  └─ 스킴/프로토콜 (어떻게 통신?)
질문답을 주는 것
어떤 형식으로 데이터를 주고받나?프로토콜 (스킴)
서버의 어느 서비스에 연결하나?포트

★ Insight ─────────────────────────────────────

  1. 포트는 다중화(multiplexing) 용도: 하나의 IP 주소에서 여러 서비스를 구분하기 위해 존재. TCP/UDP 레벨의 개념
  2. Well-known ports (0-1023): IANA가 관리하는 예약된 포트들. 80(HTTP), 443(HTTPS), 22(SSH) 등. 1024 이상은 자유롭게 사용 가능 ─────────────────────────────────────────────────