이제 우리가 구글에 들어가면 어떤 과정을 거치게 되는지 알아볼 것이다.
데이터는 총 4계층에 걸쳐서 만들어지며, 데이터는 캡슐화 & 역캡슐화를 거치게된다.
데이터를 생성하는 주체역할을 한다.
데이터를 요청하기 위해 HTTP 데이터를 생성하는데, HTTP도 start-line, headers, body가 존재한다.
이러한 약속을 ‘프로토콜’이라고 부른다.
응용프로그램이 페이지 요청을 위해 HTTP 데이터를 운영체제에 전송
운영체제는 PORT 번호를 할당해 어떤 곳으로 전송되어야할지 명시한다.
(PID번호는 누구에게 보내는 것인지 확인)
단순히 ‘PORT’ 번호로는 데이터를 전송하는데 한계가 있다.
우리 동네 아파트는 총 4동이 있다고 가정해보자.
101동, 102동, 103동, 104동. 각 동에는 101호가 모두 존재한다.
따라서 우리는 101동 101호 라는 정확한 명시가 필요하고 이 역할을 인터넷계층이 해주며,
그 주소를 우린 IP라고 한다.
(특정 네트워크를 식별하기 위해서 IP 정보가 필요하다.)
우연히 우리동네에 A아파트란 동일한 이름의 아파트가 존재한다고 가정해보자.
이럴때 우린 어떤 정보로 택배를 보낼까? 바로 지번주소다.
지번 주소는 완전히 동일할 수 없는 ‘고유주소’며, 네트워크의 ‘MAC 주소’를 뜻한다.
이더넷 프로토콜이 주소를 표기하기위해 ‘MAC 주소’를 사용한다고 보면 된다.
우린 이 과정까지 오게되면 전송 데이터가 보내질 정확한 위치를 알 수 있게 된다.
최종 캡슐화가 완료된 상태인 ‘프레임’ 생성.
네트워크 장치를 식별하는 역할을한다. 대표적인 프로토콜은 이더넷 프로토콜
유선 혹은 무선으로 연결된 장치에 접속하기위해 필요한 주소 → MAC 주소 (미디어 엑세스 컨트롤)
→ LAN 환경에서 어떤 컴퓨터에서 출발해 어떤 컴퓨터로 프레임을 전달할지 나타내는 주소
특정 주소를 찾기 위해서 즉, 목적지 MAC주소를 찾기 위해서 우리는 네트워크에 질문할 수 있다.
인터넷은 어떻게 바로 목적지를 찾을까? 바로 ‘IP’를 활용하면 된다.
xxx.xxx.xxx.xxx 형태로 구분 가능상위 프로토콜 - 1byte
→ 전송계층 TCP의 값은 0x06
출발지 IP주소 - 4byte
목적지 IP주소 - 4byte
→ NIC에 입력된 MAC 주소는 물리적주소, IP주소는 운영체제에 등록된 논리적주소
즉, IP주소는 유동적으로 변경될 수 있다.
같은 네트워크 내에선 ‘스위치’를 활용하여 이동함. MAC 주소만으로 목적지 이동이 가능하다.
하지만, 다른 네트워크로 이동시엔 ‘라우터’를 활용해 IP 주소를 활용해야한다.
스위치가 MAC 주소 테이블을 가지고 있듯, 라우터도 라우팅 테이블을 가지고 있다.
모든 네트워크가 연결된 장치는 NIC (컴퓨터 - 네트워크 연결하는 인터페이스 역할) 장치가 필요하다.
라우터는 연결된 네트워크의 개수만큼 NIC를 가지며, “네트워크를 구분하는 관문”이란 뜻으로 “게이트웨이”라고도 불린다.



패킷 역 캡슐화를 통해 라우팅 테이블에 목적지 IP주소를 확인해 전송될 NIC를 결정
목적지 MAC 주소를 확인하는 과정 필요.
ARP - 주소 결정 프로토콜
IP를 통해 MAC 주소를 찾는 프로토콜 IP활용, MAC 활용을 모두 하기 때문에 인터넷 혹은 네트워크 엑세스 계층이라고도 불릴 수 있으며. OSI 3계층, 2계층 사이의 2.5계층이라고도 불림.

IP 주소로 MAC 주소를 찾아야하기 때문에 비어있는 MAC 주소는 ‘브로드캐스트’로 채운다.

스위치에 연결된 모든 컴퓨터로 ARP 프레임을 보내고, IP주소에 맞는 MAC 주소를 채운뒤, 다시 역으로 전송한다.

이런 과정을 거친 후에 라우터는 같은 네트워크에서 IP 주소로 MAC 주소를 찾은 후 목적지에 도달한다.
목적지에 도달한 프레임은 가장 많은 역할을 하는 곳에 도착하게 된다.
출발지 & 목적지 포트
네트워크에 연결된 응용프로그램을 찾을 때 사용하는 번호
네트워크 통신을 필요로하는 모든 응용프로그램은 반드시 이 포트번호가 할당되어 있어야 한다.

FTP의 포트번호가 21, 22
HTTP의 포트번호가 80
→ 잘 알려진 포트정보라고 할 수 있다.
진짜 ‘데이터’를 나타내는 계층이다.
응용계층은 정보를 요청&응답하는 응용프로그램의 존재가 반드시 필요하다.
웹 브라우저는 대표적인 웹 클라이언트이다.
웹 클라이언트와 웹 서버간의 통신을 가능하게 해주는 것이 바로 HTTP이다.
[구글에 들어가면?]
www.google.com 을 들어가면, 우린 URL로 들어가 사이트를 방문할 수 있다. 하지만, html, css, js 와 같은 요소들은 어떻게 받아오는 것일까. 그 역할을 URL이 한다. MAC 주소 또한 IP 주소로 찾기 때문에 실질적으로 필요한 주소는 IP 주소이다. 하지만 우리가 아는 IP와 URL은 형식이 매우 다르다.[왜 IP가 아닌 URL로 구성되나]
223.122.190.200:80 와 같은 형태로 입력해야한다. 하지만, 우리가 사용하는 웹 브라우저 혹은 사이트가 구글만 있는가? 수십 ~ 수백만개의 사이트를 모두 IP로 접근할 수 밖에 없다면 접근성이 매우 떨어질 것이다. 그래서 등장한 것이 바로 DNS이다.[DNS의 등장]
. 을 활용해 영역을 구분하여 IP 주소를 이름으로 표현하도록 한 것. 각 영역마다 도메인 이름 서버를 계층적으로 두고, 최상위 - 최하위까지의 조회를 통해 IP주소 구분 가능하게 되었다. (host 방식의 부하 해결 & 확장성)[URL]
https:// ⇒ 프로토콜[google.com](http://google.com) ⇒ 도메인[google.com/mail](http://google.com/mail) ⇒ 리소스경로 (/mail) (단, 실제 경로는 다를 수 있음. 예시를 위한 경로)[URN]
[통신]
내부라면, 내부 MAC 주소(스위치 MAC 주소 테이블)를 통해 목적지 IP를 구한다.
외부라면, 프레임 역 캡슐화를 통해 목적지의 NIC 주소를 확인하여 목적지 IP를 조회
MAC 주소를 찾기 위해 ARP를 활용해, 해당 IP 주소를 탐색해 MAC주소를 알아내 역으로 전송한다.
(이 과정에서 목적지 MAC 주소와, 브로드캐스팅이 디폴트 값으로 채워진다.)
라우터는 최종 목적지로 이동이 가능한 조건이 갖춰지며, 데이터는 전송된다.
위의 개념과 아래부분을 차례대로 수행하게 된다면 우리는 실제로 구글에 접속해 구글 홈 화면을 보기까지의 단계를 수행한 것이다. 여러 중요한 요소가 있겠지만 역시 중요한 것은 데이터의 흐름이라고 생각한다.
MAC 주소로 이동과 IP주소를 활용해 목적지에 도달할 수 있단 사실을 아는 것이 중요하다.
참고자료