- 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
예제)

※ netsh
- 마이크로소프트 유틸리티
- 로컬 or 원격 구성의 네트워크 설정 변경

- 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 : 빠른 재전송
'SK shieldus Rookies 9기 > 클라우드 기반 시스템 운영,구축 실무' 카테고리의 다른 글
시스템 운영/구축 실무 6일차 (22/10/31) (0) | 2022.10.31 |
---|---|
시스템 운영/구축 실무 5일차 (22/10/28) (0) | 2022.10.28 |
시스템 운영/구축 실무 4일차 (22/10/27) (0) | 2022.10.27 |
시스템 운영/구축 실무 3일차 (22/10/26) (0) | 2022.10.26 |
시스템 운영/구축 실무 1일차 (22/10/24) (1) | 2022.10.24 |