241028 CS 스터디 정리

apple-mint·2024년 10월 28일

CS study

목록 보기
6/15

3. 네트워크 계층 - IP

1) IP의 목적과 특징

(1) 주소 지정

  • 네트워크 간의 통신 과정에서 호스트를 특정하는 것
  • IP 주소를 통해 주소 지정이 이루어짐
  • 송신지 IP 주소, 수신지 IP 주소 필드에 송수신지를 식별할 수 있는 IP 주소가 명시됨
  • IP 주소
    • 수신 주소와 발신 주소
    • 총 4바이트(32비트)의 크기로 구성되며 숫자당 8비트로 표현
    • 10진수 4개로 표기되며 점으로 구분된 하나의 10진수는 옥텟이라고 함
      ex. 192.168.0.1 중 192, 168, 0, 1이 하나하나가 옥텟
  • MAC 주소
    • 수신인과 발신인의 정보
  • 라우터
    • IP 주소를 기반으로 패킷의 최적 경로를 결정하여 목적지까지 전달하는 네트워크 장비
    • 서로 다른 네트워크에 속한 두 호스트가 네트워크 간 통신을 수행함
    • IP 패킷을 전달할 최적의 경로를 결정하고 해당 경로로 패킷을 내노는 과정을 라우팅이라고 함

(2) 단편화

  • 데이터를 MTU 이하의 여러 IP 패킷으로 올바르게 쪼개어 보내는 것
  • 일반적인 MTU 크기는 1500바이트로 프레임을 통해 주고받을 수 있는 최대 페이로드의 크기
  • 식별자
    • 특정 패킷이 어떤 데이터에서 쪼개진 패킷인지 식별하기 위해서 사용되는 필드
    • 같은 정보에서 쪼개진 패킷들은 같은 식별자를 공유하므로 이를 통해 단편화되어 전송되는 패킷을 구분할 수 있음
  • 플래그
    • 3비트로 구성된 필드
    • 첫 번째 비트는 항상 0, 나머지 2개의 비트는 DF, MF라고 함
    • DF: IP 단편화를 수행하지 말라는 의미
    • MF: 단편화된 패킷이 더 있다는 의미
  • 단편화 오프셋
    • 특정 패킷이 초기 데이터에서 얼마나 떨어져 있는지가 명시된 필드
    • 단편화되어 전송된 패킷을 목적지에서 재조합하기 위해 패킷의 올바른 순서를 나타내는 데에 사용

(3) 신뢰할 수 없는 통신

  • 패킷이 수신지까지 제대로 전송되었다고 보장하지 않는 프로토콜

(4) 비연결형 프로토콜

  • 패킷을 주고받기 전 사전 연결 과정을 거치지 않는다는 것을 의미

2) IP 주소의 구조

  • 하나의 IP 주소는 0~255 범위의 10진수 4개(32비트)로 표기됨
  • 네트워크 주소, 호스트 주소로 이루어짐
  • 네트워크 주소를 표현하는 크기와 호스트를 표현하는 크기가 유동적일 수 있음

(1) 네트워크 주소

  • 네트워크 ID, 네트워크 식별자 등으로 불림
  • 호스트가 속한 네트워크를 특정하기 위해 사용

(2) 호스트 주소

  • 호스트 ID, 호스트 식별자 등으로 불림
  • 네트워크에 속한 호스트를 특정하기 위해 사용됨

(3) 클래스풀 주소 체계

  • 네트워크의 크기에 따라 유형별로 IP 주소를 분류하는 기준
  • 네트워크 주소, 호스트 주소 크기가 유동적일 수 있다는 특성을 고려해 효율적으로 공간을 사용하기 위해 생겨난 개념
  • D, E는 멀티클래스를 위한 클래스로 실질적으로 A, B, C 클래스를 사용해 크기별로 IP 주소를 분류
  • A 클래스: 0.0.0.0 ~ 127.255.255.255
  • B 클래스: 128.0.0.0 ~ 191.255.255.255
  • C 클래스: 192.0.0.0 ~ 233.255.255.255

(4) 클래스리스 주소 체계

  • 클래스 없이 서브넷 마스크로 네트워크와 호스트를 구분하는 방식

  • 서브넷 마스크

    • IP 주소상에서 네트워크 주소는 1, 호스트 주소는 0으로 표기한 비트열
    • 서브넷을 구분하는 비트열
  • 서브네트워크
    • 서브넷이라고도 줄여 부르기도 함
    • IP 주소에서 네트워크 주소로 구분할 수 있는 네트워크의 부분집합
  • 서브네팅
    • 서브넷 마스크를 이용해 원하는 크기로 클래스를 더 잘게 쪼개어 사용하는 것

3) 공인 IP 주소와 사설 IP 주소

(1) 공인 IP 주소

  • 전 세계에서 고유한 IP 주소
  • 인터넷을 비롯한 네트워크 간 통신에서 사용됨
  • ISP나 공인 IP 주소 할당 기관을 통해 할당받을 수 있음

(2) 사설 IP 주소

  • 사설 네트워크에서 사용하기 위한 IP 주소
  • 외부 네트워크에 공개되지 않은 네트워크
  • 일반적으로 라우터를 통해 할당되므로 LAN 대부분은 사설 네트워크에 해당
  • IP 주소 공간 중 사설 IP 주소로 사용하도록 예약된 IP 주소 공간 존재

4) IP 주소의 할당

(1) 정적 할당

  • 직접 수작업으로 IP 주소를 부여하는 방식
  • 이를 통해 할당된 IP 주소를 정적 IP 주소라고 함
  • 정적 IP 주소 부여를 위해 IP 주소, 서브넷 마스크, 게이트웨이 주소, DNS 주소 필요
  • 게이트웨이

    • 일반적으로 서로 다른 네트워크를 연결하는 하드웨어적/소프트웨어적 수단
    • 호스트가 속한 네트워크의 외부로 나가기 위한 첫 기본 경로를 기본 게이트웨이라고 함
  • DNS 주소

    • 호스트가 IP 주소에 대응되는 기억할 수 있는 문자열인 도메인 네임을 토대로 IP 주소를 알아내기 위해 질의하는 서버의 주소

(2) 동적 할당

  • 프로토콜을 통해 자동으로 IP 주소를 부여하는 방식
  • 이를 통해 할당된 IP 주소를 동적 IP 주소라고 함
  • 흔히 DHCP 프로토콜을 많이 사용
  • 사용 가능한 기간이 정해져 있으며 할당받을 때마다 다른 주소를 받을 수 있음
  • 임대 기간이 끝나기 전 임대 갱신을 할 수 있으며 자동으로 2번 수행됨
  • 임대 갱신 실패 시 해당 IP 주소는 DHCP 서버로 반납됨

5) IP 전송 특징의 보완: ICMP

  • 신뢰할 수 없는 비연결 통신이라는 특징을 보완하기 위한 프로토콜
  • IP 패킷의 전송 과정에 대한 피드백 메시지, 즉 ICMP 메시지를 얻기 위해 사용하는 프로토콜
  • ICMP 메시지를 통해 패킷이 어떻게 상대방에게 전송되었는지 알려줄 수 있음
  • ICMP 메시지는 전송 과정에서 발생한 오류 보고, 네트워크에 대한 진단 정보로 유형을 나눌 수 있음

6) IP 주소와 MAC 주소의 대응: ARP

  • IP 주소는 알지만 MAC 주소는 모르는 상황이 발생할 때 사용되는 프로토콜
  • IP 주소, MAC 주소를 함께 활용하는 통신 과정에서 동일 네트워크 내에 있는 송수신 대상의 IP 주소를 통해 MAC 주소를 알아내는 프로토콜
  • ARP 요청 메시지와 ARP 응답 메시지를 통해 이루어짐
  • IP 주소, MAC 주소 쌍을 기억하기 위해 ARP 테이블 정보를 유지함

4. 전송 계층 - TCP와 UDP

1) TCP의 UDP의 목적과 특징

  • 포트를 통한 프로세스 식별을 목적으로 함
  • 포트 번호를 통해 호스트가 실행하는 프로세스를 식별할 수 있음

(1) 포트 번호

  • 16비트로 표현 가능하며 2162^{16}, 65536개가 존재
  • 잘 알려진 포트: 0 ~ 1023
  • 등록된 포트: 1024 ~ 49151
  • 동적 포트: 49152 ~ 65535

(2) TCP

  • 신뢰할 수 있는 프로토콜이자 연결형 프로토콜
  • 연결 수립 -> 패킷 주고 받을 때 신뢰성 보장을 위해 상태 관리, 흐름 제어, 오류 제어, 혼잡 제어 등의 각종 기능 제공 -> 종료
  • 패킷의 유실 없는 송수신을 위해 선택
  • UDP 헤더에 있는 것뿐만 아니라 순서 번호 필드, 확인 응답 번호 필드, 일부 제어 비트가 있음

(3) UDP

  • 신뢰할 수 없는 프로토콜이자 비연결 프로토콜
  • 연결 수립, 종료 단계 거치지 않고 각종 기능 제공하지 않음
  • 빠른 송수신을 위해 선택
  • UDP 헤더에 송신지 포트, 수신지 포트, 길이 피들, 체크섬 필드가 있음

2) TCP의 연결부터 종료까지

(1) 쓰리 웨이 핸드셰이크

  1. [A->B] SYN 세그먼트 전송
  • 호스트 A가 SYN 비트가 1로 설정된 SYN 세그먼트를 호스트 B에게 전송
  • 세그먼트 순서 번호에 호스트 A의 순서 번호가 포함되어 있음
  1. [A<-B] SYN+ACK 세그먼트 전송
  • 1에 대한 호스트 B의 응답
  • 호스트 B가 ACK 비트와 SYN 비트가 1로 설정된 SYN+ACK 세그먼트를 호스트 A에게 전송
  • 세그먼트 순서 번호에 호스트 B의 순서 번호, 1번에서 보낸 세그먼트에 대한 확인 응답 번호가 포함되어 있음
  1. [A->B] ACK 세그먼트 전송
  • 호스트 A가 ACK 비트가 1로 설정된 ACK 세그먼트를 호스트 B에게 전송
  • 세그먼트 순서 번호에 호스트 A의 순서 번호, 2번에서 보낸 세그먼트에 대한 확인 응답 번호가 포함되어 있음
  • 액티브 오픈
    • 1번과 같이 처음 연결을 시작하는 과정
    • 주로 클라이언트에 의해 수행
  • 패시브 오픈
    • 2번과 같이 연결 요청을 수신한 뒤 그에 대한 연결을 수립하는 과정
    • 주로 서버에 의해 수행

(2) 재전송을 통한 오류 제어

  • 송수신 과정에서 잘못 전송된 세그먼트가 있을 경우 이를 재전송해 오류를 제어
  • 중복된 ACK 세그먼트가 도착했을 때 또는 타임아웃이 발생했을 때 잘못 전송된 세그먼트가 있음을 인지함

(3) 흐름 제어

  • 수신 호스트가 수신 윈도우 필드를 통해 송신 호스트에게 한번에 받아 처리할 수 있을 만큼 전송하는 것
  • 송신 호스트가 수신 호스트의 처리 속도를 고려해 송수신 속도를 균일하게 맞추는 기능

(4) 혼잡 제어

  • 많은 트래픽으로 인해 패킷의 처리 속도가 느려지거나 유실될 수 있는 상황을 제어
  • 혼잡 없이 전송할 수 있을 정도의 양의 값인 혼잡 윈도우 값을 고려하며 혼잡 윈도우의 값을 넘지 않는 선에서 전송하며 제어
  • 혼잡 윈도우 크기를 연산하는 방법인 혼잡 제어 알고리즘 중 AIMD를 기본적으로 사용함

(5) TCP의 종료

  1. [A->B] FIN 세그먼트 전송
  • 호스트 A가 FIN 비트가 1로 설정된 FIN 세그먼트를 호스트 B에게 전송
  1. [A<-B] ACK 세그먼트 전송
  • 1에 대한 호스트 B의 응답
  • 호스트 B가 ACK 세그먼트를 호스트 A에게 전송
  1. [A<-B] FIN 세그먼트 전송
  • 호스트 B가 FIN 세그먼트를 호스트 B에게 전송
  1. [A->B] ACK 세그먼트 전송
  • 3에 대한 호스트 A의 응답
  • 호스트 A가 ACK 세그먼트를 호스트 B에게 전송
  • 액티브 클로즈: 먼저 연결을 종료하려는 호스트에 의해 수행되는 동작
  • 패시브 오픈: 연결 종료 요청을 받아들이는 호스트에 의해 수행되는 동작

3) TCP의 상태 관리

  • TCP는 현재 어떤 통신 과정에 있는지 나타내는 정보인 상태를 유지하고 관리함
  • 스테이트풀 프로토콜이라고도 함

(1) 연결이 수립되지 않을 때 주로 활용되는 상태

  • CLOSED
  • LISTEN

(2) 연결 수립 과정에서 주로 활용되는 상태

  • SYN-SENT
  • SYN-RECEIVED
  • ESTABLISHED

(3) 연결 종료 과정에서 주로 활용되는 상태

  • FIN-WAIT-1
  • CLOSE-WAIT
  • FIN-WAIT-2
  • LAST-ACK
  • TIME-WAIT

0개의 댓글