[Spring] 네트워크 및 Web 기초

이연우·2025년 7월 21일

TIL

목록 보기
11/100

🌐 인터넷(Internet)이란?

  • 전 세계의 컴퓨터 네트워크들이 TCP/IP 프로토콜을 통해 연결된 거대한 통신망
  • 이를 통해 지구 반대편에 있는 컴퓨터와도 정보를 주고받을 수 있음

인터넷은 어떻게 연결되어 있을까?

  • 해저 광케이블(Tier 1): 각 대륙은 물리적인 케이블로 연결되어 있음
  • 인공위성: 인공위성을 통한 무선 통신도 가능함
    → 물리/무선 통신 인프라를 통해 World Wide Web (WWW) 이 구성됨

📮 인터넷 프로토콜 IP (Internet Protocol)

  • 컴퓨터들 사이에서 데이터를 주고받는 방법(규칙)
  • 모든 통신은 정해진 규약을 따라야 혼선 없이 전달이 가능함

IP 주소란?

  • 각 장치의 고유한 '주소' 또는 '전화번호' 역할
  • 통신 시, 출발지 IP(소스), 도착지 IP(목적지)패킷(Packet) 안에 담겨 전달됨
    패킷(Packet): 인터넷에서 전달되는 데이터의 기본 단위
    • 소스 IP(출발지), 대상 IP(도착지)를 포함하고 있어서 어떤 컴퓨터에 데이터를 전송할지 판별할 수 있음
    • Packet은 크게 헤더, 페이로드, 트레일러(수신여부 포함)로 구분됨
      • 헤더: 송신자와 수신자의 IP 주소 등 제어 정보 포함
      • 페이로드: 실제 데이터
      • 트레일러: 수신 여부 확인 등
    • 데이터는 단방향이 아닌, 응답을 포함하는 양방향 통신

❗ IP 방식의 한계점

1) 애플리케이션 구분 불가

  • IP만으로는 어떤 프로그램이 데이터를 받아야 하는지 알 수 없음
    • ex) 같은 컴퓨터에서 웹 브라우저와 이메일 앱이 동시에 실행 중이라면, IP는 둘 중 누구에게 데이터를 보낼지 모름

2) 비연결성 (Connectionless)

  • 상대방의 상태와 관계없이 데이터 전송, 연결 확인 없이 일방적으로 전달

3) 비신뢰성 (Unreliable)

  • 패킷이 유실되거나 순서가 바뀌는 경우에도 재전송하지 않음

  • 데이터가 여러 개의 패킷으로 나뉘어 전달되면, 수신자가 이를 재조합하지 못할 수 있음

    • 용량이 큰 데이터의 경우, 패킷이 여러 개로 나뉘어져 전송됨

💡 IP는 최선형 전달(Best-effort delivery)만 보장할 뿐, 완전한 데이터 신뢰성을 보장하지 않음


📦 TCP(Transmission Control Protocol)란?

  • 서버와 클라이언트 간 데이터를 신뢰성 있게 전달하기 위해 만들어진 전송 계층의 프로토콜
    • 연결 지향(Connection-oriented): 데이터를 주고받기 전에 연결부터 설정
    • 순서 보장: 데이터 패킷의 순서가 어긋나지 않게 관리
    • 데이터 손실 감지 및 재전송: 패킷 손실 시 자동 재전송

🔁 TCP의 연결 방식: 3-Way Handshake

단계설명
1. SYN클라이언트가 서버에 연결 요청
2. SYN + ACK서버가 요청을 수락하고 응답
3. ACK클라이언트가 응답을 확인하고 연결 성립

→ 이 과정을 통해 논리적인 연결을 성립함(실제 물리 연결은 아님)


> 데이터 전송 여부
→ TCP를 통해 통신하면 데이터를 잘 받았다는 응답을 반환해 줌


> 패킷 순서
→ 패킷이 나뉘어져서 도착해도 순서 보장

⚠️ 단점: 연결을 설정하고 상태를 관리하므로 속도는 느릴 수 있음


🚀 UDP(User Datagram Protocol)란?

  • 연결을 설정하지 않고, 빠르게 데이터를 전달하는 전송 계층 프로토콜
    • 비연결형: 3-way handshake 없음
    • 비신뢰성: 패킷 손실, 순서 변경 감지 안 됨
    • 빠른 속도: 실시간성이 중요한 환경에 적합
    • UDP의 추가 기능: 체크섬(Checksum)
      • 데이터 손상 여부를 검증하는 최소한의 기능 포함
  • HTTP/3도 UDP 기반으로 동작(UDP + QUIC)

🏢 PORT란?

  • IP만으로 부족한 프로세스 구분 수단
  • 하나의 IP 주소 안에는 여러 개의 애플리케이션이 동시에 동작할 수 있음
    - ex) 브라우저(80), 메일(25), SSH(22) 등

📌 포트는 아파트의 “호수”와 같은 역할을 함!

→ 같은 건물(IP) 안에서도 정확히 어느 방(프로그램)인지 지정해야 됨

🔍 TCP/UDP와 포트 번호

항목설명
범위0 ~ 65535
Well-known 포트0 ~ 1023 (사용 권장 X)
개발용 포트1024 ~ 49151 (등록된 포트), 49152 ~ 65535 (임시 포트)

🔢 자주 사용하는 포트 번호

프로토콜포트 번호설명
HTTP80 (TCP)웹 페이지 기본 포트
HTTPS443 (TCP)암호화된 웹 페이지
FTP20, 21 (TCP)파일 전송
SSH22 (TCP)원격 접속
DNS53 (UDP/TCP)도메인 변환
DHCP67 (UDP)IP 자동 할당
RDP3389 (TCP/UDP)원격 데스크탑

📡 DNS(Domain Name System)란?

  • 사람이 이해할 수 있는 도메인 이름을 컴퓨터가 통신할 수 있는 IP 주소로 변환해 주는 시스템

🔧 DNS가 필요한 이유

  • 컴퓨터는 IP 주소로 통신하지만, 사람은 도메인을 기억하는 게 편함
  • IP는 유동적일 수 있으므로 고정된 도메인 이름이 필요
  • DNS가 IP 주소 변경을 자동으로 매핑해 주므로 사용자 입장에서는 변화를 알 필요가 없음

⚙️ DNS 동작 순서
1. 원하는 이름의 도메인 구매 후, DNS 서버에 등록

2. 도메인 이름을 입력하면 DNS 서버는 IP 주소를 반환

3. IP가 변경되면 DNS 서버에 등록된 IP 주소만 바뀌면 됨

4. 이용자는 IP주소의 형태가 아닌 https://spartacodingclub.kr/의 도메인 이름 형태로 웹에 접속

  • URL 입력 시 자동으로 DNS가 동작해 IP를 찾아 웹사이트에 접속됨

🧾 URI(Uniform Resource Identifier)란?

  • 인터넷 자원(Resource)을 식별할 수 있도록 만든 통일된 식별 체계

📚 URI의 구성

  • Uniform: 자원(Resource)을 식별하는 통일된 방식
  • Resource: 식별 대상 (웹페이지, 이미지, 영상 등)
  • Identifier: 자원을 식별하는 값

📦 URI의 종류

구분설명예시
URL자원의 위치(Location)를 지정https://spartacodingclub.kr/
URN자원의 이름(Name)을 지정urn:isbn:9781234567890

> URL 방식의 한계

  • 자원(Resource)의 위치를 변경하면 기존 URL은 사용할 수 없음
  • 브라우저 검색창에 스파르타 코딩클럽 홈페이지를 검색하면 https://spartacodingclub.kr/ 사이트가 노출됨
    • 만약 이 주소를 https://spartacodingclub2.kr/ 로 바꾼다면 기존 경로를 아는 사람들은 검색 페이지의 URL이 업데이트되지 않으면 페이지를 찾을 수 없음
  • 이러한 한계를 극복하기 위해서 URN이 등장

> URN(Uniform Resource Name)

  • 자원(Resource)의 이름(Name)을 의미
  • 리소스의 위치가 변경되어도 이름으로 리소스를 찾기 때문에 잘 동작함
  • 프로토콜을 포함하지 않음

📍 URL(Uniform Resource Locator)이란?

  • 인터넷 상의 자원(Resource)의 위치를 알려 주는 전체 경로
  • 즉, 우리가 흔히 말하는 웹 주소

🧱 URL의 구조와 각 요소

ex)

https://www.google.com:443/search?q=스파르타+코딩클럽
요소설명
scheme프로토콜 (http, https, ftp 등)
user[:password]사용자 정보 (거의 사용 X)
host[:port]도메인명 또는 IP 주소, 포트 번호 (https는 443, http는 80)
/path리소스의 경로 (계층적 구조)
?query쿼리 파라미터: key=value 형식으로 서버에 데이터 전달
#fragment페이지 내 특정 위치로 이동 (북마크 등)

→ 쿼리 파라미터는 ?key1=value1&key2=value2 형식으로 여러 개 전달 가능
URL은 위치 중심 / URN은 이름 중심

0개의 댓글