네트워크 기본 개념Cheatsheet 🦉 from 외워서 끝내는 네트워크 핵심이론

  • OSI 7 Layer : 의존적 관계가 성립하는 (Layered, 상위 계층이 하위 계층에 의존) 프로토콜을 계층적으로 나열한 것

Protocol suite, Protocol Stack

  • Protocol Suite, Protocol Stack : 여러 프로토콜의 집합

Network 성능 지표

  • throughput : 처리율 (bps, Mbps, Gbps 등), 실시간성을 띄며, 평균값을 보통 지표로 사용

  • bandwidth : 대역폭, 통신망이 전송할 수 있는 데이터의 양, 단위는 bps

  • packet loss : 패킷 손실률, 패킷이 전송 중 소멸되는 비율

OSI & Layer와 식별자

알기쉽게 Bottom-up으로 다룬다. 개인적으로 개발 네트워크 서적이 Top-down으로 설정되어있는데, 개발자입장에서는 편하지만, 그냥 네트워크를 처음 배우는 입장에서는 이해가 힘든 것 같다. 요즘 네트워크 서적이나 강의는 보통 그래서 Bottom-up식으로 앞부분은 교양처럼 듣고, 뒤에 힘을 주는 방식으로 되어 있는 것 같다.

Host

  • Host : Computer + Network
  • End-point : 네트워크의 이용 주체 (server, client 는 네트워크 이용 주체의 역할 구분, 구분하지 않으면 peer)
  • Switch : 네트워크 자체를 이루는 host (Infra)
    • Router : l3 스위치
    • IPS : 보안

Switch가 하는 일

네트워크를 고속도로로 비유하면, 고속도로망을 지나가다 교차로를 마주하고 경로를 선택하게 되는데 그 근거는 이정표이다.

  • 자동차를 패킷으로 비유
  • 경로 선택의 근거인 이정표가 IP주소이면 L3 스위칭(라우터, 라우팅 테이블), 다른 계층도 마찬가지
  • 스위칭에서 경로별 비용을 Matric에 비유

L2

  • NIC : Network Interface Card, H/W, MAC주소를 갖는다. (기본적으로는 신호를 프레임으로, 프레임을 신호로 변환)

    • 프레임을 검출해서 폐기하거나 전달하는 역할도 여기서
  • 다나와 : 남자들의 쇼핑몰 😏

  • Packet : 데이터 단위(사실 L2에서는 Frame을 씀 10kb 내외)

  • MAC : Ethernet 계층의 48bit 식별자

  • L2 Access switch : End-point와 직접 연결되는 스위치(MAC) 주소를 근거로 스위칭

    • 물리적인 단자 하나당 하나의 인터페이스
    • 그냥 포트라고도 함
    • Link-up, Link-down : 연결 상태 (와이어샤크 수업이 생각난다..)
  • L2 Distribution switch : L2 스위치를 위한 스위치(VLAN 기능을 제공)

  • 규모를 감잡기 위해서 l2스위치는 방하나, l2d 스위치는 층하나, 라우터는 건물 하나

  • Broadcast : Unicast와는 반대, Broadcast주소라는 매우 특별한 주소가 존재(111111111111111111)

    • 목적지 주소가 Broadcast 주소이면, 전체 네트워크 모두로 전송
    • Broadcast이 발생하면, 다른 네트워크가 통신을 못함
  • Ethernet 프레임 헤더 구조

    • Preamble : 7byte, 10101010, 10101010, 10101010, 10101011 : 전송 시작을 알리는 신호
    • SFD : 1byte, 10101011 : 프레임의 시작을 알리는 신호
    • Destination MAC Address : 6byte : 목적지 MAC 주소
    • Source MAC Address : 6byte : 출발지 MAC 주소
    • Type : 2byte, IP, ARP, RARP, etc (Ethernet Type)
    • Data : 46 ~ 1500byte : 실제 데이터
    • FCS : 4byte, CRC : 오류 검출을 위한 계산값, 틀리면 버림

L3

  • IP Address : l3 식별자, 32bit(8bit * 4) 즉 (0 ~ 255).(0 ~ 255).(0 ~ 255).(0 ~ 255)

    • . 으로 구분되며 앞의 세개의 숫자는 Network Id, 뒤의 하나의 숫자는 Host Id
  • Packet : L3 IP Packet

    • Header, Payload로 나뉘는데, 이건 상대적인 분류
    • 최대 크기는 MTU (Maximum Transmission Unit) : 특별한 이유가 없다면 1500bytes
  • Encapsulation, Decapsulation

  • 패킷의 생성, 전달, 소멸

  • 계층별 데이터 단위 정리 Frame : l1 ~ l2

Packet : IP에서(~ MTU)

Segment : TCP에서(~ MSS)

Stream : 소켓에서 (연속적으로 이루어져 있으며, 크기를 정확히 알 수 없음)

IPv4 Header 형식과 구성요소

  • Version : 버전
  • IHL : Header Length
  • Type of Service : 서비스의 종류
  • Total Length : 전체 길이
  • Identification : 패킷의 식별자
  • Flags : Fragmentation
  • Fragment Offset : Fragmentation
  • Time to Live : 패킷의 수명
  • Protocol : 상위 계층 프로토콜
  • Header Checksum : 헤더의 체크섬
  • Source Address : 출발지 주소
  • Destination Address : 목적지 주소

Subnet Mask : 네트워크 주소와 호스트 주소를 구분하는데 사용되는 32bit 값 (1111 1111. 1111 1111. 1111 1111. 0000 0000)

  • 기본적으로 원래는 클래스를 나눠서 호스트 주소와 네트워크 주소를 구분했었음
  • a클래스면 앞에 8bit, b클래스면 16bit, c클래스면 24bit 와 같이 사용했는데, 이제는 서브넷 마스크로 구분
  • 비트 and 연산을 통해 네트워크 주소와 호스트 주소를 구분

CIDR : Classless Inter-Domain Routing, 서브넷 마스크를 표기하는 방법

  • 192.168.0.10/24 와 같이 표기
  • 호스트 주소와 네트워크 주소를 가르는 1의 개수를 표기
  • 클래스 구분은 없지만 예를들어 a클래스면 /8, b클래스면 /16, c클래스면 /24
  • 즉 앞에 n개의 비트만 and 연산을 해서 네트워크 주소를 추출하겠다는 의미

Broadcast IP Address : 네트워크의 모든 호스트에게 데이터를 전송하는데 사용되는 특별한 주소

  • 네트워크 주소의 마지막 호스트 주소를 Broadcast 주소로 사용

Multicast IP Address : 특정 그룹에 속한 호스트에게 데이터를 전송하는데 사용되는 특별한 주소

Host 주소로 사용할 수 없는 주소

  • 0 : 서브넷 주소
  • 255 : Broadcast 주소
  • 1 : Default Gateway 주소(보통은)
  • 참고 : 127.0.0.1 (localhost, loopback 주소)

인터넷 사용 전에 해야 할 설정

  • IP 주소 설정
  • 서브넷 마스크 설정
  • Gateway IP 설정
  • DNS 설정

귀찮으니까 DHCP를 사용한다.

DHCP : Dynamic Host Configuration Protocol, 호스트에게 IP 주소를 동적으로 할당하는 프로토콜 (Broadcast로 요청하고, DHCP 서버가 응답, 즉 Broadcast domain에 묶여있어야함)

  • DHCP Discover (client to dhcp server) : 클라이언트가 DHCP 서버를 찾는 과정
  • DHCP Offer (dhcp server to client) : DHCP 서버가 클라이언트에게 IP 주소를 제안
  • DHCP Request (client to dhcp server) : 클라이언트가 IP 주소를 요청
  • DHCP Ack (dhcp server to client) : DHCP 서버가 IP 주소를 할당

ARP : Address Resolution Protocol, IP 주소를 MAC 주소로 변환하는 프로토콜

NAT : Network Address Translation, 사설 IP 주소를 공인 IP 주소로 변환하는 프로토콜

| 참고로 공유기는 라우터 + 스위치 + DHCP Server + NAT 기능을 가지고 있음

Ping과 RTT

  • ICMP : Internet Control Message Protocol, 네트워크 장비 간에 메시지를 주고받는 프로토콜
    • Echo Request : Ping
    • Echo Reply : Ping에 대한 응답
    • Time Exceeded : TTL이 0이 되어서 패킷이 소멸될 때
    • Destination Unreachable : 목적지에 도달할 수 없을 때

L4

TCP, UDP : 둘을 구분하는 가장 큰 차이는 Connection이다.

  • 문제는 연결이 Virtual이라는 것 (Virtual Circuit)
  • 연결은 결과적으로 순서 번호로 구현 (Sequence Number)
  • 연결은 상태 기반 (Stateful)

TCP : Transmission Control Protocol, 신뢰성 있는 데이터 전송을 보장하는 프로토콜

  • Client-Server 모델
  • 클라이언트가 소켓을 열면, OS가 TCP 포트를 부여함

3-way Handshake : TCP 연결 설정 과정

  • SYN : 클라이언트가 서버에게 연결을 요청

  • SYN-ACK : 서버가 클라이언트에게 응답

  • ACK : 클라이언트가 서버에게 응답

  • Handshake 과정에서 Sequence NumberAcknowledgement Number가 사용됨, 그리고 정책을 교환함 (MSS, Window Size 등)

4-way Handshake : TCP 연결 해제 과정

  • FIN : 클라이언트가 연결 종료 요청
  • ACK : 서버가 응답
  • FIN : 서버가 연결 종료 요청
  • ACK : 클라이언트가 응답

TCP Header 형식과 구성요소

  • Source Port : 출발지 포트
  • Destination Port : 목적지 포트
  • Sequence Number : 순서 번호
  • Acknowledgement Number : 확인 번호
  • Data Offset : 데이터 오프셋
  • Reserved : 예약 필드
  • Flags : 플래그 필드
  • Window Size : 윈도우 크기
  • Checksum : 체크섬
  • Urgent Pointer : 긴급 포인터
  • Options : 옵션 필드
  • Padding : 패딩 필드

UDP : User Datagram Protocol, 신뢰성 없는 데이터 전송을 보장하는 프로토콜

  • Connectionless : 연결 설정 과정이 없음

  • Stateless : 상태를 유지하지 않음

  • Best Effort : 최선을 다하지만, 데이터 손실이 발생할 수 있음

  • 혼잡제어, 버퍼 관리, 흐름제어가 없음

  • 클라이언트를 배려하지 않음

  • 그런데도 쓰는 이유

    1. IPTV의 경우, 실시간 스트리밍을 하는데, 사용자마다 네트워크 속도가 다르면 하향 평준화 밖에 답이 없음
    2. 게임서버의 경우 마찬가지로 TCP를 사용하면 하향 평준화가 발생함, UDP + 혼잡제어를 직접 구현해서 사용하는 것이 더 효율적

UDP Header 형식과 구성요소

  • Source Port : 출발지 포트
  • Destination Port : 목적지 포트
  • Length : 길이
  • Checksum : 체크섬

세 가지 네트워크 장치 구조

  • Inline, 대표 장치
    • Packet + Drop/Bypass + Filtering
  • Out-of-path
    • Packet + Read only, Sensor
  • Proxy
    • Socket stream + Filtering