용's

[Network #1] TCP와 UDP 본문

Computer Science/예상면접

[Network #1] TCP와 UDP

TaeYOng's 2015. 6. 4. 00:48

간단하게 컴퓨터 네트워크 수업을 되새기며 정리를 해보자.

 

TCP와 UDP의 차이를 구분할 줄 알고 내가 원하는 상황에 맞추어 선택할 수 있는게 중요하다.

 


전송계층(4계층)



프로토콜이란, 컴퓨터 네트워킹을 하는데 있어서 서로 약속하는 부분, 즉 통신 규약이라 할 수 있겠다.

 

특히, TCP와 UDP는 전송 계층(Transport Layer)의 프로토콜로 IP계층에서 알려준 경로정보를 바탕으로 데이터의 실제 송수신을 담당한다.

(실제로, 전송계층에서는 Host와 Host 사이에 라우터와 같은 것들이 없다. 이를 Logical한 End-to-End Protocol 이라고 하기도 한다.)



전송계층에서 제공해야할 기본적인(common) 서비스들은 다음과 같다.

-Multiplexing / Demultiplexing

-Connection Management

-Reliable Transport

-Flow Control

-Congestion Control









UDP vs TCP



실제로 UDP와 TCP를 비교해보자. 먼저 간략하게 요약하면 다음과 같다


UDP 

TCP 

Connectionless:

 연결 설정 없이 바로 전송 가능 

Connection-Oriented:

3-way Handshaking에 따른 연결 설정 과정 필요 

 Unreliable:

전송한 데이터그램이 유실 될 수 있고 순서가 바뀌어 도착할 수 있음

Reliable:

세그먼트가 유실될 경우 재전송을 통해 복구해 주며 순서가 바뀌어 도착하더라도 순서 번호를 이용하여 제대로 맞추어 전달 



(1) UDP 

-정보의 송수신을 위한 Connection 설정이 필요 없으며 송신자는 Datagram을 보낸다.


-Reliability나 Ordering을 보장하지 않는 대신에, 보장하는 것에 대한 오버헤드(Overhead of Checking)를 피할 수 있게 되고, TCP보다 조금 더 빠르고 효율적일 수 있다. (시간에 민감한 애플리케이션들은 종종 UDP를 이용)


-게임 서버의 경우, 서로 교환되는 수많은 패킷중에 그리 중요하지 않은 게임 데이터에 대해서는 눈감아 줄 수 있기 때문에 UDP를 사용한다. (TCP를 이용하면 Reliable한 성격 때문에 게임의 흐름이 끊어질 수 있다)


(2) TCP 

-정보의 송수신을 위해 송신자와 수신자 사이에 Connection을 설정하며, 설정 이후에 정보의 송수신이 이루어짐(3-way Handshaking)


-Boundary가 없다고 한다. 즉, '가'에서 1000바이트 패킷을 보내면 꼭 '나'가 1000바이트 패킷을 한번에 받는 것이 아님


'Computer Science > 예상면접' 카테고리의 다른 글

[JAVA] BigDecimal  (0) 2015.10.12
[Network #4] TCP 제어 알고리즘  (0) 2015.10.12
[DB] 예상 문제  (0) 2015.09.28
[Network #3] 기타 예상 질문  (0) 2015.06.04
[Network #2] Blocking VS non-Blocking  (0) 2015.06.04
Comments