더북(TheBook)

2.6.2 TCP 네트워킹

다행히 이 문제는 TCP를 이용해서 해결할 수 있습니다. TCP(Transmission Control Protocol; 전송 제어 프로토콜)는 보내는 쪽 데이터가 받는 쪽에서 완전히 동일함을 보장해 주는 프로토콜입니다. UDP는 그저 sendTo(), recvfrom() 함수만 있으면 데이터를 주고받을 수 있습니다. 하지만 TCP는 데이터를 주고받기 전에 ‘연결’이라는 과정을 먼저 해야 합니다. 이를 보고 연결 지향형(connection oriented)이라고 합니다. 또 연결은 일대일만 가능합니다.

p129

▲ 그림 2-29 TCP는 일대일만 가능

 

연결한 후에야 데이터를 주고받을 수 있다는 불편함이 있지만, 그 대신 보낸 데이터가 받는 쪽에서 정확히 모두 도착한다는 것을 보장합니다. 이러한 중요한 특징 때문에 인터넷 프로그램 대부분은 TCP를 활용합니다.

여기서 기억해야 할 것은 TCP는 메시지 형태가 아니라 스트림 형태라는 점입니다. 보내는 쪽에서 a, bb, ccc, dddd를 전송하면 받는 쪽에서는 a, bb, ccc, dddd뿐만 아니라 abbcccdddd로 받을 수도 있고 abb,cccd,ddd로 받을 수도 있습니다. 즉, 데이터를 뭉치거나 쪼갤 수 있습니다.

UDP와 TCP는 모두 인터넷 프로토콜(IP) 위에서 작동합니다. IP가 OSI 모델의 계층 3에 있으니 UDP와 TCP는 계층 4에 위치합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.