[Network] 인터넷 네트워크의 기초 이해 - IP와 TCP,UDP

2026. 3. 25. 09:15·Network

인터넷 통신

우리가 사용하는 웹 서비스(브라우저, 애플리케이션, 서버 통신 등)의 모든 것은 HTTP 기반 위에서 동작합니다.

그렇다면 인터넷에서 서로 멀리 떨어진 컴퓨터는 어떻게 통신을 하고 데이터를 보낼 수 있을까요?


HTTP(Hyper Text Transfer Protocol)

💡HTTP
     ↳ 클라이언트와 서버가 어떤 형식으로 데이터를 주고받을지 정하는 통신 규약(무엇을 보낼지)
         ex) 클라이언트 -> 서버 요청시, 서버는 응답 반환

HTTP 특징

✔️ 요청(Request) / 응답(Response) 구조
✔️ 텍스트 기반 프로토콜
✔️ 웹에서 가장 많이 사용됨

하지만 HTTP만으로는 통신이 불가능합니다. HTTP는 "어떤 데이터를 주고받을지"에 대한 규칙일 뿐, 실제로 데이터를 보내는 역할은 하지 않습니다. 그래서 필요한 것이 바로 IP(Internet Protocol)입니다.

💡HTTP는 규칙일 뿐, 실제 데이터 전달은 다른 프로토콜이 담당

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

💡IP
     ↳ 데이터를 목적지까지 전달하기 위한 주소 기반 통신 규칙(데이터를 어디로 보낼지)

클라이언트가 서버에 요청을 할 때는 최소한의 규칙이 필요한데, 그것을 우리는 IP로 구분을 합니다.

그래서 클라이언트와 서버 모두 IP가 있어야 합니다.

IP의 역할

✔️ 지정한 IP 주소(IP address)에 데이터 전달
✔️ 데이터를 목적지까지 전달 - 패킷(Packet) 통신 단위로 데이터 전송

즉, 메시지를 그냥 보내는 것이 아닌 IP 패킷 규칙에 맞춰서 보냅니다.

 

IP 패킷 구조

IP 패킷 구조는 마치 택배가 주소를 부쳐 보내듯이 출발지(클라이언트) IP, 목적지(서버) IP, 데이터가 필요합니다..

이렇게 IP 패킷을 생성 후 데이터를 전송합니다.

IP패킷(데이터) 이동 방식

✔️ 클라이언트(출발지) -> 여러 중간 서버(노드) -> 서버(목적지)
     ↳ 데이터는 한 번에 목적지로 가지 않으며, 각 서버(노드)가 목적지 IP를 보고 최적의 경로로 목적지를 향해 서로 전달

응답도 동일한 방식으로 IP 패킷을 전달하지만, 인터넷망은 매우 복잡한 네트워크 구조로 이루어져 있어 요청과 응답의 경로는 다를 수 있습니다.

💡 즉, 데이터는 정해진 하나의 길로 이동하는 것이 아니라 상황에 따라 가장 효율적인 경로로 이동

IP의 한계

IP를 주소를 부여하고 패킷에 담는 방식. 즉, 주소를 기반으로 데이터를 전달하는 방식에는 한계가 있습니다.

특징 설명 예시
비연결성(Connectionless) 서버가 없거나 꺼져 있어도 일단 보냄 서버가 다운되어있는데 클라이언트는 모르고 계속 데이터 전송
-> 데이터 유실
비신뢰성(Unreliable) IP는 데이터가 잘 도착했는지 확인하지 않음
- 데이터 유실 우려
- 순서 보장x
- 중간에 패킷이 사라질 수 있음
- 메세지의 크기가 크면 나눠서 보내지만 순서가 뒤바뀔 수 있음
Ex) Hello /  World 전송
도착 : World / Hello
프로그램 구분 불가능 하나의 IP 주소에서 여러 프로그램이 통신을 하면 구분 불가 게임을 하면서 노래를 들으면 데이터가 어떤 프로그램으로 가는지 구분 불가x

이러한 IP의 한계를 해결하기 위해 등장한 것이 바로 TCP(Transmission Control Protocol)입니다.

💡HTTP는 클라이언트와 서버 간의 데이터 교환 규칙이며, 실제 데이터 전달은 IP와 같은 하위 프로토콜을 통함

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

💡 인터넷에서 데이터를 보낼 때는 한 번에 보내는 게 아니라 단계별로 나눠서 처리하며, 이를 프로토콜 스택이라고 합니다

데이터 전송 과정

계층 설명 예시
애플리케이션 1계층(HTTP, FTP)  어떤 메시지를 보낼지 결정. 메세지 내용만 존재 "안녕하세요, 요청합니다" 내용 작성
전송 2계층(TCP, UDP) TCP 세그먼트(Segment) 생성
- 데이터를 포함한 출발 포트, 도착 포트, 순서 검증 정보 생성. 
*포트 : 컴퓨터안에 프로그램 구분
메세지를 안전하게 보내기 위해 택배 상자에 포장
인터넷 3계층(IP) IP 패킷(Packet) 생성
- 출발지 IP, 목적지 IP, TCP 세그먼트
*IP : 어떤 컴퓨터인지 지정
상자에 주소 작성
네트워크 인터페이스 4계층(LAN) 인터넷, 와이파이 등을 통한 실제 전송 택배 발송!

TCP 세그먼트 : TCP 계층에서 만든 데이터, IP 패킷 : IP 계층에서 만든 데이터

💡데이터는 위와 같은 순서로 포장되며, 각 계층은 서로 다른 역할을 담당하여 유지보수가 용이하다

 


TCP(Transmission Control Protocol, 전송 제어 프로토콜)

💡TCP
   ↳ 인터넷에서 데이터를 안전하게 보내기 위한 통신 규약
      즉, 데이터를 정확하고 안전하게 전달해 주는 프로토콜
특징 설명 예시
연결 지향
(Connection-Oriented)
데이터를 보내기 전에 먼저 연결을 맺고 시작 상대방이 전화를 받아야 대화 시작 가능,
연결이 안되면 통신 불가
데이터 전달 보증 상대방이 제대로 받았는지 응답을 받아 확인,
응답 없으면 재전송
클라이언트가 서버에 메세지를 전송 하면 서버는 응답(ACK)하면 정상.
만약 데이터가 유실되어 서버가 응답이 없으면 재전송
순서 보장 데이터가 보낸 순서 그대로 도착하도록 보장 패킷을 1 -> 2-> 3 이렇게 보냈는데
2 -> 1-> 3 으로 도착하면
서버가 다시 재전송 요청
즉, TCP가 순서를 다시 맞춤

실제로는 더 많은 기능이 있지만, 이 3가지가 제일 중요함.

✔️ 위의 특징들로 TCP는 신뢰할 수 있는 프로토콜이며, 현대 대부분의 웹 서비스는 TCP 기반으로 동작

TCP 연결 과정(TCP 3 way handshake)

💡TCP 3 way handshake
     ↳ 데이터를 전송하기 전에, 상대방과 연결이 가능한 상태인지 먼저 확인하는 과정

클라이언트 -> 서버에게 요청하는 상황이라고 가정하고 동작 흐름을 보겠습니다.

순서 명칭 대상 내용
1 SYN(Synchronize) 클라이언트 -> 서버 서버한테 접속 요청
2 SYN + ACK 서버 -> 클라이언트 SYN : 서버도 클라이언트한테 접속 요청
ACK : 요청 제대로 수신 했다고 응답
3 ACK(Acknowledgment) 클라이언트 -> 서버 최종 확인

*요즘은 마지막 ACK(확인 응답) 단계에서 데이터를 함께 전송하기도 합니다.(연결 확인과 동시에 데이터 전송 시작)

 

위 3단계가 끝나면 데이터 전송 시작이 가능하며, 여기서 중요한 점은 서로 통신 가능한 상태인지 확인하는 과정입니다.

이런 복잡한 과정을 거치는 이유는 신뢰성 확보를 위해 상대가 통신이 가능한 상황인지 확인하는 것입니다.

✔️ TCP는 3-way handshake를 통해 연결을 먼저 확인한 후, 데이터를 누락 없이, 순서대로, 안전하게 전달하는 프로토콜

 

 


UDP(User Datagram Protocol)

💡UDP는 TCP와 같은 전송 계층에 존재하는 프로토콜로, TCP와 달리 기능이 거의 없는 아주 단순한 프로토콜
     ↳ 연결(3-way handshake), 데이터 전달 보증, 순서 보장 등의 기능이 없어 하얀 도화지라고도 많이 비유함
✔️ UDP 역할
- 데이터 전달
- 포트 번호 포함
- 체크섬(오류 확인 최소 기능)

-> UDP = IP + PORT + 간단한 검증

UDP 장점

TCP는 여러 가지 기능들로 안전하지만, 여러가지 기능을 수행해야 하는 만큼 속도가 상대적으로 느리며, 구조가 이미 정해져 있어 개발자가 최적화하기 어렵다.

✔️ UDP는 기능이 없는 대신 구조가 단순하고 속도가 빠르며 필요한 기능을 추가해 최적화 가능(하얀 도화지)
     ex) 실시간 스트리밍, 온라인 게임, 화상 통화 등  약간의 데이터 손실보다 속도가 더 중요한 경우 사용
💡 즉 TCP는 신뢰성을, UDP는 속도를 선택한 프로토콜

PORT

💡한 개의 IP(컴퓨터) 프로세스 내에서 실행되는 프로그램을 구분하기 위한 번호

PORT의 역할

데이터가 인터넷을 통해 전달될 때, 패킷은 먼저 IP 주소를 기준으로 컴퓨터까지 도착 합니다.

하지만 IP만으로는 이 패킷이 컴퓨터 내부의 어떤 프로그램을 위한 것인지 알 수 없습니다.

 

예를 들어 한 개의 컴퓨터에서는 동시에 여러 프로그램(웹 브라우저, 게임, 음악 앱 등)이 실행 되는데,

외부에서 도착한 데이터가 어떤 프로그램으로 가야 하는지 구분이 필요하고, 이를 구분하기 위한 것이 PORT입니다.

✔️ IP : 컴퓨터 찾기(아파트)
✔️ PORT : 프로그램 찾기(집 호수)

데이터 구조

✔️ 출발지 IP : PORT -> 목적지 IP : PORT
   ex) A 컴퓨터의 A 프로그램 -> B 컴퓨터의 B 프로그램 

PORT 범위

💡포트는 그냥 숫자 번호로 총 65,536개(0 ~ 65535) 있다.
    ↳ 프로그램(카톡, 게임, 유튜브 등)마다 각기 다른 번호를 부여받아야 하므로 많은 포트 번호가 존재하며,
       이로 인해 한 컴퓨터에서 동시에 수많은 프로그램 실행이 가능함
❗0 ~ 1023은 이미 역할이 정해져 있는 포트로, 시스템에서 사용하는 포트라 보통 사용하지 않음

대표 예시

서비스 포트
HTTP(웹) 80
HTTPS(보안 웹) 443
FTP 21

DNS(Domain Name System)

💡사람이 이해하기 쉬운 도메인 이름을, IP 주소로 변환해 주는 시스템

DNS의 필요성

❗ IP는 기억하기 어려움
      ↳ 구글 페이지를 방문할 때 IP 주소(200.10.10.10)로 방문하면 번거로울 것
❗IP는 변경되는 경우가 많음
     ↳ 처음에는 100.10.10.10의 IP로 데이터를 전송했는데, IP가 바뀌면 접근 불가
✔️ 위와 같은 문제들을 해결하기 위해, DNS는 전화번호부 같은 서버를 제공해 줌.
       ↳ 도메인 네임 시스템, 도메인 이름을 IP 주소를 로 변환

DNS 동작 과정

✔️ google.com 입력
✔️ DNS 서버에 요청
✔️ IP 주소 응답(100.100.~)
✔️ 해당 IP로 접속

 

💡 인터넷 통신은 DNS로 주소를 찾고, IP로 목적지를 찾은 뒤, PORT로 프로그램을 구분하고 TCP 또는 UDP를 통해 데이터를 전달한다.

'Network' 카테고리의 다른 글

[Network] - HTTP 상태코드 정리  (0) 2026.04.03
[Network] - HTTP 메서드 활용과 API 설계  (0) 2026.04.02
[Network] - HTTP 메서드와 HTTP API 설계  (1) 2026.04.01
[Network] - HTTP의 기초 이해  (0) 2026.03.30
[Network] - URI의 이해  (0) 2026.03.27
'Network' 카테고리의 다른 글
  • [Network] - HTTP 메서드 활용과 API 설계
  • [Network] - HTTP 메서드와 HTTP API 설계
  • [Network] - HTTP의 기초 이해
  • [Network] - URI의 이해
mins0on
mins0on
비전공자의 백엔드 개발자 공부 기록 일지입니다.
  • mins0on
    꾸준함의 가치
    mins0on
  • 전체
    오늘
    어제
    • 분류 전체보기 (65) N
      • Java (7)
      • Spring (9)
      • DataBase (1)
      • Algorithm (1)
      • Network (6)
      • 운영체제 (2)
      • 코드 분석 (26)
      • Trouble Shooting (4) N
      • Project (1)
      • Migration (3)
      • 기타 (1)
      • 개념 정리 (3)
      • Coding Test (1)
        • Baekjoon (1)
  • hELLO· Designed By정상우.v4.10.6
mins0on
[Network] 인터넷 네트워크의 기초 이해 - IP와 TCP,UDP
상단으로

티스토리툴바