www.naver.com을 치면 무슨일이 일어나는가 .. ? URL과 OSI 7 Layers (1/6)

송명규·2024년 5월 9일
0


백엔드 개발자라면,
항상 면접 전, 면접 리스트에 등장하는 그 질문 ..

"www.naver.com를 치면 무슨일이 일어나나요?"

캬 .. 머릿속에 어디까지 말해야할지 정말 고민이 됩니다.
면접관님을 붙잡고 3시간 동안 Network에 대해서 말할 수 없는 이 답답함에 여기에 글로 적어보겠습니다.

가보자고.

순서

한번 쭉 순서대로 적어보자.

1. URL 입력
2. DNS 조회
3. TCP 연결(HTTPS인 경우, TLS 핸드셰이크)
4. HTTP Request
5. Server Response
6. HTML 처리 & Rendering

URL 입력부터 Let's Go.

일단 우리는 인터넷 브라우저(Chrome, Firefox 등)을 통해 URL을 입력해야 하는데 ..

근데 URL이 뭐임 ??

Good Question !
URL은 Uniform Resource Locator의 약자로,
네트워크 상에서 자원이 어디 있는지를 알려주기 위한 규약이다.

정말 넓고 넓은 네트워크 상에서 우리가 원하는 자원(구글 홈페이지 등)이 어딧는지 알려주는것이랍니다.

그럼 URL은 www.google.com 이군요!

하하 이 바보.
아닙니다.

www.google.com은 도메인이고, https://www.google.com 까지 모두 써주어야 URL이라는 사실 !

완전한 URL의 형식은 다음과 같습니다.


<프로토콜>://<도메인 또는 IP 주소>[:<포트>]<경로>[?<쿼리문자열>][#<앵커>]

뭐 엄청나게 많아보이지만,
사실 별거는 없습니다.
지금 저의 velog URL로 예를 들어보면,

https://velog.io/write?id=03fe9be0-b4f6-44e1-86af-384571f97#section2

  • 프토로콜 : https
  • 포트 : -(https여서 따로 포트 번호를 지정하지 않고 기본값 443)
  • 도메인 : velog.io
  • 경로 : write
  • 쿼리 문자열 : id=03fe9be0-b4f6-44e1-86af-384571f97
  • 앵커 : #sec3

이렇게 짜여 있습니다.

아하 근데 url은 항상 https:// .. 으로 시작하던데, 프토로콜은 왜 항상 https인가요??

까지는 너무 길어질 것 같아서 http 와 https 그리고 ftp, 텔넷 같은 다양한 프토로콜은 다음에 다루도록 합시다.
심지어 요즘은 web3:// 같은 프토로콜도 나옴;;

내용이 하나의 글에 모두 적기에 너무 방대하기도 하고, 사실 지금 2시가 넘어가서 너무 졸리네요. 미안합니다.

어찌되었든! 다시 본론으로 돌아가서 어차저차 www.naver.com 을 쳤다고 칩시다.

...?
근데 어디서, 어떻게, 누구에게, 무엇을, 언제 물어보죠 .. ??

맞습니다.
하나하나 잘 뜯어보도록 하죠 !

그렇습니다.
여기서 잘 뜯어보려면 OSI 7 Layer 개념이 튀어나와 줘야합니다.

OSI 7 Layer 란?

OSI 모형(Open Systems Interconnection Reference Model)은 국제표준화기구(ISO)에서 개발한 모델로, 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명한 것이다. 일반적으로 OSI 7 계층이라고 한다. (출처: 위키피디아)

즉, 통신 과정을 7개의 층으로 나눈 것이라고 할 수 있습니다.

..? 왜용? 왜 나누는 건가요?

왜 OSI 7 계층이 나누어져 있는가!
사실 프로그래밍에서 가장 중요한 질문이라고 생각합니다.
당연한듯이 다들 사용하지만 왜 why를 외치는 사람에게 합격 목걸이를 드리겠습니다.

왜 why 왜 OSI 7 계층이 나누어져 있는가!

정말정말정말 매우매우매우 많고도 중요한 이유가 있겠습니다.

1. 독립성
독립된 계층과 각 계층에 따라 분리된 기능으로,
상위 계층은 하위 계층의 특정 기능만 추출하여 사용합니다.
이렇게 되면 계층별로 Troubleshooting 과 Monitoring이 용이해집니다.
한 마디로 문제가 생긴 부분만 갈아 끼워버릴 수 있다는 뜻입니다.

2. 모듈화
모듈화된 구조로 인해 특정 계층의 변경이나 개선이 전체 시스템에 미치는 영향을 최소화합니다.

3. 표준화 & 프로토콜 독립성
많은 네트워크 프로토콜이 정해진 모델을 기반으로 설계되기 때문에 표준화가 가능합니다.
따라서 프로토콜이 다르다고 하더라도, 해당 모델을 크게 벗어나지 않기에 프로토콜의 변화에도 유연하게 대응할 수 있습니다.

위 3가지 이유가 제가 생각하는 가장 큰 이유이고, 나머지 이유는 각자 찾아보면서 음미하시기를 바랍니다.(음 ~ 이런 이유도 있군 처럼 진짜 음미하길 바랍니다.)

자 이제 진짜 OSI 7 Layer 를 무한으로 즐기러 갑시다.

이렇게 7마리의 고양이가 있다고 생각하면 편합니다.

각 계층에서 하위 계층으로 전달될 때,
캡슐화를 하면서 내려가거나, 올라오게 됩니다!

Layer 7 - Application Layer

애플리케이션 계층은 사용자와 직접 상호작용하는 애플리케이션 서비스를 제공하며, 최종 사용자(여기서 최종 사용자는 최종 보스 뭐 이런 느낌인데, 개발에서는 그냥 컴퓨터 앞에 앉아서 키보드를 누르는 사람을 최종 사용자라고 합니다.)가 요청한 데이터를 주고받을 수 있도록 합니다.

  • 관련 프로토콜: HTTP, HTTPS, FTP, DNS

Layer 6 - Presentation Layer

데이터를 표현 형식에 맞게 변환하고 암호화/압축하는 기능을 제공합니다.

  • 관련 프로토콜 : TLS/SSL, ASCII, JPEG, MPEG

Layer 5 - Session Layer

통신 세션을 설정, 유지, 종료하며 데이터 전송을 동기화합니다.
브라우저와 웹 서버 간에 TLS 핸드셰이크를 통해 세션을 설정합니다.

  • 관련 프로토콜: NetBIOS, PPTP, RPC

Layer 4 - Transport Layer

데이터의 종단 간 신뢰성 있는 전송을 담당하고, 운영체제의 네트워크 스택이 전송 계층의 기능을 처리합니다.
브라우저가 전송 계층을 통해 데이터를 전송할 때 주로 TCP를 사용합니다.

  • 관련 프로토콜: TCP, UDP

Layer 3 - Network Layer

네트워크 간의 데이터 패킷을 전달하고 라우팅하고, 운영체제의 네트워크 스택이 네트워크 계층의 기능을 처리합니다. IP 주소를 사용하여 데이터 패킷을 전달하고 라우팅합니다.

  • 관련 프로토콜: IP, ICMP, RIP, OSPF

같은 네트워크 내에서 노드 간 데이터 프레임 전송을 담당합니다.
네트워크 어댑터(네트워크 카드)와 운영체제 드라이버가 데이터 링크 계층을 담당하고, MAC 주소를 사용하여 데이터 프레임을 전송합니다.

  • 관련 프로토콜: Ethernet, Wi-Fi, PPP

Layer 1 - Physical Layer

네트워크 어댑터가 전기적/광학적 신호를 생성하고, 매체(케이블 또는 무선)를 통해 데이터를 전송합니다.

  • 관련 프로토콜: 구리선(구리선 그 자체가 프로토콜)

후아.
쓰고나니 다시 정리해야할 것 들이 너무나도 많군요.
관련 프로토콜 부터 시작해서, 암호, 압축, 3way handshake, TLS, OS, Network, 패킷, 네트워크 카드 등등등등등 .........

이건 지금 모두 정리하기는 무리입니다. 못해.
그럼 다시 본론으로 와서, www.naver.com 을 치면 어떤 일이 일어나는지 다시 한 번 살펴보도록 하겠습니다.

1. Chrome 브라우저에서 HTTPS 요청 생성 (Layer 7 - Application)
GET / HTTP/1.1과 같은 HTTP 요청을 생성하고, TLS를 통해 암호화된 HTTPS로 변환합니다.

2. TLS 암호화 적용 (Layer 6 - Presentation)
Chrome 브라우저가 TLS 암호화를 처리하고 암호화된 데이터를 준비합니다.
(ClientHello, ServerHello, 인증서 검증, 세션 키 생성 및 공유 등의 과정이 있습니다.)

3. TCP 연결 수립 (Layer 4 - Transport)
브라우저는 운영체제의 네트워크 스택을 사용하여 TCP 연결을 수립합니다.
3-way 핸드셰이크 과정을 거쳐 TCP 연결을 설정하고 데이터를 전송합니다.
(SYN, SYN-ACK, ACK 등의 과정을 거칩니다.)

4. IP 패킷화 및 라우팅 (Layer 3 - Network)
운영체제의 네트워크 스택이 TCP 세그먼트를 IP 패킷으로 캡슐화하고 라우팅합니다.

5. 이더넷 프레임화 및 전송 (Layer 2 - Data Link)
네트워크 카드와 운영체제 드라이버가 IP 패킷을 이더넷 프레임으로 캡슐화합니다.
MAC 주소를 사용하여 로컬 네트워크 내에서 데이터를 전송합니다.

6. 전기/광학 신호 전송 (Layer 1 - Physical)
네트워크 카드가 전기/광학 신호로 변환하고, 케이블 또는 무선 신호로 데이터를 전송합니다.

가 데이터의 흐름이다 ..

써보니 생각보다 너무너무 길어져버렸습니다. 미안합니다.
이제 컴퓨터를 벗어났으니 다음 시간에는 DNS에 질의하러 가봅시다!

profile
안녕하세요

0개의 댓글