[network]구글을 검색을 하면 무슨 일이 벌어질까?

최근에 한 자리에서 “네이버나 구글에 무언가를 검색하면 어떤 일이 벌어질까?” 라는 질문을 받았었다. 아마 질문자는 OSI 7계층에 대한 대답을 듣고 싶었던거 같던데, 정말 기억이 하나도 안나더라… 😢

흔한 면접 질문으로도 쓰이는데, 대충 스쳐보기만 해서 정작 중요할 때, 하나도 기억이 안나는 ㅠㅠ 이번 기회에 다시 알아보고 네트워크 공부를 하면 좋을 거 같아서 기록을 남긴다

구글을 검색하면 벌어지는 일

https://devjin-blog.com/what-happen-browser-search/

이 블로그에 있는 글을 참조 하였다.

  1. **www.google.com을 브라우저 주소창에 친다**
  2. **Browser는 캐싱된 DNS 기록들을 통해 www.google.com에 대응되는 IP 주소가 있는지 확인한다**
    • DNS란? (Domain name System) 범국제적 단위로 웹사이트의 IP와 도메인 주소를 연결해주는 시스템
  3. **요청한 URL이 캐시에 없으면, ISP의 DNS 서버가 www.google.com을 호스팅하고 있는 서버의 IP 주소를 찾기 위해 DNS query를 날린다**
  4. **Browser가 서버와 TCP connection을 한다**
  5. **Browser가 웹 서버에 HTTP 요청을 한다.**
  6. **서버가 요청을 처리하고 response를 생성한다**
  7. **서버가 HTTP response를 보낸다**
  8. **Browser가 HTML content를 보여준다**

OSI 7계층

image

  1. physical : 전기적, 기계적 특성을 이용해 통신 케이블로 데이터를 전송한다
    • 통신단위는 bit이며 1 과 0으로 나타내는, 즉 전기적으로 on, off 상태이다
    • ex) 케이블, 리피터, 허브 등
  2. Data link : 물리 계층을 통해 송수신되는 정보의 오류와 흐름을 관리하며 정보의 전달을 수행할 수 있도록 관리한다. 통신에서의 오류도 찾고 재전송도 하는 기능을 가지고 있다.
    • 데이터 전송 단위는 프레임.
    • MAC 주소를 가지고 통신하며, 브릿지나 스위치를 통해 MAC 주소를 가지고 물리 계층에서 받은 정보를 전송한다
    • ex) 이더넷
  3. network : 데이터를 목적지까지 빠르고 안전하게 전달하는 기능(라우팅)
    • 경로를 선택하고 주소를 정하고 경로에 따라 패킷을 전달해주는 것이 이 계층의 역할
    • ex) 라우터
  4. transport : 통신을 활성화하기 위한 계층.
    • 보통 TCP 프로토콜을 사용하며 포트를 열어 응용프로그램들이 전송 할 수 있게 해준다
    • 만약 데이터가 왔다면, 4계층에서 데이터를 하나로 합쳐서 5계층으로 던져준다
    • 패킷들의 전송이 유효한지 확인하고, 전송 실패한 패킷을 다시 전송한다
  5. session : 데이터가 통신하기 위한 논리적인 연결을 하는 계층(대문 같은 존재)
    • TCP/IP 세션을 만들고 없애는 책임을 지고 있다
  6. presentation : 데이터 표현이 상이한 응용 프로세스의 독립성을 제공하고 암호화 한다.
  7. application : 최종 목적지로서 http, ftp, smtp 등의 프로토콜이 있다
    • 응용 프로세서와 직접 관계하여 일반적인 응용 서비스를 수행한다
    • HTTP 프로토콜 : 웹 상에서 웹 서버 및 웹 브라우저 상호간의 데이터 전송을 위한 응용계층 프로토콜
      • 처음에는 문서 형태의 정보만을 전달하였으나, 현재는 이미지, 비디오, 음성 등 거의 모든 형식의 데이터 전송 가능
      • 데이터 중심의 비연결성 프로토콜
        • Connectionless : 종단간 연결이 없음. 서버에 연결하고, 요청해서 응답을 받으면 연결을 끊어버린다.

          장점 :

          불특정 다수를 대상으로 하는 서비스에 적합한 방식이다.

          수십만명이 웹 서비스를 사용하더라도 접속유지는 최소한으로 할 수 있기 때문에, 더 많은 유저의 요청을 처리할 수 있다.

          단점 :

          연결을 끊어버리기 때문에, 클라이언트의 이전 상태를 알 수가 없다.

          이러한 HTTP의 특징을 stateless라고 하는데, Connectionless 로 부터 파생되는 특징이라고 할 수 있다.

          클라이언트의 이전 상태 정보를 알 수 없게 되면, 웹 서비스를 하는데 당장에 문제가 생긴다.

          클라이언트가 과거에 로그인을 성공하더라도 로그 정보를 유지할 수가 없다. HTTP는 cookie를 이용해서 이 문제를 해결하고 있다.

        • Stateless : 이전의 상태를 유지하지 않음

      • 전송계층 프로토콜 : TCP
      • 사용포트번호 : 80

카테고리:

업데이트:

댓글남기기