핵심 요약
- 네트워크 과제를 하던 대학생이 '포트를 리슨(listen)한다'는 것의 기술적 실체를 파고드는 스토리텔링 글입니다.
- 동일한 8080 포트에 TCP와 UDP 프로세스를 동시에 띄우는 실험을 통해 포트가 프로토콜별로 어떻게 관리되는지 보여줍니다.
- 추상적인 네트워크 소켓 및 바인딩 원리를 친숙한 일상 대화와 파이썬/netcat 실습으로 알기 쉽게 풀어냈습니다.
요약 새벽 2시 대학교 학생회관 카페에서 컴퓨터 네트워크 과제를 하던 대학생 리즈(Liz)와 팀(Tim)의 대화를 소설 형식으로 풀어낸 네트워크 개념 설명 글입니다.
웹 서버 과제를 하던 리즈는 팀에게 "포트를 리슨(listen)한다는 게 정확히 무슨 뜻이냐"는 근본적인 질문을 던집니다. 팀은 단순히 "운영체제가 포트 번호와 소켓 포인터 목록을 관리하는 테이블을 두고 다른 프로세스가 접속할 수 있게 열어두는 것"이라고 얼버무리지만, 리즈는 동일한 8080 포트를 점유하는 두 개의 파이썬 프로그램을 동시에 띄워 보여주며 팀을 당황하게 만듭니다.
코드 확인 결과 한 프로세스는 SOCK_STREAM(TCP), 다른 프로세스는 SOCK_DGRAM(UDP) 소켓을 사용하고 있었습니다. 일반적인 netcat 접속 시도시에는 연결이 거부되었지만, UDP 모드(-u 옵션)로 패킷을 보내자 정상적으로 수신되는 모습을 통해 운영체제가 프로토콜별로 포트를 따로 관리한다는 사실을 확인하게 됩니다. 저자는 일상적인 대화와 간단한 실험 코드를 통해 추상적인 네트워크 소켓 바인딩 원리를 흥미롭게 짚어냈습니다.
Sponsored · 광고