SK shieldus Rookies 9기/클라우드 기반 시스템 운영,구축 실무

시스템 운영/구축 실무 2일차 (22/10/25)

ksh_5 2022. 10. 25. 17:43
  • OSI 7계층

 

 

- ISO(국제 표준 기구)는 서로 다른 시스템 간의 통신을 허용하기 위해 OSI (Open System Interconnection) 모델 만듦

- OSI 참조모델은 network가 제공하는 여러 가지의 기능을 7개의 계층으로 나누어 식별

 

 

  • OSI Reference Model과 TCP/IP 비교

 

 

- TCP/IP 모델은 OSI 모델 간결한 버전

 

· OSI

- Transport (L4)
종단 간 통신 및 오류 없는 데이터 전달 (TCP, UDP)

 

- Application (L7)
노드 간 통신 담당, 사용자 인터페이스 사양 제어 (HTTP, HTTPS, SSH,  NTP 등)

 

· TCP/IP

- Network Access (L1)
하드웨어 주소 지정 찾고 데이터 물리적 전송 허용

 

- Internet (L2)
전체 네트워크에서 데이터의 논리적 전송 담당 프로토콜 (IP, ICMP, ARP)

 

 

  • 캡슐화/역캡슐화와 PDU

 

· 캡슐화

- 송신 측에서 요청 데이터 생성 

- 상위계층에서 하위계층으로 내려오며 생성된 데이터에 헤더 붙임 

- 제어정보 추가

 

· 역캡슐화

- 수신 측에서 헤더 제거

- 하위계층에서 상위계층으로 올라가며 헤더 제거

- 제어정보 제거

 

 

  • TCP/IP Protocol Stack

 

 

- ARP : IP 주소를 이용해 상대방의 MAC 주소를 알아오는 프로토콜

- RARP : MAC 주소에 해당하는 IP 주소를 알아오는 프로토콜

- ICMP :  오류 처리, IP 메시지 제어

- IGMP : 서브넷 간에 멀티캐스트 패킷의 목적지를 관리하기 위한 프로토콜 (LAN 구간에서 사용)

 

 

1) Ethernet Frame (DIX 2.0)

 

  • Ethernet Frame

 

 

- 데이터 링크 레이어 프로토콜 데이터 단위이며 기반이 되는 이더넷 물리 계층 전송

- Preamble : 이더넷 MAC 프레임의 첫 번째 필드로서 0과 1을 반복하는 7바이트를 포함하고, 수신 시스템에게 프레임이 도착하는 것을 알려줌

- Destination Address : 패킷을 수신하는 목적지의 물리(MAC) 주소

- Source Address : 패킷 송신자의 물리(MAC) 주소

- Type : 길이 또는 종류 정의

- Data : 상위 계층의 프로토콜로부터 캡슐화된 데이터 

- FCS : DA + SA + Length + Data의 영역을 계산하여 에러 판별

 

 

2) ARP

 

  • ARP Request Packet

 

 

- 송신자는 목적지 IP Address 지정해 패킷 송신

- IP 프로토콜이 ARP 프로토콜에게 ARP Request 메시지를 생성하도록 요청

- 메시지는 2계층으로 전달되고 Ethernet Frame으로 Encapsulation (캡슐화)

- 모든 호스트와 라우터는 프레임을 수신 후 자신의 ARP 프로토콜에게 전달

 

 

  • ARP Reply Packet

 

 

- 목적지 IP Address가 일치하는 시스템은 자신의 물리주소를 포함하고 있는 ARP Reply 메시지 전송

- 최초 송신 측은 IP Address에 대응하는 물리주소 획득

-  ARP 응답 시스템은 ARP request 시의 송신지 정보를 자신의 ARP 캐시 테이블에 등록 후 유니캐스트로 질의 시스템에 ARP reply 전송

 

 

  • IP Header

 

> 설명

더보기

❶ IP Header는 총 20Byte의 기본 길이와 옵션을 이용해 크기가 최대 60Byte로 구성 (20-65536 bytes)

❷ Version: IP 프로토콜의 버전 나타내는 4비트 정보

❸ IHL: Internet Header Length로 이 값에 5를 곱한 바이트 단위 크기가 IP 헤더의 크기

❹ ToS: Type of Service로 패킷의 처리 우선순위

❺ Total length: IP 헤더와 Payload 포함한 바이트 단위 길이

❻ Identification: 패킷 단편화 시 사용되는 식별자

❼ DF (Don’t Fragment) : 단편화 금지 플래그

❽ MF (More Fragment) : 이 패킷 이후 추가 단편이 있음을 알리는 플래그

❾ Fragment offset: 단편을 조립해 한 데이터로 만들 수 있도록 단편의 위치를 기술한 정보

❿ TTL: Time To Live 패킷이 한 Hop을 지날 때마다 감소되는 값. 0이 되면 패킷은 버려짐

⓫ Protocol: IP헤더 다음 헤더가 무엇인지 알려줌

⓬ Header checksum: 패킷에 대한 체크섬. 이 정보를 확인해 패킷의 손상 여부를 검출

⓭ Source address: 패킷을 전송한 시스템의 IP주소

⓮ Destination address: 패킷을 수신할 시스템의 IP주소

 

 

  • MTU (Maximum Transfer Unit)

 

- 네트워크 기기가 전송할 수 있는 최대 전송 단위

- 현재 대부분의 네트워크 환경이기 때문에 MTU는 1500바이트로 통용

 

 

 

- 해당 네트워크 프로토콜마다 하나의 데이터그램을 송신할 때 보낼 수 있는 최대 사이즈

 

* MTU(Maximum Transfer Unit) , MSS(Maximum Segmentation Size)

 

 

  • 단편화

 

 

- MTU가 큰 네트워크에서 MTU가 작은 네트워크로 데이터그램이 전송될 경우 데이터그램은 나누어서 전송

- 데이터그램의 재조립은 최종 목적지 호스트에 의해서만 수행

- 재조립으로 인해 발생하는 비효율성 때문에 전송 중 재조립 안됨

- 단편화 관련 필드 : Identification, Flag, Fragmentation offset

 

 

예제)

더보기
Fragmentation이 다시 일어나는 경우 두 번째 단편이 다시 800과 600으로 나누어지는 경우

 

 

※ netsh

더보기

- 마이크로소프트 유틸리티

- 로컬 or 원격 구성의 네트워크 설정 변경

 

c:\> netsh interface ipv4 show interfaces

 

 

  • TTL (Time To Live)

 

- 패킷 수명 제한하기 위해 데이터그램 통과하는 최대 홉(hop) 수 지정

- 패킷 전달 과정에서 라우터와 같은 전송장비 통과할 때마다 TTL 값 감소

- TTL이 0이 되면 라우터에서 폐기하여 불필요한 패킷이 네트워크에 방치되는 것 방지

- OS 종류와 버전에 따라 TTL 값 다름

 

 

 

  • Header Checksum

 

 

- 헤더의 오류를 검증하기 위해 사용

- 계산 방식은 version 필드 값부터 마지막 필드인 목적지 IP 필드 값까지 모두 더함

   → Version 필드 ~ 목적지 IP 필드 (Checksum 필드 제외)

 

 

  • ICMP (Internet Control Message Protocol)

 

 

- IP Protocol은 송신시스템과 수신시스템 사이의 패킷을 최적의 경로를 통해 전달하는 것이 주된 목적

- IP Protocol은 신뢰성이 없고 비연결형 Protocol

- IP Protocol은 에러 발생 원인이나 진단 기능 및 상황 정보를 지원하지 않음

  → ICMP Protocol Support (IP의 단점 보완)

 

❶ ICMP 메시지 종류

• 오류 보고 메시지 (Error Reporting Massage)

- IP 패킷 처리 도중 발생한 문제 보고

 

• 질의 메시지 (Query Massage)

- 다른 호스트로부터 특정 정보 획득

- 네트워크 문제 진단

 

❷ ICMP Code

 

 

 

  • TCP Header

 

 

> 설명

더보기

❶ TCP Header 크기는 기본이 20Byte며 옵션 포함한 경우 최대 60Byte로 구성

❷ Source/Destination : 양 쪽 호스트 내 종단 프로세스 식별

❸ Sequence number : 순서화되는 번호 의미 (신뢰성 및 흐름제어 기능)

❹ Acknowledgment : 확인, 응답 번호, 승인번호 의미

❺ Data offset : 헤더 길이(HLEN)

❻ Reserver : 평상시는 비활성화 상태 (비워져 있는 필드)

❼ Flag bits ( urg, ack, psh, rst, syn, fin) : tcp 회선 및 데이터 관리 제어 기능

  - urg (urgent) : 긴급 포인터의 필드가 유효하다는 것을 나타냄

  - ack (acknowledgement) : 수신 데이터의 일련번호 필드가 유효하다는 것. 보통 데이터가 올바르게 수신 측에 도착한 것 의미

  - psh (push) : flush 동작에 의해 송신된 데이터임을 나타냄

  - rst (reset) : 접속 강제로 종료하고 이상 종료시에 사용

  - syn (synchronization) : 송신 측과 수신 측에서 일련번호 서로 확인. 접속 동작을 나타냄

  - fin (finish) : 연결 끊기

❽ Window size : 흐름제어를 위해 사용

❾ Checksum : tcp segment data 송신 시도 중 발생될 비트 오류 검출

❿ Urgent pointer : tcp 세그먼트에 포함된 긴급 데이터의 마지막 바이트에 대한 일련번호

⓫ Option : 최대 40Byte까지 옵션 데이터 포함 가능

 

 

- 자신의 사양(cpu, 메모리)에 의해 window size가 결정

- 윈도우 사이즈 조절 이유 : 버퍼에 데이터 양이 아직 있어서

 

 

  • TCP 연결 관리

 

❶ Three Way Handshaking 과정 (서버/클라이언트 초기화 과정)

  - 클라이언트 연결 요구

  - 서버 측 응답 및 연결 요구

  - 서버 연결 요구에 대한 클라이언트 측 최종 응답

❷ TCP 데이터 전송 과정

❸ TCP 연결 종료 과정

 

 

  • TCP 연결 설정 (3-Way Handshaking)

 

 

- TCP/IP 프로토콜 이용해 통신하는 응용프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정

- AN (ACK Number) = SN (Sequence Number) + DL (Data Length)

 

 

❶ 정상적인 트래픽 전송 과정


❷ 비정상적인 트래픽 전송 과정

 

 

  • TCP 연결 종료 (4-way Handshake)

 

 

- 세션을 종료하기 위해 수행되는 절차

② CLOSE_WAIT : ACK 보내고 자신의 통신이 끝날 때까지 대기

⑤ LAST_ACK : 연결 종료할 준비되면, 연결 해지를 위한 준비가 되었음을 알리기 위해 클라이언트에 FIN 플래그 전송

⑥ TIME_WAIT (2MSL) : FIN 수신하더라도 일정 시간 동안 세션 남겨놓고 패킷 기다리는 과정을 거침 (뒤늦게 도착하는 패킷이 있을 시, 이 패킷은 Drop 되고 데이터는 유실)

 

※ Client에서 Server로 보낸 응답 메시지(ACK)가 소실되었을 때

더보기

❶ TIME_WAIT 상태가 없는 경우 : Server는 Client 쪽으로 FIN 메세지 계속해서 보내고 Client는 이미 CLOSED 상태에 들어가 응답할 수 없게 되고, Server에서는 소켓을 영원히 종료하지 못하게 됨

❷ TIME_WAIT 상태가 존재할 경우 : Server에서 종료 메시지(FIN) 재전송했을 때 살아있는 Client의 소켓이 응답 메시지(ACK)를 서버로 전송하게 되며 정상적으로 소켓의 종료가 가능해짐

 

 

▶ tcp_zerowindowdead/pcapng

 

 

- Keep-Alive : 3-way handshake 통해 연결된 세션을 없애지 않고 계속 사용하는 방식으로 연결 상태를 확인하여 능동적으로 세션 종료

 

 

▶ tcp_dupack.pcapng

 

 

- Dup Ack

  → 출발지에서 많은 양의 데이터 요청하여 목적지에 세그먼트 순서가 다르게 받아들인 경우 총 3회에 걸쳐 확인이 되지 않는 경우 재전송 진행 (Retransmission 발생)

 

※ Fast Retransmission : 빠른 재전송