본문 바로가기

Dot Computer Science/Network

[OS/ Network] 브라우저에 URL 입력시 동작과정 계층 관점으로 살펴보기

    계층 구조

    OSI 계층 구조

    컴퓨터에서 계층 구조하면 바로 떠오르는 대표적인 OSI 7계층을 먼저 살펴보자.

    • OSI(Open Systems Interconnection)라 통신 규격을 만들 때 고안된 것으로, OSI 통신 기능을 7개의 계층으로 나눈 것이다. 이 계층 구조 개념은 다양한 분야에서 공통적으로 참조할 수 있는 ‘참조 모델’로서 현재도 사용되고 있다.

    OSI 7계층

    • 응용층(Application): 애플리케이션 처리
    • 표현층(Physical): 데이터 표현 방법. 인코딩 및 데이터 형식 차이 조절
    • 세션층(Session): 통신 시작과 종료 순서. 양 끝단 프로세스가 통신을 관리하기 위한 방법 제공
    • 전송층(Transport): 네트워크의 통신 관리. 양 끝단 유저들 통신에 있어 신뢰성 보장
    • 네트워크층(Network): 네트워크 통신 경로 선택. 여러 개의 지점을 거칠 때 경로를 찾아줌
    • 데이터 링크층(Data Link): 직접 접속돼 있는 기기 간 처리. 두 지점 간의 신뢰성 있는 전송 보장
    • 물리층(Physical): 전기적인 접속. 실제 장치들을 연결하기 위한 물리적인 사항 정의

     

    TCP/ IP 계층 구조

    네트워크에는 OSI 7계층 모델이 있고 또 한 가지 필수적인 요소인 ‘프로토콜’이 있다. 프토토콜(Protocol)은 영어로는 사전에 정해 놓은 순서를 의미한다. 컴퓨터 용어로는 ‘통신 프로토콜’이라는 이름으로 자주 등장하며, 컴퓨터가 서로 소통하기 위해 정한 규약을 가리킨다. 그리고 인터넷을 포함해서 현재 네트워크를 지탱하는 것은 TCP/IP 및 관련 프토토콜이다.

     

    TCP/IP 4계층 모델로 불리며, OSI 7계층의 1~2계층을 모아서 링크 계층, 5~7계층을 모아서 애플리케이션 계층으로 취급한다.

    • TCP 대신에 신뢰성이 낮지만 간단하게 데이터를 송수신할 수 있는 UDP를 사용하거나, 유선이 아닌 무선으로 통신을 사용하는 등 용도에 맞게 변경할 수 있는 점도 계층 구조의 장점이다.

    TCP/IP 4계층

    • 응용층(Application): "이미지 데이터를 보내고 싶어 송신은 다른 계층에 맡기자"
    • 전송층(Transport): "애플리케이션이 의뢰한 데이터는 책임지고 상대방에게 전달한다"
    • IP계층(Internet): "데이터를 최종 위치까지 운반한다"
    • 링크 계층(Network Access): "직접 연결돼 있는 주변 장비에게도 보내자"

     

    시스템 계층 구조

    애플리케이션, OS, 하드웨어 조합도 계층 구조라 할 수 있다. 이와 같은 구조로 되어있기 때문에 ‘OS는 리눅스를 사용하자’, ‘하드웨어는 어떤 제조사 제품을 사용하자’등 용도에 맞게 부분별로 선택할 수 있다

    • 커널과 JVM은 시스템 콜이라는 인터페이스로 연결돼있다.

    자바 애플리케이션 시스템 계층

     

    브라우저에 URL 입력시 동작 과정 계층 관점으로 살펴보기

    우리는 애플리케이션을 사용하면서 서버와 통신을 한다. 웹 브라우저에 URL을 입력해서 요청이 웹 서버에 도달하면 응답으로 HTML 파일이나 이미지를 반환한다. 이렇게 몇 번이고 요청과 응답을 주고 받는다.

     

    브라우저에 URL 입력시 동작 과정 계층 관점으로 살펴보기

     

    지식을 위해 고안된 월드 와이드 웹, WWW

    먼저 웹 브라우저는 웹 위에서 동작하는 애플리케이션이다. 이 웹에 대해서 먼저 살펴보자. CERN(유럽 인자 물리학 연구소)의 팀 버너스 리 박사는 멀리 떨어져 있는 동료 연구자와 지식을 공용할 수 잇도록 시스템을 고안하였다. 그게 바로 WWW(World Wide Web)이다. WWW는여러 문서를 상호간에 관련 짓는 하이퍼텍스트(HyperText)에 의해 상호간에 참조할 수 있는 정보 공간을 말한다.

    • WWW를 지금으로 말하자면 단순 웹(Web), 그 당시에는 하이퍼 텍스트를 열람할 수 있는 클라이언트 애플리케이션 명칭이었다.

     

    이러한 WWW를 구성하는 기술로서, 문서 기술 언어로는 SGML을 베이스로 한 HTML, 무선 전송 프로토콜로는 HTTP, 문서의 주소를 지정하는 방법으로 URL가 제안되었다. 이 기반으로 만들어진 프로젝트들이 지금 우리가 사용하는 애플리케이션이다. 웹 브라우저 크롬, 마이크로소프트 엣지, 파이어폭스도 모두 애플리케이션이다. 그리고 우린 그 위에서 서로 정보를 주고 받는다. 애플리케이션이 없으면 통신이 시작되지 않는다. 무언가를 요청받은 애플리케이션은 자신이 통신을 하는 것이 아니라 통신 자체는 OS, 즉 아래계층 HTTP, TCP/IP에 맡긴다.

     

    이제 웹 브라우저(크롬, 엣지, 파이어폭스 등)에 url을 입력해보자

     

    Application 계층 통신

    웹브라우저 url 창에 text 입력하기

    url창에 text를 입력하면 해당 입력구문이 search query인지 url인지 판단한다.

    • search query → search engine으로 query를 보내서 검색 (ex. “apple”입력하면 크롬에서 해당 단어 검색)
    • URL → 해당 URL 분석(scheme, host, port, path 등) 후 아래 계층으로 값 전달

    url창에 text 입력

     

     

     

    HTTP URL 포맷

    웹 브라우저(크롬, 엣지, 파이어폭스 등)에 url을 입력해보자. 일반적으로 많이 사용하는 HTTP URL 포맷 다음과 같이 표현한다.

    <scheme>://<host>:<port>/<path>?<searchpart>

     

    scheme

    URL은 제일 앞(scheme)에 리소스에 접근할 방법을 정의해 둔 프로토콜 이름(HTTP/ HTTPS)을 적는다.

     

    host 

    호스트에는 DNS이름이나 “192.168.1.1” 같은 IPv4 주소 “[0:0:0:0:0:0:0:1]”과 같은 IPv6 주소를 대괄호로 묶어서 저장한다.

     

    port

    port는 사전적으로 항구의 의미를 가진다. 인터넷 용어에서도 동일한 의미를 지닌다. 컴퓨터 혹은 서버(항)내 OS에서 목적별로 나눠진 하나의 항구처럼 행동한다. 애플리케이션에서 따로 포트번호를 지정하지 않았다면 기본 포트로 동작된다. HTTP의 port(항구)는 80이고, HTTPS의 port(항구)는 443이다.

     

    path, searchpart

    path는 특정 리소스를 식별하기 위해서 서버 상의 파일 패스를 지정해준다. 그렇게 지정된 path 리소스에 임의의 파라미터를 넘겨주기 위해 쿼리 문자열을 사용한다. 이는 옵션이다.

     

    도메인 네임 시스템 DNS

    로컬에서 localhost를 입력하면 127.0.0.1로 예약되어 있는 것처럼 DNS는 <host>의 도메인 이름과 그에 매칭되는 IP 주소를 갖고 있다. 그래서 <host>의 도메인 이름을 보내주면 그에 해당하는 IP 주소로 변환해서 보내준다.

    DNS 동작 과정

    1. 브라우저에서 도메인(ex. www.techdot.info)을 입력하면 PC는 미리 설정되어 있는 DNS에게 "www.techdot.info"라는 hostname에 대한 IP를 조회한다.
    2. 해당 도메인 정보가 Local DNS에 캐시되어있는 경우 바로 전달하고 아니면 다른 DNS와 통신하여 해당 정보를 조회한다. 가장 먼저 Root DNS 서버에게 먼저 조회한다. (Root DNS 서버는 전 세계에 13대가 구축되어 있으며 우리나라 경우 Root DNS Mirror 서버를 3대 운용하고 있음)
    3. Root DNS 서버에 해당 정보가 없어 Local DNS에게 ".info"를 관리하는 DNS 서버에게 물어보라고 응답한다.
    4. Local DNS는 .info DNS 서버에게 "www.techdot.info"에 대한 IP주소를 조회한다.
    5. 그런데 만약 .info DNS 서버에도 해당 정보가 없어 .info DNS 서버는 "techdot.info"를 관리하는 DNS 서버에게 물어보라고 응답한다.
    6. Local DNS는 techdot.info DNS 서버에게 또 IP 주소를 조회한다.
    7. techdot.info DNS 서버에는 해당 IP가 존재하여 172.1xx.3x.1x를 응답한다.
    8. 이를 수신한 DNS는 "www.techdot.info"에 대한 IP주소를 캐시하고 해당 IP주소를 브라우저에게 전달한다.

     

    이와 같이 Local DNS 서버가 여러 DNS 서버를 차례대로 (Root DNS 서버 → .info DNS 서버 → techdot.info DNS 서버) 질의하여 답을 찾는 과정을 Recursive Query라고 한다.

     

    DNS 동작 과정

     

    웹 전송 프로토콜 HTTP/ HTTPS

    <scheme>에 해당하는 부분으로 웹 전송 프로토콜은 대표적으로 HTTP와 HTTPS를 사용한다. HTTP 요청, 응답 메세지 구조는 헤더필드와 바디필드로 나뉜다. 헤더에는 꼭 처리해야 하는 내용과 속성이 들어있고 바디에는 전송되는 데이터 그 자체(HTML, 이미지 파일 등)을 담는다.

     

    HTTPS

    HTTPS는 HTTP에 암호화나 인증 등의 구조를 더한 프로토콜이다. 다음과 같은 HTTP의 보안 약점을 커버하기 위해 나왔다.

    • 평문 통신 도청 가능
    • 통신 상대 확인 안되므로 위장 가능
    • 완전성 증명할 수 없기에 변조 가능

     

    그래서 SSL 등을 이용해 안전한 통신로를 확립하고 나서 그 통신로를 사용해 HTTP 통신을 한다. 이를 HTTPS라 한다. 이는 새로운 애플리케이션이 아니라 HTTP 통신 소켓 부분을 SSL이나 TLS이라는 프토콜로 대체하고 있을 뿐이다.

    • 기존 HTTP는 직접 TCP/IP와 통신한다.
    • SSL을 사용한 경우 HTTP는 SSL과 통신하고 SSL이 TCP/IP와 통신하게 된다
    • HTTPS는 CA라는 기관에서 따로 인증을 해준다.

     

    TCP 계층 통신

    TCP는 위의 계층으로부터 port, ip, http 데이터 등을 받는다. TCP가 담당하는 것은 어디까지나 서버가 송신할 때와 서버가 수신한 후 애플리케이션에게 전달할 때로, 상대 서버까지 전송하는 부분은 하위 계층인 IP에 모두 위임한다. IP 만으로 통신이 가능하지만 데이터가 상대방에게 확실하게 전달됐는지 확인하는 기능이나 도착한 순서를 확인하는 기능 등이 없다.

    • TCP 역할은 간단히, 애플리케이션이 보낸 데이터를 그 형태 그대로 상대방에게 확실히 전달하는 것으로 중요한 기능은 다음과 같다.

     

    1. 포트 번호를 이용해서 데이터 전송

    상대 서버에 데이터가 도착했다고 해도 어떤 애플리케이션용 데이터인지 알 수 없다. TCP는 위에서 보내준 port 번호를 사용하여 어떤 애플리케이션에게 전달할지 판단한다.

     

    2. 연결 생성

    TCP는 연결형 프로토콜로 3-way handshaking을 통해 상대방과 통신을 연결한다. 종료할 때는 4-way handshaking이다.

     

    TCP 연결/종료

     

    3. 데이터 보증과 재전송 제어

    연결이 생성된 후에야 데이터 송수신이 시작된다. TCP에는 데이터가 확실히 전달되도록 보증하는 기능이 있다.

     

    데이터 손실을 방지하는 구조

    • 이것은 확인 응답과 재전송에 의해 구현된다. 수신 측에 TCP 세그먼트가 도착하면 수신 측은 송신 측에게 도착했다는 것을 알린다. 이때 반환하는 것이 ACK라고 하며, 송신측은 이로 인해 무사히 도착했음을 알 수 있다.

     

    데이터 순서를 보증하는 구조

    • 이는 TCP 세그먼트에 시퀀스 번호라는 숫자를 붙여서 구현한다. 보낼 때는 쪼갰다가 붙일 때 다시 시퀀스 번호대로 붙여준다.

     

    TCP 재전송 제어

    • 순차적 조합을 위해 수신 측은 ACK를 반환할 때 다음에 필요한 TCP 세그먼트의 시퀀스 번호도 ACK 번호로 전달한다.

     

    4. 흐름 제어와 폭주 제어

    흐름 제어

    • 수신 측은 수신용 소켓 버퍼가 넘쳐서 더 이상 수신이 불가능하게 되면 수신 윈도우 크기를 작게 만들고 이 사실을 송신 측에 알린다. 송신 측은 수신 윈도우 크기 이상의 데이터는 ACK 없이 보낼 수 없게 된다. 이것이 TCP 흐름 제어다.

    폭주 제어

    • TCP는 주변에 영향을 주지 않도록 지향하는 프토콜이다. 송신측에서 네트워크가 혼잡하면 폭주 윈도우 크기를 작게 해서 전송 데이터 양을 줄인다.

     

    IP 계층 통신

    IP 역할은 간단히, 지정한 대상을 서버까지 전달받은 데이터를 전해 주는 것이다. 간단하지만 중요하다.

     

    IP 통신

     

    1. IP 주소를 이용해서 최종 목적지에 데이터 전송

    IP에서는 최종 목적지 서버까지 복수의 네트워크를 경유해서 데이터를 전송한다. 이때 이용되는 것이 대상 서버를 나타내는 IP 주소다.

    • IP주소는 네트워크부와 호스트부로 나뉜다. 네트워크부는 어떤 네트워크인지를 가리키고, 호스트부는 해당 네트워크 내에 있는 컴퓨터를 가리킨다.

     

    2. 라우팅(Routing)

    IP 주소를 이용해 대상 서버를 지정할 수 있다. 하지만 서버가 항상 같은 네트워크에 있지 않기 떄문에 다른 네트워크를 거쳐서 최종 목적지까지 전송되는 과정을 라우팅이라고 한다.

     

    데이터 링크 계층 통신

    IP 패킷이 만들어지면 계속해서 링크 계층 처리가 시작된다. 링크 계층에서 사용되는 대표적인 프로토콜은 이더넷(Ethernet)이다. ‘대표적’이라고 말한 것은 이더넷 외에 다른 프로토콜이 몇 가지 더 있기 때문이다. 예를 들어, 무선 랜 프로토콜은 이더넷이 아니다. 이더넷을 포함한 링크 계층 프로토콜의 역할을 간단히 말하자면, 동일 네트워크 내의 네트워크 장비까지 전달받은 데이터를 운반한다고 할 수 있다.

    • TCP/IP 4계층 모델에서는 물리 계층과 함께 하나의 계층으로 취급되듯이, 이더넷이란 링크 계층 프로토콜은 이른바 OSI 7계층 모델의 물리 계층과 밀접한 관계가 있다.

     

    패킷 전송 시 네트워크(IP) 계층과 링크 계층의 차이

     

    IP는 IP 주소를 사용해서 여러 네트워크를 거쳐 데이터를 전송할 수 있지만, 이더넷은 동일 네트워크 내, 즉 자신이 포함된 링크 내에서만 데이터를 전송할 수 있다. 이때 사용되는 주소가 MAC 주소다.

    • MAC 주소는 네트워크 통신을 하는 하드웨어에 할당된 주소로, 원칙적으로는 세상이 있는 모든 장비가 고유한 물리 주소를 가지고 있다.
    • 서버 등이 보낸 이더넷 프레임이 L2 스위치에 도착하면 프레임을 받은 L2 스위치는 MAC 주소를 보면서 적절한 포트에서 프레임을 꺼낸다. 하지만 다른 네트워크를 거치는 경우는 MAC 주소를 사용한 통신이 불가능하다.

     

    물리층 통신

    물리층은 말 그대로 통신 케이블와 같은 물리적 장비로 데이터를 전송한다. 라우터를 나간 패킷은 인터넷의 엑세스 회선을 통과하며 장거리 통신에 적합한 형태로 변형되고, 추가적인 제어 정보를 붙여 인터넷에 내부로 중계된다. 이 단계에서 전기 신호는 건물의 옥내 배선을 지나 전신주의 전화 케이블로 들어가게 된다. 전신주를 타고 이 전기 신호들은 통신사의 전화국으로 들어가고, 거기서 또 인터넷 접속용 라우터를 거쳐 인터넷의 내부로 중계되기 시작한다.

     

    전 세계에 깔려있는 해저 케이블 한눈에 보기 - https://www.submarinecablemap.com/

     

    국내에 연결되어있는 해저케이블

     

     

     


    참고

    https://www.slideshare.net/Yoohyun?utm_campaign=profiletracking&utm_medium=sssite&utm_source=ssslideview 

    HTTP & Network Basic

    IT 인프라 구조