네트워크

김태균·2025년 3월 17일

네트워크(Network)란?
👉 기기들끼리 연결해서 데이터(정보)를 주고받는 것


2. 네트워크의 종류
(1) LAN (근거리 네트워크) 🏠
👉 가까운 거리에서 쓰는 네트워크

예시: 집 와이파이, 학교 컴퓨터실

(2) WAN (광역 네트워크) 🌎
👉 멀리 떨어진 지역도 연결하는 네트워크
예시: 인터넷 전체, 회사 본사-지사 연결


3. IP & MAC 주소
네트워크에서 기기를 구별하려면 주소가 필요함.


(1) IP 주소 🏠 (인터넷 주소)
👉 "이 기기가 어디에 있는지" 알려주는 주소


예시: 192.168.1.1 (IPv4), 2001:db8::1 (IPv6)
네가 인터넷에 접속하면, 네 기기한테 IP가 하나씩 배정됨.


(2) MAC 주소 🔗 (기기의 고유번호)
👉 "이 기기가 뭔지" 알려주는 주소 (절대 안 바뀜)

예시: 00:1A:2B:3C:4D:5E
PC, 핸드폰, 공유기마다 다 다름.
💡 비유하면?

IP 주소 = 집 주소 (바뀔 수 있음)
MAC 주소 = 주민등록번호 (고유함)




  1. 네트워크 통신 과정 (인터넷에 접속할 때) 🔄
    1️⃣ 네가 www.naver.com 입력함.
    2️⃣ DNS 서버가 이걸 IP 주소(예: 223.130.195.95)로 변환해 줌.
    3️⃣ 네트워크를 타고 네이버 서버에 요청을 보냄.
    4️⃣ 네이버 서버가 응답해서 화면에 네이버가 뜸!

💡 DNS가 없으면?

우리가 223.130.195.95 같은 IP를 외워야 해서 불편함 😵





5. 네트워크 장비들 🏢
라우터 (Router) 🛤️ → 네트워크 길 안내 (IP 기반)
스위치 (Switch) 🔌 → 여러 기기 연결 (MAC 주소 기반)
공유기 (Wi-Fi Router) 📡 → 인터넷 신호 뿌려줌
모뎀 (Modem) 📞 → 인터넷 신호 변환 (ISP 제공)





6. 인터넷이 동작하는 방식
✅ 네트워크는 패킷(Packet) 이라는 작은 단위로 데이터를 쪼개서 보냄.
✅ 패킷이 길을 찾아가면서 목적지까지 전달됨.
✅ 데이터가 순서대로 모이면 우리가 보는 웹사이트, 영상이 됨.




7. 네트워크에서 보안 중요! 🔒
HTTPS (보안 연결) → 데이터 암호화
VPN (우회 및 보안) → IP 숨김
방화벽 (Firewall) → 악성 트래픽 차단




패킷이란?
👉 인터넷에서 데이터를 쪼개서 보내는 작은 덩어리

예를 들어, 네가 유튜브에서 영상을 본다고 하면?

영상을 한 번에 보내는 게 아니라
작은 조각(패킷)으로 나눠서 전송하고
도착한 패킷들을 다시 합쳐서 영상이 재생됨.





포트(PORT)란?
👉 컴퓨터에서 "어떤 프로그램"이 네트워크를 통해 데이터를 주고받을 때 쓰는 문

📌 비유하자면?

IP 주소 = 집 주소 (어느 컴퓨터로 가야 하는지)
포트 번호 = 문 번호 (그 컴퓨터 안에서 어떤 프로그램으로 가야 하는지)
예를 들어, 네가 네이버에 접속한다고 해보자.

네 IP 주소가 123.45.67.89라고 가정
네이버 서버의 80번 포트로 요청을 보냄 (웹사이트 접속)
네이버 서버가 응답을 보내고, 네 브라우저가 화면을 띄움
2️⃣ 포트가 왜 필요함?
컴퓨터에는 여러 프로그램이 동시에 돌아감.

웹브라우저 (네이버, 유튜브)
메신저 (카카오톡, 디스코드)
게임 (롤, 배그)
각 프로그램이 데이터를 주고받을 때 어떤 포트를 쓸지 정해놔야 충돌이 안 남.



컴퓨터들이 통신 하는 방법:

초기에는 네트워크 연결을 물리적인 형태
(USB)연결로 이루어짐

하지만 물리적인 연결 형태는 한계점이
존재함 ex)거리가 멀면 연결하기 힘듦

그래서 등장한게 인터넷

인터넷:

인터넷은 인터넷 프로토콜 스위트(TCP/IP)를
기반으로 하여 전 세계적으로 연결되어있는
컴퓨터 네트워크 통신망

WWW의 의미: World Wide Web

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

:인터넷이 통하는 네트워크에서 어떤 정보를 수신하고
송신하는 통신에 대한 규약을 의미한다.

cf): IP주소는 통신을 식별할 수 있는 전화번호

  • Packet 패킷(Packet)은 소스 IP, 대상 IP를 포함하고 있어서 어떤 컴퓨터에 데이터를 전송할지 판별할 수 있습니다. 소스 IP(출발지), 대상 IP(도착지)를 포함하고 있어서 어떤 컴퓨터에 데이터를 전송할지 판별할 수 있습니다.
  • Packet은 크게 헤더, 페이로드, 트레일러(수신여부 포함)로 구분됩니다.
  • 데이터를 주기만 하는 것이 아닌 받고 응답한다.(중요)

IP 방식의 문제점

  1. 애플리케이션 구분
    • 대상 컴퓨터의 어떤 프로그램에 사용될 데이터인지 구분할 수 없다.
     
  2. 비연결성
    • 수신 대상의 현재 상태에 상관없이 데이터를 전송한다.

  1. 비신뢰성
    • 패킷이 소실되는 경우가 발생한다.
    • 패킷의 손상여부를 송신, 수신측 모두 알 수 없다.
  • 패킷의 순서가 뒤죽박죽이 되어 섞여서 들어오는 경우가 발생한다.
    • 용량이 큰 데이터의 경우 패킷이 여러개로 나뉘어져 전송된다.

→ 패킷이 손실되거나, 오류가 발생하여도 데이터의 재전송을 진행하지 않습니다.

위와같은 문제점들을 해결해주는 것이 바로 TCP 프로토콜 입니다.

TCP(Transmission Control Protocol)
서버와 클라이언트 간에 데이터를 신뢰성 있게 전달하기 위해 만들어진 프로토콜.

  • 3 Way HandShake
    IP방식에서는 패킷이 손실되거나 오류가 생겨도 데이터를 재전송 하지 않는 등의 문제가 있었어요.
    그렇다면 TCP는 어떻게 데이터를 신뢰성 있게 전달할까요?

주의사항
3 Way HandShake는 물리적으로 연결되는 것이 아닙니다.
최소한의 논리적인 연결을 통하여 연결이 되었다고 가정하는 것 입니다.

  • SYN (Synchronize)
    • 클라이언트가 서버에게 연결을 요청하는 첫 번째 단계이다.
    • 클라이언트는 서버에게 "연결을 시작하고 싶다"는 의사를 나타내기 위해 SYN 플래그가 설정된 패킷을 전송한다.
    • 패킷에는 시퀀스 번호도 포함되어 있고 데이터 전송 순서를 관리할 준비를 한다.
  • ACK (Acknowledge)
    • 서버가 클라이언트의 SYN 패킷을 받고, 이를 확인했다는 신호를 보내는 단계이다.
    • 서버는 클라이언트의 SYN 요청을 수락하며, 자신도 연결을 시작하고 싶다는 뜻을 담아 SYN 플래그와 함께 ACK 플래그가 설정된 패킷을 클라이언트에게 전송한다.
    • 이때, 서버는 클라이언트의 시퀀스 번호에 1을 더한 값을 ACK로 응답한다.
  1. SYN 접속 요청
  2. ACK 요청 수락 → ACK가 없다면 연결 실패.
  3. ACK → ACK 함께 데이터 전송 가능

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

패킷 순서

→ 패킷이 나뉘어져 올지라도 순서를 보장한다.

TCP 단점:
TCP는 신뢰성이 있지만 연결하는 과정, 데이터 전송에 시간이 많이 소요된다. TCP는 현재 단계 이상의 최적화를 하기 힘들다. (최소한의 논리적인 연결이 필요하기 때문) → 3 way handshake 과정을 거치는 만큼 속도가 느리다.

UDP(User Datagram Protocol)

UDP는 비연결형, 신뢰성이 없는 전송 프로토콜이다. TCP의 신뢰성 보장 기능은 많은 애플리케이션에 유용했지만, 실시간 통신이나 스트리밍 애플리케이션에서는 빠른 전송이 중요했기 때문에 UDP는 이러한 요구를 충족하기 위해 개발되었다.

현대에서는 UDP를 많이 사용하는 추세이다. HTTP3 에서 채택한 방식, HTTP에도 버전이 있다!
ex) 실시간 스트리밍 서비스, 온라인 게임, 인터넷 전화
특징 : 실시간성 보장 중요

  • UDP의 특징
    1. IP 방식과 거의 비슷하다.
      • 3 way handshake를 하지 않는다.
        • 데이터 전송, 응답, 순서를 보장하지 않는다.(비신뢰성)
    2. 추가적인 기능이 거의 없다.
      • 기능이 없고 연결을 하지 않는 대신 속도가 빠르다.
    3. IP와 차이점으로 PORT 가 존재한다.
      • TCP에도 PORT가 존재한다.
  1. 데이터 무결성 검사 → 체크섬(Checksum)을 포함하고 있다.
    • 잘못된 데이터가 전송되지 않도록 만들어준다.

PORT

같은 IP 내에서 프로세스 구분을 하기 위해서 사용한다.

같은 IP에서 동시에 여러가지 프로그램이 실행되고 있다면 IP 주소가 같은데, 패킷의 도착지를 어떻게 식별할 수 있을까요?

현재 전송하고자 하는 패킷이 어떤 곳에 필요한 패킷인지 IP만으로는 해결이 되지 않습니다. 이때 프로그램을 구분하기 위해 사용되는 것이 바로 PORT입니다!

  • 자주 사용되는 PORT
    1. 0 ~ 65535 할당 가능
    2. 이미 사용되고 있는 포트 (0 ~ 1023)
      • 국제 도메인 관리기구에 의해 관리된다, 사용하지 않는것이 좋다.
      • FTP - 20, 21 (TCP)
      • SSH - 22 (TCP)
      • 텔넷 - 23 (TCP)
      • SMTP - 25 (TCP)
      • DNS - 53 (TCP/UDP)
      • DHCP - 67 (UDP)
      • HTTP - 80 (TCP)
      • HTTPS - 443 (TCP)
      • RDP - 3389 (TCP/UDP)
  • 실제 개발을 진행할 때 사용되지 않는 나머지 포트를 사용하여 개발하면 됩니다.
profile
코딩 공부하는 닝겐

0개의 댓글