All Honey Tip

[기술 면접] 3. TCP와 UDP를 비교해서 설명해주세요.

TCP UDP

저번 시간에 이어서, TCP와 UDP에 대해서 알아보겠습니다. 통신 프로토콜로써 자주 비교되는 개념입니다. 각 프로토콜의 특징과 차이, 그리고 통신 방법까지 알아보겠습니다.

UDP TCP





Q: TCP와 UDP를 비교해서 설명해주세요.

TCP는 연결형, 신뢰성 전송 프로토콜입니다. 연결 지향적 서비스를 제공하기 위해 데이터를 전송하기 전에 3-way handshake를 하여 두 호스트의 전송 계층 사이에 논리적 연결을 설립합니다. 신뢰성 있는 서비스를 제공하기 위해 오류제어, 흐름제어, 혼잡제어 등을 실행하며 header가 더 크고 속도가 비교적 느리다는 단점이 있습니다. 신뢰성이 중요한 통신(HTTP, File 전송 등)에 쓰입니다.

UDP는 비연결형 프로토콜로 3-way handshake 등의 세션 수립 과정이 없습니다. 또한 비신뢰성 프로토콜로 흐름제어, 오류제어, 혼잡 제어를 제공하지 않습니다. 이러한 단순성 덕분에 적은 양의 오버헤드로 수신 여부를 확인하지 않아서 속도가 빠릅니다. 실시간성이 중요한 통신(동영상 스트리밍 등)에 주로 사용됩니다.





Q: TCP에 대해서 자세히 설명해주세요.

TCP는 연결형, 신뢰성 전송 프로토콜입니다. 연결지향적 서비스를 제공하기 위해 데이터를 전송하기 전에 먼저 두 호스트의 전송 계층 사이에 논리적 연결을 설립합니다. 그 후 데이터 전송을 완료하면 연결을 해제합니다. TCP의 통신은 이렇게 connection setup, data transfer, connection termination의 세 단계로 나뉩니다.

신뢰성 있는 서비스를 제공하기 위해 TCP가 전체 스트림을 순서에 맞고 오류 없이, 또한 부분적인 손실이나 중복 없이 전송하는 것을 보장합니다. 이를 가능하게 하는 방법은 오류제어, 흐름제어, 혼잡제어 등이 있습니다. 흐름제어는 데이터를 보내는 속도와 데이터를 받는 속도의 균형을 맞추는 것을 뜻합니다. 오류제어훼손된 segment의 감지 및 재전송, 손실된 segment의 재전송, 순서가 맞지 않게 도착한 segment를 정렬하고 중복 segment 감지 및 폐기를 합니다. 이는 TCP header의 checksum, 확인 응답, 타임-아웃 등을 통해 수행됩니다.

패킷 교환 방식으로는 가상회선 패킷 교환 방식을 사용하여 논리적 연결을 위한 식별번호로 순서를 보장하며 전송합니다.






Q: 3-way handshake가 무엇인지와 그 과정을 설명해주세요.

TCP/IP 프로토콜로 통신하기 전, 정확한 정보 전송을 위해 상대방 컴퓨터와 세션을 수립하는 과정으로 TCP 연결 초기화라 할 수 있습니다.

클라이언트가 서버에게 접속을 요청하는 SYN 패킷을 보내면, 서버는 SYN+ACK 패킷을 클라이언트에 발송합니다. 클라이언트는 이것을 수신한 후, 다시 ACK를 서버에게 발송하면 연결이 이루어지고 데이터를 주고받을 수 있습니다.







Q: 4-way handshake는 무엇인지와 그 과정을 설명해주세요.

3-way handshhake를 통해 Connection setup된 TCP를 종료하는 Connection termination과정입니다.

TCP connection termination은 양방향으로 2개의 연결이 독립적으로 닫히기 때문에 4-way 단계를 거칩니다.

  1. Client process에서 active close를 하면, client tcp에서 FIN 세그먼트를 보냅니다.
  2. Server는 ACK로 응답하는데, Server 내의 process에게 EOF를 보내지만, process가 close되지 않을 수 있습니다.
  3. Server process로부터 passive close를 받으면, server TCP에서 FIN세그먼트를 client TCP에게 보냅니다.
  4. client는 ACKServer에게 보내고, 이를 수령하면 연결이 종료됩니다.






Q: TCP 통신을 설명해주세요.

  1. Connection setup으로 3-way handshaking을 사용하여 TCP 연결을 초기화시킵니다.
  2. Data transfer로 데이터를 전송합니다.
  3. Connection termination으로 4-way handshaking을 사용하여 TCP 연결을 종료합니다.






Q: UDP에 대해서 자세히 설명해주세요.

UDP는 비연결형, 비신뢰성 전송 프로토콜입니다. 논리적 연결을 설립하지 않고 흐름제어, 오류제어, 혼잡 제어를 제공하지 않으며 datagram만을 전송하는 프로토콜입니다. 이러한 단순성은 적은 양의 오버헤드를 갖기 때문에, 작은 메시지를 보내거나 신뢰성을 크게 고려하지 않아도 되는 상황에서 사용됩니다.

패킷 교환 방식으로는 데이터그램 패킷 교환 방식을 사용하며, 각각의 패킷이 독립적으로 이동하여 최적의 경로를 선택하기 때문에 도착 순서가 다를 수 있습니다.






Q: 캡슐화(Encapsulation)와 역캡슐화(Decapsulation)를 설명해주세요.

캡슐화란, 통신 프로토콜의 특성을 포함한 정보를 Header에 포함시켜서 하위 계층에 전송하는 것을 말합니다. 통신 상대측에서 이러한 Header를 역순으로 제거하면서 원래의 Data를 얻는 과정을 역캡슐화라고 합니다.





마치며

TCP와 UDP의 세부 항목과 캡슐화 & 역캡슐화에 대해서 알아보았습니다. 통신 규약에 대한 개념으로, 역시 앞으로 나올 내용들의 기반이 되어주는 기초입니다. 철저하게 암기하여 대비하시길 바랍니다.

다음 시간에는, Proxy에 대해 알아보겠습니다.

image 16


코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다