웹 사이트에 접속할 때 데이터의 흐름

사용자

사용자가 웹 브라우저의 URL 입력 상자에 URL을 입력한다. 웹 브라우저는 URL을 해석하여 HTTP  메시지를 만들고 Socket 라이브러리에 건네준다. Socket 라이브러리에 내장된 리졸버가 URL 안에 쓰여있는 웹 서버의 도메인명에서 DNS의 원리를 사용하여 IP 주소를 조사한다.

  • Socket 라이브러리: 캘리포니아대학교 버클리 캠퍼스에서 만든 BSD(Berkeley Software Distribution)라는 UNIX OS의 파생 버전으로 개발된 C언어의 라이브러리. OS에 포함되어 있는 네트워크의 기능을 애플리케이션에서 호출하기 위한 부품을 모아놓은 것으로 네트워크용 표준 라이브러리이다.
  • DNS: Domain Name System. 서버명과 IP 주소를 대응시키는 방법

Socket 라이브러리는 받은 HTTP 메시지를 송신하도록 프로토콜 스택에 의뢰한다. TCP는 송신 데이터를 패킷의 길이에 맞게 분할하고, TCP 헤더를 부가하여 IP에 건네준다. IP는 TCP에서 받은 패킷에 IP 헤더를 부가한다.

  • 프로토콜 스택: OS에 내장된 네트워크 제어용 소프트웨어. 브라우저에서 받은 메시지를 패킷 속에 저장하고 수신처 주소 등의 제어 정보를 덧붙인다. 프로토콜 스택의 윗부분에는 TCP라는 프로토콜을 사용하여 데이터 송수신을 담당하는 부분과 UDP라는 프로토콜을 사용하여 데이터 송수신을 담당하는 부분이 있다. 그 아래에는 IP 프로토콜을 사용하여 패킷 송수신을 제어하는 부분이 있다. 인터넷에서 데이터를 운반할 때는 데이터를 작게 나누어 패킷이라는 형태로 운반하는데, 이 패킷을 통신 상대까지 운반하는 것이 IP의 주 역할이다.
  • 패킷: 네트워크에서 디지털 데이터는 수십 바이트에서 수천 바이트 정도의 작은 덩어리로 분할되어 패킷이라는 그릇에 넣어 운반된다. 패킷에는 수신처 등의 제어 정보가 맨 앞에 기록되어 있으며, 다수의 스위치나 라우터가 연대하여 이 제어 정보를 식별하여 목적지에 가깝게 운반한다.

MAC 주소를 조사하여 MAC 헤더도 부가하고 나서 LAN 드라이버에 건네준다.

  • MAC 주소: MAC 회로에서 패킷 송수신 동작을 제어할 때 사용하는 헤더나 주소. 이더넷의 송수신동작을 제어한다.
  • 이더넷: 다수의 컴퓨터가 여러 상대와 자유롭게 적은 비용으로 통신하기 위해 고안된 통신 기술.
  • LAN 드라이버: LAN 드라이버는 LAN 어댑터의 하드웨어를 제어한다. LAN 어댑터에 건네줄 때의 패킷의 모습은 0이나 1의 비트가 이어진 디지털 데이터라고 생각하면 되고, 이것이 LAN 어댑터에 의해 전기나 빛의 신호로 바뀌어 케이블에 송출된다.

LAN 드라이버는 IP에서 송신 패킷을 받고, 이것을 LAN 어댑터에 건네주어 송신하도록 지시한다. LAN 어댑터는 이더넷이 송신 가능한 상태가 되는 것을 보아서 패킷을 전기 신호로 변환한 후 트위스트 페어 케이블에 내보낸다.

  • 트위스트 페어 케이블: LAN 케이블로 사용하는 꼰 선쌍. 두 가닥의 신호선을 한 조로 하여 마주 꼬았다는 데서 붙인 이름으로 신호선을 마주 꼬아서 잡음을 막을 수 있다.

사용자측 LAN

입력 신호는 트위스트 페어 케이블을 통해 리피터 허브에 도달한다. 리피터 허브가 신호를 모든 포트로 보내면 이것이 스위칭 허브에 도달한다.

스위칭 허브는 도착한 패킷의 수신자 MAC 주소의 값과 자기 속에 있는 주소 테이블을 대조하여 출력할 곳의 포트를 판단하고, 포트에 패킷을 중계한다.

라우터는 도착한 패킷의 수신자 IP 주소의 값과 저장된 라우팅 테이블의 내용을 대조하여 출력 포트를 판단하고, 이 포트에 패킷을 중계한다. 라우터가 인터넷에 출력한 패킷에는 PPPOE 헤더와 PPP 헤더가 붙어있다.

  • PPPOE: PPP over Ethernet. ADSL, FTTH 등 광대역 액세스 회선을 제어하는 방식 중 하나. PPP 메시지를 이더넷의 패킷에 넣어 주고받는다.
  • PPP: Point to Point Protocol. 전화 회선이나 ISDN 등 통신 회선을 사용하여 다이얼업(dial-up) 접속으로 이용하는 구조. 본인 확인, 설정값 통지, 데이터 압축, 암호화 등 다양한 기능을 조합하여 사용할 수 있다.
  • ADSL: Asymmetric Digital Subscriber Line. 전주에 부설된 전화용 금속제 케이블을 이용하여 고속으로 통신하는 기술의 일종으로, 사용자로부터 인터넷으로 향하는 상향(업로드)과 인터넷에서 사용자를 향하는 하향(다운로드)의 통신속도가 서로 다르다.
  • FTTH: Fiber To The Home. 광섬유를 이용한 액세스 회선.
  • 광통신의 원리: 디지털 데이터를 전압이나 전류로 바꾸고, 이것을 LED나 레이저 다이오드로 만든 광원에 입력하면 전압이나 전류의 세기에 따라 광원이 발광하여 빛의 명암이 되며, 이 명암으로 정보를 전달한다. 빛에 감응하는 포토 다이오드에서 빛을 받으면 빛의 명암에 따라 전압이나 전류가 생기며, 이것을 디지털 신호로 바꾼다.
  • 인터넷의 입구에는 액세스 회선이라는 통신 회선이 있다. 보통 전화 회선, ISDN, ADSL, CATV, FTTH, 전용선이라는 통신 회선을 이용하여 인터넷에 접속하지만, 이러한 통신 회선을 통칭하여 액세스 회선이라고 부른다. 그리고 이러한 액세스 회선은 계약하고 있는 프로바이더에 연결되어 있으며 여기에 POP(Point Of Presence)라는 설비가 있다.

ADSL 모뎀에 도착한 패킷은 여기에서 ATM 셀로 분할된다. ADSL 모뎀은 ATM 셀로 분할한 후 전기 신호로 변환하여 전화선에 내보낸다.

  • ATM: Asynchronous Transfer Mode. 전화 회선의 개념에 기초한 구형 전화 기술의 연장선에 있는 통신 방식. 셀이라는 작은 덩어리를 이용하여 데이터를 운반하는 부분은 패킷을 이용한 TCP/IP와 비슷하지만 컴퓨터의 통신에는 적합하지 않다.

액세스 회선

ADSL 모뎀이 내보낸 신호는 전화선을 통해서 전화국이나 아파트 안에 있는 통신실의 DSLAM(전화국용 집합 모뎀)에 도착한다.

  • DSLAM: DSL Access Multiplexer. 전화국용 ADSL 집합 모뎀으로 다수의 ADSL 모뎀을 하나의 케이스에 넣은 기기.

DSLAM은 수신한 전기 신호를 ATM 셀의 형태로 되돌려서 광대역 액세스 서버에 보낸다. 광대역 액세스 서버는 ATM 셀을 패킷의 형태로 만들고 나서 수신자 주소를 살펴보고 패킷을 중계한다. 광대역 액세스 서버가 중계한 패킷은 L2TP 헤더가 붙어 터널 안으로 흘러간다. 터널의 출구에 있는 터널링용 라우터에 패킷이 도착하면 L2TP 헤더와 PPP 헤더가 분리되어 인터넷을 통과하여 웹 서버측으로 흘러간다.

  • 광대역 액세스 서버: Broadband Access Server.(BAS) 라우터의 일종.

프로바이더

인터넷은 많은 프로바이더의 네트워크를 상호 접속한 거대한 네트워크이다. 패킷이 프로바이더의 네트워크를 통해 웹 서버측의 POP로 운반된다.

웹 서버측 LAN

서버측의 LAN에는 방화벽이 있어 이것을 통해 들어온 패킷을 검사하고, 통과시킬지와 차단할지를 판단한다. 웹 서버의 바로 앞에 캐시 서버를 설치하는 경우 방화벽을 통과한 패킷을 캐시 서버가 가로챈다.

  • 캐시: 한 번 사용한 데이터를 데이터의 이용 장소와 가까운 곳에 있는 고속의 기억장치에 저장하여 두 번째 이후의 이용을 고속화하는 기술을 말한다.

사용자가 요청한 페이지가 캐시 서버에 저장되어 있으면 캐시 서버가 웹 서버를 대신해서 해당 페이지를 회신한다. 캐시 서버에 페이지가 저장되어 있지 않으면 여기에서 요구가 전송되어 웹 서버에 도착한다.

웹 서버

웹 서버에 패킷이 도착하면 LAN 어댑터와 LAN 드라이버가 연대하여 패킷을 수신하고, 프로토콜 스택에 건네준다. 프로토콜 스택은 IP 헤더와 TCP 헤더를 차례대로 검사하여 오류가 없으면 패킷에서 HTTP 메시지의 조각을 추출하여 원래의 모습으로 되돌린다. 원래 모습으로 되돌라온 HTTP 메시지는 Socket 라이브러리를 통해 웹 서버에 전달된다. 웹 서버는 받은 HTTP 메시지의 내용을 해석해서 요청하는 내용에 따라 데이터를 추출하여 클라이언트에 반송한다.

참고문헌: Tsutomu Tone, 네트워크 원리, 서울: 성안당, 2021


답글 남기기

이메일 주소는 공개되지 않습니다.