alswlfl 2024. 9. 6. 14:04

⭐️ TCP/IP 4계층 애플리케이션 역할 정리 ⭐️

1. 애플리케이션 계층해당 데이터는 특정 애플리케이션 프로토콜에 따라 형식화된 메시지로 만들어짐

HTTP 요청 메시지 예시
GET /index.html HTTP/1.1 
Host: www.example.com 
User-Agent: Mozilla/5.0 
Accept: text/html 
Connection: keep-alive

2. 클라이언트에서 요청을 보내면 애플리케이션 계층에서 해당 요청을 처리할 데이터 생성

3. 전송 계층**TCP**의 경우, 전송 전 **3-way handshake**를 통해 상대방과 연결이 성공적으로 이루어졌는지 확인 후 데이터 전송 진행

4. 애플리케이션 계층에서 받은 데이터를 작게 쪼개 세그먼트로 나누고 각각의 세그먼트에 TCP 헤더 추가 후 인터넷(네트워크) 계층으로 전달

5. 애플리케이션 계층으로부터 받은 데이터를 TCP 또는 UDP 프로토콜 사용해 처리

6. 인터넷(네트워크) 계층해당 패킷을 목적지까지 전송하기 위해 라우팅 수행

7. 전송 계층으로부터 받은 세그먼트에 IP 헤더 추가해 패킷 생성

8. 데이터 링크 계층물리 계층을 통해 네트워크 매체로 프레임 전달

9. 네트워크 계층으로부터 받은 패킷을 데이터 링크 계층의 헤더와 트레일러 추가해 프레임 생성


패킷이란?

IP(Internet Protocol)는 인터넷에서 데이터를 주고받을 때 사용하는 통신 규약

  • 패킷을 정해진 목적지까지 운반하는 것이 목표
  • ⇒ 패킷의 최대 크기는 약 65KB
  • 더보기
    ❓ 왜 데이터를 세그먼트로 작게 쪼개어 패킷을 생성할까?
    무거운 데이터를 그대로 보내는 도중 회선에 문제가 발생했을 때, 다시 전송하기 위해 많은 자원을 낭비할 수 있게 때문에

    패킷 단위로 보내면 문제가 발생한 패킷만 다시 보내면 됨! 
    패킷을 이용해 정보를 교환하는 방식 패킷 교환 방식이다.
  • 패킷 교환 방식 특징
    1. 문제가 발생한 패킷만 다시 전송하여 자원 낭비 최소화
    2. 패킷별로 최적의 경로 선택해 이동또한, 특정 경로에 문제가 생겨도 다른 경로로 이동하는 패킷은 안정적으로 전송 가능
    3. 각각의 패킷들은 자신에게 주어진 모든 경로 중 혼잡도, 연결 상태 등 파악해 최적의 경로 찾아가기 때문에 다양한 회선 효율적으로 이용 가능

IP의 주된 특징인 비신뢰성과 비연결성

IP의 주된 역할은 패킷을 정해진 목적지까지 전달하는 일이다.

⇒ 외부에서 패킷이 들어오면 내 IP 주소와 맞는지 비교하고, 일치하지 않으면 다른 호스트로 전달

  • IP는 패킷의 손실이나 중복과 같은 상태 이상 확인하지 않음!
  • 신뢰성: 패킷의 상태 보장
  • 연결성: 상대방이 잘 받았는지 확인

즉, IP는 패킷의 전달만 책임질 뿐, 잘 전달되었는지는 확인하지 않음! 이건 TCP 담당


IP 주소

IP 주소는 전 세계에 있는 수억 개의 컴퓨터를 구분하고 서로 헷갈리지 않게 통신할 수 있게 해주는 주소

ex) 택배를 보낼 때 받는 사람의 상세 주소가 있어야 함. 각각의 상세주소는 고유함. 즉, IP 주소 = 상세 주소

내 IP 주소 확인하기

  1. 구글에 what is my ip 검색하여 현재 사용 중인 컴퓨터의 IP 주소 확인 가능
  2. 커맨드 창 열어 윈도우 OSipconfig, MAC 혹은 리눅스 OSifconfig 명령어로 확인
  3. 한국인터넷진흥원에서 제공하는 인터넷 주소 정보 검색 서비스를 통해 누가 어떤 IP를 사용하고 있는지 확인 가능
  4. https://mylocation.co.kr/ 에서 위치 기반으로 IP 주소 확인

IPv4 주소 구조

  • 192.168.0.1 처럼 IPv4 주소는 을 기준으로 4부분으로 나뉘며, 각 자리는 0부터 255까지 숫자로 구성되어 있음
  • 원래 IP 주소는 1과 0으로 이루어진 2진수이지만, 사용자가 편한 10진수로 바꿈
  • IPv4 주소는 32비트 길이를 가짐각 옥텟은 00000000부터 11111111까지 표현 가능 ⇒ 즉, 10진수로 0부터 255까지 표현 가능
  • 옥텟(octet): 8비트씩 묶은 것

네트워크 주소와 호스트 주소

IP는 크게 네트워크 부분호스트 부분으로 나뉨

이때, 네트워크는 데이터를 통신하는 과정에서 같은 공유기를 사용하는 범위이고, 호스트이 네트워크에 연결된 각각의 장치를 뜻함

ex) 택배를 보낼 때, 받는 사람의 주소가 서울시 구로구 AA동 BB아파트 C동 101호 일때,

만약, IP 주소가 192.168.123.132일 때 192.168.132까지가 네트워크 부분이면, 나머지 .132는 호스트 부분

  • 호스트 부분에는 0부터 255까지 공간 존재

❗️하나의 네트워크에서 사용할 수 있는 IP 주소 중 맨 첫 번째 주소인 0과 맨 마지막 주소인 255는 호스트 주소로 사용할 수 없음

즉, 첫 번째 IP 주소인 192.168.123.0과 마지막 IP 주소인 192.168.123.255는 사용 불가

이유: 사회적으로 첫 번째는 네트워크 그 자체의 주소이고, 마지막은 브로드캐스트를 위한 주소이기 때문

  • 네트워크 주소의 경우 192.168.123이 네트워크 부분이고, IPv4 주소는 4개의 옥텟으로 되어 있다는 규칙이 있으므로 호스트 부분에 비어있는 0을 채움
  • 따라서, 192.168.123.0이라는 주소가 네트워크 자체 주소가 됨
  • 브로드캐스트 주소특정 네트워크 주소에 속한 모든 호스트에게 패킷을 전달해야 할 때 사용하는 주소
  • 네트워크 내 맨 마지막 IP주소를 브로드캐스트 주소로 사용하기로 약속되어 있음

IPv4 주소 체계, 클래스

IP 주소네트워크 부분과 호스트 부분을 구분하는 경계점은 고정되어 있지 않음

즉, 192.168.123.132 IP 주소에서 192까지 네트워크 부분일 수 있고, 192.168까지 네트워크 부분일 수 있음

더보기

❓ 왜 네트워크 부분과 호스트 부분의 구분점을 고정하지 않을까?

IPv4에서 만들 수 있는 IP 주소 개수가 한정적이므로 아껴서 사용해야 한다. IP 주소당 호스트 주소의 개수를 고정하게 되면 호스트가 많은 조직은 IP 주소가 부족하고, 호스트가 적은 경우 IP 주소를 사용하지 않아 낭비되는 호스트 주소가 생김

클래스: 하나의 IP 주소에서 네트워크 부분호스트 부분나누는 방법이자 약속

종류: A, B, C, D, E (이때, D와 E는 특수용)

  • A 클래스첫 번째 옥텟만 네트워크 영역 나타내고, 나머지 부분은 호스트 영역
    • 첫 번째 옥텟이 0~127 범위이면 A 클래스 ⇒ 00000000 ~ 01111111
  • 즉, 하나의 네트워크가 가질 수 있는 호스트의 수가 약 1600만개로 세 클래스 중 가장 많음
  • B 클래스두 번째 옥텟까지 네트워크 영역 나타냄
    • 첫 번째 옥텟이 128~191이면 B 클래스 ⇒ 10000000 ~ 10111111
  • C 클래스세 번째 옥텟까지 네트워크 영역 나타냄
    • 첫 번째 옥텟이 192~223이면 C 클래스 ⇒ 11000000 ~ 11011111

ex) 130.101.12.124 IP 주소가 있을 때 첫 번재 옥텟이 130이므로 B 클래스에 해당

즉, 130.101이 네트워크 주소, 12.124가 호스트 주소

클래스의 한계

클래스의 종류가 실질적으로 3개만 있기 때문에 클래스 별로 할당할 수 있는 호스트의 개수 차이가 컸음

대부분의 사이트가 클래스 C에 들어가기에는 크다 보니 B 클래스를 많이 할당받아서 B 클래스가 급속도로 소진됨

IP 고갈 문제

전 세계의 인터넷 주소 할당을 맡은 기구인 IANA는 2011년에 공식적으로 더 이상 할당할 수 있는 IP 주소가 없음을 발표함

우리나라는 미리 할당받은 IPv4의 여분이 남아 비교적 상황이 여유롭지만, 북미나 유럽의 경우 ARIN, RIPE NCC 기관에서 차례로 IPv4 할당 중지 선언하며 대기 목록에 이름 올리거나 반환된 IP 주소 기다리는 사태가 생겨남

더보기

IPv4가 왜 부족한가?

IPv4에서 주소 체계에서 사용할 수 있는 IP 주소는 약 43억 개임 IP 방식이 처음 나온 80년대에는 PC는 대학교나 연구소 등 소수의 사람만 사용했지만, 점점 가정 내 PC가 보급되고 스마트폰, IoT 보급이 가속화되면서 부족 사태가 발생함

  • 아직 우리가 IPv4를 잘 사용하고 있는 이유는 예전부터 IP 주소 부족과 낭비 문제를 해결하기 위해 다양한 대책을 마련해 적용하고 있기 때문! ⇒ DHCP, NAT, IPv6

CIDR와 서브넷 마스크

클래스 기반 IP 할당 방식은 낭비되는 주소가 많다는 문제 존재

ex) B 클래스 할당받고 나서 1000개의 호스트만 사용하면 약 15000개 호스트 주소는 낭비됨

이러한 IP 주소 낭비를 해결하기 위해 1993년 클래스를 대체하는 새로운 할당 방법인 CIDR가 등장

CIDR(Classless Inter-Domain Routing, 사이더)는 클래스 없는 도메인 간 라우팅 기법으로, 클래스 없이도 IP 주소를 할당할 수 있는 새로운 방식

CIDR는 네트워크 부분과 호스트 부분의 구분점을 2진수의 한 자릿수, 즉 1비트 단위까지 가능하게 하여 호스트 주소를 더 유연하게 할당 가능

[서브넷 마스크로 CIDR 방식의 네트워크 주소 찾기]

서브넷 마스크(subnet mask)네트워크와 호스트 부분을 구분해주는 역할

  • IPv4 주소와 같이 32비트로 표현
  • 네트워크 부분은 1로 연속적으로 배치해야 함
  • 서브넷 마스크와 IP 주소를 2진수로 바꾸고 나란히 놓았을 때 서브넷 마스크의 1이 연속한 자릿수를 IP의 네트워크 부분, 나머지 0이 있는 자릿수를 호스트 부분으로 구분

[CIDR 표기법]

CIDRIP 주소와 서브넷 마스크를 함께 적는 표기법 사용

  • 서브넷 마스크에서 1의 개수를 IP 주소 뒤에 빗금 붙여 작성
  • IP 주소 / 서브넷 마스크 1 개수

DHCP

우리가 컴퓨터로 IP 주소를 확인할 때 일정 시간이 지난 후 확인하면 IP 주소가 바뀌어 있다. 즉, IP 주소는 상황에 따라 계속 바뀐다.

인터넷 통신이 필요할 때 IP 주소를 받았다가, 더 이상 사용하지 않거나 대여 기간이 만료되면 다시 IP 주소를 반납

  • 유동 IP(dynamic IP): IP가 고정되어 있지 않고 상황에 따라 바뀌는 IP
  • 고정 IP(static IP): 고정적으로 같은 IP

우리가 일상에서 사용하는 IP 주소는 ISP에서 제공하는 유동 IP임. 고정 IP를 받으려면 통신사의 ISP에 별도로 신청해야 함

DHCP(Dynamic Host Configuration Protocol)IP가 필요한 컴퓨터에 자동으로 IP 주소를 할당해서 사용하게 해주고, 사용하지 않으면 IP 주소를 반환받아 다른 컴퓨터가 사용할 수 있게 해주는 프로토콜

즉, 동적으로 IP 주소 부여하고 관리하는 역할

  • DHCP는 공유기처럼 IP 주소 관리하는 기기에 자동으로 추가되어 있음

[DHCP 서버의 IP 주소 할당 방법]

  1. IP 주소에 대한 요청이 들어오면 DCHP 서버는 현재 할당 가능한 IP 주소 탐색 후 빌려줌
  2. 이때, IP 주소를 빌려주는 임대 기간 존재(보통 8일이며 유동적으로 임대기간 설정 가능)
  3. 임대 기간 끝나기 전에 IP 주소를 계속 사용하고 싶은 경우 중간에 갱신 요청 가능
  4. 임대 기간이 끝나거나 IP 주소 더 이상 사용하지 않으면 컴퓨터는 DHCP 서버에 IP 주소 반환

DHCP를 통해 유동적으로 IP 주소 할당 가능하여 더 효율적으로 IP 주소 사용 가능해짐

사설 IP와 NAT

모든 컴퓨터마다 IP 주소를 하나씩 가지면 IP 주소가 금방 소진될 위험이 존재하므로, 특정 네트워크별로 고유한 IP 주소는 하나씩 가진채, 그 네트워크 안에 있는 호스트들은 따로 가상 IP 주소 할당해 구분

공인 IP(public IP): 인터넷상에서 유일한 주소이자 ISP에서 공식으로 할당하는 주소

사설 IP(private 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)네트워크 주소를 변환하는 기술로, 공유기에 자동 탑재되어 있음

NAT는 IP주소를 다른 IP 주소로 변환하는 기술이기 때문에 공인 IP 주소를 사설 IP, 사설 IP에서 다른 사설 IP로 변환

[NAT으로 사설 IP를 공인 IP로 변환하는 과정]

  1. 사용자(192.168.0.1)가 특정 서버로 요청을 보냄
  2. 해당 요청은 가장 먼저 공유기에 도착
  3. 공유기는 NAT을 이용해 사설 IP 주소였던 요청의 수신지 주소를 공인 IP 주소로 변경
  4. 이때, NAT 테이블에 어떤 사설 IP를 어떤 공인 IP로 바꿨는지 기록해두어 특정 사용자 구분
  5. NAT은 NAT 테이블 기록 후 특정 서버에 요청 전달
  6. 특정 서버는 요청 처리한 후 NAT이 보낸 공인 IP로 데이터 전송
  7. NAT은 도착한 데이터 확인 후 NAT 테이블에서 데이터의 도착지인 공인 IP와 일치하는 사설 IP로 데이터 전달

⇒ NAT을 통해 꼭 필요한 곳에서만 공인 IP 사용하고, 그렇지 않으면 사설 IP 사용하여 효율적으로 IP 할당가능

또한, 외부에서 내부 네트워크 주소 체계 알 수 없으므로 보안 측면에서도 많이 사용됨

IPv6

IPv6는 1995년에 등장한 차세대 IP 주소 체계로, 기존 IP 체계인 IPv4 고갈 사태 해결하기 위한 대안

  • 128비트로 더 많은 IP 주소 할당 가능
  • 주소개수가 $2^{128}$ (= 약 (43억)^4 개)
  • 16진수 사용
  • 2옥텟 단위마다 콜론으로 구분
  • NAT 지원 안함
  • 하지만, IPv6는 IPv4와 다른 체계이기 때문에 IPv6를 지원하기 위해서는 새로 네트워크를 구축해야 함
  • 대부분의 기업들은 새로운 네트워크 구축에 비용 부담을 느낌