[네트워크] TCP/IP
이번 포스팅에서는 TCP/IP에 대해서 공부한 내용을 정리해 보려고 한다.
지난 포스팅에서 IP 주소에 대해서 공부를 했었다. 네트워크 안에 있는 모든 컴퓨터(노드라고도 한다)는 고유한 IP 주소를 가지고 있다. IP 주소는 2진수 32개로 이루어져 있고 우리는 2진수가 익숙하지 않으므로 10진수로 표현해서 0.0.0.0 ~ 255.255.255.255 의 형태로 IP 주소를 표현한다.
네트워크 상에서 IP 주소를 물리적 네트워크 주소로 대응시켜야 할 때가 있는데 이 때 사용하는 프로토콜을 ARP(Address Resolution Protocol)라고 한다. TCP/IP 4계층에서 3계층(네트워크 계층)의 IP 주소를 2계층(데이터 링크 계층)의 MAC 주소로 대응시킬 때 사용한다.
arp -a 명령어를 입력하면 네트워크에 캐시되어 있는 arp들이 나타난다. 왼쪽의 값(169.254.152.24)은 IP 주소이고 중간에 있는 값(e8:84:a5:ee:83:3d)은 물리적 네트워크 주소이다. arp 요청은 네트워크의 브로드캐스트 요청이다.
서브넷 마스크(Subnet mask)
하나의 네트워크 안에 있는 컴퓨터들은 arp로 통신이 가능하다. 하지만 서로 다른 네트워크의 컴퓨터들은 arp로 통신할 수 없다. 이 경우에는 게이트웨이와 라우터를 사용한다. 이 때 서브넷 마스크의 필요성이 나타나는데, 각각의 호스트는 서브넷 마스크를 통해 목적지가 로컬 네트워크인지, 먼 거리 네트워크인지 알 수 있다.
네트워크 영역은 같고 호스트 영역만 다른 경우 local call 이라고 하며 예를 들면 /24 서브넷 마스크에서 232.25.208.22 와 232.25.208.9 는 같은 네트워크 안에 있다. 그리고 네트워크 영역이 다른 경우 long distance call 이라고 한다. /24 서브넷 마스크에서 232.25.208.22 와 232.52.208.9 는 다른 네트워크 안에 있다. 그리고 각각의 호스트는 default gateway를 알아서 원격 네트워크에 트래픽을 포워드 할 수 있다.
맥 OS의 경우 시스템 환경 설정 > 네트워크 > 고급 으로 들어가면 다음과 같이 네트워크 정보를 확인할 수 있다.
IP 주소는 클래스를 바탕으로 서브네팅을 할 수도 있고 클래스를 사용하지 않고 서브네팅을 할 수도 있다. 먼저 클래스로 서브네팅을 하면 다음과 같이 클래스를 나눌 수 있다.
- 클래스 A : 가장 앞자리가 0-126, 서브넷마스크 /8
- 클래스 B : 가장 앞자리가 128-191, 서브넷마스크 /16
- 클래스 C : 가장 앞자리가 192-223, 서브넷마스크 /24
CIDR
반면 클래스less하게 서브네팅을 할 수 있는 방법도 있다. CIDR(Classless Inter-Domain Routing) 이라고 부르는 클래스 없는 도메인 간 라우팅 기법인데 네트워크 구분을 클래스로 하지 않는다. 그래서 더 유연하게 IP 주소를 나눌 수 있다.
위의 그림처럼 서브넷마스크가 /25이면 IP 주소의 마지막 값을 1-126, 129-254 이렇게 두 가지 서브넷 마스크로 가질 수 있고, 각각의 서브넷 마스크는 126개의 호스트를 가진다. 그리고 /26이면 4개의 서브넷 마스크와 각각 62개의 호스트를 가지게 된다.
DHCP
동적으로 IP주소를 할당하는 방법에는 DHCP(Dynamic Host Configuration Protocol)와 BOOTP(Bootstrap Protocol, for Linux) 등이 있다. DHCP는 호스트의 IP주소와 TCP/IP 프로토콜의 기본 설정을 클라이언트에게 자동으로 제공해주는 프로토콜을 의미한다. DHCP는 네트워크에 사용되는 IP 주소를 DHCP 서버가 중앙집중식으로 관리하는 클라이언트-서버 모델을 사용하며, DHCP 지원 클라이언트는 네트워크 부팅과정에서 DHCP 서버에 IP 주소를 요청하고 받을 수 있다.
단말(DHCP 클라이언트)이 DHCP 서버로부터 IP 주소를 할당 받는 절차는 다음과 같다.
- DHCP Discover : 단말이 DHCP 서버를 찾기 위한 메시지. LAN 상에 브로드캐스팅을 하여 DHCP 서버가 있으면 응답을 해 달라는 외침.
- DHCP Offer : 브로드캐스트 메시지(Destination MAC)이거나 유니캐스트. 서버가 자신이 여기 있음을 알리는 응답 메시지. 단순히 DHCP 서버의 존재만을 알리지 않고, 단말에 할당할 IP 주소 정보를 포함한 다양한 네트워크 정보를 함께 실어서 단말에 전달.
- DHCP Request : 단말은 DHCP 서버의 존재를 알았고, DHCP 서버가 단말에 제공할 네트워크 정보(IP 주소, 서브넷 마스크, default gateway)를 알았음. 이제 DHCP 요청 메시지를 통해 하나의 DHCP 서버를 선택하고 해당 서버에 단말이 사용할 네트워크 정보를 요청.
- DHCP Ack : 브로드캐스트 메시지(Destination MAC)이거나 유니캐스트. DHCP 서버가 단말에게 네트워크 정보를 전달해 주는 메시지.
이렇게 DHCP Ack를 수신한 단말은 이제 IP 주소를 포함한 네트워크 정보를 획득(임대)하였고 인터넷을 사용할 수 있다.
각각의 Broadcast domain은 반드시 하나의 DHCP 서버를 가지고 있어야 한다. 그리고 일반적으로 컴퓨터에서 DHCP 서버와 default gateway는 같은 ip를 가진다. 라우터이기 때문이다.
사설 IP 주소는 오직 사설망에서만 사용되는 IP 주소로 여기에는 다음과 같은 IP 주소들이 포함된다. 보통 가정용, 기업용 LAN에 사용된다.
- 10.X.X.X → private
- 172.16.X.X ~ 172.31.X.X → private
- 192.168.X.X → private
루프백 주소(Loopback Address)란 네트워크 카드 등에 할당된 특수한 IP 주소로 그 컴퓨터 자신을 나타내는 주소이다. IPv4에서는 "127.0.0.1", IPv6에서는 ":1"(0:0:0:0:0:0:0:1)을 사용한다.
다음 포스팅에서는 라우팅에 대해서 알아보도록 한다.
참고자료
Linkedin Learning <CompTIA Network+ (N10-007) Cert Prep: 3 The World of TCP/IP>