Network

[1% 네트워크 원리] 2장 IP와 이더넷, UDP

shininghyunho 2024. 5. 10. 16:54

전체적인 개요

어플리케이션에서 요청을 보낼때

Socket 라이브러리를 사용하여 요청을 보냅니다.

그리고 실제로 송신을 담당하는건 OS 의 프로토콜 스택인데,

소켓을 만들고 패킷을 전달하는것까지가 TCP 의 역할이었습니다.

 

이번에는 패킷에는 '서울시 동대문구 망우로' 같은 구체적인 주소가 적혀있는데

이를 네트워크에서는 IP 라고 합니다.

 

3계층에서는 패킷을 어디로 어떠한 경로로 보낼지를 결정합니다.

TCP는 택배의 내용물을 확인하지만 (그래서 오류도 검출합니다.)
IP는 단순히 택배를 전달하는것만이 목표입니다. (주소만 맞다면 내용물은 확인하지 않습니다.)

ARP는 MAC 주소를 얻는 프로토콜이고, ICMP는 패킷에 오류가 발생 여부를 확인할수 있는 프로토콜입니다.

 

그러면 패킷이 이제 IP를 활용하여 어떻게 전송되는지를 살펴보겠습니다.

 

패킷

패킷은 헤더와 데이터로 구성되어있는 전송 단위입니다.

 

앞서 살펴본 TCP 패킷에서 IP 헤더가 붙으면 IP 패킷

MAC 헤더가 붙으면 이더넷 패킷이 됩니다.

 

패킷 운반

일단 일련의 과정으로 IP 헤더와 MAC 헤더까지 만들어졌다고 해봅시다.

그럼 어떤 과정으로 패킷이 전달될까요?

 

두 서버가 가까이 있다면 서버에서 서버로 직접 전달이 가능할것입니다.

마치 같은 아파트에서 살고있다면 물건 전달이 쉽듯이요.

 

그러나 두 서버가 다른 지역에 있다면 어떻게할까요?

퀵으로 배송하듯이 직접 전달해야할까요?

 

택배는 여러개의 허브를 거치며 단계별로 배송됩니다.

우리가 인터넷으로 주문을 하고 송장을 검색하면 옥천 hub 같은데에 있다고 표시가되죠.

 

인터넷도 비슷한 과정으로 여러개의 라우터를 거쳐야합니다.

라우터는 송수신 IP를 확인하여 최적의 경로를 만들어주는 역할을 합니다.

마치 택배가 어떤 허브로 경유해야할지를 선택하는것과 비슷합니다.

 

다음 그림을 보면 더욱 명확히 알 수 있습니다.

 

클라이언트에서 서버로 패킷을 보낸다고 할때 라우터와 허브를 경유하는것을 알 수 있습니다.

 

위의 시나리오를 살펴보면.

  1. 송신 서버에서 패킷을 만들어 3계층에 전달한다.
  2. 3계층에서는 송신을 위해 IP 헤더를 작성한다.
    IP 헤더에는 송신 IP, 수신 IP등이 존재한다.
    이는 패킷이 수신지에 도착할때까지 변하지 않는다.
  3. 2계층 이더넷으로 전달되면 송수신 MAC 주소가 담긴 MAC 헤더를 작성한다.
    이 MAC 헤더는 라우터를 경유할때마다 변경된다.
  4. 허브(2계층 스위칭 허브)와 라우터(3계층)를 거쳐 최종 수신지까지 패킷이 도착한다.
    (요즘 라우터에는 2계층 허브의 기능도 같이 탑재되어 있습니다. 그래서 라우터에서 라우터로 이동이 가능합니다.) 

 

IP를 보고 찾아가는건 알겠는데

다음 라우터 주소는 어떻게 알지?

이에 대한 답변은 라우팅 테이블에 있습니다.

이는 그림 2-16에서 IP 표에 해당합니다.

라우팅 테이블

택배를 배송한다고할때 우체국에서 어떤 허브로 이동할지를 결정해야합니다.

아마도 수신지를 확인해보고 그 경로에 해당하는 허브로 보낼것입니다.

그리고 이는 아마 표 같은것으로 정리되어있겠죠.

서울 갈때는 수원으로 보내고 부산은 대전으로 보내자.

 

IP도 마찬가지로 어떤표를 보고 다음 행선지를 결정해야합니다.

이것을 라우팅 테이블이라고합니다.

 

윈도우 route print 명령어를 치면 라우팅 테이블을 확인해볼 수 있습니다.

 

인터페이스 목록은 연결된 LAN 카드입니다. MAC 주소도 같이 적혀있고요.

 

그 아래 IPv4 테이블이 나오는데 이걸보고 다음 라우터의 경로를 결정합니다.

MASK 비트와 AND 연산을 해서 네트워크 대상 주소와 일치한다면

게이트웨이 주소로 전달이 될것입니다.
(인터페이스는 송신하는 LAN 어댑터의 네트워크 인터페이스입니다.)

 

만약에 127.0.0.5 가 수신지 IP라면

맨 아래서부터 MASK  비트와 AND 연산을 해서 네트워크 주소와 비교를 합니다.

그러다가 255.0.0.0 과 AND연산을 하면 127.0.0.0 이 되어 127.0.0.1로 보내지게됩니다.

또한 맨 위에 0.0.0.0 은 기본 게이트웨이라고 합니다.

 

여기에 추가적인 IP 헤더를 내용을 완성하면됩니다.

 

그리고 이더넷에서 쓰일 MAC 헤더가 붙여질 차례입니다.

이더넷

이더넷은 2계층의 대표적인 프로토콜입니다.

MAC 주소를 사용하여 근거리 LAN 통신을 하는것이 특징입니다.

 

ARP

MAC 주소는 어떻게 얻을까요?

이때 사용하는 프로토콜이 ARP 입니다.

ARP 는 브로드캐스팅으로 패킷을 날리고 유니캐스트로 패킷을 전달받아

IP 주소를 통해 MAC 주소를 얻을 수 있습니다.

이렇게 얻은 MAC 주소는 캐시로 저장해놓고 사용합니다.

 

ARP 는 3계층 프로토콜이지만 2계층에서 사용됩니다.

 

 

 

이렇게 MAC 주소까지 얻어서 MAC 헤더까지 완성시킵니다.

 

그럼 이제 패킷이 완성이 되고

이를 LAN 어댑터로 보내 전기신호로 변환해 전송하면 되는것이죠.

 

ICMP

만약에 패킷이 도착하지 못하거나 문제가 발생하면

ICMP 프로토콜을 사용하여 수신처에서 송신처로 응답을 날립니다.

이또한 3계층의 프로토콜이죠.

 

여기까지가 TCP/IP 의 동작 방식입니다.

 

UDP

대개 TCP와 같이 비교과 되는 프로토콜입니다.

간단하게 말해서 송수신 제어가 필요없어 빠릅니다.

 

TCP 에서는 ACK 를 받으며 패킷이 유실되는 경유를 방지했습니다.

그러나 UDP에서는 일단 계속 보내기만 합니다.

그래서 응답을 받을 필요가없어 속도면에서 더 빠르죠.

접속이나 연결 끊기 단계도 필요가 없습니다.

 

UDP 헤더는 TCP에 비해 간결합니다. 단순히 보내기만 하기 때문입니다.

 

그러면 OS 의 프로토콜 스택에서는 보내기만 하고

애플리케이션에서 회답이 돌아오지 않았음을 깨달았을때

다시 송신을 하면 됩니다.

이때 UDP는 어디서 오류가 발생했는지 모르므로 패킷 전체를 전부 다시 보내야겠죠.

 

그래서 데이터가 하나의 패킷으로만 이우러질 정도로 작은 양의 데이터를 보낼때 유리합니다.

대표적인 예시로 DNS 서버에서 도메인명으로 IP 주소를 얻을 때 사용합니다.

이 정도는 하나의 패킷만 사용해도 되니까요.

 

음성이나 영상에서도 UDP를 사용하면 유리합니다.

패킷 몇개 없어져도 조금 잡음이거나 짤리지만

속도가 안맞아 싱크에 문제가 생기면 안되니까요.

그러나 UDP 는 패킷의 순서를 고려하지 않아 순서를 고려하는 UDP 기반의 RTP 프로토콜을 쓰기도 한답니다.

 

TCP와 UDP

TCP : 신뢰성있는 연결로 데이터가 제대로 보내졌는지 확인하다. 순서 보장. 거의 모든 통신이 TCP. UDP 보다는 느리다.

UDP : 비신뢰성 연결. 패킷을 보내기만 하고 ACK를 받지 않는다. 연결 해제 과정도 없어 빠르다.

'Network' 카테고리의 다른 글

[1% 네트워크 원리] 2장 TCP  (0) 2023.12.20
[1% 네트워크 원리] 1장 웹 브라우저  (0) 2023.12.11