🚀 94sssh
Published on

2024.08.23

[네트워크 원리] - 03. 네트워크의 공통 언어(2)

네트워크의 공통 언어 TCP/IP

인터넷에서 사용하는 주소와 사설 네트워크에서 사용하는 주소

  • 공인 IP 주소: 인터넷에서 이용하는 IP 주소, 인터넷 전체에서 중복되지 않도록 관리, 퍼블릭 주소 또는 글로벌 주소로 불림.
  • 사설 IP 주소: 사내 네트워크 등의 사설 네트워크에서 이용하는 IP 주소
    10.0.0.0 ~ 10.255.255.255
    172.16.0.0 ~ 172.31.255.255
    192.168.0.0 ~ 192.168.255.255

사설 네트워크에서 인터넷으로의 통신

사설 네트워크에서 인터넷으로 통신하려면, NAT(Network Address Translation)이 필요.
목적지가 사설 주소인 경우 IP 패킷은 폐기되어 버려 응답을 받을 수 없음
사설 네트워크에서 인터넷으로 통신하기 위해 NAT로 주소를 변환한다.

  1. 사설 네트워크에서 인터넷으로 요청을 전송할 때, 출발지 IP 주소를 변환
  2. 라우터는 나중에 원래대로 되돌리기 위해 변환한 주소의 대응을 NAT 테이블에 보존
  3. 요청에 대한 응답이 라우터로 돌아오면, 목적지 IP 주소를 변환, 이때, NAT 테이블에 보존해 둔 주소의 대응을 이용

사설 주소와 공인 주소를 1대 1로 대응시키려면 공인 주소가 많이 필요해지므로 복수의 사설 주소를 하나의 글로벌 주소에 대응시키는 주소 변환을 NAPT라고 부른다.

데이터가 목적지에 잘 도착했을까?

IP로 데이터를 다른 호스트에 전송하면 제대로 도착했는지나, 아니라면 왜인지 이유도 확인할 방법이 없다.
이런 IP를 이용하는 데이터 전송의 특징을 최선형(best effort)이라고 한다.
😋: '데이터를 보내기 위해 최선을 다하겠지만, 안 되도 어쩔 수 없지'

이에 ICMP를 개발하여 엔드투엔드 통신이 정상적으로 이루어졌는지 확인할 수 있다.

ICMP의 기능

  • 에러 리포트
  • 진단 기능

IP 패킷이 폐기되면, 폐기한 기기가 ICMP를 이용해 출발지로 에러 리포트(도달불능 메시지)를 전송한다.
진단 기능은 IP의 엔드투엔드 통신이 가능한지 확인하는 기능으로, 진단을 위해 자주 이용하는 ping 커맨드가 있다. ping 커맨드로 ICMP 에코 요청/응답 메시지를 보내 지정한 IP 주소와 통신할 수 있는지 확인한다.

IP 주소와 MAC 주소를 대응시킨다

ARP
TCP/IP는 IP 주소를 지정해서 데이터를 전송하고, IP 패킷은 PC나 서버 등의 인터페이스까지 전송되어 간다.
인터페이스는 MAC 주소로 식별하는데, TCP/IP의 IP 주소와 인터페이스를 식별하기 위한 MAC 주소를 대응시키는 것이 ARP의 역할이다.

이더넷 인터페이스에서 IP 패킷을 내보낼 때 붙이는 이더넷 헤더에는 목적지 MAC 주소를 지정해야만 한다.
IP 주소와 MAC 주소를 대응시키는 것을 가리켜 주소 해석이라고 한다.

ARP의 동작 흐름

  1. ARP 요청으로 IP 주소에 대응하는 MAC 주소를 질의
  2. 질의받은 IP 주소를 가진 호스트가 ARP 응답으로 MAC 주소를 알려줌
  3. 주소 해석한 IP 주소와 MAC 주소의 대응을 ARP 캐시에 보존

포트 번호로 애플리케이션에 할당한다

호스트의 애플리케이션에 데이터를 배분하기 위해 애플리케이션을 식별해야 한다. 이때, 포트 번호를 이용하는데, 포트 번호를 TCP 또는 UDP 헤더에 지정한다.

명칭포트 번호 범위의미
웰노운 포트0 ~ 1023서버 애플리케이션용으로 예약된 포트 번호 / 미리 정해져 있음
등록된 포트1024 ~ 49151자주 이용되는 애플리케이션의 서버 쪽 포트 번호 / 미리 정해져 있음
동적/사설 포트49152 ~ 65535클라이언트 애플리케이션용 포트 번호 / 동적 할당
프로토콜TCPUDP
HTTP80-
HTTPS443-
SMTP25-
POP3110-
IMAP4143-
FTP20/21-
DHCP-67/68

확실하게 애플리케이션의 데이터를 전송한다

TCP: 신뢰성 있는 애플리케이션 간 데이터 전송을 위한 프로토콜, TCP 이용 시 신뢰성 확보용 구조를 넣을 필요가 없다.

TCP 데이터 전송 절차

  1. TCP 커넥션 맺기(3웨이 핸드쉐이크)
  2. 애플리케이션 간 데이터 송수신
    애플리케이션의 데이터에 애플리케이션 프로토콜 헤더와 TCP 헤더를 추가(TCP 세그먼트)
    애플리케이션의 데이터 크기가 크면 분할하여 복수의 TCP 세그먼트로서 전송
    분할 방식은 TCP 헤더에 기록되고, 목적지에서 원본 데이터로 재조립
    데이터의 수신을 확인(ACK)해주고, 일부 데이터가 도착하지 않았다면 재전송
    네트워크가 혼잡하면 데이터 전송 속도 제한(플로우 제어)
  3. TCP 커넥션 끊기

TCP로 데이터를 분할한다

전송하고 싶은 애플리케이션의 데이터에 TCP 헤더를 추가해 TCP 세그먼트로서 전송
TCP 헤더에서 가장 중요한 것은 포트 번호이다.

  • 시퀀스 번호: TCP로 전송하는 데이터 순서를 나타냄
  • ACK 번호: 데이터를 바르게 수신했음을 확인하기 위해 이용
  • MSS: TCP에서 애플리케이션의 데이터를 분할하는 단위, 표준 크기는 1,460 바이트

애플리케이션에 데이터를 배분하기만 한다

UDP: 애플리케이션에 데이터를 적절하게 배분하는 기능만 있는 프로토콜
TCP만큼 여분의 처리를 하지 않아 데이터 전송 효율이 좋다.
큰 데이터를 분할하는 기능도 없어 보내기 전에 적절한 크기로 쪼개야 한다.

UDP는 주로 IP 전화의 음성 데이터와 같은 실시간 데이터 전송에 사용된다.

네트워크의 전화번호부

TCP/IP로 통신할 때는 통신 상대의 IP 주소를 반드시 지정해야 한다.
IP주소를 이해하기는 어려우므로 호스트명을 붙인다.
호스트명으로 IP 주소를 구하는 것을 이름해석이라고 부르는데, 주로 DNS를 이용한다.

DNS로 IP 주소를 자동으로 구한다

DNS를 이용하려면 DNS 서버가 필요하다.
리소스 레코드: 호스트명, IP 주소 등 DNS 서버에 등록하는 정보
DNS 리졸버: DNS 서버에 질의하는 기능
재귀질의: DNS 서버로 IP 주소를 질의할 때 루트에서부터 질의를 반복하는 것

주요 리소스 레코드

종류의미
A호스트명에 대응하는 IP 주소
AAAA호스트명에 대응하는 IPv6 주소
CNAME호스트명에 대응하는 별명
MX도메인명에 대응하는 메일 서버
NS도메인명을 관리하는 DNS 서버
PTRIP 주소에 대응하는 호스트명

필요한 설정을 자동화한다

DHCP: 설정 자동화 프로토콜
DHCP 서버를 준비해, TCP/IP 설정을 등록해 둔 뒤, PC 등에서 DHCP 클라이언트가 되도록 설정한다.
DHCP 클라이언트 호스트가 네트워크에 접속하면, DHCP 서버와 다음 네 가지 메시지를 주고 받으며 자동으로 TCP/IP 설정을 한다.

  • DHCP DISCOVER(설정 문의)
  • DHCP OFFER(설정 안내)
  • DHCP REQUEST(요청)
  • DHCP ACK(응답)

DHCP 통신은 브로드캐스트를 이용하며, 주소를 몰라도 데이터를 보내고 싶을 때 브로드캐스트를 이용한다.