용's
[Network #1] TCP와 UDP 본문
간단하게 컴퓨터 네트워크 수업을 되새기며 정리를 해보자.
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 |