'모든 개발자를 위한 HTTP 웹 기본 지식' 강의를 보고 정리하였습니다.
TCP(Transmission Control Protocol)는 IP에서 발생하는 수많은 문제점들을 해결하기 위해 나온 프로토콜입니다.
(IP 프로토콜의 한계가 궁금하신 분들은 이전 포스팅을 참고해 주세요 !)
TCP에 대해 알아보기 전, 먼저 인터넷 프로토콜 계층을 살펴보겠습니다.
인터넷 프로토콜 스택의 4 계층

인터넷 프로토콜 스택은 다음과 같이 구성되어 있습니다.
IP 위에 TCP를 얹어 보완한 느낌이라고 생각하면 될 것 같습니다.
프로토콜 계층

강의를 듣고 리마인드 하는 시간을 가지면서 이런 그림들을 직접 그려보는데요, 직접 그린 그림으로 첨부하고 싶지만 .. 저에게는 패드가 없기 때문에 영한님의 자료를 살짝 가져오도록 하겠습니다 🥲
위 그림과 같이 데이터를 전송할 때는 수많은 과정을 거치게 됩니다.
IP 패킷 정보 = 출발지 IP, 도착지 IP, 전송 데이터
TCP/IP 패킷 정보 = IP 패킷 정보 + 출발지 PORT, 도착지 PORT, 전송 제어, 순서, 검증 정보 등
(PORT에 대해서는 다음 포스팅에서 정리해 볼 예정입니다 😊)
* 패킷(packet)이란? packge(짐, 묶음) + bucket(덩어리)의 합성어
이렇게 TCP/IP 패킷 정보에는 전송 제어, 순서, 검증 정보에 대한 것들이 담겨있습니다. 그렇기 때문에 IP에서 발생했던 문제들(비연결성, 비신뢰성 등)을 해결해 줄 수 있는 것입니다.
TCP 특징
1. 연결지향적이다.
TCP 3 way handshake 기법으로 통신할 서버의 연결 상태를 사전에 확인할 수 있습니다.

* syn: 접속 요청, ack: 요청 응답
클라이언트가 접속 요청(syn)을 보내면 → 서버가 요청 응답(ack)을 보내는 동시에, 접속 요청(syn)을 보냅니다 → 접속 요청을 받은 클라이언트 또한 다시 서버에게 요청 응답(ack)을 보냅니다.
이렇게 서로 데이터를 주고받을 수 있는 상태라는 걸 확인한 후에, 데이터를 전송합니다.
만약 한쪽에서 요청 응답(ack)이 오지 않으면, 데이터를 주고받을 수 없는 상태라는 것을 알고 데이터를 전송하지 않겠죠?
👉🏻 IP 프로토콜에서 발생했던 비연결성 문제를 해결해 줍니다.
2. 데이터 전달을 보증한다.
클라이언트가 서버에 데이터를 전송하면, 서버는 클라이언트에게 성공적으로 데이터를 받았다는 메시지를 보냅니다.
3. 순서를 보장한다.
클라이언트가 1, 2, 3 순서로 패킷을 전송했는데 서버가 1, 3, 2 순서로 패킷을 받았다면, 서버가 클라이언트에게 2번 패킷부터 다시 보내라고 알려줍니다. 그럼 클라이언트는 서버의 요청을 듣고 2번 패킷부터 다시 보냅니다.
👉🏻 IP 프로토콜에서 순서를 보장받지 못했던 문제를 해결해 줍니다.
그래서 TCP가 왜 필요한 건데? 🧐
이 모든 것은 TCP에 전송 제어, 순서, 검증 정보가 담겨 있기 때문에 가능한 것입니다. 이러한 특징들로 현재 대부분 TCP를 사용하고 있습니다.
그렇다면 UDP(User Datagram Protocol)는 무엇일까요 ?
UDP 특징
사실 UDP에는 기능의 거의 없습니다.
- 데이터 전달도 보장받지 못하고,
- 순서도 보장받지 못합니다.
- 하지만, 단순하고 빠르다는 장점이 있습니다.
이 UDP는 IP와 거의 같다고 할 수 있습니다. IP에 PORT와 체크섬 정도만 추가한 프로토콜입니다.
그렇다면 이 UDP는 왜 쓰는 걸까요?
TCP는 3 way handshake를 진행하는 시간, 클라이언트와 서버 간 응답하는 시간, TCP에 담기는 수많은 정보들 등등을 따져봤을 때, 데이터의 양도 크고 전송 속도도 빠르게 만들기 어렵습니다.
최적화하고 싶을 때, 아무 기능이 없는 UDP에 원하는 정보만 담아 사용하면 되겠죠 !
다음 포스팅에는 IP에서 발생했던 프로그램 구분 문제를 해결해 줄 수 있는 PORT에 대해 정리해 보도록 하겠습니다. 😊
'HTTP' 카테고리의 다른 글
[HTTP] 2-2. 웹 브라우저 요청 흐름 (0) | 2025.02.22 |
---|---|
[HTTP] 2-1. URI (0) | 2025.02.20 |
[HTTP] 1-5. DNS (0) | 2025.02.19 |
[HTTP] 1-4. PORT (0) | 2025.02.19 |
[HTTP] 1-2. IP (0) | 2025.02.18 |
'모든 개발자를 위한 HTTP 웹 기본 지식' 강의를 보고 정리하였습니다.
TCP(Transmission Control Protocol)는 IP에서 발생하는 수많은 문제점들을 해결하기 위해 나온 프로토콜입니다.
(IP 프로토콜의 한계가 궁금하신 분들은 이전 포스팅을 참고해 주세요 !)
TCP에 대해 알아보기 전, 먼저 인터넷 프로토콜 계층을 살펴보겠습니다.
인터넷 프로토콜 스택의 4 계층

인터넷 프로토콜 스택은 다음과 같이 구성되어 있습니다.
IP 위에 TCP를 얹어 보완한 느낌이라고 생각하면 될 것 같습니다.
프로토콜 계층

강의를 듣고 리마인드 하는 시간을 가지면서 이런 그림들을 직접 그려보는데요, 직접 그린 그림으로 첨부하고 싶지만 .. 저에게는 패드가 없기 때문에 영한님의 자료를 살짝 가져오도록 하겠습니다 🥲
위 그림과 같이 데이터를 전송할 때는 수많은 과정을 거치게 됩니다.
IP 패킷 정보 = 출발지 IP, 도착지 IP, 전송 데이터
TCP/IP 패킷 정보 = IP 패킷 정보 + 출발지 PORT, 도착지 PORT, 전송 제어, 순서, 검증 정보 등
(PORT에 대해서는 다음 포스팅에서 정리해 볼 예정입니다 😊)
* 패킷(packet)이란? packge(짐, 묶음) + bucket(덩어리)의 합성어
이렇게 TCP/IP 패킷 정보에는 전송 제어, 순서, 검증 정보에 대한 것들이 담겨있습니다. 그렇기 때문에 IP에서 발생했던 문제들(비연결성, 비신뢰성 등)을 해결해 줄 수 있는 것입니다.
TCP 특징
1. 연결지향적이다.
TCP 3 way handshake 기법으로 통신할 서버의 연결 상태를 사전에 확인할 수 있습니다.

* syn: 접속 요청, ack: 요청 응답
클라이언트가 접속 요청(syn)을 보내면 → 서버가 요청 응답(ack)을 보내는 동시에, 접속 요청(syn)을 보냅니다 → 접속 요청을 받은 클라이언트 또한 다시 서버에게 요청 응답(ack)을 보냅니다.
이렇게 서로 데이터를 주고받을 수 있는 상태라는 걸 확인한 후에, 데이터를 전송합니다.
만약 한쪽에서 요청 응답(ack)이 오지 않으면, 데이터를 주고받을 수 없는 상태라는 것을 알고 데이터를 전송하지 않겠죠?
👉🏻 IP 프로토콜에서 발생했던 비연결성 문제를 해결해 줍니다.
2. 데이터 전달을 보증한다.
클라이언트가 서버에 데이터를 전송하면, 서버는 클라이언트에게 성공적으로 데이터를 받았다는 메시지를 보냅니다.
3. 순서를 보장한다.
클라이언트가 1, 2, 3 순서로 패킷을 전송했는데 서버가 1, 3, 2 순서로 패킷을 받았다면, 서버가 클라이언트에게 2번 패킷부터 다시 보내라고 알려줍니다. 그럼 클라이언트는 서버의 요청을 듣고 2번 패킷부터 다시 보냅니다.
👉🏻 IP 프로토콜에서 순서를 보장받지 못했던 문제를 해결해 줍니다.
그래서 TCP가 왜 필요한 건데? 🧐
이 모든 것은 TCP에 전송 제어, 순서, 검증 정보가 담겨 있기 때문에 가능한 것입니다. 이러한 특징들로 현재 대부분 TCP를 사용하고 있습니다.
그렇다면 UDP(User Datagram Protocol)는 무엇일까요 ?
UDP 특징
사실 UDP에는 기능의 거의 없습니다.
- 데이터 전달도 보장받지 못하고,
- 순서도 보장받지 못합니다.
- 하지만, 단순하고 빠르다는 장점이 있습니다.
이 UDP는 IP와 거의 같다고 할 수 있습니다. IP에 PORT와 체크섬 정도만 추가한 프로토콜입니다.
그렇다면 이 UDP는 왜 쓰는 걸까요?
TCP는 3 way handshake를 진행하는 시간, 클라이언트와 서버 간 응답하는 시간, TCP에 담기는 수많은 정보들 등등을 따져봤을 때, 데이터의 양도 크고 전송 속도도 빠르게 만들기 어렵습니다.
최적화하고 싶을 때, 아무 기능이 없는 UDP에 원하는 정보만 담아 사용하면 되겠죠 !
다음 포스팅에는 IP에서 발생했던 프로그램 구분 문제를 해결해 줄 수 있는 PORT에 대해 정리해 보도록 하겠습니다. 😊
'HTTP' 카테고리의 다른 글
[HTTP] 2-2. 웹 브라우저 요청 흐름 (0) | 2025.02.22 |
---|---|
[HTTP] 2-1. URI (0) | 2025.02.20 |
[HTTP] 1-5. DNS (0) | 2025.02.19 |
[HTTP] 1-4. PORT (0) | 2025.02.19 |
[HTTP] 1-2. IP (0) | 2025.02.18 |