본문 바로가기
기초 CS/네트워크

인터넷 네트워크

by GWLEE 2025. 3. 25.

intro,,

네트워크에 대한 기본 학습

 

- 인터넷 통신

- IP (Internet Protocol)

- TCP, UDP

- PORT 

- DNS

 

 

1. 인터넷은 컴퓨터 둘은 어떻게 통신할까?

 

클라이언트 -  인터넷 - 서버

 

수많은 중간 노드라고 하는 이 서버들을 거쳐서 결국 메세지가 안전하게 넘어가야 하는데

어떤 규칙으로 어떻게 넘어갈까? 복잡한 상황을 잘 헤쳐서

 

인터넷에서 컴퓨터 두 대가 통신하는 과정은 여러 단계를 거치지만, 핵심적인 개념은 클라이언트-서버 모델패킷 스위칭

인터넷 통신에서 일반적으로 한쪽은 요청하는 역할(클라이언트), 다른 쪽은 응답하는 역할(서버)

 

2. 데이터는 어떻게 이동할까? (패킷 스위칭)

인터넷에서 데이터는 한 번에 전송되지 않고, 패킷(Packet)이라는 작은 조각들로 나뉘어서 전달됨
이 패킷들이 목적지까지 가는 과정이 중요

 

  • 패킷들은 인터넷을 구성하는 여러 노드(라우터, 스위치 등)를 지나감
  • 각 노드는 패킷을 보고 최적의 경로를 찾아 다음 노드로 전달함
  • 패킷이 여러 경로로 흩어졌다가 목적지에서 다시 조립됨

 

IP 주소 부여 및 인터넷 프로토콜 역할

1. IP(인터넷 프로토콜) 역할

  • IP 주소(IP Address)를 기반으로 데이터를 전달.
  • 데이터를 **패킷(Packet)**이라는 단위로 쪼개어 전송.

2. IP 패킷 정보

  • 패킷에는 다음과 같은 정보가 포함됨:
    • 출발지 IP (데이터를 보내는 곳)
    • 목적지 IP (데이터를 받는 곳)
    • 메시지 내용 (예: "Hello, World")
  • 출발지와 목적지 노드 간에 패킷이 전달되며, 최종적으로 서버에 도달함.

3. 서버에서 패킷 전달

  • 서버도 클라이언트에게 응답할 때 패킷을 전송.
  • 중간 노드(라우터 등)를 거쳐 목적지까지 전달됨.

4. IP 프로토콜의 한계

① 비연결성

  • 목적지가 없거나 서비스가 불능 상태여도 패킷을 전송함.

② 비신뢰성

  • 중간에 패킷이 손실될 수 있음.
  • 패킷이 순서대로 도착하지 않을 수도 있음.

③ 프로그램 구분 문제

  • 같은 IP 주소를 사용하는 서버에서 여러 애플리케이션이 통신하는 경우, 패킷을 구분할 필요가 있음. (이를 해결하기 위해 포트 번호를 사용)

 

패킷들이 다른 노드를 탈 수 있음.. 

패킷 전달 순서 문제 발생

2번이 먼저 도착 1번이 나중도착

ip 이 프로토콜만ㅇ으로 해결할 수 없음 -> tcp ip 가 해결함.

 

 


tcp udp

 

순서가 꼬이는 걸 해결해줌, udp는 해결해주지 않지만 공부

인터넷 프로토콜 스택의 4계층

 

 

1. 프로그램 hello, world! 메시지 생성 -> 애플리케이션

2. socket 라이브러리를 통해 전달

3. tcp 정보 생성, 메시지 데이터 포함

4. ip 패킷 생성, tcp 데이터 포함

 

 

인터넷 망과 TCP/UDP 정리

1. 인터넷 망이란?

  • 데이터는 여러 서버(노드) 를 거쳐 전달됨.
  • 중간에 서버 문제 발생 시 패킷 손실 가능.
  • 노드가 꺼지면 패킷이 소실될 수 있으며, 소실되어도 알기 어려움.
  • 패킷은 1500바이트 정도로 쪼개어 전송 (예: 3000바이트 → 2개로 분할).
  • 패킷들은 서로 다른 경로로 전송될 수 있음 → 순서가 뒤바뀔 가능성이 있음 (예: "HELLO WORLD" → "WORLD HELLO"로 수신될 수 있음).
  • IP 프로토콜만으로는 순서 문제 해결 불가.

2. 패킷(Packet)이란?

  • 데이터를 작은 조각(버킷)으로 나눈 것 → 택배 박스에 비유 가능.
  • IP 패킷 안에 TCP 또는 UDP 정보 포함.
  • TCP 패킷 정보:
    • 출발지 PORT, 목적지 PORT
    • 전송 제어 정보
    • 순서 정보
    • 검증 정보 (데이터 무결성 확인)

3. TCP (Transmission Control Protocol)

특징

  • 연결 지향적 프로토콜 (TCP 3-Way Handshake)
  • 데이터 전달 보증 (정확한 데이터 수신 확인)
  • 순서 보장 (패킷 순서가 뒤바뀌지 않도록 관리)
  • 신뢰성이 높은 프로토콜 (현재 대부분의 네트워크에서 사용)

TCP 3-Way Handshake (연결 설정)

  1. 클라이언트 → 서버 : SYN (연결 요청)
  2. 서버 → 클라이언트 : SYN + ACK (요청 수락 및 확인 응답)
  3. 클라이언트 → 서버 : ACK (응답 확인)

→ 이 과정을 거치면 서버와 클라이언트가 서로 신뢰할 수 있는 상태에서 통신 가능.

데이터 전달 보증

  • 클라이언트가 데이터를 보내면 서버는 "잘 받았어(ACK)" 응답을 보냄.
  • 만약 응답이 없으면 다시 전송하여 데이터 손실 방지.

순서 보장

  • 패킷이 순서대로 도착하지 않으면 순서 재정렬 후 처리.
  • 패킷이 유실되면 재전송 요청.

4. UDP (User Datagram Protocol)

특징

  • 비연결 지향 (TCP 3-Way Handshake 없음)
  • 데이터 전달 보증 없음
  • 순서 보장 없음
  • 단순하고 빠른 전송 가능 (TCP보다 속도가 빠름)
  • IP와 거의 유사하지만 PORT 정보와 체크섬 추가됨
  • 신뢰성이 낮기 때문에 애플리케이션에서 추가적인 오류 처리 필요.

정리

TCPUDP
연결 방식 연결 지향 (3-Way Handshake) 비연결 지향
데이터 전달 보증 O X
순서 보장 O X
속도 느림 (신뢰성 보장) 빠름 (단순 전송)
사용 예시 웹 브라우징, 이메일, 파일 전송 실시간 스트리밍, 온라인 게임

 

💡 핵심 요약

  • TCP: 신뢰성 중요할 때 사용 (웹, 이메일, 파일 전송)
  • UDP: 속도가 중요할 때 사용 (스트리밍, 게임, VoIP)

90% 점유하고 있지만, udp가 다시 뜨고 있음.. 

 


 

PORT (포트)란?

**PORT(포트)**는 같은 IP 주소 내에서 실행 중인 여러 프로세스를 구분하는 개념이다.
서버와 클라이언트가 통신할 때, IP 주소만으로는 어떤 서비스(프로세스)와 연결해야 하는지 알 수 없기 때문에, 포트 번호를 사용해 구분한다.

예를 들어, 클라이언트가 한 서버에서 게임, 화상통화, 웹브라우저 요청을 동시에 한다면:

  • 게임: 8090번 포트
  • 화상통화: 21000번 포트
  • 웹브라우저: 10010번 포트
    이렇게 각 서비스별로 다른 포트를 사용하여 통신한다.

포트의 역할 비유

IP 주소가 아파트라면, 포트 번호는 몇 동 몇 호에 해당한다.
즉, 서버(아파트) 안에서 실행 중인 여러 서비스(집)를 구분하는 역할을 한다.


포트 범위 및 특징

포트 번호는 0~65535까지 사용 가능하며, 크게 3가지 범위로 나뉜다.

  1. 잘 알려진 포트 (Well-known Ports, 0~1023)
    • 이미 널리 사용되는 표준 서비스들이 할당받은 포트 번호.
    • 가능하면 사용하지 않는 것이 좋음.
    • 예시
      • FTP (파일 전송) → 20, 21
      • TELNET (원격 접속) → 23
      • HTTP (웹사이트 접속) → 80
      • HTTPS (보안이 추가된 HTTP) → 443
  2. 등록된 포트 (Registered Ports, 1024~49151)
    • 특정 기업이나 애플리케이션에서 정식으로 등록하여 사용하는 포트.
    • 예: 데이터베이스(MySQL - 3306), 게임 서버
  3. 동적/사설 포트 (Dynamic/Private Ports, 49152~65535)
    • 클라이언트가 서버에 요청할 때, 임시로 할당되는 포트.
    • 사용이 끝나면 반납됨.

FTP (File Transfer Protocol, 20, 21번 포트)

  • 파일 전송을 위한 프로토콜
  • 20번 포트: 데이터 전송
  • 21번 포트: 제어(명령) 전송
  • 보안이 취약하여 대신 SFTP(Secure FTP)나 FTPS(SSL 기반 FTP)를 사용하는 것이 일반적임.

TELNET (23번 포트)

  • 원격으로 서버에 접속할 수 있도록 하는 프로토콜
  • 하지만 암호화되지 않아 보안에 취약
  • 대신 SSH(Secure Shell, 22번 포트)를 많이 사용함.

DNS (도메인 네임 시스템)

DNS(Domain Name System)는 도메인 이름을 IP 주소로 변환하는 시스템이다.
IP 주소는 숫자로 되어 있어 사람이 기억하기 어려운 반면, 도메인 이름은 이해하기 쉽고 기억하기 쉽다.
예를 들어, www.google.com처럼 도메인 이름으로 웹사이트에 접근할 수 있다.
DNS는 전화번호부처럼 도메인 이름을 IP 주소로 변환하여, 사용자가 쉽게 웹사이트에 접근할 수 있도록 돕는다.


왜 DNS가 필요한가?

  1. IP 주소는 기억하기 어렵다
    사람은 숫자보다는 단어를 기억하는 것이 훨씬 쉽다.
    예를 들어, 173.194.123.45 같은 IP 주소를 기억하는 것보다 www.google.com 이라고 기억하는 게 훨씬 편리하다.
  2. IP 주소는 변경될 수 있다
    IP 주소는 동적으로 할당되거나 서버 설정에 따라 바뀔 수 있다.
    만약 IP 주소가 변경되면, 고정된 IP 주소로 접근하는 방식으로는 웹사이트에 접근할 수 없게 된다.

DNS의 역할

  • 도메인 이름IP 주소로 변환:
    사람이 쉽게 기억할 수 있는 도메인 이름(예: www.google.com을) 입력하면, DNS 서버가 해당 도메인을 IP 주소로 변환해준다.
    DNS 서버는 마치 전화번호부처럼, 각 도메인에 해당하는 IP 주소를 찾아서 클라이언트에게 응답한다.

도메인 이름과 IP 주소의 관계

  1. 도메인 이름 등록:
    도메인 이름을 등록하고, 이 도메인에 대응하는 IP 주소를 설정할 수 있다.
  2. DNS 서버의 역할:
    사용자가 도메인 이름을 입력하면, DNS 서버가 이 도메인 이름에 해당하는 IP 주소를 찾아서 응답해준다. 그 후, 클라이언트는 그 IP 주소로 서버에 접근하게 된다.

결론

DNS는 도메인 이름을 IP 주소로 변환하는 중요한 시스템으로, 사람들이 간편하게 웹사이트에 접근할 수 있도록 돕는다. IP 주소가 변경되더라도 DNS 서버가 이를 업데이트하여 사용자는 항상 도메인 이름으로 접속할 수 있다.

'기초 CS > 네트워크' 카테고리의 다른 글

컴퓨터 역사  (0) 2025.04.03
프로토콜  (0) 2025.04.03
블랙박스  (0) 2025.04.03
웹 브라우저 요청 흐름  (0) 2025.03.28
URI, URL, URN 개념 정리  (0) 2025.03.27

댓글