TCPIP 통신과 wwwgooglecom
웹 개발을 하거나 네트워크에 대한 기본적인 흐름을 알고 싶은데 개념적인 내용과 현실 물리적인 내용들이 머리속에서 뒤죽박죽 되어 파편화 되어 있는 분들을 위해(내가 그랬다. .) 면접에서도 빈번히 나오는(나왔던) 질문이자 파편화 되어 있던 지식들을 일 큰 흐름으로 파악 할 수 있게 도와줬던 웹 브라우저 검색창에 을 입력하면 발생하는 일에 에 대하여 알아보는 시간을 가져보자 우리는 인터넷을 통해 수 많은 작업 진행합니다. 정보를 검색하고 물건을 사거나, 메일로 메세지를 주고 받으며, 강의를 듣거나 음악을 감상합니다.
이런 모든 작업들은 내가 클라이언트가 되어 쇼핑몰이나 네이버 메일등과 같은 웹서버와 통신을 함으로써 일어날 수 있는 과정들입니다.
웹 계층 – 데이터를 보내보자
웹 계층에서는 전송계층에서 보증한 안전성 있는 데이터를 어디로 어떻게 보낼지를 정합니다. 😎 : 아 어디로 보낼지 알아 여기잖아 ? 맞다. 반면 문제가 있습니다. 컴퓨터는 단순해서 고등생명체인 인간의 언어를 알아 듣지를 못합니다. 그래서 이 도메인정보를 IP주소로 바꿔줘야 하기 위해서는 그 역할을 해주는 것이 즉각적으로 DNS(Domain Name System)입니다. DNS는 에 대처하는 IP주소를 알고있습니다.
(DNS는 로컬 DNS부터 Root DNS 등 다른 형태의 DNS가 있고 여러번의 질의를 통해 답을 얻는데, 결국 연결된 DNS중 누군가는 무요건 해당 도메인에 대한 정보를 알고 있습니다. ) 우리는 DNS에게 IP주소를 질의하고 DNS는 해당 도메인에 매핑된 IP주소를 결피로누적 넘겨줍니다.
DNS를 통해 www.googlcom에 대처하는 IP주소를 탐색합니다.
DNS(Domain Name System)은 전화번호부와 비슷한 역할을 수행합니다. 고객 – 서버가 통신하기 위해서는 IP주소가 필요한데 우리는 Bit로 이루어진 IP주소를 기억하고 있기 어렵습니다. 그야말로 nslookup 명령어로 구글의 IP주소를 탐색하면 172.217.161.36으로 나옵니다. 그야말로 해당 IP주소를 주소창에 입력하면 구글의 페이지로 이동할 수 있습니다.
즉, DNS는 기억하기 까다로운 IP주소 대신에 google.com과 같은 Domain Name을 제공하여 우리에게 편리함을 제공합니다. DNS의 동작 과정 1. 첫째 검색하면 첫째 Local DNS에서 네이버의 IP주소를 물어봅니다.
길고 긴 과정들을 거쳐
한번쯤 TCP가 느리다는 얘기를 들어 본 적이 있을 것입니다. 위 설명을 거친 우리는 이미 답을 알고 있습니다. 🤔 : 한번도 이렇게 긴데 자료 보낼 때 마다. 이 설명을 3번,4번씩 한다고? 네트워크에서나 컴퓨터에서나 결국 물리적인 거리가 멀면 느릴 수 밖에 없습니다.면 그 먼 구글서버(광통신이 아무리 잘 되어 있다고 그런데 그래도 멀다. .)를 몇번이나 왔다갔다.
연결망 인터페이스 계층 : 진짜 전기신호로 바꿔줄게
연결망 인터페이스 계층에서는 데이터를 현실 물리적인 전자 신호로 변경해주는 역할을 합니다. 그리고 이 전자 신호는 MAC 주소를 통해 연결망 장비로 전달되는데 🤔 : IP 주소 까지는 알겠는데, MAC주소는 뭐지 ? IP주소가 연결망 상에서 PC 자체를 의미하는 합리적인 식별자 라면 MAC주소는 전자 신호를 주고 받기 위한 현실 물리적인 장치들의 식별자 인 것입니다.
그렇다면, 우리는 최종 목적지인 google 웹 서버의 MAC 주소를 알고 있어야 할까? 아닙니다. 이 광범위한 웹 세상에서 데이터를 주고 받기 위해서는 물리적으로 굉장히 많은 장치들을 거쳐야 합니다. 따라서, 여기서 요구되는 MAC주소는 당장 이 전자 신호를 보낼 공유기의 MAC주소 인 것입니다.
의 최종 목표
크롬에 을 입력함으로써 내가 원하는 것은 결국 웹 서버로 부터 요청(request)한 구글 홈페이지를 응답(response) 받는 것입니다. 이 설명을 조금 더 올바르게 살펴보면 이렇게 4가지의 동작을 거친다고 볼 수 있어요. 어플리케이션 소프트웨어(크롬)에서 데이터를 요청 그 요청을 전송 소프트웨어(OS 레벨)에서 전송 해당 전송을 물리적 전자신호로 변경 물리적인 연결망 장비를 통해 전송 이 통신 그리고 약속이 있어야 원활한 통신이 될 것입니다.
그럼 여기서 통신을 하기 위해 어떤 약속을 정했을까? 웹 클라이언트와 웹 서버가 통신을 하기 위해 정한 약속이 즉각적으로 HTTP(Hypertext Transfer Protocol) 입니다.
마치며..
이렇게 주소창에 을 입력하면 발생하는 일에 에 대하여 알아봤는데 해당 내용들은 많게 추상화 되어 있는 수준이며 생략된 내용들도 굉장히 많습니다..