[TCP/IP] 2. TCP/IP의 계층

이정진·2021년 7월 13일
0

Study

목록 보기
8/13

계층 구조

TCP/IP 프로토콜
송신자 : 응용 -> 전송 -> 네트워크 -> 데이터 링크 -> 물리
수신자 : 물리 -> 데이터 링크 -> 네트워크 -> 전송 -> 응용

인캡슐레이션 : 응용 -> 물리
디캡슐레이션 : 물리 -> 응용

데이터 전송 단위 정리 (UDP, 송신)

1) 응용 계층 : UDP 기반 페이로드 생성 뒤 사용자의 실제 정보 저장 / 전송 단위 : 메시지
2) 전송 계층 : 첫 번째 헤더가 결합, 주요 정보는 포트 번호 / 전송 단위 : 데이터 그램
3) 네트워크 계층 : 두 번째 헤더가 결합, 주요 정보는 IP 주소 / 전송 단위 : 패킷
4) 데이터 링크 계층 : 세 번째 헤더가 결합, 주요 정보는 맥 주소 / 전송 단위 : 프레임
5) 물리 계층 : / 전송 단위 : 비트

응용 계층

응용 계층 : 전송할 데이터인 페이로드를 생성해주는 계층 (사용자의 실제 정보를 저장하는 페이로드 생성)

운영체제에서는 응용 계층에 속하는 프로토콜을 고유한 포트 번호로 구분한다

포트 번호의 구분
0 ~ 1023 : 잘 알려진 포트 번호 / 주로 서버 측 사용
1024 ~ 49151 : 등록 포트 번호 / 주로 클라이언트 측 사용
49152 ~ 65535 : 사설, 동적 포트 번호 / 주로 클라이언트 측 사용

전송 계층

UDP 방식

페이로드 앞에 출발지 포트 번호와 목적지 포트 번호가 담긴 헤더를 붙임

UDP 헤더 (8바이트 크기 고정)
출발지 포트 번호 / 목적지 포트 번호 항목 : 16비트
길이 항목 : UDP 페이로드와 UDP 헤더를 더한 데이터그램의 크기 정보 담음 / 16비트 크기
오류 검사 : 기본적으로 비활성화 상태로 16비트 크기

TCP 방식

TCP 페이로드를 대상으로 단편화 수행 즉, 1개의 페이로드에서 여러 개의 세그먼트를 생성하며, 각 세그먼트는 다음 계층인 네트워크 계층으로 넘어가 각각의 패킷을 생성한다.

TCP 헤더 (크기는 가변적이고, 일반적으로는 20바이트이지만, 경우에 따라 21바이트 이상 사용이 가능함)
출발지 포트, 목적지 포트 : 16비트
일련번호, 확인 번호 : 전송 전 3단계 연결 설정과 전송 후 3단계 연결 종료 등을 수행할 때의 송신자와 수신자 사이에 세그먼트의 연속성을 보장하기 위해 사용, 수신 측에서 단편화한 세그먼트 단위를 재조립하는 과정에서도 사용 / 각 4바이트 크기

일련번호에 대한 응답으로 확인번호가 할당되며, 확인 번호에 맞춰 다음 일련번호 전송이 진행되게 된다.

오프셋(offset) : 헤더의 길이를 담음 (헤더의 길이가 가변적이기 때문) / 4비트 크기
예약 항목 : 4비트 크기
TCP 플래그 : TCP 방식이 수행하는 일련의 제어 정보를 담음 / 8비트 크기

플래그 종류

  • CWR(Congestion Window Reduced) : 혼잡 윈도우 크기 감소 신호
  • ECN(Explicit Congestion Notification) : 혼잡 발생 신호
  • UGR(Urgent) :
  • Ack(Acknowledgement) : 확인 응답 신호
  • PSH(Push) : TCP 페이로드를 포함한다는 신호
  • RST(Reset) : 상대방과 연결을 강제로 종료하기 위한 신호
  • SYN(Synchronize) : 상대방과 동기화를 확립하기 위한 개시 신호
  • FIN(Finish) : 상대방과 동기화를 해제하기 위한 종료 신호

윈도우 : 흐름 제어 기능과 관련되어 플래그와 같이 사용된다. / 16비트 크기

혼잡 윈도우 : 송신자는 수신자의 확인 응답에 따라 전송할 정보의 양을 조절
슬라이딩 윈도우 : 송신자가 전송할 수 있는 동적인 정보의 양

플래그와 윈도우는 송신자와 수신자 간의 데이터 전송과정에서 혼잡, 부하 발생 등으로 인한 데이터 정상 수신 지연 등의 상황에 맞추어 처리하기 위하여 사용되는 항목이다.

오류 검사 : 16비트 크기
긴급 포인터 : 플래그에 URC가 있으면, 0에서 1로 설정이 바뀌며 동작하는 것으로 작업을 긴급하게 중지하기 위하여 사용 / 16비트 크기

네트워크 계층

네트워크 계층에서는 각 세그먼트 앞에 IP주소를 주요한 정보로 하는 헤더를 추가하면서 패킷을 생성한다.

IP 헤더

(크기 가변적 / 일반적으로 20바이트이지만, 경우에 따라 그 이상 사용 가능)

버전 : IPv4일 경우 4이며, IPv6일 경우 6 / 4비트
헤더 길이 : IP헤더의 크기를 담는 항목 / 4비트
서비스 종류(Tos) : Type of Service, 해당 패킷의 전송 우선순위를 저장한다. 서비스 종류 지정시, 회선이 복잡할 때에도 해당 패킷을 우선 전송할 수 있다. / 8비트
전체 길이 : IP 헤더를 포함한 패킷 전체의 길이 정보를 담는다. / 16비트
구분자(ID) : 해당 패킷이 분할 패킷이라면, 해당 항목에서 ID를 부여하여 분할된 패킷들이 추후 재조립해야함을 의미한다. / 16비트
IP 플래그 : IP 플래그는 제어 신호를 설정하는 TCP 플래그와 달리, 패킷의 분할 유무를 표시하는 역할을 한다. D비트와 M비트로 구성되어 있으며, D비트 플래그는 분할이 아닐 때 1의 값을 가진다. M비트 플래그는 분할이 아닐 때 NULL을 가지며, 분할일 경우 남은 분할 패킷이 있으면 1 아니면 0의 값을 가진다. / 3비트
프래그먼트 오프셋 : 분할이 있을 경우, 분할의 시작 위치를 의미하는 값을 담는다. / 13비트

ID · IP 플래그 · 프래그먼트 오프셋은 MTU에 따른 패킷 분할 정보를 담는다.
Q) 최대 패킷 크기(MTU)가 1,500 바이트일 때, 5,900 바이트의 패킷이 발생한다면?
A) 5,900을 1,500에 맞추어 분할하기 위하여 100바이트의 쓰레기 값을 채운다.

MTU : 최대 전송 단위로 각 프로토콜에서 정한 패킷 크기의 최대 범위를 의미한다.
패딩(Padding) : 패킷 분할 과정에서 MTU에 맞추어 분할하기 위하여 쓰레기 값을 채우는 행위

생존 시간 (TTL) : Time to Live, 해당 패킷이 통과할 수 있는 라우터의 개수 정보를 담는 항목으로, 라우팅 루프가 일어난 구간에서 패킷을 폐기하는 용도로 사용한다. / 8비트
프로토콜 : 상위 계층에 속한 프로토콜의 번호를 저장한다. 17일 경우 UDP 방식의 데이터그램, 6이라면 TCP 방식의 세그먼트로 간주한다. / 8비트
헤더 오류 검사 : 일반적으로 비활성 상태이다. / 16비트
출발지 주소 및 목적지 주소 : 출발지 IP주소와 목적지 IP주소를 저장한다. / 각 32비트

IP주소 관리
IP주소는 네트워크 ID와 호스트 ID로 구분된다. 그 중 호스트 ID에서 모든 비트가 0인 경우, 네트워크 IP주소이며, 모든 비트가 1인 경우는 브로드캐스트 IP주소이다. 해당 네트워크 IP주소와 브로드캐스트 IP주소는 운영체제 내부에서 사용한다.

IP주소의 고갈을 완화하기 위하여 LAN전용 주소인 사설 IP주소가 등장한다.
공인 IP주소 : 전체 IP 중 사설 IP주소를 제외한 나머지 IP주소

사설 IP주소 구분

  • A 클래스 : 10.0.0.0 255.0.0.0 ~ 10.255.255.255 255.0.0.0
  • B 클래스 : 172.16.0.0 255.255.0.0 ~ 172.31.255.255 255.255.0.0
  • C 클래스 : 192.168.0.0 255.255.255.0 ~ 192.168.255.255 255.255.255.0

사설 IP주소로 실제 인터넷에 접속하기 위하여 필요한 기법 : NAT 기법
NAT(Network Address Translation) : 출발지 사설 IP주소를 공인 IP주소로 바꾸는 기법, 일반적으로 무선 공유기가 NAT 기능을 수행한다.

PAT(Port Address Translation) : NAT 기법에 포트 번호 주소를 연동하여 사용하는 기법

ICMP 프로토콜

ICMP : 화면 출력 메세지에 기반하여 오류 통보 기능과 질의·응답 기능 등을 수행하기 위한 프로토콜

ICMP 질의·응답 수행 방법
1) 사용자가 목적지 호스트로 ICMP 질의 요청
2) ICMP 패킷 구성되어 질의 수행

ICMP 프로토콜 사용 명령어

  • ping 명령어 : 출발지와 목적지 사이의 통신 여부를 점검하기 위한 용도
  • tracert 명령어 : 출발지와 목적지 사이의 라우팅 과정을 확인하기 위한 용도

    tracert는 ping명령어의 TTL 속성을 이용하여 구현하며, 일반적으로 윈도우 계열에서 ICMP 방식으로 tracert가 진행된다. 라우팅은 동적으로 작동하기 때문에 상황에 따라 이전과 다른 경로가 나올 수 있다.

데이터 링크 계층

데이터링크 계층의 프로토콜은 LAN/WAN 영역에서 사용하는 프로토콜에 해당한다. LAN 영역에서 사용하는 맥 주소와 네트워크 계층에서 사용하는 IP주소의 연결을 위해 설계되었다.

LAN 영역 (스위칭 통신 구현) : 사실상 표준은 이더넷 방식
WAN 영역 (라우팅 통신 구현) : 사실상 표준 프로토콜 미존재하여 상대방 라우터와 연동 시 프로토콜 설정에 유의하여야 한다.

ARP(Address Resolution Protocol) : IP주소를 이용해 상대방의 MAC주소를 알아오는 프로토콜
RARP(Reverse Address Resolution Protocol) : MAC주소에 해당하는 IP주소를 알아오는 프로토콜

ARP 프로토콜

ARP헤더를 이용한 ARP 요청과 응답 과정

ARP헤더 : 네트워크 계층에서 생성되며, 주요 정보로 IP, MAC주소를 담는다. / 28바이트 크기

ARP 헤더 구조
하드웨어 타입 : 16비트 크기
프로토콜 타입 : 16비트 크기
맥 주소 : 8비트 크기
IP 주소 : 8비트 크기
OP code : 1일 경우 브로드캐스트 방식의 ARP 요청, 2일 경우 유니캐스트 방식의 ARP 응답이다. / 16비트 크기
출발지 맥 주소, 출발지 IP주소, 목적지 맥 주소, 목적지 IP주소 : IP주소는 32비트 크기 / 맥 주소는 48바이트 크기

특징 : ARP 프로토콜에는 페이로드 영역이 없다.

1) 출발지 IP주소의 네트워크 ID와 목적지 IP주소의 네트워크 ID 비교
2) 네트워크 ID가 동일할 경우, 운영체제는 ARP 캐시 테이블에 맥 존재 여부 검색
3) 캐시 테이블에 맥이 존재하지 않을 경우, 맥 주소를 구하기 위하여 ARP 헤더 생성 (해당 ARP 헤더의 목적지 맥 주소는 00:00:00:00:00:00과 같이 제대로 채워져 있지 않다.)
4) opcode(연산 코드)를 1로 설정하여 ARP 요청이라는 의미를 담아, 프레임 헤더를 붙여 브로드캐스트 방식으로 전송한다.
5) 목적지 IP가 본인의 IP주소라면, 호스트는 본인의 맥 주소를 담은 후 출발지 호스트를 향해 opcode를 2로 설정하여 ARP 응답이라는 의미를 담아, 유니캐스트 방식으로 전송한다.
6) 출발지 호스트는 ARP 응답 헤더에서 맥 주소를 추출하여 ARP 캐시 테이블에 등록한다.
7) ICMP 패킷을 유니캐스트 방식으로 목적지 호스트로 전송 (이유 : TTL 속성을 이용하여 출발지로부터 목적지까지의 경유 경로 확인을 위하여)

이후, 일정 시간 동안 맥 주소를 참조하는 일이 없다면 에이징이 발생한다.
에이징 : 일정 시간 동안 해당 맥 주소를 참조하는 일이 업다면 해당 캐시 테이블에서 해당 맥 주소를 삭제하는 행위

물리 계층

기계적·전기적·기능적·절차적 기능들을 정의하는 계층이다.

허브 : 물리 계층에서 비트 단위를 처리하는 장치로 이론상 허브, 스위치, 라우터 3대의 장비 중 속도가 가장 빠르다.

허브는 비트 단위로 들어오는 신호를 1번 포트에서 수신한 뒤 1번 포트를 제외한 모든 포트로 비트 단위를 플러딩한다.
허브의 플러딩 동작에 의해 해당 비트 신호는 스위치 1번 포트로 흐르게 된다.
스위치는 비트 단위를 디캡슐레이션을 통해 프레임 단위로 변환한 후, 해당 헤더에 담긴 목적지 맥 주소가 자신의 스위칭 테이블에 있는지 여부를 검색한다.
목적지 맥 주소가 파악된 이후, 프레임을 다시 비트로 변환한 후, 해당(특정) 포트로만 비트 신호를 포워딩한다.
나머지 포트들에 대하여는 블로킹 상태 처리하여 모든 포트로 정보가 가지 않도록 한다.
(단, 스위칭 테이블에서 목적지 맥 주소를 검색할 수 없거나 ARP 요청 프레임일 경우 스위치는 플러딩 방식으로 동작하기도 한다.)
포워딩 방식으로 비트 신호가 라우터로 넘어가게 되면 라우터는 해당 비트를 프레임으로 변환하여 프레임 헤더의 목적지 맥 주소가 라우터 본인의 맥 주소와 일치하는지 확인한다.
일치할 경우, 프레임을 패킷으로 변환한 뒤, 해당 패킷 헤더에 담긴 목적지 IP주소가 자신의 라우팅 테이블에 있는지 확인한다.
목적지 IP주소를 라우팅 테이블에서 검색한 이후 해당 경유지 인터페이스로 포워딩하기 위해 패킷을 프레임으로 변환한 뒤 프레임 헤더에 PPP 정보를 삽입 (= PPP 헤더로 변경)
PPP정보를 담은 프레임은 비트로 최종 변환한 뒤 해당 경유지 인터페이스를 타고 목적지 라우터로 흘러간다.
(단, 라우팅 테이블에 목적지 네트워크 ID 대역이 없다면 라우터는 라우팅 불가로 판단해 해당 패킷을 폐기한다. 이는 못 찾을 경우 플러딩을 하는 스위치와 대비되는 차이점이다.)

플러딩(flooding) : 통신이 들어온 포트를 제외한 모든 포트로 패킷을 전달하는 행위
스위칭 테이블 : 물리적인 접속 부위의 포트와 맥 주소 2개의 항목으로 구성되어 있는 테이블
포워딩(forwarding) : 스위치가 목적지 맥 주소를 알고 있어 해당 맥 주소로만 프레임을 보내는 것을 의미힌다.
블로킹(blocking) : 스위치의 포트 상태를 나타내는 단어로, 해당 상태는 프레임 전송에 해당되지 않는다는 것을 의미한다.
라우팅 테이블 : 목적지 네트워크 ID와 경유지 인터페이스 2개의 항목으로 구성되어 있는 테이블

정리

계층 : 전송 단위 / 프로토콜 / 장비
응용 계층 : 메시지 / /
전송 계층 : 데이터그램·세그먼트 / UDP·TCP
네트워크 계층 : 패킷 / IP·ICMP / 라우터
데이터 링크 : LAN·WAN 프레임 / ARP / 스위치
물리 : 비트 / / 허브

LAN / WAN

네트워크 ID : 무수한 LAN 영역 중 특정 LAN 영역을 구분하기 위한 식별자로 라우터가 라우팅을 수행하기 위한 주소 체계

호스트 ID : 해당 LAN 영역에 속한 무수한 호스트 중 특정 호스트를 구분하기 위한 식별자
단, 호스트 사이의 통신은 맥 주소에 기반한 스위칭 통신이기에 호스트 ID와 MAC 주소 사이의 연결고리가 필요 -> ARP / RARP

LAN 영역의 특징

  • 맥 주소에 기반하여 내부 통신을 구현하는 구간
  • 동일한 네트워크 ID를 공유하는 구간
  • 단일한 ARP 영역을 생성하는 구간

WAN 영역의 특징

  • IP주소에 기반하여 내부 통신을 외부와 연결하는 구간
  • 상이한 네트워크 ID를 연결하는 구간
  • 상이한 ARP 영역을 연결하는 구간

비트 단위를 처리하는 물리 계층의 핵심 장비 : 회선, 허브

프레임 단위를 처리하는 데이터 링크 계층의 핵심 장비 : LAN카드와 스위치

LAN카드의 동작
1) 회선을 타고 들어온 비트 신호를 프레임 단위로 변경
2) 프레임 헤더의 목적지 맥 주소와 자신의 맥 주소 비교
3) 동일하다면 해당 프레임을 네트워크 계층으로 보냄 / 상이하다면 해당 데이터 폐기

스위치의 동작
스위치 테이블 : 물리적인 접속 부위를 의미하는 포트와 맥 주소 2개의 항목으로 구성
러닝 : 출발지 맥 주소를 스위칭 테이블에 반영하는 동작
플러딩 : 통신이 들어온 포트를 제외한 모든 포트로 패킷을 전달하는 행위
블로킹 : 스위치의 포트 상태를 나타내는 단어로, 해당 상태는 프레임 전송에 해당되지 않음을 의미
포워딩 : 스위치가 목적지 맥 주소를 알고 있어 해당 맥 주소로 프레임을 보내는 것
에이징 : 일정시간동안 통신이 발생하지 않으면 스위칭 테이블에서 해당 정보 삭제

VLAN(Virtual LAN) : 스위치 장비의 기능 중 하나로, 1개의 물리적인 LAN 영역을 여러 개의 논리적인 LAN 영역으로 분할하는 기법
이는 대규모의 ARP 영역 하나를 여러 개의 ARP 영역으로 분할하여 각 ARP 영역의 규모를 줄이는 기능을 한다. (1개의 LAN 영역을 대상으로 이루어진 1개의 ARP 영역을 여러 개의 ARP 영역으로 분할하는 기법으로 표현할 수 있다.)
VLAN의 장점은 결과적으로는 각 ARP 영역의 규모가 줄어들기 때문에 ARP 요청과 응답의 빈도가 줄어들어 부하가 발생하지 않는다.

호스트 범위 | 프리픽스 | 서브넷 마스크 | 네트워크 IP | 브로드 캐스트 IP
0 ~ 255 | /24 | 255.255.255.0 | 192.168.10.0 | 192.168.10.255

0 ~ 127 | /25 | 255.255.255.128 | 192.168.10.0 | 192.168.10.127
128 ~ 255 | /25 | 255.255.255.128 | 192.168.10.128 | 192.168.10.255

서브넷 : 1개의 IP주소 대역을 2의 배수 단위로 나누는 기법
프리픽스 : 1로 표기한 비트의 개수를 이용해 서브넷 상태를 제공하는 표기 (IPv6에서는 서브넷 마스크 표기법은 사용하지 않으며 프리픽스만 사용한다.)

물리계층에 기반한 WAN 영역 구분

  • 전용 회선 방식 : 출발지와 목적지 사이에서 회선을 언제나 연결 상태로 유지하느 방식
  • 회선 교환 방식 : 출발지와 목적지 사이에서 통신이 일어날 때만 회선을 연결하는 방식
  • 가상 회선 방식 : 전용 회선 방식처럼 출발지와 목적지 사이에서 회선을 언제나 연결 상태로 유지하는 방식 (논리적 회선을 이용하여)
  • 위의 내용은 "해킹 입문자를 위한 TCP/IP 이론과 보안 2/e" 책의 내용을 기반으로 하여 작성자 본인이 공부했던 내용을 정리한 글입니다.

0개의 댓글