본문 바로가기
CS/네트워크

[HTTP] IP / TCP / DNS

by 우다다캣 2022. 7. 8.

TCP / IP 중 HTTP와 관계가 깊은 프로토콜인 IP, TCP, DNS에 대해 알아봅시다.


IP (Internet Protocol)

 IP는 인터넷 계층에 해당되는 프로토콜로, 인터넷을 활용하는 대부분의 시스템이 IP를 이용하고 있습니다.  IP의 역할은 각각의 패킷을 상대방에게 전달하는 것입니다. 이 때 패킷을 보낼 상대방이 어디에 있는지, 즉 상대방의 주소를 알아야 합니다. 이 주소에는 IP주소와 MAC 주소가 있습니다. 각각이 무엇을 의미할까요?

 

IP 주소

 IP 주소는 각 노드에 부여된 주소를 가리킵니다. 노드란 네트워크에 연결되어 있는 모든 장치를 의미합니다. 송신 컴퓨터와 수신 컴퓨터 모두 IP 주소를 가지고 있으며, 이 주소가 마치 실제 세상에서의 도로명 주소와 같은 역할을 합니다. 

 

MAC 주소

 MAC(Media Access Control) 주소는 각 장치의 네트워크 카드에 할당된 고유한 주소입니다. IP 주소는 변경될 수 있지만, MAC 주소는 변경할 수 없습니다. IP 주소가 도로명 주소라면 MAC 주소는 사람(또는 건물)의 이름이라고 생각할 수 있습니다.

 

IP 통신

 그렇다면 IP 통신은 어떤 원리로 상대방을 찾아갈까요? 이해를 돕기 위해 실제 세상에서 '김우다'라는 사람에게 택배를 보낸다고 생각해봅시다.

 

 택배를 보내려는데 '김우다'라는 이름만 알고 어디에 살고 있는지를 모른다면 택배를 보낼 수 없을 것입니다. 따라서 김우다씨가 '서울시 동대문구 우다로 xx'에 살고 있다고 가정해 봅시다. 이 주소를 받는 분 주소란에 적고 택배를 보내면, 택배 회사는 이 주소를 바탕으로 배송 경로를 선정합니다.

 

 배송은 한번에 이루어지지 않습니다. 다들 옥천 hub(옥뮤다)에 한번씩 빠져보신 적이 있을겁니다. 배송될 위치에 따라서 거쳐야 할 집화소들이 있고, 이 경로를 따라야만 택배는 최종 목적지에 도달하게 됩니다. 즉, 주소에 '서울시'가 있다면 우선 서울시에 해당하는 집화소로 이동해야 합니다. 이후 '동대문구'에 해당하는 집화소로 이동하고, '우다로'에 해당하는 담당지점으로 이동해서야 해당 택배는 담당기사님을 배정받아 김우다씨에게 도착할 것입니다.

 

 IP 통신은 이 택배 보내기와 매우 유사합니다. 우선 MAC 주소는 '김우다'라는 이름과 같습니다. '김우다'라는 이름은 고유한 사람의 이름으로, 변하지 않습니다. MAC 주소 역시 각 장치에 할당되는 고유한 주소로 변경되지 않습니다.

 

 하지만 '김우다'라는 이름만으로는 택배를 보낼 수 없는것처럼, MAC 주소만 알고 있다면 이 장치가 어디에 있는지 알 수 없기 때문에 찾아갈 수 없습니다. 따라서 도로명 주소에 해당하는 IP 주소가 필요합니다. IP 주소는 상황에 따라 변할 수 있습니다. 마치 동일한 위치를 지번 주소와 도로명 주소 두 가지로 나타낼 수 있는 것처럼요. 이 IP 주소는 상대방의 네트워크 상의 위치를 나타낸다고 볼 수 있습니다.

 

 즉, 상대방 컴퓨터는 IP 주소와 MAC 주소 두 가지를 가지고 있으며, 송신측에서는 IP 주소를 바탕으로 상대방의 MAC 주소가 어디 있는지 조사해서 찾아가게 됩니다. 이 때 택배가 한 번에 도로명 주소를 찾아갈 수 없는 것처럼, IP 통신 역시 IP 주소에 해당하는 MAC 주소를 한 번에 찾아갈 수 없습니다. IP 주소를 바탕으로, 마치 옥천 hub와 같은 지점들을 거쳐가며 상대방을 찾아가야 합니다.

 

ARP

 이렇게 IP 주소를 바탕으로 MAC 주소를 찾아갈 때 ARP(Address Resolution Protocol)라는 프로토콜이 사용됩니다. 이 프로토콜은 마치 도로명 주소에 따라서 들려야 하는 지점을 찾아가듯이, IP 주소를 보고 들려야 할 다음 지점들을 찾아냅니다. 이 때 들리는 지점들 역시 MAC 주소를 가지고 있고, 여러 MAC 주소들을 거쳐서 최종 목적지에 해당하는 MAC 주소를 가진 상대방의 컴퓨터에 도착하게 됩니다.

 

 또한, 이러한 택배 보내기와 같은 시스템을 라우팅(Routing)이라고 합니다.

 

TCP (Transfer Control Protocol)

 TCP는 전송 계층에 해당하며, 데이터를 TCP 세그먼트(Segment)라고 불리는 단위 패킷으로 작게 분해해서 상대에게 전송합니다. 이 TCP 세그먼트는 데이터 스트림에서 받은 데이터를 일정한 단위로 분해한 뒤 TCP 헤더를 붙인 것으로, 송신 측에서는 이 TCP 세그먼트를 인터넷 계층으로 전달하고, 수신 측에서는 TCP 세그먼트에서 헤드를 떼고 응용 계층으로 전달합니다. 

 

TCP 세그먼트 = 데이터 + TCP 헤더
송신측 : 단위 패킷으로 조각낸 데이터에 TCP 헤더를 붙인 TCP 세그먼트를 인터넷 계층으로 전송 → Encapsulation
수신측 : TCP 세그먼트에서 헤더를 떼고 응용 계층으로 전송 Decasulation

 

쓰리웨이 핸드쉐이킹(Three Way Handshaking)

 또한, TCP는 데이터가 상대에게 정확하게 도착했는지 확인하기 위해 쓰리웨이 핸드쉐이킹(Three Way Handshaking)이라는 방법을 사용합니다. 이 방법은 총 3번의 TCP 플래그 교환을 통해 상대에게 데이터가 잘 전송되었는지 확인합니다.

 

1. 송신측이 'SYN' 플래그로 상대에게 접속함과 동시에 패킷을 보냅니다.

2. 수신측이 'SYN/ACK' 플래그로 송신측에 접속함과 동시에 패킷을 수신한 사실을 전합니다.

3. 송신측이 'ACK' 플래그를 수신측에 보내 패킷 교환이 완료되었음을 전합니다.

 

 이렇게 총 3번의 플래그 전송이 진행되면 패킷 교환이 완료됩니다. 이 과정에서 도중에 통신이 끊어지는 등으로 플래그가 정상적으로 오가지 않았다면, TCP는 위 수순을 반복하여 패킷을 재전송합니다. 이로써 데이터 전송에 있어 안정성을 보장받게 됩니다.

 

DNS (Domain Name System)

 DNS는 HTTP의 응용 계층 시스템에 해당하는 시스템으로, IP주소와 도메인 이름을 조사해서 변환해줍니다. 도메인 이름이란 IP 주소를 사람이 보기 편한 표기법으로 바꿔서 표기한 것으로, 우리가 흔히 주소창에서 볼 수 있는 이름입니다. 예를 들면 "www.naver.com" 이라는 주소는 도메인 이름으로, 사람에게는 익숙한 표기이지만 컴퓨터가 이 주소를 보고 해당하는 서버에 찾아갈 수는 없습니다.

 

 따라서 도메인 주소를 컴퓨터가 알 수 있는 IP 주소로 바꿔줘야 하고, 이를 담당하는 시스템이 DNS입니다. 우리가 주소창에 도메인 이름을 입력하면, DNS는 이 도메인 이름에 해당하는 IP 주소를 찾아서 변경해줍니다. 송신측은 이 IP 주소를 보고 위에서 설명한 IP 통신을 통해 상대방의 위치를 찾아가서 데이터를 전송하게 됩니다.

 

참고자료

http://www.kyobobook.co.kr/product/detailViewKor.laf?mallGb=KOR&ejkGb=KOR&barcode=9788931447897

'CS > 네트워크' 카테고리의 다른 글

홉바이홉 통신, ARP  (2) 2022.11.13
네트워크 기기  (4) 2022.11.06
네트워크 기초  (1) 2022.10.31
[HTTP] URI와 URL  (0) 2022.08.19
[HTTP] HTTP와 TCP / IP  (0) 2022.07.07