24.02.23 TIL

lsjoon·2024년 2월 24일
0

TIL

목록 보기
36/51

개념 정리

OTHER

네트워크 강의

  • 문대경 교수님, 명지대학교 컴퓨터공학과
  • 13:00 ~ 15:00

COMMENT

문대경 교수님의 강의는 네트워크에 대한 개괄와 TCP/IP의 구조를 중심으로, TCP와 UDP의 원리와 차이점을 다루는 커리큘럼으로 이루어져 있었다.
모호하게 알고만 있던 네트워크와 OSI 7계층 및 TCP/IP 4계층에 대해 개념을 제대로 잡을 수 있었으며 특히 3, 4 계층에서 구체적으로 어떤 작업이 이루어지는지 처음 알게 되어서 2시간 동안 매우 몰입해서 강의를 들을 수 있었다.

강의가 끝난 뒤에는 동기들과 전체 강의를 한 번 복습하고, 특히 서버와 클라이언트 간 통신인 Socket을 어떻게 관리하는지에 대해 I/O Multiplexting이라는 개념을 언급만 하고 넘어가셔서 이 부분을 깊게 파보았다.

약 6-7시간 동안을 혼자 공부도 하고, 토론도 하며 이해하려 시도했는데 결과적으로는 명확하게 이해는 하지 못했다. 다만, 대략적으로 이해한 부분을 기술하자면 TCP 방식의 네트워크는 서버 Socket클라이언트 Socket 간의 1:1 소통이다.
이 'Sokect'은 결국 FD(File Descripor)에 의해 관리되므로 하나의 'File'로 볼 수 있다. File을 다룰 때는 I/O 과정에서 'systemcall'이라는 'Kernel'이 제공하는 인터페이스를 사용하는데, 이 시스템콜에서 제어권한을 파일에서 커널에서 넘겨주었다 돌려받는 과정(Context Switching)이 발생한다.

즉, Socket은 연결될 때도 시스템콜을 호출하며, 데이터를 주고받을 때도 시스템콜이 발생하기 때문에 하나의 소켓에서 여러 번의 컨텍스트 스위칭이 발생한다.

컨텍스트 스위칭은 리소스가 많이 드는 작업이다. 이 때, 상용 서비스는 서비스를 제공하는 하나의 서버에 수많은 이용자(client)가 존재하므로 서버에서는 모든 이용자에 대한 각각의 Socket이 필요하게 되므로 서버와 클라이언트는 1:N의 관계가 된다. 그렇다면 N개의 클라이언트가 데이터 전송하면, 서버에선 N번의 시스템콜을 호출하는 것과 다름없다.

소켓은 한 번 연결된 다음, 지속적으로 연결 상태를 확인하려고 한다. 이는 곧 시스템콜이다. 소켓이 데이터를 전송하는 것도 시스템 콜이다.

각 소켓의 요청은 작업의 순서가 보장될 필요가 없다. 1번 소켓의 연결 상태 확인은 2번 소켓의 데이터 처리와는 독립적이기 때문이다. 따라서, 비동기적으로 처리함으로써 여러가지 일을 한 번에 처리하는 것처럼 보이게 한다. 그렇기에 I/O는 계속 진행되고, 커널은 각 I/O에 대해 순서대로 메세지를 보낸다.

profile
중요한 것은 꺾여도 그냥 하는 마음

0개의 댓글