ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 네트워크 제대로 알아보자 - 여섯번째 이야기
    CS(Computer Science)/Network 2023. 11. 4. 18:00

     

    들어가기 전에

    지난 번 `다섯번째 이야기` 포스팅에 이어 Chapter 6 내용을 정리해보려고 한다.

     

     

    Chapter 6. 웹 서버에 도착하여 응답 데이터가 웹 브라우저로 돌아간다_불과 몇 초인 `긴 여행`의 끝

    서버는 동시에 복수의 클라이언트와 통신 동작을 실행하지만, 하나의 프로그램으로 여러 클라이언트들의 상대를 처리하기는 어렵다.

    그래서 클라이언트가 접속할 때마다 새로 서버 프로그램을 작동하여 서버 애플리케이션이 클라이언트와 1대1로 대화하는 방법을 선택한다.

     

    서버 OS는 `멀티태스크` 또는 `멀티스레드`라는 기능에 의해 다수의 프로그램을 동시에 함께 작동할 수 있는 데, 이 성질을 이용한 프로그래밍 기법이라 할 수 있다.

     

    `멀티태스크`는 OS가 갖추고 있는 기능의 하나로 복수의 태스크(프로그램)을 동시에 함께 실행하는 기능을 말한다. 하나의 프로세스는 하나의 태스크만 실행할 수 있지만 단시간에 태스크를 전환하면서 실행하므로 동시에 실행하는 것처럼 보인다. OS의 종류에 따라서 `멀티프로세스`라고도 부른다.

     

    `멀티스레드`는 `멀티태스크`와 같이 복수의 스레드를 동시에 함께 실행하는 기능을 가리킨다. 멀티태스크와 멀티스레드의 차이점은 태스크와 스레드의 차이라고 할 수 있다. OS의 내부에서 태스크는 하나하나 별도의 프로그램으로 취급하지만, 스레드는 한개의 프로그램 속을 몇개의 부분으로 나눈 것으로 취급된다.

     

    클라이언트마다 다른 부분에서 데이터를 주고받는다.

     

    위 그림의 방법은 클라이언트가 접속했을 때 새로 프로그램을 기동하는 부분에서 다소 시간이 걸리고, 응답시간이 추가로 소요된다는 단점이 있다. 그래서 미리 클라이언트와 대화하는 몇개를 작동 시켜두고 클라이언트가 접속 했을 때, 비어있는 것을 찾아 소켓을 건네주어 클라이언트와 대화를 계속하는 방법도 있다.

     

    서버에서 받은 전기 신호를 디지털 데이터로 바꾼다.

     

    서버가 받은 전기 신호는 클라이언트가 신호를 송출하는 처리의 반대가 되며, 아날로그 데이터를 디지털 데이터로 변환한다.

     

    LAN 어댑터에서 전기신호를 디지털 데이터로 바꾼다. LAN 어댑터의 MAC 부분이 패킷을 신호로 부터 디지털 데이터로 되돌리고 FCS를 점검한 후 버퍼 메모리에 저장한다.

     

    인터럽트를 통해 CPU로 패킷의 도착을 알리고 LAN 어댑터의 버퍼 메모리에서 수신한 패킷을 추출한다. LAN 드라이버가 MAC 헤더로부터 프로토콜을 판단하여 프로토콜 스택에 패킷을 건네준다.

     

    프로토콜 스택의 IP 담당 부분은 IP 헤더를 점검하고 (1) 자신을 대상으로 한것인지 판단한 후 (2) 조각 나누기에 의한 패킷의 분할이 있는지 조사하고 (3) TCP 담당 부분 또는 UDP 담당 부분에 패킷을 건네준다.

     

    웹 서버가 보낸 응답 메시지는 다수의 패킷으로 나누어 클라이언트에 도착한다. 화면 표시 동작은 응답 메시지에 저장된 데이터가 어떤 종류인지를 조사하는 곳부터 시작한다. 데이터의 종류를 판단하는 근거는 몇가지 있는데, `Content-Type`이라는 헤더 파일의 값으로 판단하는 것이 원칙이다.

     

    "Content-Type: text/html" `/`의 왼쪽 부분은 `주 타입`이라 하고, 이것을 통해서 데이터 종류의 대분류를 나타낸다. 그리고 오른쪽 `서브 타입`이라는 부분에 실제 데이터의 종류를 나타낸다.

     

    메시지의 `Content-Type`으로 지정하는 데이터 형식

     

    데이터의 종류가 텍스트인 경우 어떤 문자 코드를 사용하는지 판단 해야 한다. 이때는 `Content-Type: text/html; charset=utf-8`와 같이 문자 코드를 부가한다.

     

    데이터의 종류를 조사하면 `Content-Encoding`이라는 헤더 필드의 값도 조사한다. 압축기술이나 부호화 기술에 따라 데이터를 변환하고 저장한 경우에 어떤 변환을 했는지 `Content-Encoding` 필드에 기록해야 한다.

     

    실제 화면 표시 동작은 OS가 담당하므로 OS에 대해 화면의 어떤 위치에, 어떤 문자를, 어떤 글꼴로 표시할지 지시하는 것이다.

    JPEG나 GIF 형식의 화상 데이터는 압축되어 있으므로 압축을 풀고나서 데이터를 OS에 건네주어 표시하도록 지시한다. 물론 그 장소에 문장을 표시하면 겹쳐버리므로 이 부분을 화상의 크기만큼 비워두고 문장을 표시한다.

     

    여기까지가 Chapter 6 내용이고 이것으로 네트워크 제대로 알아보자 시리즈를 마무리하겠다.

     

Designed by Tistory.