탕구리's 블로그

TCP 와 UDP - 제 4계층의 프로토콜 본문

Conception/Computer Network

TCP 와 UDP - 제 4계층의 프로토콜

탕구리당 2019. 7. 31. 14:41
반응형

 

제4 계층의  프로토콜은 뭐가 있을까?

 

제 4계층의 프로토콜은 크게 두 가지로 구분됩니다. 정확성을 우선시하는 TCP(Transmission Control Protocol)신속성을 우선시하는 UDP(User Datagram Protocol)입니다. 

 

TCP에서는 두 노드 간 세션의 확립을 위해 3-way-hanshake 과정이 이루어지고, 세션 종료 시 4-way-handshake 과정을 통해 세션을 종료합니다. 또한 지속적으로 패킷은 송신과 수신에 대한 메시지를 주고받으며 패킷이 정확히 전달되었는지 정확히 취득하였는지 지속적인 환인을 진행합니다. 이렇게 높은 신뢰성을 제공하는 TCP는 주로 웹, 메일, 파일 공유 등 적확한 데이터의 전송을 필요로 하는 서비스에서 사용합니다.

 

이에 반해 UDP에서는 데이터 신뢰성보다는 신속한 데이터 전달을 목적으로 합니다. TCP와는 다르게 데이터를 전송만 하면 전송 여부와 수신 여부에 대해서는 별다른 과정을 통해 판단하지 않기 때문에 TCP 보다 상대적으로 과정이 간단합니다. 그렇기 때문에 빠른 속도를 기대할 수 있죠. UDP는 VoIP나 시간 동기, 이름 해결 등과 같은 서비스에 사용합니다.

 

 

* 이름 해결 : 호스트명 + 도메인명에 대응하는 IP 주소를 가르쳐주는 과정

 

3 way, 4 way handshake에 대한 자세한 내용이 궁금하다면 "TCP의 연결과 종료"를 참고해주세요.

 

 

 

서비스를 식별하는 방법

 

TCP와 UDP는 "포트 번호"라는 숫자를 이용하여 컴퓨터 안의 어떤 서비스에게 데이터를 전달하면 좋을지 식별합니다. 포트 번호는 '0 ~ 65535' 숫자를 사용하며 크게 3가지의 종류로 분리하며 범위에 따라 용도가 나뉘어 있습니다.

 

0 ~ 1023 (Well-known Port) : 일반적인 소프트웨어가 클라이언트의 서비스 요청을 대기할 때 사용하는 포트 번호입니다.  

* 웹서버는 : 80 Port, Mysql :3306, Kibana : 5601 등을 기본 포트로 사용합니다.

 

1024 ~ 49151 (Registered Port) :  제조업체의 독자적인 소프트웨어가 클라이언트의 서비스 요청을 대기할 때 사용합니다. 

 

49152 ~ 65535 (Dynamic Port) : 서버가 클라이언트를 식별하기 위해 사용합니다.

 

 

 

Port 번호의 사용

 

Request와 Response 과정에서 포트를 사용하는 방식은 오른쪽 그림과 같습니다. 각 계층에서 Port를 어떻게 사용하는지 알 수 있습니다.

 

 Application 계층에서부터 내려온 데이터는 L4에서 출발지 포트와 목적지 포트 번호를 담아 하위 계층으로 이동합니다.

 

각각의 계층에서는 계층에서 담당하는 정보를 헤더에 담아 목적지로 발송하게 됩니다.

 

패킷이 목적지 컴퓨터에 도착하게 되면 하위 계층부터 차근차근 상위 계층으로 올라가면 디 캡슐화를 진행합니다. 

 

제4 계층에 도착하게 되면 TCP 헤더에 담긴 목적지 Port 번호를 확인하고 해당 포트번호에 대해서 대기 중인 서비스로 OS에 의해서 연결됩니다.

 

응답의 경우 기본적으로 목적지 포트 번호를 알 고 있기 때문에 리퀘스트 그 작업과 동일한 방법으로 응답 과정이 진행됩니다.

 

 

 

* 그림 한 장으로 보는 최신 서버 가이드북 - chapter 2를 기반으로 작성된 자료입니다.

반응형
Comments