iBetter Books
수정

TCP 소켓 프로그래밍

PART 01에서 두 프로그램이 한 마디를 주고받는 데 성공했습니다. 짜릿한 순간이었지만, 우리는 많은 것을 일부러 덮어 두었습니다. 이 PART에서는 그 덮개를 하나씩 열어 TCP 소켓을 제대로 다루는 법을 배웁니다.

먼저 서버와 클라이언트의 단단한 뼈대를 세우고, 연습할 때마다 마주치는 그 짜증스러운 Address already in use 문제를 해결합니다. 그다음 초보자를 가장 많이 넘어뜨리는 진실, 데이터가 보낸 그대로 한 번에 도착하지 않는다는 사실과 그 대처법을 배웁니다. 이어서 연결이 맺어지고 끊어지는 과정을 들여다보고, TIME_WAIT이라는 수수께끼를 풀어 봅니다. 그리고 클라이언트가 갑자기 사라지거나 네트워크가 끊겼을 때 프로그램이 무너지지 않도록 에러와 신호를 다스리는 법을 익힙니다.

마지막으로 이 모든 것을 모아, 길이 접두어라는 첫 프로토콜을 직접 설계해 파일을 통째로 전송하는 프로그램을 Python과 C로 만듭니다. 놀랍게도 두 언어로 만든 프로그램이 같은 약속만 지키면 서로 대화할 수 있다는 것도 확인합니다.

이 PART를 마치면 장난감이 아니라 실제로 믿을 만한 TCP 프로그램을 짤 수 있게 됩니다.