CS지식/네트워크

[네트워크] 웹 통신의 큰 흐름 (feat. TCP/IP, IP주소)

hellosonic 2023. 3. 9. 20:54

🤔 웹 통신의 큰 흐름?

우리가 Chrome을 실행시켜 주소창에 특정 URL 값을 입력시키면 어떤 일이 일어나는가?

📌 in 브라우저

  1. url에 입력된 값을 브라우저 내부에서 결정된 규칙에 따라 그 의미를 조사한다.
  2. 조사된 의미에 따라 HTTP Request 메시지를 만든다.
  3. 만들어진 메시지를 웹 서버로 전송한다.

이 때 만들어진 메시지 전송은 브라우저가 직접하는 것이 아닙니다. 브라우저는 메시지를 송출하는 기능이 없으므로 OS에 의뢰하여 메시지를 전달하게 됩니다. 단, OS에 송신을 의뢰할 때는 도메인명이 아니라 ip주소메시지를 받을 상대를 지정해야 하는데, 이 과정에서 DNS서버를 조회해야 합니다.

🔎 그 전에, TCP/IP 를 이해해보자.

인터넷이나 사내 LAN은 TCP/IP의 개념에 기초하여 만들어졌습니다. TCP/IP 네트워크작은 서브넷라우터로 연결하여 전체 네트워크를 완성하게 됩니다. 서브넷은 우리의 주소 체계로는 '삼성동' 같은 단위로 볼 수 있고, '삼성동 22번지'와 같이 번지에 해당하는 번호를 컴퓨터에 할당한 것이 네트워크 주소입니다. 이 에 해당하는 번호를 네트워크 번호라고 하고, 단지에 해당하는 번호를 호스트 번호라 하며, 이 두 주소를 합쳐서 IP 주소라고 합니다.

엑세스 대상의 서버까지 메시지를 운반할 때는 이 IP 주소에 따라 엑세스 대상이 있는 곳까지 운반하게 됩니다. 서브넷을 거쳐 허브로 운반하고, 라우터를 거쳐 다음 라우터로 이동하고를 반복하여, 최종적으로 상대의 데이터가 도착한다는 원리이며, 이것이 TCP/IP와 IP 주소의 기본적인 개념입니다.

실제 IP 주소32비트의 디지털 데이터로, 8비트(1바이트)씩 점으로 구분하여 10진수로 표기합니다. 이 형태가 보통 IP 주소이며 이와 더불어 네트워크 내역을 나타내는 정보를 덧붙이고는 하는데 이 정보를 넷마스크라고 합니다.

 

🔎 IP 주소는 왜 필요할까?

IP(Internet Protocol)기기 간의 네트워크 통신을 할때 쓰는 프로토콜입니다. 그리고 IP주소는 이 기기들의 주소를 나타내는 것이 바로 IP 주소입니다. IP 주소는 각각의 Host들을 구분하여 컴퓨터가 주고받는 데이터를 정확하게 송수신하기 위해 사용합니다.
IP 주소 즉, 숫자는 인간 친화적이지 못해 기억하기 어려우므로 인간은 도메인을 사용하고, 도메인은 255바이트까지의 대역폭을 가지게 되므로 라우터에 가중되는 부하가 심해지기 때문에 컴퓨터는 IP 주소를 사용하게 됩니다. 이 때, 도메인을 IP 주소 체계로 변환하는 과정을 거치는데 이 과정에서 DNS 서버를 조회해야 합니다.

🔎 DNS 서버

도메인을 IP 주소로 변환하기 위해 DNS 서버를 조회해야 합니다. 브라우저와 같은 애플리케이션에서 리졸버(DNS 서버에 요청을 보내는 클라이언트)DNS 서버조회 메시지를 보내고, DNS 서버에서 응답 메시지가 돌아오게 됩니다. 이 응답 메시지 속에 IP 주소가 포함되어 있으므로, 리졸버는 이를 추출하여 브라우저에서 지정한 메모리 영역에 넣게되며, 브라우저가 웹 서버에 메시지를 보낼때는 이 메모리 영역에서 IP 주소를 추출하여 HTTP의 리퀘스트 메시지와 함께 OS에 건네주어 송신을 의뢰하게 됩니다. 이때 OS의 내부에 포함된 프로토콜 스택을 호출하여 실행을 의뢰하게 됩니다.

(Socket 라이브러리 : 리졸버의 실체는 Socket 라이브러리에 들어있는 부품화한 프로그램. 즉, 도메인명에서 IP 주소를 조사할 때 브라우저는 Socket 라이브러리의 리졸버를 이용함)

📌 in 프로토콜 스택, LAN 어댑터

  1. 프로토콜 스택(운영체제에 내장된 네트워크 제어용 소프트웨어)이 브라우저로부터 메시지를 받는다.
  2. 브라우저로부터 받은 메시지를 패킷 속에 저장한다.
  3. 그리고 수신처 주소 등의 제어 정보를 덧붙인다.
  4. 그런 다음, 패킷LAN 어댑터에 넘긴다.
  5. LAN 어댑터다음 HopMAC주소를 붙인 프레임을 전기 신호로 변환시킨다. 
  6. 신호를 LAN 케이블에 송출시킨다.

  • 맨 위에 있는 것은 네트워크 애플리케이션. 아래쪽을 향하여 데이터 송/수신 등의 일을 의뢰한다. 
  • 애플리케이션의 아랫부분에는 Socket 라이브러리가 있고, 그 안에는 리졸버가 내장되어 있다.
  • 그 아래가 OS의 내부를 나타내고, 여기에 프로토콜 스택이 있다. 프로토콜 스택의 윗부분은 TCP 프로토콜을 사용하여 데이터 송/수신을 담당하는 부분과, UDP라는 프로토콜을 사용하여 데이터 송/수신을 담당하는 부분이 있다.
    일반적인 애플리케이션TCP를 사용하여 데이터를 송/수신하고 DNS 서버 조회짧은 제어용 데이터를 송/수신하는 경우에는 UDP를 사용한다.
  • 그 아래에는 IP 프로토콜을 사용하여 패킷 송/수신 동작을 제어하는 부분이 있다. 패킷 통신 상대까지 운반하는 것이 IP의 주 역할이다. (패킷 : 분할된 데이터의 덩어리)
  • IP 아래에 있는 LAN 드라이버는 LAN 어댑터의 하드웨어를 제어한다. 그 아래에 있는 LAN 어댑터실제 송/수신 동작, 즉 케이블에 의해 신호를 송/수신하는 동작을 실행한다.

프로토콜 스택은 통신 중 오류가 발생했을 때, 이 제어 정보를 사용하여 고쳐 보내거나, 각종 상황을 조절하는 등 다양한 역할을 하게 됩니다. 네트워크 세계에서는 비서가 있어서 우리가 비서에게 물건만 건네주면, 받는 사람의 주소와 각종 유의 사항을 써주게 됩니다. 여기서는 프로토콜 스택이 비서의 역할을 한다고 볼 수 있습니다.

 

📌 in 허브, 스위치, 라우터

  1. LAN 어댑터송신한 프레임스위칭 허브를 경유하여 인터넷 접속용 라우터에 도착한다.
  2. 라우터 패킷 프로바이더(통신사)에게 전달한다.
  3. 인터넷으로 들어가게 된다.

 

📌 in 액세스 회선, 프로바이더

  1. 패킷은 인터넷의 입구에 있는 액세스 회선(통신 회선)에 의해 POP(Point Of Presence, 통신사용 라우터)까지 운반된다.
  2. POP를 거쳐 인터넷의 핵심부로 들어가게 된다.
  3. 수 많은 고속 라우터들 사이로 패킷이 목적지를 향해 흘러가게 된다.

 

📌 in 방화벽, 캐시 서버

  1. 패킷은 인터넷 핵심부를 통과하여 웹 서버측의 LAN에 도착한다.
  2. 기다리고 있던 방화벽도착한 패킷을 검사한다.
  3. 패킷이 웹 서버까지 가야하는지 가지 않아도 되는지를 판단하는 캐시 서버가 존재한다.

굳이 서버까지 가지 않아도 되는 경우를 골라내게 됩니다. 액세스한 페이지의 데이터가 캐시 서버에 있으면 웹 서버에 의뢰하지 않고 바로 그 값을 읽을 수 있습니다. 페이지의 데이터 중에 다시 이용할 수 있는 것이 있으면 캐시 서버에 저장됩니다.

 

📌 in 웹 서버

  1. 패킷이 물리적인 웹 서버에 도착하면 웹 서버의 프로토콜 스택패킷을 추출하여 메시지를 복원하고 웹 서버 애플리케이션에 넘긴다.
  2. 메시지를 받은 웹 서버 애플리케이션은 요청 메시지에 따른 데이터를 응답 메시지에 넣어 클라이언트로 회송한다.
  3. 왔던 방식대로 응답 메시지가 클라이언트에게 전달된다.

 

📚 요약

  1. 사용자가 웹 브라우저를 통해 URL을 입력한다.
  2. 입력된 URL 중 도메인 네임을 DNS 서버에서 검색한다.
  3. DNS 서버에서 해당 도메인 네임에 해당하는 IP 주소를 찾아 사용자가 입력한 URL 정보와 함께 전달한다.
  4. 웹 페이지 URL 정보와 전달받은 IP 주소를 이용해 HTTP 요청 메시지를 생성한다.
  5. 요청은 TCP를 통해 서버로 전송된다.
  6. 서버는 클라이언트의 요청을 받고 응답을 전송한다.

 

 

 

출처 : 

https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Network#tcp와-udp의-비교

https://velog.io/@sangmin7648/웹-통신의-큰-흐름