<하루 3분 네트워크 교실> 요약

Roeniss Moon·2021년 5월 1일
3

독서

목록 보기
1/29

이 책을 네트워크 수업 전에 봤더라면.. 내 학점이 달랐을까?

선감상

  • 하루 3분으로는 모자라다. 그럼에도 불구하고 탑다운 어프로치에 비해 40만 배 쯤 EZ하다.
  • '미움받을 용기'체로 작성되었는데, 읽기 아주 편했다. 일본 글은 문화가 우리랑 너무 유사해서 이해가 참 쉽단 말이지.
  • 좋은 책이다.

OSI Reference Model

"데이터 통신의 단계와 순서"를 보여주는 설계도

  • 송신측 : 운반하고 싶은 유저의 Data에 헤더를 추가하며 캡슐화
  • 수신측 : 캡슐을 하나씩 벗겨가며 Data를 획득

프로토콜

데이터 내용, 헤더, 송수신 순서를 결정

프로토콜은 각 계층마다 존재하며, 각 계층의 프로토콜이 모여 Protocol Suite가 된다.

이 모델을 통해 일련의 OSI Standard Protocol Suite를 만들었지만, TCP/IP Protocol Suite가 오늘날의 De facto standard.

TCP/IP Model과 OSI Model은 아무런 관련이 없다.

OSI 7 layers

각 계층은 그 하위 계층의 상황은 전혀 생각하지 않는다

  • 1계층 : 신호 송/수신
  • 2 ~ 3계층 : 송/수신된 데이터에 대한 처리
  • 4계층 ~ : 데이터를 송신하기 전, 수신한 후의 처리

1 - Physical layer (Interface layer)

케이블이 연결된 기기에 신호를 '전달'한다

매체 (케이블)

  • 유선
    • 동선 (동축)
    • UTP (twisted pair)
    • 광케이블

인터페이스

"컴퓨터와 신호의 중개역"
NIC (Network Interface Card) : for LAN (Local Area Network) cable
DCE : for WAN

신호에 발생할 수 있는 문제들

  • 신호 약화 (장거리)
  • 노이즈
  • 충돌 (2계층에서 자세히 설명)

허브의 기능

  • 신호의 증폭/재생 (Repeater)
  • 네트워크 구축 : 여러 기기가 같은 케이블에 연결된 것처럼 만들어줌

Flooding : 신호가 들어오면 -> 그 외 모든 포트 (Collision Range) 로 송신 => 충돌 위험

세그먼트에서 '데이터의 송수신'을 고려/제어한다

세그먼트 : 신호가 도달하는 범위

LAN -> Ethernet Rule 사용 (de facto)

Framing

비트열에 의미 주기

프레이밍을 시행해 송수신되는 신호가 '데이터가 된다.

preamble로서 0, 1을 교대로 보내 clock sync

*wire shark : 패킷캡쳐, 즉 NIC가 수신한 모든 ethernet frame을 capture

Addressing - MAC

2계층의 Physical Address

Media Access Control

MAC 주소는 인터페이스 당 하나이며, 고유하다.

데이터 전송 방법

  • 유니캐스트 (unique one) - 허브의 경우 (flooding), 수신처 MAC이 자신과 일치하지 않으면 프레임을 파기한다.
  • 브로드캐스트 (all) - 라우터로 구분된다 (3계층 참고)
  • 멀티캐스트 (group)
  • 애니캐스트

신호 충돌 방지

  • CSMA/CD : Half-duplex (송수신 가능하지만 한 순간엔 한쪽만)
    • CS (Carrier Sense; 신호 감지) : 누군가 송신 -> 송신 X
    • MA (Multiple Access; 다중 액세스) : 아무도 송신 X -> 송신 O
    • CD (Collision Detection; 충돌 검사) : 송신 후 충돌 -> 재송신
  • Switch : 허브 대신 사용, Full-duplex
    • MAC address filtering : 학습 후, 최소한의 MAC 으로 송신
    • Buffering

3 - Network layer (Internet(IP) layer)

'세그먼트 간'에 데이터를 송수신한다

이 세그먼트를 (협의의) '네트워크'라고 부름

네트워크들을 서로 연결하는 것을 Internetwork 라고 부름

IP를 통해 addressing, routing을 수행한다.

Addressing - IP

3계층의 Logical Address

어드레싱과 라우팅

IP는 '소속된 네트워크 내에서' 유일하다.

IP = 32 bits = network # + computer(host) # = "어느 네트워크의 어느 컴퓨터"

*bit가 중요하다. 십진수로 표기된 것을 보고 혼동 노노

  • Classful addressing
    • A, B, C : 각각 8, 16, 24 비트가 네트워크 번호
    • 호스트 번호가 모두 0인 ip : 네트워크 주소 - 네트워크 자체를 표시 (ex. 192.168.11.0)
    • 호스트 번호가 모두 1인 ip : 브로드캐스트 주소 (ex. 192.168.0.255)
    • 서브넷 (Subnetwork) : 호스트 번호의 일부를 (서브)네트워크 번호로 사용
      • 서브넷마스크 : 어디까지가 서브넷인지 정보 제공 - 네트워크 # 과 서브넷 # = 모두 1, 나머지 0
      • 서브넷마크스는 ip와 세트로 기술
  • Classless addressing
    • 슈퍼넷 (Supernetwork) : (ex. C 클래스 네트워크 8개로 1개의 네트워크 구축 -> 2000 ip 확보)
    • prefix : 네트워크 # 갯수만큼 표시 (ex. 192.168.32.0/21 -> host는 2^11 = 2048개)

DHCP

Dynamic Host Configuration Protocol

수동 설정 대신, DHCP 서버가 대여해주는 ip를 사용 (브로드캐스트 사용)

ARP

Address Resolution Protocol

APR Table : IP-MAC 매칭표. 표가 비었으면 브로드캐스트

DNS

Domain Name Server

도메인-IP 매칭표

정리

송신처 MAC : NIC를 장착하면 바로 알 수 있음
송신처 IP : 수동 또는 DHCP 로 할당
수신처 IP : DNS로 획득
수신처 MAC : ARP로 확인

이후 데이터 전송 진행

Routing

목적지까지 도달하는 과정에서,

  • MAC은 동일 네트워크의 수신처를 정한다 -> 변동
  • IP는 최종 네트워크의 수신처를 정한다 -> 고정

라우터(hop)는 네트워크 간 경계에 배치되어, 다음 수신처를 결정한다.

라우터가 없으면 다른 네트워크는 (설령 같은 허브일지라도) 데이터를 절대 전송할 수 없다. 그래서 일반적으로 각 컴퓨터는 default gateway 지정해둔다.

라우터에 인터페이스가 세개라면 -> 세 개의 네트워크에 소속된 셈

Routing Table

Longest Rule : 테이블에 있는 destination-nextRouter 조합에서, 지금 요청이 들어온 destination ip와 기존 destination들 중 제일 prefix가 많이 겹치는 쪽으로 결정해서 해당 nextRouter로 전송

  • 정적 라우팅
  • 동적 라우팅 : Routing Protocol을 통해 Routing Table을 갱신
    • Convergence가 필요함 : 모든 라우터가 동일한 정보를 가져야 함
    • AS (Autonomous System) : 하나의 관리 단체로 관리되는 네트워크 집합체. 복수의 네트워크로 구성.
      • AS 간 라우팅 프로토콜 : EGP (External Gateway Protocol)
        • ex. BGP
      • AS 내 라우팅 프로토콜 : IGP (Internal Gateway Protocol)
        • ex. RIP : Hop count를 metric으로 사용

또다른 프로토콜 - ICMP

Internet Control Message Protocol

에러 보고 프로토콜

IP 패킷(데이터그램)의 TTL이 만료되었을 때 에러를 제공한다.

*IP 패킷의 TTL과 DNS 레코드의 TTL은 다름. IP 패킷의 TTL은 1 hop마다 1씩 감소

  • ping ICMP를 사용한다
  • traceroute는 ttl을 1씩 늘려가는 방식으로 라우팅 루트를 기록한다.

4 - Transport layer (Transport layer)

신뢰성이 높은 전송을 수행한다 (신뢰성을 높인다)

  • 에러 복구
  • 흐름 제어 (오버플로 통제)
  • 포트 번호 사용
    • 2**16 (65536) 개
    • 1 ~ 1023 : Well-known ports

TCP와 UDP

  • TCP (Transmission Control Protocol) : 커넥션 확보 by TCP 헤더 (내에 있는 Flags)
    • 3 way handshake : SYN -> ACK + SYN -> ACK => ESTABLISHED (커넥션 확립)
    • 4 way handshake : FIN + ACK -> ACK -> FIN + ACK -> ACK => CLOSED (커넥션 단절) *2, 3번 신호 둘다 상대방쪽에서부터 옴
    • 세그먼트 분할 : 하나의 데이터를 복수의 세그먼트로 분할 - MSS (Max Segment Size)을 이용.
    • RTT (Round-Trip Time)으로 재전송 요청
    • 윈도우 제어 : 복수의 세그먼트를 전송
  • UDP (User Datagram Protocol) : 포트 번호 외에 별다른 헤더 없음.
    • 브로드캐스트에서 사용

NAT

Network Address Transmission

"내부 네트워크"를 구축하는 기술

내부 네트워크에서도 TCP/IP 통신을 하기 위해 사설 IP 주소를 할당해줌.

그런데 두 명의 내부 사용자가 동시에 global ip를 쓰려고 하면, 패킷이 돌아올 때 어느쪽에 데이터를 넣어줄지가 불분명하다 -> 동시 접속 불가

*추가 설명 : https://5kyc1ad.tistory.com/254

이에 따라, NAPT (Network Address Port Transmission) 가 등장 : 내부적으로 포트까지 하나씩 할당해주기 때문에 여러 기기가 동시에 인터넷 접속 가능

5 - Session layer (Application layer)

애플리케이션 간 대화가 세션으로서 성립하도록 제어한다 (Dialog Control)

*5,6,7은 TCP/IP 모델의 경우 통합해서 하나의 프로토콜이 된 경우가 많다 (ex. http)

6 - Presentation layer (Application layer)

컴퓨터 간 데이터 형식의 차이(OS, hardware)를 변환해 제거한다

압축이나 암호화도 수행한다.

7 - Application layer (Application layer)

(각각의 목적에 따라) 네트워크 서비스를 제공한다

각 목적에 따른 프로토콜이 존재한다

책에는 없지만...

https는 무슨 레이어인가?

혹은, "tls/ssl은 무슨 레이어인가?"

우선, OSI 모델로 접근하는 건 정말 안좋은 생각이다. 그보다는 TCP/IP 모델 위에 5번째 '보안' 레이어를 얹었다고 이해하는 것이 좋다.

profile
기능이 아니라 버그예요

0개의 댓글