상세 컨텐츠

본문 제목

IT 관련 프로토콜(1) - 전송계층 중 TCP와 UDP 설명 (3 way handshake 포함)

학습/IT

by 전설의백호 2021. 6. 2. 18:45

본문

이번 포스트는 TCP와 UDP에 대해 알아보겠습니다.

저번 포스트 중에 OSI 7계층에 대해서 설명해 드렸습니다. 그중 4 계층에는 전송(Transport) 계층이 있었는데, 해당 계층의 대표 프로토콜에는 TCP(Transmission Control Protocol, 연결지향형 프로토콜)와 UDP(User Datagram Protocol, 비연결지향형 프로토콜)가 있습니다.

(OSI 7계층이 궁금하신 분들은 본 포스트 맨 하단 연관 포스트에서 확인하실 수 있습니다.)

 TCP와 UDP의 가장 큰 차이 중 하나는 바로 신뢰성입니다. 이 신뢰성을 확보하기 위해 TCP의 경우 몇 가지 절차가 있으며, 이에 따라 전송 단위라던가 해더 부분에서 차이가 발생하게 됩니다. 여기서는 각 프로토콜들에 대해 간략히 살펴보고 분량 문제에 따라 각 헤더 부분에 대해서는 기회가 된다면 다른 포스팅에서 다뤄보도록 하겠습니다. 

(참고로 이 절차들에 대해서는 아래에서 자세히 살펴보겠습니다.)

 

(ⓒ 전설의 백호)

 그럼 이제 본격적으로 각 프로토콜들에 대해 알아보겠습니다.

 위에서 언급한 것처럼 UDP란 신뢰성 없는 연결을 의미하며, 신뢰성이 없다는 뜻은 송신측과 수신 측이 데이터에 관한 정보를 주고받는 것이 아니라 송신 측에서 일방적으로 데이터만 보낸다는 뜻으로, 아래에서 설명드릴 TCP에서의 3 way handshake나 4 way handshake와 같이 주고받는 절차가 없다는 의미입니다.

이때 65,535byte가 넘는 데이터그램(메세지)은 네트워크 구조적 특성에 의해 분할해서 보내게 되는데, 송신 측에서는 분할된 데이터 중 일부가 누락되어도 확인이 어렵고, 데이터를 받다 끊어질 경우 어디까지 받았는지 송신 측에서 확인하지 않기 때문에 이어서 받기가 어렵습니다. 대신 1:1 외에 1:다수나 다수:다수로 데이터그램(메시지)을 전송할 수 있다는 특징이 있습니다.

 그렇기 때문에 UDP를 주로 사용하는 곳은 비교적 덜 중요한 데이터가 전송되고 속도를 중요시 하는 곳들로, 스트리밍 서비스를 하는 사이트나 VoIP, mVoIP와 같은 서비스를 제공하는 사이트 등이 사용합니다. 

 

 TCP란 UDP와 다르게 흐름제어나 혼잡 제어 등을 통해 신뢰성을 보장합니다. 신뢰성을 보장하는 방법은 송신 측과 수신 측이 데이터 전송에 관한 정보를 주고받으면서 누락되거나 끊어진 부분을 확인해 보고, 끊어진 부분부터 다시 데이터를 보내게 됩니다. 이때 데이터 전송에 관한 정보를 받기 위해 가상 회선 방식을 이용하게 되며, 가상 회선을 이용하기 때문에 1:1로 연결된다는 특징이 있습니다.

 따라서 TCP는 속도는 좀 떨어지더라도 신뢰성이 중요한 곳들에 사용되며, 예시로 파일 전송이 필요한 곳이나, 전자우편 등에 사용하게 됩니다.

 

( TCP 연결 과정 ⓒ 전설의 백호)

 TCP 연결 방식에 대해 조금 더 알아보겠습니다.

 먼저 3 way handshake란 TCP에서 처음 연결할 때 사용되며, 위에 자료와 같이 SYN 플러그를 이용합니다. 구체적으로는 클라이언트가 처음에 SYN 플래그가 포함된 패킷을 보내게 되면, 서버는 ACK로 응답함과 동시에 SYN을 클라이언트에게 보내고, 클라이언트가 해당 메시지를 수신 완료했다는 답변(ACK)을 보냄으로써 가상 회선이 열리게 됩니다.

 3 way handshake가 끝나서 가상 회선이 열릴 경우 해당 가상 회선을 이용해 정보를 보내게 되는데, 이때 클라이언트가 요청한 정보에 한해서 서버에서는 데이터를 보내게 됩니다. 이때 서버에서는 데이터 용량이 크기 때문에 분할해서 보내는데 이 분할된 데이터마다 순서를 붙여 보내게 되고, 클라이언트는 누락되거나 끊어진 정보가 있을 경우 서버에 해당 데이터를 보내달라고 다시 요청하게 됩니다.  

 데이터를 다 주고받은 후 가상 회선을 종료할 때는 4 way handshake가 사용되며, 아래 사진과 같이 FIN 플래그를 이용합니다.  시작할 때처럼 클라이언트에서 서버에게 종료하겠다는 의사를 전달하고, 해당 의사를 확인했다는 의사를 서로 보내줌으로써 가상 회선을 끊어주게 됩니다.

참고로 여기서 언급한 ACK나 SYN이나 FIN 플래그 외에도 몇 가지 플래그가 더 있는데 이 부분은 기회가 된다면 헤더 부분을 볼 때 같이 보도록 하겠습니다.

 

이상 이번 포스트에서는 ' TCP와 UDP '에 대해 알아보았습니다. 

서두에 작성한 것처럼 분량 문제나 여러 사정으로 인해 TCP와 UDP에 대해 전부 알아보지는 못했지만 대략적으로 어디에 사용되는지, 어떻게 연결이 이뤄지는지에 대해 알아보았습니다. 위의 두 프로토콜은 실생활에서 실질적으로 사용되는 프로토콜이면서 해당 프로토콜과 연계해서 공격이 가능하는 등 다양한 쓰임이 있기 때문에 개념적인 부분을 잘 잡아두시는 것을 추천드립니다. 

 

- 연관 포스트 바로가기 -

1. [학습/IT] - OSI 7계층이란? (대표 프로토콜, 대표 장비, 전송 단위 등 포함) 바로가기

2. [정보/개발] - 라즈베리 시리즈(1) - 라즈베리 파이4에 os 설치하기(라즈비안)

3. [학습/안전] - 사망 만인율 알아보기 (상시 근로자 수 산정법 포함)

 

본 포스트는 광고나 쿠팡 파트너스 등을 통해 소정의 대가를 제공받을 수 있다는 점을 알려드리며, 다음에도 다양한 소식으로 찾아뵙겠습니다.

다음, 네이버, 빙, 구글에서 전설의 백호 집◁ 를 검색하시면 블로그/웹사이트에서 만나 볼 수 있어요!

더보기

댓글 영역