2.4 IP 주소
2.4.1 ARP
컴퓨터 간의 통신은 IP주소를 통해서 이루어진다고 흔히 알고 있지만, 정확히 말하면 IP 주소 내부의 MAC 주소를 가져와 이를 기반으로 통신한다. 이 때 MAC 주소를 가져오는 프로토콜을 ARP라고 한다.
논리적 주소(IP)와 물리적 주소(MAC)를 상호 간에 통신을 가능케 하는데, 순방향을 ARP, 역방향을 RARP 프로토콜이 처리한다. 메인 서버에서 ARP Request 브로드캐스트를 하위 서버에다 뿌려주면, 그 중 해당 주소와 일치하는 장치가 ARP Reply 유니캐스트를 통해 MAC 주소를 찾게 된다.
2.4.2 홉바이홉 통신
건너뛰는 모습을 뜻하는 홉에서 알 수 있 듯 패킷이 라우팅 테이블을 이동하며 최종 목적지까지 도달하는 통신을 말한다. 이 때 라우팅 테이블이란, 라우터에 들어있는 목적지 정보들과 그 목적지로 가기 위한 방법이 들어 있는 리스트를 말한다. 거쳐야 할 다음 라우터의 정보 또한 갖고 있으며, 패킷이 이 라우터들을 거펴 통신이 이루어진다.
게이트웨이 서로 다른 통신망이나 프로토콜 간 통신을 위한 관문 역할을 하는 소프트웨어나 컴퓨터를 두루 일컫는 용어이다.
2.4.3 IP 주소 체계
IP주소는 IPv4와 IPv6로 나뉜다. IPv4는 32비트를 8비트 단위로 점을 찍어 표기하며, IPv6는 64비트를 16비트 단위로 점을 찍어 표기한다. 추세는 IPv6로 가고 있는 추세이지만, 현재 가장 흔히 통용되는 주소 체계는 IPv4이다.
클래스 기반 할당 방식
초기에 사용한 IP주소를 할당하는 방법이다. 네트워크 주소와 호스트 주소로 이루어진 클래스 A,B,C와 브로드캐스트용 클래스 D, 예비용 클래스 E로 구분한다. 클래스마다 맨 앞 쪽에 구분 비트가 존재하는데, 이를 통해 클래스의 범위를 구별한다. 이를 십진수로 표현하면 0.0.0.0 ~ 127.255.255.255 같은 주소 범위가 나타나게 된다.
네트워크의 첫 번째 주소는 네트워크 주소로 사용되고, 마지막 주소는 브로드캐스트용 주소로 사용된다. 이러한 방식은 버리는 주소가 많다는 단점이 존재했고, 이를 보완한 DHCP, IPv6, NAT 방식이 등장하게 된다.
DHCP (Dynamic Host Configulation Protocol)
주어진 범위 내에서 클래스 기반으로 할당 받는 기존의 방식과 달리, 인터넷에 접속할 때마다 자동으로 IP주소를 할당해주는 네트워크 관리 프로토콜이다. 대부분의 가정용 네트워크에서 IP주소를 할당받을 때 사용하는 방식이다.
NAT (Network Address Translation)
패킷이 라우팅 장치를 통해 전송되는 동안 패킷의 IP주소를 수정하여 다른 주소로 매핑하는 방식이다. 공인 IP와 사설 IP로 나눠 많은 주소를 처리할 수 있게 된다.
예를 들어 한 회사의 부서가 있다고 치자. 부서원들은 스위치에서 할당받은 사설 IP들을 사용하고 있다. 그리고 NAT 장치를 통해 하나의 공인 IP로 묶어서 외부 인터넷에 요청할 수 있다. 가지를 치는 것과 비슷하다.
가정에서 하나의 인터넷 회선으로 공유기를 달아 여러 PC를 연결하여 사용할 수 있는데, 이는 공유기에 NAT 기능이 탑재되어 있기 때문이다. 또한 내/외부 주소를 다르게 유지할 수 있기 때문에 어느 정도의 보안이 가능해 지는 이점이 있고, 이용자가 많을 경우 부하가 생겨 속도가 느려질 수 있다는 단점이 있다.
2.5 HTTP
기본적으로 HTTP는 애플리케이션 계층으로서 웹 서비스에 통신에 사용되는 프로토콜이다.
2.5.1 HTTP/1.0
초기 모델로, 기본적으로 한 연결당 하나의 요청을 처리하도록 설계되었다. 그러나 파일을 가져올 때마다 TCP의 3-웨이 핸드 셰이크를 열어야 하기 때문에 RTT 증가를 유발한다는 단점이 있었다.
이를 해결하기 위한 방법이 등장하는데, 아래와 같은 방법들이다.
- 이미지 스플리팅 : 많은 이미지를 요청하면 과부하가 걸리기 때문에, 많은 이미지가 합쳐져 있는 큰 이미지 하나를 기반으로 Position을 이동해가며 원하는 이미지를 표기하는 방법이다.
- 코드 압축 : 개행 문자, 빈칸을 없애 코드의 크기를 최소화하는 방법이다.
- 이미지 Base64 인코딩 : 이미지 파일을 64진법으로 이루어진 문자열로 인코딩하는 방법이다. 이 방법을 사용하면 이미지에 대한 서버에 HTTP 요청을 할 필요가 없어지지만, 37% 정도 크기가 증가하는 단점이 존재한다.
참고자료
면접을 위한 CS 전공지식 노트 (2022, 주홍철 저)