Spring/강의

[📕 기초 Spring] 1-1. 네트워크

가지코딩 2025. 5. 3. 11:40

네트워크 지식이 왜 필요할까?

  1. 우리는 사용자가 요청을 했을 때 해당 요청에 대한 응답을 수행하는 프로그램 즉, 서버를 개발하게 된다.
  2. 사용자의 요청에서 시작하여 우리가 만든 서버에 도착하고 다시 사용자에게 응답이 되돌아가는 흐름을 잘 파악하고 있다면 서버 개발에 큰 도움이 된다.
  3. 인터넷 브라우저(클라이언트)와 서버가 데이터를 주고받는 통신 방법인 HTTP(HyperText Transfer Protocol)는 결국, Web 기반에서 동작하기 때문에 네트워크에 대한 지식은 필수이다.

📕 목차

  1. 인터넷(Internet)
  2. 인터넷 프로토콜 IP(Internet Protocol)
  3. TCP(Transmission Control Protocol)
  4. UDP(User Datagram Protocol)
  5. PORT

1. 인터넷(Internet)

인터넷(Internet)

  • 전 세계의 컴퓨터와 스마트폰, 서버 같은 기기들을 서로 연결해주는 거대한 네트워크이다.
  • 인터넷 구축 방법
    • 해저 광케이블 - 유선 연결
    • 인공위성 - 무선 통신

해저 케이블처럼 유선 방식, 인공위성처럼 무선 방식이 함께 사용돼서

World Wide Web (전 세계를 잇는 거미줄) 처럼 구성되어 있다.


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

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

  • 네트워크에서 데이터를 주고받기 위한 기본 통신 규칙(Protocol) 이다.

 

IP 주소

  • 네트워크에서 각각의 장치를 식별하기 위한 고유한 주소
  • 이 주소가 있기 때문에 어떤 기기로 데이터를 보낼지를 정확히 알 수 있다.
  • 인터넷에서 데이터를 전송할 때는 이 IP 주소를 기반으로 Packet(패킷)이라는 단위로 나눠서 전송하게 된다.

 

패킷 (Packet)

  • 전송할 데이터를 일정 크기로 나눈 단위이다.
  • 패킷에 포함되는 정보
    • 소스 IP: 출발지 주소
    • 대상 IP: 도착지 주소
    • 헤더: 제어 정보 (전송 순서 등)
    • 페이로드: 실제 전송할 데이터
    • 트레일러: 수신 여부 확인, 오류 검사 등
  • 패킷 하나만 보면 누가 누구에게 어떤 데이터를 보냈는지를 알 수 있다.
  • 단순히 데이터를 보내는 것이 아닌 받은 후 응답까지 한다.

 

IP 방식의 문제점

  • 애플리케이션 구분의 어려움
    • 어느 컴퓨터로 데이터를 보낼 것인지는 알려주지만, 그 컴퓨터 안의 어떤 프로그램(애플리케이션)으로 보내야 할지는 알지 못한다.
  • 비연결성
    • IP는 비연결형 프로토콜이다.
    • 데이터를 보내기 전에 상대가 준비되어 있는지 확인하지 않고 무조건 전송한다.
  • 비신뢰성
    • 데이터 전달에 대해 아무런 보증을 하지 않는다.
      • 패킷 손실: 데이터가 중간에 사라질 수 있다.
      • 패킷 손상: 데이터가 중간에서 손상될 수 있다.
      • 패킷 순서 뒤바뀜: 나눠 보낸 데이터가 순서가 뒤섞여 도착할 수 있다.

 

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


4. TCP(Transmission Control Protocol)

TCP(Transmission Control Protocol)

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

 

3 Way HandShake

  • TCP는 데이터를 신뢰성 있게 전달하기 위해 3 Way HandShake 방식을 사용한다.
  • 3 Way HandShake 방식  
    • SYN 접속 요청
      • 클라이언트가 서버에게 연결을 요청하는 단계이다.
      • 클라이언트는 SYN 플래그가 설정된 패킷을 전송하고, 연결을 시작하고 싶다는 의사를 전달한다.
      • 이때 패킷에는 시퀀스 번호가 포함되어, 데이터 전송 순서를 관리할 준비를 한다.
    • ACK 요청 수락
      • 서버가 클라이언트의 SYN 패킷을 받고 이를 확인했다고 응답하는 단계이다.
      • 서버는 클라이언트의 요청을 수락하며, SYN + ACK 플래그가 설정된 패킷을 전송한다
      • 서버는 클라이언트의 시퀀스 번호에 1을 더한 값을 ACK로 응답한다.
    • ACK 확인
      • 클라이언트는 서버의 응답을 받고 연결이 수립되었음을 확인한 후 데이터를 전송할 준비를 한다.
  • 장점
    • 데이터 전송 여부 확인 가능
      • 데이터를 전송한 후 응답 받기 때문에 데이터가 잘 전송되었는지 확인할 수 있다.
    • 패킷 순서 보장
      • 데이터를 나누어 보내더라도, TCP는 패킷의 순서를 보장한다.
      • 여러 패킷으로 나눠서 전송되더라도 순서대로 재조합해서 전송한다.
  • 단점
    • 신뢰성을 보장하지만, 그만큼 속도가 느리다.
      • 3 Way HandShake 과정에서 연결을 설정하는 데 시간이 걸리고, 데이터 전송 속도 또한 상대적으로 느리다.

5. UDP(User Datagram Protocol)

UDP(User Datagram Protocol)

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


IP와 UDP의 차이점: 포트(Port)

  • IP는 데이터를 전송하는 경로를 정의하지만, 특정 애플리케이션을 지정하거나 여러 애플리케이션 간의 구별을 할 수 없다.
  • UDP는 포트를 사용하여 여러 애플리케이션이 동일한 IP 주소에서 서로 다른 데이터를 받을 수 있도록 한다.

6. PORT

PORT

  • 네트워크 통신에서 프로세스 또는 애플리케이션을 구별하기 위해 사용되는 번호이다.
  • 각 애플리케이션을 구별할 수 있는 식별자 역할을 한다.
  • IP 주소가 특정 장치를 지칭한다면, PORT는 그 장치 내에서 실행 중인 프로그램을 구별하는 역할을 한다.

 

PORT 번호의 범위

  • 0 ~ 65535 할당 가능
  • 이미 사용되고 있는 포트 (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)