본문으로 바로가기

[HTTP] TCP, UDP 란?

category Server/HTTP 2022. 2. 1. 15:49
반응형

◎ 인터넷 네트워크

  - 인터넷 프로토콜(IP) 이란?

  - TCP, UDP 란?

  - Port 란?

  - DNS 란?

 

 

● TCP, UDP 란?

 

 

 

○ TCP 

전송 제어 프로토콜(TCP)은 인터넷 프로토콜 스위트의 핵심 프로토콜 중 하나로,

IP와 함께 TCP/IP라는 명칭으로도 널리 불린다.

TCP는 근거리 통신망이나 인트라넷, 인터넷에 연결된 컴퓨터에서 실행되는

프로그램 간에 일련의 옥텟을 안정적으로, 순서대로, 에러 없이 교환할 수 있게 한다.

 

 

 

○ UDP

사용자 데이터그램 프로토콜(UDP)은 인터넷 프로토콜 스위트의 주요 프로토콜 가운데 하나로

1980년에 데이빗 리드가 설계하였고, 현재 IETF의 RFC 768로 표준으로 정의되어 있으며,

TCP와 함께 데이터그램으로 알려진 단문 메시지를 교환하기 위해서 사용된다.

 

 

 

 


 

 

 

 

TCP/UDP를 설명하기 앞서 먼저 알아야 하는 것이 있다.

 

 

 

출처: 인프런 모든 개발자를 위한 HTTP 웹 기본지식

 

바로 인터넷 프로토콜의 4계층이다.

 

애플리케이션 계층 아래 전송 계층, 그 아래 인터넷 계층, 그 아래에 네트워크 인터페이스 계층이 있다.

 

 

이 프로토콜 계층에서 클라이언트 서버 간 데이터 전송이 이뤄진다.

 

 

 

예를 들어 클라이언트에서 서버에게 hello world라는 데이터를 전송하고자 한다.

 

전송 순서는 아래와 같다.

 

1. 애플리케이션 계층에 Socket 라이브러리를 통해 OS(운영체제)로 전달

 

2. OS에 TCP에서 TCP 정보를 생성, 메시지 데이터를 포함

 

3. OS에 IP에서 IP 패킷 생성, TCP 데이터 포함

 

4. 네트워크 인터페이스에 LAN 카드를 통해 인터넷으로, 이제 서버로 전송이 된다.

 

 

 

 

 

IP 패킷에는 출발지 IP, 목적지 IP 등등이 있고,

클라이언트는 그 안에 전송 데이터를 담아서 목적지에 전달한다.

 

하지만 TCP/IP 패킷은

IP 패킷 안에 출발지 PORT, 목적지 PORT, 전송 제어, 순서 등등 을 포함한

TCP 세그먼트를 담은 구조이다.

 



 

 


● TCP 특징

 

 

 

TCP는 전송 제어 프로토콜(Transmission Control Protocol)의 약어로

다음과 같은 특징을 같는다.

 

 

 

• 연결 지향 - TCP 3 way handshake (가상 연결)

 

• 데이터 전달 보증

 

• 순서 보장

 

 

 

 

 

 


● TCP 3 way handshake

 

 

 

 

IP 프로토콜의 한계에는 비연결성이 있다.

 

※ 비연결성: 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송

 



TCP는 TCP 3 way handshake를 통해 비연결성을 해결해준다.

동작 원리는 아래와 같다.

 

 

1. 클라이언트에서 서버에게 데이터를 전송하기 전, SYN(접속 요청)을 보낸다.

 

2. 서버는 해당 SYN을 받으면 SYN + ACK(요청 수락)을 보낸다.

 

3. 서버로부터 SYN+ACK을 받은 클라이언트는 서버에게 ACK 다시 보낸다.

 

4. 이제 클라이언트에서 서버에게 전송할 데이터를 보낸다.

 

(요즘에는 3번 과정을 수행할 때, 4번도 같이 수행한다.)

 

 

 

 

 

 


● 데이터 전달 보증

 

 

 

 

IP 프로토콜의 한계에는 비신뢰성이 있다.

※ 비신뢰성: 중간에 패킷이 사라지면?

 

 

TCP에서는 간단하게 이 문제를 해결한다.

 

 

클라이언트에서 서버로 데이터를 전송하면,

서버 측에서 데이터를 잘 받았다는 신호를 준다.

 

 

 

 

 


● 순서 보장

 

 

 

 

IP 프로토콜의 한계에는 비신뢰성이 있다.

※ 비신뢰성: 패킷이 순서대로 안 오면?

 

 

TCP에서는 이러한 문제점을 아래의 순서로 해결한다.

 

1. 클라이언트가 패킷 1, 패킷2, 패킷3의 순서로 서버에게 전송

 

2. 서버에 패킷1, 패킷 3, 패킷 2 순서로 도착했을 경우(1,2,3 순서가 아님)

 

3. 서버가 클라이언트에게 패킷 2부터 다시 보내라고 한다.

 

 

 

앞서 말한 출발지 PORT, 목적지 PORT, 전송 제어, 순서 등등 을 포함한

TCP 세그먼트를 통해 위와 같은 문제점들을 해결할 수 있는 것이다.

 

 

 

 

 

 

 


● UDP 

 

 

 

UDP는 사용자 데이터그램 프로토콜(User Datagram Protocol)의 약자이다.

 

 

UDP는 하얀 도화지에 비유된다.(기능이 거의 없음)

 

연결 지향(TCP 3 way handshake)의 기능도 없고,

데이터 전달 보증의 기능도 없고

순서 보장의 기능도 없다.

 

사실상 IP와 거의 동일하다.

 

그렇다면 왜 UDP가 나왔으며 최근에 각광받고 있을까?

 

 

UDP는 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠르다.

 

또 IP 프로토콜의 한계인 프로그램 구분을 해결해준다.

※프로그램 구분: 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면?



 

예를 들어 인터넷에서 음악도 듣고, 영상도 보고 여러 작업들을 하고 있다고 하자.

음악을 제공해주는 서버, 영상을 제공해주는 서버는 각각 다른 서버이다.

 

나의 IP 주소는 하나인데, 위와 같은 여러 애플리케이션과 통신을 해야 하는 상황에

UDP에 PORT를 이용하여 해결한다.

 

나의 IP주소에 추가적인 정보(PORT)를 만들어 

여러 서버와의 동시적인 통신을 할 수 있게 된다.

 

 

 

 

 

 

다음 포스팅에선 PORT에 대해서 알아보고자 한다.

 

 

 

 

 

 

반응형

'Server > HTTP' 카테고리의 다른 글

[HTTP] HTTP란? | HTTP 특징  (0) 2022.02.04
[HTTP] URI | URL | URN 이란? | URL, URI, URN 차이점  (0) 2022.02.02
[HTTP] DNS 란?  (0) 2022.02.01
[Http] Port 란?  (0) 2022.02.01
[HTTP] 인터넷 프로토콜(IP) 이란?  (0) 2022.02.01