HTTP 기초 - IP

Aiden·2022년 2월 2일
1

HTTP

목록 보기
2/13
post-thumbnail
post-custom-banner

인터넷 통신

HTTP 에 대한 학습을 시작하기 전에 인터넷 네트워크에 대한 기본적인 내용을 먼저 살펴본다

HTTP 에 대한 본격적인 학습을 시작하기 전에 인터넷 네트워크에 대한 기본지식이 있다면 수월하게 이해할 수 있다.

이나 HTTP 는 결국 인터넷 네트워크에 기반하여 동작하기 때문이다.

그렇다면, 인터넷에서 두 대의 컴퓨터는 어떻게 통신할까?
먼저, 물리적으로 붙어있는 두 대의 컴퓨터를 떠올려보자.

두 컴퓨터는 서로 가까이 위치하여있고, 클라이언트라는 컴퓨터가 서버라는 컴퓨터에게 Hello, world! 를 전송하려고 한다. 우리는 이 때 손쉽게 케이블을 꽂아 두 대의 컴퓨터를 연결해줌으로서 데이터를 전송해줄 수 있다.

이제 한국에 있는 컴퓨터에서 미국에 있는 컴퓨터로 Hello world 를 전송한다고 생각해보자. 이 경우에서 우리는 케이블을 활용할 수 없으므로 인터넷이 중간다리 역할을 대신하게 된다.

사실 이렇게 말로 설명하면, 인터넷을 통해 데이터가 쉽고 빠르고 정확하게 목표 컴퓨터를 향해 전송되는 것처럼 들릴지도 모른다. 하지만 인터넷은 그리 간단하지 않다.

위의 그림과 같이 인터넷은 무수히 많은 노드 서버들이 서로 얽혀있는 복잡한 구조로 이루어져 있다. 즉, 우리의 데이터 Hello, world! 가 목표 컴퓨터로 안전하게 전송되기 위해서는 수많은 노드들을 거치며, 목표 컴퓨터로 가는 길을 물어물어 찾아가야 하는 것이다.

그렇다면, 이렇게 복잡한 인터넷망에서 Hello world! 는 어떻게 길을 잃지 않고 목표 컴퓨터에 도착할 수 있을까?

위 질문의 해답은 IP 에 있다.

IP

Internet Protocol 의 약어인 IP 는 송신 호스트와 수신 호스트가 패킷 교환 네트워크에서 정보를 주고받는 데 사용하는 규약이다

즉, IP 는 데이터를 주고 받는 두 컴퓨터 사이에서 데이터를 패킷이라는 단위로 나누어 이를 전송할 때 사용하는 규약이자 규칙이다.

개념은 항상 어렵다.

IP 가 어떻게 Hello world! 의 앞에 놓인 험난한 길을 헤쳐나갈 수 있도록 돕는지 바로 알아보자.

IP Address

컴퓨터를 오랜기간 사용해본 사용자라면, IP Address 라는 단어에 대해 들어본 적이 있을 것이다.

위의 그림처럼 IP Address 는 인터넷망에 연결된 모든 컴퓨터에 각각 부여되어 주소의 역할을 담당한다.

즉, 한국에 있는 클라이언트 컴퓨터와 미국에 있는 서버 컴퓨터는 각각 IP Address 를 부여받고 이 주소를 통해 Hello world! 를 주고 받을 수 있는 것이다.

우리가 누군가에게 우편물을 보낼 때, 수신인의 주소를 필수적으로 작성해야 하는 것처럼,

아주 복잡한 인터넷망을 거쳐 데이터를 원하는 목표지에 안전하게 전달하기 위해서 IP Address 라는 주소는 필수적이다.

IP 의 역할

  1. IP Address 로 데이터 전달
  2. Packet 단위로 데이터 전달

이렇게 인터넷에 연결된 두 컴퓨터가 IP Address 를 부여받아 주소가 정해졌다면, IP 는 목표로 지정한 IP Address 로 데이터를 전달한다. 단, 데이터를 그대로 전송하지는 않고, '패킷' 이라는 단위로 가공하여 전송한다.

패킷

IP 가 데이터를 전송하는 단위로서, 크게 Header FieldData Field 로 구성된다.

패킷의 구성은 다음과 같다.

IP 패킷의 헤더 필드에는 각 패킷을 목적지까지 전달하기 위해 필요한 정보들이 담겨있고, 데이터 필드에는 전송하고자 하는 데이터가 담겨있다.

아래에서 패킷의 헤더에 대해 더욱 자세히 살펴보도록 하자.

패킷의 헤더는 IPv4 기준 20 bytes 이며, 확장 헤더를 포함한 경우 최대 60 bytes 까지 사용이 가능하다. IPv6 는 40 bytes 의 헤더 길이를 가지며, 고정 헤더이므로 확장 헤더를 사용할 수 없다.

  • IPv4 는 버전을 의미한다. 인터넷이 발전하고 단말기의 수가 증가하면서 IP 주소 공간이 부족하게 되었는데, 이를 해결하기 위해 IPv6 가 등장하게 되었다.
  • 이번 포스팅에서는 IPv4 와 IPv6 를 비교하지 않는다.

패킷 헤더에는 IPVer. (버전 정보), HLEN (헤더의 길이), Total Length (헤더 필드와 데이터 필드를 포함한 패킷의 전체 길이) 등의 정보가 포함되어 담긴다.

이외에도 이후 분할된 패킷을 재조립하기 위해 필요한 Identification (식별자), 단편화 여부를 나타내는 Flag (플래그), 재조립 시 패킷 간 순서를 나타내는 Offset (오프셋) 등 다양한 정보들이 포함된다.

물론, IP 가 패킷을 전송할 수 있도록 각 컴퓨터에 부여되었던 SourceIP Address (송신자 IP 주소) 와 DestinationIP Address (수신자 IP 주소) 도 필수적으로 포함되어 있다.

이렇게 다양한 정보를 헤더에 담아 데이터와 함께 목적지 주소로 전달하게 되는 것이다.

그리고 이러한 단위를 Packet 이라 한다.

패킷 전달

이제 IP 는 목적지 IP AddressPacket 을 전송한다


위와 같이 가공된 IP 패킷은 아래 그림과 같이 목적지로 전달된다.

패킷의 헤더에는 목적지 주소 정보가 담겨있고, 인터넷 망의 각 노드들은 이 정보를 참조하여 패킷을 전달한다.

즉, 200.200.200.2 라는 목적지 IP Address 까지 도달할 수 있는 가까운 노드들에게 패킷을 전달해가며 최종적으로 목표 컴퓨터까지 도달할 수 있도록 돕는 식이다.

반대의 경우도 동일하다.
패킷을 성공적으로 전달받은 미국의 서버 컴퓨터가 OK 메시지를 한국의 클라이언트 컴퓨터에게 전송하고 싶다면, 다시 헤더의 송신자 IP Address 를 참조하면 된다.

이 경우에도 패킷의 헤더 정보를 참조하여 인터넷망의 각 노드들은 목적지까지 패킷이 정확하게 전달될 수 있도록 돕는다.

IP 의 한계

IP 는 크게 세 가지의 한계점을 가진다
1. 비연결성
2. 비신뢰성
3. 프로그램 구분

지금까지 IP 가 데이터들을 Packet으로 가공하고, 패킷 내 헤더에 담긴 DestinationIP Address 로 데이터를 전달하는 과정에 대해 살펴보았다.
이 과정에서 인터넷망의 수많은 노드들은 패킷의 헤더 정보를 참조하고, 목적지에 도착할 수 있는 가까운 노드들에게 패킷 을 반복적으로 전달했다.

결론적으로 우리는 한국에 있는 클라이언트 컴퓨터와 미국에 있는 서버 컴퓨터가 IP 를 통해 데이터를 주고 받는 과정을 알게 되었다.

하지만, IP 에도 크게 세 가지의 한계점이 존재한다.


첫 번째는 비연결성이다.

IP 는 패킷을 받을 대상이 존재하지 않거나 서비스 불능 상태이더라도 패킷을 전송한다. 이 때, 송신자는 패킷이 정상적으로 수신지에 도달하였는지 알 수 없다.

위 그림에서 수신 서버가 서비스 불능 상태임에도 불구하고 패킷이 전달되는 모습을 볼 수 있다. 실제로 수신 서버는 패킷을 전달받지 못하였지만, 클라이언트는 이러한 사실을 알지 못한다.


두 번째 한계점은 비신뢰성이다.

인터넷망은 굉장히 복잡하기 때문에 중간에 패킷이 소실되거나, 패킷의 전달 순서가 잘못되는 등 다양한 문제점들이 발생할 수 있다.

이 때 IP 는 이러한 문제점을 해결할 수 없다. 즉, IP 는 패킷의 성공적인 전달을 보장하지 않으며, 패킷 간 순서 제어를 보장해주지도 않는다.


마지막으로, 세 번째 한계점은 프로그램의 구분이다.

이는 우리가 하나의 컴퓨터에서 여러가지 애플리케이션을 동작시키고 있는 경우에 해당된다.

같은 IP 를 사용하는 하나의 서버에서 여러가지의 프로그램을 실행 중일 때, 전달받은 패킷들이 각각 어떤 프로그램의 데이터인지 구분하는 일이 불가능하다는 것이다.



이번 포스팅에서는 인터넷 통신IP 에 대해 알아보았다.

복잡한 인터넷망에서 데이터를 수신지에 정확하게 전달하기 위해서는 IP Address 가 있어야하고, IP 는 이를 활용해 데이터를 Packet 단위로 가공한 뒤 목적지로 전송하는 역할을 수행했다.

반면, 인터넷 통신에 필수적 요소인 IP 는 비연결성, 비신뢰성, 프로그램의 구분이 불가능하다는 세 가지 한계점이 존재하기도 했다.

다음 포스팅에서는 IP 의 이러한 한계점들을 해결할 수 있는 TCP UDP 에 대해서 소개할 예정이다.





출처


post-custom-banner

0개의 댓글