What is network security?

기밀성(Confidentiality)

  • 정의: 메시지의 내용은 발신자와 수신자만 "이해"할 수 있어야 한다.
  • 방법
    • 발신자가 메시지를 암호화함(Sender Encrypts Message): 발신자는 메시지를 암호화하여 전송한다.
    • 수신자가 메시지를 복호화함(Receiver Decrypts Message): 수신자는 메시지를 복호화하여 내용을 확인한다.

인증(Authentication)

  • 정의: 발신자와 수신자는 서로의 신원을 확인하고자 한다.

  • 목적: 메시지를 주고받은 양쪽이 서로의 신원을 확인하여 신뢰성을 확보한다.

  • 메시지 무결성(Message Integrity)*

  • 정의: 발신자와 수신자는 메시지가 변조되지 않았음을 확인하고자 한다.

  • 목적: 메시지가 전송되는 동안 또는 이후에 변경되지 않았음을 보장하여 데이터의 무결성을 유지한다.

  • 접근성 및 가용성(Access and Availability)*

  • 정의: 서비스는 사용자에게 접근 가능하고 사용 가능해야 한다.

  • 목적: 네트워크 서비스가 항상 접근 가능하고 가용성을 유지하여 사용자들이 필요할 때 사용할 수 있도록 한다.

Friends and enemies: Alice, Bob, Trudy

밥과 앨리스는 아래의 것들이 될 수 있다.

  • 실생활의 밥과 앨리스
  • 웹 브라우저/서버
  • 온라인 뱅킹 클라이언트/서버
  • DNS 서버
  • BGP 라우터
  • 기타 예시

There are bad guys(and girls) out there!

  1. 엿듣기(Eavesdrop)
    • 메시지를 가로채는 행위
  2. 메시지 삽입(Actively Insert Messages into Connection)
    • 연결에 메시지를 적극적으로 삽입하는 행위
  3. 사칭(Impersonation)
    • 패킷의 소스 주소 또는 다른 필드를 속여서(fake) 사칭하는 행위
  4. 하이재킹(Hijacking)
    • 진행 중인 연결을 장악하여 발신자나 수신자를 제거하고 자신을 그 자리에 삽입하는 행위
  5. 서비스 거부(Denial of Service)
    • 자원을 과부하 시켜 다른 사용자가 서비스를 이용하지 못하게 하는 행위

The language of cryptography

  1. 평문(Plaintext)
  2. 암호화 키(Encryption Key) - KA
  3. 암호화 알고리즘(Encryption Alogrithm)
  4. 암호문(Ciphertext)
  5. 복호화 키(Decryption Key) - KB
  6. 복호화 알고리즘(Decryption Algorithm)
  7. 메시지(m)
    • 원본 평문 메시지

Breaking an encryption scheme

  • 암호문만 있는 공격(Ciphertext-Only Attack)

    • 정의: 트루디가 분석할 수 있는 암호문만을 가지고 있는 공격 유형
    • 두 가지 접근법
      • 무차별 대입 공격: 모든 가능한 키를 검색하여 암호를 해독하려는 시도
      • 통계 분석: 암호문에서 나타나는 빈도나 패턴을 분석하여 암호를 해독하려는 시도
  • 알려진 평문 공격

    • 정의: 트루디가 암호문에 대응하는 평문을 알고 있는 공격 유형
    • 예시
      • 단일 알파벳 암호(Monoalphabetic Cipher)에서 트루디는 특정 문자와 암호문의 대응을 파악할 수 있습니다. 예를 들어, a, l, i, c, e, b, o 등의 문자에 대한 대응을 찾아낼 수 있습니다.
  • 선택된 평문 공격

    • 정의: 트루디가 선택한 평문에 대한 암호문을 얻을 수 있는 공격 유형.
    • 설명: 트루디는 특정 평문을 선택하고, 그 평문이 암호화된 결과(암호문)를 분석하여 암호를 해독하려고 시도합니다.

Symmetric key Cryptography

Simple Encryption Scheme

치환 암호(Substitution Cipher)

  • 정의: 하나의 문자를 다른 문자로 대체하여 암호화하는 방식

단일 알파벳 치환 암호(Monoalphabetic Cipher)

  • 정의: 각 문자를 고유한 다른 문자로 대체한다. 예를 들어, 알파벳 a는 항상 특정한 문자로 바뀐다.

Encryption key: 26개의 문자를 다른 26개의 문자로 매핑하는 규칙

A more Sophisticated encryption approach

  1. n개의 치환 암호

    • 다중 치환 암호를 사용한다. 각 치환 암호는 서로 다른 규칙으로 문자를 치환한다.
  2. 순환 패턴(Cycling Pattern)

    • 치환 암호를 순환적으로 사용한다.
    • 예를 들어, n=4 일 때, 치환 암호의 사용 순서는 M₁, M₃, M₄, M₃, M₂와 같이 반복된다.
    • 이 패턴에 따라 각 새로운 평문 문자에 대해 다음 치환 암호를 사용한다.
  3. 평문 문자에 대한 순환적 치환

    • 예를 들어, dog라는 단어를 암호화할 때
      • d, M1에 의해 치환
      • o, M3에 의해 치환
      • g, M4에 의해 치환
  4. 암호화 키

    • 암호화 키는 n개의 치환 암호와 순환 패턴으로 구성된다.
    • 이 키는 단순히 n-bit 패턴만을 포함하는 것이 아니라, 각 치환 암호와 그 순서를 포함한다.

Symmetric key crypto: DES

DES(Data Encrpyion Standard)

  • 56비트 대칭 키를 사용하여 64비트 평문 입력을 암호화
  • 블록 암호화 기법을 사용하며, 암호 블록 체이닝(CBC) 방식을 포함

DES 보안성

  • DES Challenge
    • 56비트 키로 암호화된 문구가 브루탈 포스 공격(모든 키를 대입해 찾는 방법)으로 하루 안에 해독된 사례가 있음
  • 현재까지 알려진 좋은 분석 공격 방법은 없음
    • 아직 DES를 효과적으로 분석하여 해독하는 좋은 공격 방법이 알려져 있지 않음

DES의 보안 강화

  • 3DES(Triple DES)
    • DES의 보안성을 높이기 위해 개발된 방법
    • 데이터를 세 가지 다른 키를 사용하여 세 번 암호화
    • 이 방법으로 DES의 보안성을 크게 강화할 수 있음

AES: Advance Encryption Standard4

  • AES

    • 대칭 키 NIST 표준: DES를 대체하여 2001년 11월에 채택됨
    • 데이터를 128비트 블록 단위로 처리
    • 키 길이는 128.192 또는 256비트가 처리
  • AES의 보안성

    • 브루탈 포스 복호화
      • DES의 경우 각 키를 시도하여 복호화하는 데 1초가 걸리는 반면, AES를 브루트 포스로 복호화하는 데는 149조 년이 걸림
      • 이는 AES가 DES보다 훨씬 더 강력한 보안을 제공한다는 것을 의미함

Public Key Cryptography

대칭 키 암호화

  • 필요한 요소: 송신자와 수신자가 공유된 비밀 키를 알고 있어야 함
  • 문제점: 키를 처음에 어떻게 동의할 것인가? 특히 서로 만난 적이 없을 때

공개 키 암호화

  • 공개 암호화 키: 모든 사람에게 공개됨
  • 개인 복호화 키: 오직 수신자만 알고 있음

Public key encryption algorithms

공개 키 암호화의 요구 사항

  1. 암호화 및 복호화 함수

    • 공개 키 암호화 함수와 개인 키 복호화 함수의 쌍이 필요하다. 이 함수들은 다음과 같은 관계를 가져야 한다.
  2. 보안 조건

    • 공개 키가 주어졌을 때, 이를 통해 개인 키를 계산하는 것이 매우 어려워야 한다. 이는 누군가가 공개 키에 접근할 수 있더라도 개인 키 없이는 메시지를 복호화할 수 없음을 보장한다.

RSA 알고리즘

  • RSA 알고리즘은 그 발명가인 Rivest, Shamir, Adleman의 이름을 따서 명명된 공개 키 암호화 알고리즘이다.

RSA: getting ready

  • 메시지: 단순히 비트 패턴
  • 비트 패턴: 고유하게 정수로 표현 가능
  • 따라서 메시지를 암호화하는 것은 정수를 암호화하는 것과 동일
  • 예제
    • 예시 메시지 m: m = 10010001
    • 이 메시지는 10진수로 145로 고유하게 표현 가능
    • m을 암호화하기 위해, 해당 숫자를 암호화하면 새로운 숫자 (암호문)를 얻게 됨

RSA: Creating public/private key pair

  1. 두 개의 큰 소수 p, q 선택
  • e.g. 각각 1024 비트 길이의 소수 p와 q를 선택
  1. n과 z 계산
  • n = pq
  • z = (p-1)(q-1)
  1. e 선택
  • e를 n보다 작으면서 z와 서로 소인 값을 선택한다.
  • e와 z는 공통 인수가 없어야 한다.
  1. d 선택
  • d는 ed-1이 z로 정확히 나누어 떨어지도록 선택한다.
  • 즉, ed mod z = 1이 성립해야 한다.
  1. 공개 키와 비밀 키 설정
  • 공개 키: (n, e)
  • 비밀 키: (n, d)

RSA: encryption, decryption

  1. 키 생성:

    • n, e: 공개 키
    • n, d: 비밀 키
  2. 메시지 암호화

    • m이 n 보다 작은 메시지라고 가정하자
    • 메시지 m을 암호화하려면 다음을 계산한다.
      • c = me mod n
        • 여기서 c는 암호화된 메시지이다.
  3. 메시지 복호화

    • 수신된 암호화된 비트 패턴 c를 복호화하려면 다음을 계산한다..
      • m = cdmod n
    • 여기서 m은 복호화된 원래 메시지이다.

RSA: example

설정 단계

  1. 두 개의 소수 p와 q 선택

    • p = 5
    • q = 7
  2. 두 소수의 곱 n 계산

    • n = pq = 5 * 7 = 35
  3. 오일러의 토션트 z 계산

    • z = (p-1)(q-1) = (5-1)(7-1) = 4 * 6 = 24
  4. 암호화 지수 e 선택

    • e = 5(조건: e와 z는 서로소여야 함)

5. 복호화 지수 d 계산
- d = 29(조건: ed mod z = 1)

Why does RSA work?

RSA 알고리즘의 작동 원리를 이해하려면 cd mod n = m을 증명해야 한다. 여기서 c는 c = me mod n 이다.

기본 사실

  • 임의의 x와 y에 대해, 다음이 성립한다.
    • 여기서 n = pq이고 z = (p-1)(q-1)이다.

RSA: another important property

  • KB+는 Bob의 공개 키이다.
  • KB-는 Bob의 개인 키이다.
  • m은 원문 메시지(평문)이다.
  1. 공개 키로 먼저 암호화하고 개인 키로 복호화
  2. 개인 키로 먼저 암호화하고 공개 키로 복호화

Why is RSA secure?

  1. Bob의 공개 키

    • 공개 키 (n, e)는 모두에게 알려져 있다.
    • n은 두 개의 큰 소수 p와 q의 곱으로 생성된다.
  2. 비밀 키 d의 추정 난이도

    • d는 비밀 키로서, d를 알면 메시지를 복호화할 수 있다.
    • d를 찾으려면 n의 소인수 p와 q를 알아야 한다.
    • 하지만 n만 알고 있을 때 p와 q를 찾는 것은 매우 어렵다.
  3. 소인수 분해의 어려움

    • 큰 수의 소인수분해는 현재의 계산 능력으로는 매우 어렵다.
    • RSA의 보안은 이 수학적 문제의 어려움에 기반한다.

RSA in practice: session keys

  1. RSA의 계산 복잡도

    • RSA에서 지수 연산은 매우 계산 집약적이다.
    • 대칭키 암호화 방식인 DES는 RSA보다 적어도 100배 빠르다.
  2. 세션 키 사용 이유

    • 공개 키 암호화를 사용하여 안전한 연결을 설정한다.
    • 그런 다음 데이터를 암호화하기 위해 두 번째 키인 대칭 세션 키를 설정한다.
  3. 세션 키 Ks

    • Bob의 Alice는 RSA를 사용하여 대칭 세션 키 Ks를 교환한다.
    • 두 사람이 모두 Ks를 갖게 되면, 그 후부터는 대칭키 암호화를 사용하여 데이터를 암호화한다.

RSA는 세션 키를 교환하는 데 사용되고, 이후의 데이터 암호화는 더 빠른 대칭키 암호화 방식(DES)을 사용하여 수행된다. 이를 통해 보안성과 효율성을 동시에 유지할 수 있다.

Authentication

Bob은 Alice가 자신의 신원을 증명하기를 원한다.

프로토콜 ap 1.0

  • alice는 "나는 Alice입니다." 라고 말한다.
  • 문제점: 네트워크 상에는 Bob이 Alice "볼 수" 없기 때문에 Trudy가 단순히 자신을 Alice라고 선언할 수 있습니다.

프로토콜 ap 2.0

  • alice는 자신의 소스 IP 주소를 포함하는 IP 패킷에서 "나는 alice입니다."라고 말한다.
  • 문제점: trudy는 alice의 주소를 스푸핑하여 패킷을 만들 수 있다.

프로토콜 ap 3.0

  • Alice는 "나는 Alice입니다"라고 말하며 자신의 비밀번호를 Bob에게 보낸다.
  • 문제점: Trudy는 Alice의 IP주소와 비밀번호를 도청할 수 있는 경우, Trudy는 Alice인 것처럼 자신을 가장할 수 있다.

프로토콜 ap4.0

  • Alice가 실시간임을 증명하기 위해, Bob은 Alice에게 넌스 R을 보낸다.
    • nonce: 단 한 번만 사용되는 일회성 번호(R)를 사용한다.
  • Alice는 R을 공유 비밀 키로 암호화하여 반환해야 한다.
  • 프로토콜 과정
    1. Alice가 Bob에게 "나는 Alice입니다"라고 말한다.
    2. Bob은 Alice에게 넌스 R을 보낸다.
    3. Alice는 R을 공유 비밀 키 KA-B로 암호화한 후 Bob에게 보낸다.
    4. Bob은 받은 암호화된 R을 공유 비밀 키로 복호화하여 보낸 R과 일치하는지 확인한다.

프로토콜 ap5.0

  • ap4.0 프로토콜에서는 공유 대칭 키를 사용해야 했다.
  • 여기서 공개 키 암호화를 사용하여 인증할 수 있는 지 확인해보자.
  • 프로토콜 과정
    1. alice의 주장: alice가 bob에게 '나는 alice 입니다'라고 말한다.
    2. bob의 넌스 전송: bob은 alice에게 넌스 r을 보낸다.
    3. Alice의 응답:
      • Alice는 Bob이 보낸 넌스 R을 자신의 개인 키로 암호화하여 Bob에게 돌려보낸다.
    4. 공개 키 요청
      • Bob은 Alice에게 공개 키를 보내달라고 요청한다.
    5. Alice의 공개 키 전송
      • Alice는 자신의 공개 키를 Bob에게 보낸다.
    6. Bob의 검증
      • Bob은 Alice의 공개 키로 복호화하여 원래의 넌스 R을 얻는다.

Authentication: ap5.0 - there's still a flaw!

문제

  • 중간자 공격(Man-in-the-Middle Attack): Trudy가 Bob에게는 Alice로, Alice에게는 Bob으로 가장한다.

시나리오

  1. Alice의 주장
    • Alice가 Bob에게 "나는 Alice입니다"라고 말함
  2. Bob의 넌스 전송
    • Bob은 Alice에게 넌스 R을 보낸다.
  3. Trudy의 개입
    • Trudy가 Alice와 Bob의 통신을 가로채어 각각의 통신을 관리한다.
    • Trudy가 Bob에게 "나는 Alice입니다."라고 말한다.
    • Trudy가 Bob의 넌스를 받아서 자신이 가지고 있는 개인 키로 암호화한다.
  4. 공개 키 요청
    • Bob이 Trudy(Alice로 가장한)에게 공개 키를 요청한다.
    • Trudy는 자신의 공개 키를 보낸다.
  5. Bob의 검증
    • Bob은 Trudy의 공개 키를 사용하여 넌스를 검증한다.
    • Bob은 Trudy가 Alice라고 생각하게 된다
  6. Bob의 메시지 전송
    • Bob은 개인 메시지 m을 Trudy(Alice로 가장한)에게 보낸다.
    • Trudy는 이 메시지를 복호화하여 내용 m을 알아낸다.
  7. Trudy의 개입
    • Trudy는 Alice에게 "나는 Bob입니다."라고 말한다.
    • Alice는 Trudy가 Bob이라고 생각하고 메시지를 주고 받는다.
    • Trudy가 Bob의 메시지를 Alice에게 전달한다.

Message Integrity

Digital Signatures

  1. 서명자(Bob)가 문서에 디지털 서명을 한다.
    • 문서의 소유자이자 작성자인 Bob이 디지털 서명을 하게 된다.
  2. 검증 가능하고 위조 불가능
    • 수신자(Alice)는 Bob이 서명했음을 증명할 수 있다.
    • Alice를 포함한 누구도 Bob의 서명을 위조할 수 없다.
  3. 메시지 m에 대한 간단한 디지털 서명
    • Bob은 자신의 개인 키를 사용하여 메시지 m을 암호화함으로써 서명된 메시지를 만든다.
    • 이는 Bob의 서명이 포함된 메시지로서, 누구든지 Bob의 공개 키를 사용하여 서명을 검증할 수있다.예시 상황
  • Alice가 Bob으로부터 서명된 메시지 m과 서명을 받는다.

검증 과정 1. 서명 검증 - Alice는 Bob의 공개 키를 사용하여 서명을 복호화한다. - 복호화 결과가 메시지 m과 일치하는지 확인한다.
2. **확인 내용** - 복호화 했을 때 같이 전달된 m과 일치하면, 서명자는 Bob의 개인 키를 사용했다는 의미이다. - 이를 통해 Alice는 다음을 확인할 수 있다. - 메시지 m은 Bob이 서명했다. - 다른 누구도 아닌 Bob이 서명했다. - Bob이 서명한 메시지는 m이며, 다른 메시지 m'이 아니다.
3. **부인 방지** - Alice는 메시지 m과 서명을 법원에 제출하여 Bob이 서명했음을 증명할 수 있다 - 이는 Bob이 해당 메시지를 서명했다는 사실을 부인할 수 없게 만든다.

Message Digests

메시지 다이제스트는 긴 메시지를 공개 키 암호화로 처리하는 것은 계산 비용이 많이 들기 때문에 고안된 방법이다. 메시지 다이제스트는 고정 길이의 디저털 지문을 생성하는데 사용된다.

목표: 고정 길이이며 계산이 쉬운 디지털 "지문"을 생성하는 것이다.

방법: 해시 함수 H를 메시지 m에 적용하여 고정 길이의 메시지 다이제스트 H(m)를 얻는다.

해시 함수의 속성

  1. Many-to-1: 여러 입력값이 동일한 출력값을 가질 수 있다.
  2. 고정 크기 메시지 다이제스트: 고정 크기의 다이제스트(또는 지문)을 생성한다.
  3. 역산 불가능성: 주어진 메시지 다이제스트 x에 대해, x = H(m)을 만족하는 m을 찾는 것은 계산적으로 불가능하다.

Internet checksum: poor crypto hash function

인터넷 체크섬의 특성

  1. 고정 길이 다이제스트 생성: 메시지의 16비트 합을 사용하여 고정 길이의 다이제스트를 생성한다.
  2. Many-to-One: 여러 개의 다른 메시지가 동일한 체크섬 값을 가질 수 있다.

하지만, 주어진 해시 값(체크섬 값)을 가지고 동일한 해시 값을 가지는 다른 메시지를 쉽게 찾을 수 있다. 이는 인터넷 체크섬이 강력한 암호화
해시 함수로 사용되기에 부적합하다는 것을 의미한다.

Digital signature = signed message digest

  • MD5 해시 함수

    • 특징
      • 128비트 메시지 다이제스트를 생성한다.
      • 4단계 과정을 통해 메시지 다이제스트를 계산한다.
      • 임의의 128비트 문자열 x에 대해, MD5 해시가 x와 동일한 메시지 m을 구성하는 것은 매우 어렵다.
    • 사용 예
      • 파일의 무결성을 확인하기 위해 사용된다.
      • 패스워드 저장 및 검증 등에 사용되었으나, 현재는 보안 취약성 때문에 사용이 권장되지 않는다.
  • SHA-1(Secure Hash Algorithm 1)

    • 특징
      • 미국 표준으로 채택되었다.
      • 160비트 메시지 다이제스트를 생성한다.
    • 사용 예
      • 디지털 서명, 인증서, SSL/TLS 등의 보안 프로토콜에서 사용된다.
      • 현재는 보안 취약성으로 인해 SHA-256 등 더 강력한 해시 알고리즘으로 대체되고 있다.

Authentication: ap5.0 - let's fix it!

중간자 공격 시나리오

  1. Trudy가 Alice로 가장하여 Bob에게 접근

    • Alice가 "I am Alice"라고 선언
    • Bob이 nonce R를 Alice에게 보낸다.
    • Trudy가 이 nonce R을 가로챈다.
    • Trudy는 Alice의 공개 키를 사용하여 nonce R을 암호화하고, 이를 Bob에게 보낸다.
    • Bob는 Trudy가 보낸 것(Alice의 공개 키를 사용하여 nonce R을 암호화)을 확인하고, Alice라고 믿는다.
  2. Trudy가 Bob으로 가장하여 Alice에게 접근

    • Trudy는 nonce R를 Alice에게 보낸다.
    • Alice는 Trudy가 보낸 R를 자신의 비밀 키로 암호화하여 Trudy에게 보낸다.
    • Trudy는 Alice의 비밀 키를 이용해 R를 복호화하여 원래의 메시지를 획득한다.

해결 방법(슬라이드의 설명)

  1. 공개 키의 확인 과정에서 문제가 발생

    • Trudy는 Alice로부터 공개 키를 요청하고, 이를 악용하여 중간자 공격을 수행한다.
    • Bob이 Alice의 공개 키를 확인하는 과정에서 Trudy의 공개 키로 바꿔치기 할 수 있다.
  2. 비밀 키와 공개 키의 올바른 사용

    • Bob은 Alice의 공개 키를 사용할 때 이를 검증해야 한다.
    • Alice와 Bob은 공개 키가 올바른지 확인하는 추가적인 보안 절차를 가져야 한다.

Need for certified public keys

동기: Trudy가 Bob에게 피자 장난을 친다.

  • Trudy가 Bob에게 피자 장난을 치는 시나리오를 통해 인증된 공개 키의 필요성을 설명한다.

시나리오

  1. Trudy가 이메일 주문을 작성
    • trudy는 피자 가게에 보낼 이메일 주문을 작성한다.
    • trudy는 이 주문서를 자신의 비밀 키로 서명한다.
  2. Trudy가 피자 주문서를 피자 가게로 보낸다.
    • trudy는 서명된 주문서를 피자 가게에 보낸다.
  3. Trudy가 피자 가게에 공개 키를 보낸다.
    • trudy는 피자 가게에 자신의 공개 키를 보내지만, 이를 Bob의 공개 키라고 속인다.
  4. 피자 가게가 서명을 검증
    • 피자 가게는 trudy가 보낸 공개 키를 사용해 서명을 검증하고, 서명이 유효하다고 판단하여 Bob에게 페퍼로니 4판을 배달한다.
  5. 결과
    • Bob은 주문하지도 않은 피자를 받는다.

Public key Certification Authorities(CA)

정의

  • 인증 기관(Certification Authority,CA): 특정 엔터티(개인, 웹사이트, 라우터 등)에 공개 키를 연결해주는 기관

과정

  1. 엔터티가 공개 키를 CA에 등록

    • 엔터티(e.g. Bob)가 자신의 공개 키와 식별 정보를 CA에 제공한다.
    • CA는 Bob이 제공한 식별 정보와 공개 키를 검증한다.
  2. CA가 인증서 생성

    • CA는 Bob의 공개 키와 Bob의 식별 정보를 바인딩한 인증서를 생성한다.
    • 인증서는 CA의 비밀키로 디지털 서명된다.
  3. 인증서 발급

    • CA는 서명된 인증서를 Bob에게 발급합니다.
    • 인증서에는 Bob의 공개 키와 CA의 서명이 포함됩니다.
  4. 인증서의 역할

    • 인증서의 주요 역할은 CA가 "이것은 Bob의 공개 키입니다"라고 보증하는 것이다.
    • 다른 엔터티는 CA의 공개 키를 사용하여 인증서의 서명을 검증할 수 있다.
    • 이를 통해 다른 엔터티는 Bob의 공개 키가 진짜임을 신뢰할 수 있다.

Public key Certification Authorities(CA)

목표: Alice가 Bob의 공개 키를 필요로 할 때, 이를 신뢰할 수 있는 방법을 얻는 과정

과정

  1. Bob의 인증서 획득

    • Alice는 Bob이나 다른 출처에는 Bob의 인증서(certification)를 얻는다.
    • 이 인증서에는 Bob의 공개 키가 포함되어 있다.
  2. CA의 공개 키를 사용한 검증

    • Alice는 CA의 공개 키를 사용하여 인증서에 있는 디지털 서명을 검증한다.
    • 인증서를 검증함으로써, 인증서에 포함된 Bob의 공개 키가 실제로 Bob의 것임을 확인 할 수 있다.

Secure e-mail: confidentiality

Alice는 Bob에게 기밀 이메일 m을 보내려 할 때, 다음과 같은 절차를 따른다.

Secure e-mail: integrity, authentication

Securing TCP connections: TLS

Transport-layer security(TLS)

TLS는 전송 계층 위에 배치된 보안 프로토콜로, 거의 모든 브라우저와 웹 서버(port 443)에서 지원된다. 이 프로토콜은 다음과 같은 보안 기능을 제공한다.

  1. 기밀성(Confidentiality)

    • 대칭 암호화(Symmetric Encryption)를 통해 제공된다. 대칭 암호화는 빠르고 효율적이며, 송신자와 수신자가 동일한 키를 사용하여 데이터를 암호화하고 복호화한다.
  2. 무결성(Integrity)

    • 암호화 해시(Cryptographic Hashing)를 통해 제공된다. 암호화 해시는 데이터가 전송되는 동안 변조되지 않았음을 보장하는 역할을한다.
  3. 인증(Authentication)

    • 공개 키 암호화(Public Key Cryptography)를 통해 제공된다. 공개 키 암호화는 송신자와 수신자가 서로의 신원을 확인하고 인증하는데 사용된다.

Transport-layer security: what's needed?

TLS(Transport-Layer Security) 프로토콜을 구성하기 위한 필요한 요소들을 설명한다.

구성요소

  1. Handshake(핸드셰이크)
    • 역할: Alice와 Bob이 서로의 인증서를 사용하여 서로를 인증한다.
    • 과정: 서로의 개인 키를 사용하여 공유 비밀을 교환하거나 생성한다.
  2. Key Derivation(키 유도)
    • 역할: Alice와 Bob이 공유 비밀을 사용하여 여러 개의 키를 도출한다.
    • 과정: 도출된 키는 이후 통신에서 데이터 암호화에 사용된다.
  3. Data Transfer(데이터 전송)
    • 역할: 데이터를 연속적인 레코드의 형태로 스트리밍하여 전송한다.
    • 특징: 단일 거래가 아닌 지속적인 데이터 전송을 지원한다.
  4. Connection Closure(연결 종료)
    • 역할: 연결을 안전하게 종료하기 위해 특별한 메시지를 사용한다.
    • 과정: 안전한 연결 종료를 보장하여 데이터 유출을 방지한다.

t-tls: initial handshake

t-tls 핸드셰이크 단계

  1. TCP 연결 설정
    • 과정: Bob이 Alice와 TCP 연결을 설정한다.
    • 단계: TCP SYN -> SYNACK -> ACK
  2. 인증 과정
    • 과정: Bob이 Alice가 진짜 Alice인지 확인
    • 단계: t-tls hello 메시지를 보낸다.
  3. 공개 키 인증서 교환
    • 과정: Alice는 자신의 공개 키 인증서를 Bob에게 보낸다.
    • 단계: 공개 키 인증서 전송
  4. 마스터 비밀 키 (MS) 전송
    • 과정: Bob이 Alice에게 마스터 비밀 키(MS)를 보낸다. 이 키는 TLS 세션에서 다른 모든 키를 생성하는 데 사용된다.
    • 단계: Bob은 자신의 비밀 키로 MS를 암호화하여 전송한다.
  5. 클라이언트 요청 및 서버 응답
    • 과정: Alice는 클라이언트 요청을 보내고, Bob은 서버 응답을 보낸다.
    • 단계: client request -> server reply

잠재적 문제점

  • 3 RTT(Round Trip TIme)
    • 설명: 클라이언트가 데이터를 받기 시작하기 전까지 3번의 RTT가 필요하다(TCP 핸드셰이크 포함)
    • 영향: 데이터 전송 시작까지의 지연이 발생할 수 있다.

t-tls: cryptographic keys

키 사용 원칙

  • 한 키를 여러 암호화 기능에 사용하는 것은 좋지 않음
    • 각기 다른 암호화 기능에 동일한 키를 사용하는 것은 보안상 위험할 수 있다.
    • 메시지 인증 코드 (MAC)와 암호화에 다른 키를 사용해야 한다.

네 가지 키

  1. Kc:
    • 설명: 클라이언트에서 서버로 전송되는 데이터의 암호화 키
    • 사용 목적: 클라이언트에서 서버로 전송되는 데이터를 암호화
  2. Mc:
    • 설명: 클라이언트에서 서버로 전송되는 데이터의 MAC 키
    • 사용 목적: 클라이언트에서 서버로 전송되는 데이터의 무결성을 확인
  3. Ks:
    • 설명: 서버에서 클라이언트로 전송되는 데이터의 암호화 키
    • 사용 목적: 서버에서 클라이언트로 전송되는 데이터를 암호화
  4. Ms:
    • 설명: 서버에서 클라이언트로 전송되는 데이터의 MAC 키
    • 사용 목적: 서버에서 클라이언트로 전송되는 데이터의 무결성을 확인

키 파생 함수(KDF)에서 키 생성

  • 설명
    • 키는 키 파생 함수(KDF)를 통해 파생된다.
    • 마스터 비밀 키(master secret)와 추가적인 랜덤 데이터를 사용하여 새로운 키를 생성

t-tls: encrypting data

  • TCP는 데이터 바이트 스트림 추상화를 제공한다.
  • 질문: TCP 소켓에 쓰여진 데이터가 실시간으로 암호화될 수 있을까요?
    • 답변: MAC(메시지 인증 코드)을 어디에 두어야 할까요? 만약 MAC이 데이터 끝에 있다면, 모든 데이터가 수신되고 연결이 종료될 때까지 메시지 무결성이 보장되지 않는다.

솔루션

  • 스트림을 여러 "레코드" 시리즈로 분할
    • 각 클라이언트-서버 레코드는 MAC을 포함하고 있으며, 이는 Mc를 사용하여 생성된다.
    • 수신자는 도착하는 각 레코드에 대해 동작을 수행할 수 있다.

t-tls 레코드 암호화

  • t-tls 레코드는 대칭 키 Kc를 사용하여 암호화되며, 이는 TCP에 전달된다.

  • 레코드 형식은 다음과 같다.

    • length: 데이터의 길이
    • data: 실제 데이터
    • MAC: 메시지 인증코드

t-tls: encrypting data(more)

데이터 스트림에 대한 가능한 공격

  1. 재정렬(re-ordering)
    • 공격자가 중간에서 TCP 세그먼트를 가로채고 순서를 재조정한다.
    • 암호화되지 않은 TCP 헤더의 시퀀스 번호를 조작하여 발생한다.
  2. 재전송(replay)
    • 이전에 전송된 메시지를 다시 재전송하는 공격이다.

솔루션

  1. TLS 시퀀스 번호 사용
    • 데이터와 TLS 시퀀스 번호를 포함하여 MAC에 통합한다.
    • 이를 통해 메시지 순서와 무결성을 보장한다.
  2. nonce 사용
    • 각 메시지에 고유한 nonce(임의의 일회성 숫자)를 포함시켜 재전송 공격을 방지한다.
    • nonce는 매번 다른 값을 가지므로, 동일한 메시지가 재전송되더라도 nonce가 달라져 무효화된다.

t-tls 연결 종료(connection close)

  • 잘림 공격(truncation attack)
    • 공격 방식: 공격자가 TCP 연결 종료 세그먼트를 위조한다.
    • 결과: 한쪽 또는 양쪽이 실제보다 적은 데이터가 존재한다고 생각하게 만든다.
  • 해결책(solution)
    • 레코드 유형 도입
      • 유형 0: 데이터 전송을 위한 레코드
      • 유형 1: 연결 종료를 위한 레코드
    • MAC 계산 방법: 이제 데이터, 유형, 시퀀스 번호를 사용하여 MAC을 계산한다.
  • MAC 계산식: Kc(length,type,data,MAC)

Transport-layer security(TLS)

  • TLS의 역할
    • TLS는 애플리케이션이 사용할 수 있는 API를 제공한다.
    • 보안 계층으로 작동하여 어플리케이션 간의 데이터 전송을 보호한다.
  • HTTP 관점에서 본 TLS
    • HTTP 1.0: 전통적인 HTTP 프로토콜, 암호화되지 않은 텍스트 전송
    • HTTP/2: 향상된 성능과 효율성을 제공하는 HTTP 프로토콜
    • HTTP/2 + TLS: HTTP/2를 TLS 위에 구현하여 데이터 전송의 보안성을 강화
    • HTTP/2(슬림버전) + QUIC: UDP를 기반으로 한 QUIC 프로토콜을 사용하여 더 빠르고 효율적인 연결을 제공
      • HTTP/3: HTTP/2의 슬림 버전과 QUIC을 결합한 최신 프로토콜

TLS: 1.3 cipher suite(암호 모음)

암호 모음(Cipher Suite)

  • 암호 모음은 키 생성, 암호화, 메시지 인증 코드(MAC), 디지털 서명에 사용될 수 있는 알고리즘 집합을 의미한다.

TLS 1.3

  • 도입 연도: 2018년
  • 특징: TLS 1.2(2008년)보다 제한된 암호 모음 선택을 제공한다.
    • 선택지: TLS 1.2는 37가지 선택지를 제공하는 반면, TLS 1.3은 5가지 선택지로 제한된다.
    • 키 교환 방식: Diffie-Hellman(DH) 방식만을 요구하며, DH나 RSA 방식을 사용하는 TLS 1.2와는 차이가 있다.
    • 암호화 및 인증 알고리즘: 데이터에 대해 일련의 암호화 및 인증 대신 결합된 암호화 및 인증 알고리즘("인증된 암호화")을 사용한다.
      • 이 중 4가지 알고리즘은 AES 기반이다.
    • HMAC: SHA(256 또는 284) 암호 해시 함수를 사용한다.

TLS 1.3 handshake: 1 RTT

스크린샷 2024-07-16 120450.png
63.5 kB

  1. Client Hello
    • 역할: 클라이언트가 서버와 통신을 시작하며, 자신이 지원하는 암호 모음(Cipher Suites)과 Diffie-Hellman(DH) 키 합의 프로토콜 및 매개변수를 서버에 알린다.
    • 내용
      • 클라이언트가 지원하는 암호 모음(Cipher Suites)
      • DH 키 합의 프로토콜 및 매개변수
  1. Server Hello
    • 역할: 서버는 클라이언트의 요청에 응답하며, 선택된 암호 모음, DH 키 합의 프로토콜 및 매개변수를 클라이언트에게 전달한다. 또한, 서버 서명 인증서를 클라이언트에게 제공한다.
    • 내용:
      • 서버가 선택한 암호 모음(Cipher Suite)
      • DH 키 합의 프로토콜 및 매개변수
      • 서버 서명 인증서
  1. Client Verification
    • 역할: 클라이언트는 서버의 인증서를 확인하고, 이를 바탕으로 키를 생성한다. 이 단계가 완료되면 클라이언트는 어플리케이션 요청을 보낼 준비가 된다.(e.g. HTTPS GET 요청)
    • 내용
      • 서버 인증서 확인
      • 키 생성
      • 어플리케이션 요청 준비 완료

TLS 1.3 handshake: 0 RTT

TLS 1.3의 0 RTT 핸드셰이크는 클라이언트와 서버 간의 보안 연결을 이전보다 더 빠르게 설정할 수 있도록 설계된 절차이다. 이는 초기 핸드셰이크 단계에서 이미 어플리케이션 데이터를 전송할 수 있게 해준다.

  1. 클라이언트 헬로(Client Hello)
    • 역할: 클라이언트는 서버와의 연결을 재개하고, 지원하는 암호 모음(Cipher Suites), Diffie-Hellman(DH) 키 합의 프로토콜 및 매개변수를 서버에 알린다. 또한 초기 헬로 메시지에 암호화된 애플리케이션 데이터를 포함시킨다.
    • 내용
      • 클라이언트가 지원하는 암호 모음(Cipher Suites)
      • DH 키 합의 프로토콜 및 매개변수
      • 어플리케이션 데이터(암호화됨)
  1. 서버 헬로(Server Hello)
    • 역할: 서버는 클라이언트의 요청에 응답하며, 선택된 암호 모음, DH 키 합의 프로토콜 및 매개변수를 클라이언트에게 전달한다. 또한, 초기 헬로 메시지에 암호화된 어플리케이션 데이터에 대한 응답을 포함시킨다.
    • 내용
      • 서버가 선택한 암호 모음(Cipher Suite)
      • DH 키 합의 프로토콜 및 매개변수
      • 어플리케이션 데이터(응답, 암호화됨)

IP Sec

IP Sec는 사용자 트래픽과 제어 트래픽(BGP, DNS 메시지 등) 모두에 대해 데이터그램 수준의 암호화, 인증, 무결성을 제공하는 보안 프로토콜이다. IP Sec는 두 가지 모드로 동작한다. 전송 모드(Transport Mode)터널 모드(Tunnel Mode) 이다.

  1. 전송 모드(Transport Mode)
    • 설명: 전송 모드에서는 데이터그램의 페이로드(Payload)만이 암호화되고 인증된다.
    • 특징
      • 암호화와 인증이 데이터그램의 내용에만 적용된다.
      • IP 헤더는 암호화되지 않는다.
      • 호스트 간 직접 통신에 주로 사용된다.
    • 그림 설명: 전송 모드에서는 데이터그램의 페이로드 부분이 빨간색으로 표시되어 암호화 및 인증됨을 나타내고, 페이로드를 제외한 나머지 부분은 암호화되지 않은 상태로 유지된다.
  1. 터널 모드(tunnel mode)
    • 설명: 터널 모드에서는 데이터그램 전체가 암호화되고 인증된다.
    • 특징
      • 원본 데이터그램이 전체적으로 암호화되고, 새로운 IP 헤더를 추가하여 새로운 데이터그램으로 캡슐화된다.
      • VPN(Virtual Private Network)에서 흔히 사용된다.
      • 데이터그램이 게이트웨이 간에 터널링되어 전송된다.
    • 그림 설명: 터널 모드에서는 전체 데이터그램이 암호화되어 파란색으로 표시되고, 새로운 IP 헤더가 추가되어 목적지까지 터널링됨을 나타낸다.

Two IPsec protocols

IPSec(Internet Protocol Security)에는 두 가지 주요 프로토콜이 있다. Authentication Header(AH) 프로토콜Encapsulation Security Protocol(ESP)

  1. Authentication Header(AH) 프로토콜
    • 기능: AH 프로토콜은 출처 인증과 데이터 무결성을 제공하지만, 기밀성(암호화)은 제공하지 않는다.
    • 특징:
      • 출처 인증: 데이터그램이 인증된 출처에서 온 것임을 보장한다.
      • 데이터 무결성: 데이터그램이 전송 중에 변경되지 않았음을 보장한다.
      • 기밀성 없음: 데이터 자체는 암호화되지 않으므로, 중간에서 데이터를 볼 수 있다.
  1. Encapsulation Security Protocol(ESP)
    • 기능: ESP는 출처 인증, 데이터 무결성 및 기밀성을 제공한다.
    • 특징:
      • 출처 인증: 데이터그램이 인증된 출처에서 온 것임을 보장한다.
      • 데이터 무결성: 데이터그램이 전송 중에 변경되지 않았음을 보장한다.
      • 기밀성: 데이터가 암호화되어 중간에서 데이터를 볼 수 없다.
      • 더 널리 사용됨: AH보다 ESP가 더 널리 사용된다. 이는 ESP가 기밀성까지 제공하기 때문이다.

Security Associatoins(SAs)

Security Association(SA) 는 IPsec 프로토콜에서 데이터 전송 전에 보안 매개변수를 설정하기 위해 사용된다. 이는 보안된 통신을 위해 필요하며, 방향성이 있다. 즉, 송신자에서 수신자로의 데이터 전송에 대해 각각의 SA가 설정된다.

  1. 보안 연결 설정

    • 데이터 전송 전에 송신자와 수신자 간에 Security Association(SA) 가 설정된다.
    • 이는 방향성이 있으므로, 송신에서 수신으로, 수신에서 송신으로 각각 SA가 필요하다.
  2. 상태 정보 유지

    • 송신자와 수신자는 SA에 대한 상태 정보를 유지한다.

    • 이는 TCP 연결에서 상태 정보를 유지하는 것과 유사하다.

    • IP는 비연결성 프로토콜이지만, IPsec은 연결 지향적이다.

IPsec Datagram

  1. 새 IP 헤더(New IP Header)
    • 터널 모드에서는 원래 IP 헤더와 페이로드를 암호화하기 위해 새로운 IP 헤더가 추가된다.
  2. ESP 헤더(ESP Header)
    • SPI(Security Parameters Index): 수신 측에서 수신한 데이터가 어떤 SA에 해당하는 식별합니다.
    • Sequence Number: 재전송 공격을 방지하기 위해 사용된다.
  3. 원래 IP 헤더(Original IP Header) 및 원래 IP 데이터그램 페이로드(Original IP Datagram Payload)
    • 원래의 IP 헤더와 데이터 페이로드는 ESP 헤더 뒤에 위치하며, 터널 모드에서는 암호화된다.
  4. ESP 트레일러(ESP Trailer)
    • 패딩(Padding): 블록 암호화 방식에서 데이터 길이를 블록 크기의 배수로 맞추기 위해 추가한다.
    • 패딩 길이(Pad Length): 패딩의 길이를 나타낸다.
    • 다음 헤더(Next Header): 원래 데이터그램의 다음 포로토콜을 나타낸다.
  5. ESP 인증(ESP Authentication)
    • 인증 필드에는 MAC(Message Authentication Code)이 포함되어 있으며, 공유된 비밀키로 생성된다.
    • 이 필드는 데이터그램의 무결성을 확인하고 인증하는 데 사용된다.

ESP tunnel mode: actions

ESP(Encapsulating Security Payload) 터널 모드에서는 네트워크 트래픽을 암호화하고 인증하고 안전하게 전송한다.

동작 과정

  1. ESP 트레일러 추가

    • 원래 데이터그램에 ESP 트레일러를 추가한다. 이 트레일러는 패딩(padding) 및 패딩 길이(pad length)와 다음 헤더(next header) 정보를 포함합니다.
  2. 암호화

    • SA(Security Association)에서 지정된 알고리즘과 키를 사용하여, ESP 트레일러가 추가된 데이터그램을 암호화한다. 이때 원래 IP 헤더와 페이로드가 포함된 데이터 전체가 암호화된다
  3. ESP 헤더 추가

    • 암호화된 데이터 앞에 ESP 헤더를 추가합니다. 이 헤더에는 SPI(Security Parameters Index)와 시퀀스 번호(sequence number)가 포함됩니다.
  4. MAC 생성

    • SA에서 지정된 알고리즘과 키를 사용하여 인증 MAC(Message Authentication Code)를 생성한다. 이는 데이터의 무결성을 검증하는 데 사용된다.
  5. MAC 추가

    • 생성된 MAC을 페이로드에 추가한다. 이로써 인증된 페이로드가 완성된다.
  6. 새로 IP 헤더 생성

    • 새로운 IP 헤더를 생성하고, 새로운 IP 헤더 필드를 추가하여 터널 끝점(tunnel endpoint)으로 주소를 설정한다. 이 새로운 IP 헤더는 암호화된 데이터를 터널을 통해 전송하는 데 사용됩니다.

IPsec sequence numbers

IPsec(Internet Protocol Security) 시퀀스 번호는 보안 연관(Security Assoication, SA) 내에서 데이터그램의 순서를 관리하는 데 사용된다. 이를 통해 데이터그램의 재생 공격을 방지하고 데이터의 무결성을 유지할 수 있다.

동작 방식

  1. 새 SA에서 시퀀스 번호 초기화

    • 새로운 보안 연관(SA)이 설정될 때 송신자는 시퀀스 번호를 0으로 초기화한다.
  2. 데이터그램 전송 시 시퀀스 번호 증가

    • 송신자는 데이터그램을 보낼 때마다 시퀀스 번호 카운터를 증가시킨다.
    • 증가된 시퀀스 번호는 데이터그램의 시퀀스 번호 필드에 삽입된다.

목표

  • 재생 공격 방지
    • 공격자가 데이터그램을 가로채어 재전송하는 것을 막기 위해 사용된다.
    • 중복된, 인증된 IP 패킷이 수신될 경우 서비스 장애를 유발할 수 있으므로 이를 방지한다.

방법

  • 중복 체크
    • 수신자는 중복된 데이터그램을 검사한다.
    • 수신된 모든 패킷을 추적하지 않고, 대신에 윈도우(window) 방식을 사용하여 시퀀스 번호를 관리한다.

IPsec Security Databases

Security Policy Database(SPD)

  • 목적
    • 특정 데이터그램에 대해 IPsec을 사용할지 여부를 결정하는 정책을 저장한다.
  • 내용
    • 보안 정책이 저장된다.
    • 데이터그램을 처리할 때 어떤 보안 연결(SA)을 사용할지 결정한다.
  • 기능
    • 소스와 목적지 IP 주소 및 프로토콜 번호와 같은 기준을 사용하여 적절한 SA를 선택한다.
  • 역할
    • SPD는 무엇을 해야 하는지를 규정한다.

**Security Assoication Database(SAD)** - 목적 - 보안 연결(SA)의 상태 정보를 저장한다. - 내용 - 보안 연결(SA)의 상태 정보가 저장된다 - 기능 - IPsec 데이터그램을 전송할 때 SAD에 접근하여 데이터그램을 어떻게 처리할지 결정한다. - IPsec 데이터그램이 수신될 때, 수신자는 SPI(Security Parameter Index)를 검사하여 SAD를 참조하고 데이터그램을 처리한다. - 역할 - SAD는 어떻게 해야 하는지를 규정한다.

요약

  • SPD: 어떤 행동을 해야 하는지(what to do)에 대한 정책을 정의한다.
  • SAD: 그 행동을 어떻게 수행할지(How to do it)에 대한 세부 정보를 제공한다.

Summary: IPsec services

IPsec의 보안 서비스를 요약하고 있다. Trudy라는 공격자가 R1과 R2 사이에 의치해 있으며, 암호화 키를 모르는 상황을 가정하자. Trudy가 할 수 있는 몇 가지 공격 시나리오를 설명하고, IPsec이 어떻게 이러한 공격을 방지할 수 있는지에 대해 설명한다.

  1. Will Trudy be able to see original contents of datagram? How about source, dest IP address, transport protocol, application port?
    • IPsec의 역할: IPsec은 데이터그램의 원래 내용을 암호화하여 Trudy가 내용을 읽지 못하게 한다. ESP(Encapsulation Security Payload)를 사용하면 데이터그램의 페이로드 뿐만 아니라 IP 헤더도 암호화할 수 있다.
    • 효과: Trudy는 데이터그램의 내용을 볼 수 없고, 소스 및 목적지 IP 주소, 전송 프로토콜, 어플리케이션 포트도 알 수 없다.
  1. Flip bits without detection?
    • IPsec의 역할: IPsec은 데이터그램의 무결성을 확인하기 위해 MAC(Message Authentication Code)를 사용합니다. ESP와 AH(Authentication Header)는 데이터그램이 전송 중에 수정되지 않았음을 보장한다.
    • 효과: Trudy가 데이터그램의 비트를 변경하면 수신 측에서 무결성 검사가 실패하게 되어, 변경된 데이터그램이 탐지된다.
  1. Masquerade as R1 using R1’s IP address?
    • IPsec의 역할: IPsec은 인증을 통해 발신자의 신원을 확인한다. SA(Security Association)는 신뢰할 수 있는 엔티티 간에만 설정되므로, Trudy는 R1로 가장할 수 없다.
    • 효과: Trudy가 R1의 IP 주소를 사용하여 자신을 R1로 가장할 수 없다
  1. Replay a datagram?
    • IPsec의 역할: IPsec은 재전송 공격을 방지하기 위해 시퀀스 번호를 사용한다. 수신자는 데이터그램의 시퀀스 번호를 확인하여 중복된 데이터그램을 거부한다.
    • 효과: Trudy가 이전에 캡처한 데이터그램을 재전송하려고 해도 수신자는 이를 탐지하고 거부한다.

IKE: Internt Key Exchange

Internet Key Exchange

  • 이 슬라이드는 IPsec의 보안 연관(Security Association, SA)을 수동으로 설정하는 것과 자동화된 방법인 IKE(Internet Key Exchange)를 사용하는 것의 차이점을 설명한다.

문제점: 수동 키 설정의 비효율성

  • 수동 키 설정(manual keying)은 많은 수의 엔드포인트가 있는 VPN에서 비효율적이다. 각 엔드포인트마다 이러한 설정을 수동으로 해야하는데, 이는 시간과 노력이 많이 드는 작업이다.

해결책: IPsec IKE(Internet Key Exchange)

  • IKE(Internet Key Exchange)는 이러한 수동 설정의 문제를 해결하기 위해 사용된다. IKE는 자동으로 IPsec의 SA를 설정하고 관리하는 프로토콜이다.
  • 주요기능
    • 자동으로 키 교환
    • 보안 연관 설정 자동화
    • 키 관리 및 재협상

IKE를 사용하면 수 백개의 엔드포인트가 있는 큰 규모의 VPN에서도 효율적으로 SA를 관리할 수 있다. 이는 보안과 운영 효율성을 동시에 개선할 수 있는 중요한 방법이다.

IKE: PSK and PKI

IPsec에서 인증을 수행하기 위한 두 가지 주요 방법인 PSK(Pre-Shared Key)와 PKI(Public Key Infrastructure)를 설명한다.

Authentication(Prove Who You Are)

  • PSK(Pre-Share Secret): 사전에 공유된 비밀을 사용하여 인증한다.
  • PKI(Public/Private Keys and Certifivates): 공개 키와 개인 키, 그리고 인증서를 사용하여 인증한다.

PSK(Pre-Shared Secret)

  • 초기 상태: 양쪽 모두 사전에 공유된 비밀을 알고 있다.
  • 과정:
    • IKE를 사용하여 서로를 인증한다.
    • IPsec SA를 생성한다. 여기에는 암호화 키와 인증 키가 포함된다
    • 각 방향에 대해 하나의 SA를 생성한다.

PKI(Public/Private Keys and Certificates)

  • 초기 상태: 양쪽 모두 공개/개인 키 쌍과 인증서를 가지고 있다.
  • 과정:
    • IKE를 실행하여 서로를 인증한다.
    • IPsec SA를 얻는다. 각 방향에 대해 하나의 SA를 생성한다.
    • SSL의 핸드셰이크와 유사하다.

요약

  • PSK는 사전에 공유된 비밀을 사용하여 간단하게 설정할 수 있지만, 대규모 네트워크에서는 관리가 어려울 수 있다.
  • PKI는 공개 키와 인증서를 사용하여 더 높은 보안을 제공하며, 대규모 네트워크에서도 효율적으로 관리할 수 있다.

IKE phases

phase 1: Establish Bi-Directional IKE SA

  • 목적: 양방향 IKE SA(Secure Association)를 설정한다.
    • 주의: IKE SA는 IPsec SA와 다르다.
    • 별칭: ISAKMP(Internet Security Association and Key Management Protocol) 보안 연결

phase 2: Use ISAKMP to Securely Negotiate IPsec Pair of SAs

  • 목적: ISAKMP를 사용하여 IPsec SA 쌍을 안전하게 협상한다.

Phase 1 Modes

  • Aggressive Mode

    • 특징: 더 적은 메시지를 사용하여 빠르게 IKE SA를 설정한다.
  • Main Mode

    • 특징: 신원 보호를 제공하고 더 유연하다.
    • 장점: 공격으로부터 더 안전하게 신원 정보를 보호할 수 있다.

IPsec summary

Key Exchange(IKE)

  • 목적: 알고리즘, 비밀 키, SPI(Security Parameter Index) 번호를 교환한다.
  • 작동 방식: IKE 메시지 교환을 통해 필요한 정보를 안정하게 교환한다.

Protocols

  • AH(Authentication Header)
    • 기능: 무결성과 출처 인증을 제공한다.
  • ESP(Encapsulating Security Payload)
    • 기능: AH와 함께 사용할 경우 암호화 기능을 추가로 제공한다
    • 요약: AH는 무결성과 인증을, ESP는 추가로 암호화를 제공한다.
  • IPsec Peers
    • 유형:
      • 두 개의 엔드 시스템
      • 두 개의 라우터 또는 방화벽
      • 라우터/방화벽과 하나의 엔드 시스템
    • 설명: IPsec 피어는 위와 같이 다양한 조합이 가능하다.

802.11: authentication, encryption

Process Overview

  1. Association with Access Point(AP)
    • 목적: 무선 링크를 통해 AP와 통신을 설정하는 것
    • 설명: 이동 장치(모바일 디바이스)는 무선 네트워크에 연결되기 위해 먼저 근처의 AP와 연결을 설정해야 한다.
  1. Authentication to Network
    • 목적: 네트워크에 인증을 받는 것
    • 설명: AP와 연결된 후, 이동 장치는 네트워크에 인증을 받아야 한다. 이는 네트워크 접근을 제어하고 보안을 유지하기 위함이다.
  1. Componenets
    • Mobile: 무선 네트워크에 연결하려는 이동 장치(e.g. 노트북, 스마트폰)
    • AP(Access Point): 무선 네트워크의 중앙 장치로, 이동 장치가 연결될 수 있는 지점이다.
    • AS(Authentication Server): 네트워크의 인증 서버로, 이동 장치의 인증을 처리한다.
    • Wired Network: AP가 연결된 유선 네트워크이다.

802.11 Authentication and Encrpytion - Discover of Security Capabilities

이 슬라이드는 802.11 프로토콜에서 인증 및 암호화 기능을 발견하는 과정을 설명한다.

단계 1: 보안 기능 발견

  1. AP 광고(Advertise)
    • AP(Access Point)는 자신의 존재와 지원하는 인증 및 암호화 형태를 광고한다.
    • 이동 장치(모바일 디바이스)는 이 광고를 수신하고 특정 인증 및 암호화 형태로를 요청한다.
  1. 장치 요청(Request)
    • 이동 장치는 특정한 형태의 인증 및 원하는 암호화를 요청한다.
    • 이 과정은 장치가 아직 인증되고 않았고 암호화 키를 갖고 있지 않지만, 이미 AP와 메시지를 교환하고 있다는 것을 의미한다.

802.11: authentication, encryption

단계 2: 상호 인증 및 공유 대칭 키 파생

  1. AS 및 모바일 장치 간의 공유 비밀
    • AS(Authentication Server)와 모바일 장치는 이미 공유된 공통 비밀(e.g. 비밀번호)을 가지고 있다.
  1. 공유 비밀, 논스 및 암호화 해시를 사용한 인증
    • AS와 모바일 장치는 공유된 비밀과 넌스(Nonces)를 사용하여 인증을 수행한다.
    • 넌스는 릴레이 공격을 방지하기 위해 사용되며, 암호화 해시는 메시지 무결성을 보장한다.
  1. 대칭 세션 키 파생
    • AS와 모바일 장치는 공유된 비밀을 사용하여 대칭 세션 키를 파생한다
    • 이 대칭 키는 이후의 통신에서 사용된다.

802.11: WPA3 handshake

WPA3 프로토콜에서의 핸드 셰이크 과정을 설명한다. WPA3는 Wi-Fi 네트워크의 보안을 강화하기 위한 최신 프로토콜로, 특히 강화된 인증 및 암호화 메커니즘을 사용한다.

주요 개념

  • Nonce: 한 번만 사용되는 임의의 숫자로, 재사용 공격을 방지
  • HMAC(Hash-based Message Authentication Code): 메시지의 무결성과 인증을 확인하는 해시 함수 기반의 코드
  • 대칭 키 암호화: 송신자와 수신자가 동일한 키를 사용하여 데이터를 암호화하고 복호화하는 방식

단계별 설명

  1. Initial Setup(초기 설정)
    • 모바일 장치와 인증 서버(AS)는 초기 공유 비밀을 이미 가지고 있다.
    • 이를 바탕으로 세션 키 KM-AP를 파생한다.
  1. Step a
    • AS 생성 논스 NonceAS를 생성한다.
    • 이 논스를 모바일 장치로 전송한다.
  1. Step b
    • 모바일 장치 수신 NonceAS
      • 모바일 장치는 인증 서버로부터 NonceAS를 수신한다.
      • 모바일 장치 생성 NonceM
        • 모바일 장치는 자체적으로 넌스 NonceM를 생성한다.
      • 대칭 공유 세션 키 KM-AP 생성
        • 모바일 장치는 NonceAS, NonceM 그리고 초기 공유 비밀을 사용하여 대칭 공유 세션 키 KM-AP를 생성한다.
      • 넌스와 HMAC 전송
        • 모바일 장치는 NonceM와 NonceAS 및 초기 공유 비밀을 사용하여 생성한 HMAC 값을 인증 서버로 전송한다.
  1. Step c:
    • AS 파생 대칭 공유 세션 키 KM-AP
      • 인증 서버는 모바일 장치로부터 NonceM와 HMAC 값을 수신한다.
      • NonceAS, NonceM, 그리고 초기 공유 비밀을 사용하여 대칭 공유 세션 키 KM-AP를 파생한다.
  1. Discovery of Security Capabilities (보안 기능 발견):
    • AP가 자신의 존재와 제공하는 인증 및 암호화 형태를 광고한다.
      • AP는 자신이 지원하는 인증 및 암호화 메커니즘을 브로드캐스트한다.
    • 장치가 원하는 인증 및 암호화 형태를 요청한다.
      • 모바일 장치는 네트워크에 연결하기 위해 AP에게 특정 인증 및 암호화 방법을 요청한다.
    • 이 시점에서는 장치와 AP가 이미 메시지를 교환하고 있지만, 아직 인증되지 않았고 암호화 키도 없는 상태이다.
  1. Mutual Authentication, Key Derivation (상호 인증, 키 파생):
    • AS(인정 서버)와 모바일 장치가 초기 공유 비밀(e.g. password)을 이미 가지고 있다.
    • AS와 모바일 장치는 공유 비밀과 넌스(Nonce)를 사용하여 서로를 인증하고 세션 키를 파생한다.
      • AS와 모바일 장치는 공유 비밀, 논스, 그리고 암호화 해싱을 사용하여 서로를 인증합니다.
      • 이 과정에서 재전송 공격을 방지하기 위해 논스를 사용한다.
  1. Shared Symmetric Key Distribution(공유 대칭 키 배포)
    • 모바일 장치와 AS에서 동일한 세션 키가 파생된다.
      • AS와 모바일 장치는 상호 인증 과정에서 파생된 대칭 세션 키를 사용한다.
    • AS는 공유 대칭 세션 키를 AP에게 전달한다.
      • AP는 AS로부터 전달받은 대칭 세션 키를 사용하여 모바일 장치와의 통신을 암호화한다.

802.11: Authentication, Encryption

  1. Discovery of Security Capabilities (보안 기능 발견):

    • AP가 자신의 존재와 제공하는 인증 및 암호화 형태를 광고합니다.
      • AP는 자신이 지원하는 인증 및 암호화 메커니즘을 브로드캐스트합니다.
    • 장치가 원하는 인증 및 암호화 형태를 요청합니다.
      • 모바일 장치는 네트워크에 연결하기 위해 AP에게 특정 인증 및 암호화 방법을 요청합니다.
    • 이 시점에서는 장치와 AP가 이미 메시지를 교환하고 있지만, 아직 인증되지 않았고 암호화 키도 없는 상태입니다.
  2. Mutual Authentication, Key Derivation (상호 인증, 키 파생):

    • AS(인증 서버)와 모바일 장치가 초기 공유 비밀(예: 패스워드)을 이미 가지고 있습니다.
    • AS와 모바일 장치는 공유 비밀과 논스(Nonce)를 사용하여 서로를 인증하고 세션 키를 파생합니다.
      • AS와 모바일 장치는 공유 비밀, 논스, 그리고 암호화 해싱을 사용하여 서로를 인증합니다.
      • 이 과정에서 재전송 공격을 방지하기 위해 논스를 사용합니다.
  3. Shared Symmetric Key Distribution (공유 대칭 키 배포):

    • 모바일 장치와 AS에서 동일한 세션 키가 파생됩니다.
      • AS와 모바일 장치는 상호 인증 과정에서 파생된 대칭 세션 키를 사용합니다.
    • AS는 공유 대칭 세션 키를 AP에게 전달합니다.
      • AP는 AS로부터 전달받은 대칭 세션 키를 사용하여 모바일 장치와의 통신을 암호화합니다.
  4. Encrypted Communication over WiFi (WiFi를 통한 암호화된 통신):

    • 동일한 키가 모바일 장치와 AS에서 파생됩니다.
    • AS는 AP에게 공유 대칭 세션을 알립니다.
    • 모바일 장치와 AP 간의 통신은 암호화된 상태로 이루어집니다.
      • 이를 통해 모바일 장치와 AP, 그리고 네트워크 전체의 통신이 안전하게 보호됩니다.





Authentication, encryption in 4G LTE



주요 요소

  • 모바일 장치: 사용자 장치로, 세션 키 KBS-M과 KHSS-M을 사용하여 통신을 암호화한다.
  • 기지국(Base Station, BS): 모바일 장치와 연결을 관리하며, 파생 세션 키 KBS-M을 사용하여 통신을 암호화한다.
  • 이동성 관리 엔티티(Mobility Management Entity, MME): 네트워크 내에서 모바일 장치의 이동성을 관리한다.
  • 홈 가입자 서비스(Home Subscriber Service, HSS): 홈 네트워크에 위치하며, 인증 및 구독 정보를 관리한다. 궁극적인 인증 기관이다


a단계

  1. Attach 요청
    • 모바일 장치는 "attach" 요청 메시지를 보낸다. 이 메시지에는 다음이 포함된다.
      • IMSI(International Mobile Subscriber Identity): 모바일 장치의 고유 식별자
      • 방문 네트워크 정보: 모바일 장치가 현재 연결하려고 하는 네트워크에 대한 정보
    • 이 attach 메시지는 먼저 기지국(BS)로 전송된다.

  1. 방문 네트워크로의 전송
    • 기지국은 attach 메시지를 방문 네트워크의 MME(Mobility Management Entity)로 전달한다.
    • MME는 이 메시지를 홈 네트워크의 HSS(Home Subscriber Service)로 다시 전달한다.

  1. IMSI 확인
    • HHS IMSI를 사용하여 모바일 장치의 홈 네트워크를 식별한다. 이 정보를 통해 홈 네트워크는 인증을 진행할 수 있다.



b단계: HSS가 인증 토큰(auth_token)과 예상되는 인증 응답 토큰(xres_HSS)을 생성하는 과정을 설명한다.

  1. 사전 공유 비밀 키 사용
    • HSS는 사전에 공유된 비밀 키 KHSS-M을 사용하여 인증 토큰(auth_token)과 예상되는 인증 응답 토큰(xres_HSS)을 생성한다.

  1. 인증 토큰(auth_token) 생성
    • auth_token은 KHSS-M을 사용하여 HSS에 의해 암호화된 정보를 포함한다.
    • 이 토큰을 통해 모바일 장치는 토큰을 생성한 주체가 공유된 비밀 키를 알고 있다는 사실을 확인할 수 있다.

  1. HSS가 auth_token과 xres_HSS 생성
    • auth_token에는 암호화된 정보가 포함되어 있으며, 이 정보는 모바일 장치가 네트워크를 인증했음을 나타낸다.
    • xres_HSS는 HSS가 나중에 사용할 수 있도록 보관한다.

  1. AUTH_RESP 메시지 전송
    • HSS는 auth_token과 xres_HSS 및 기타 필요한 키를 포함한 AUTH_RESP 메시지를 생성하여 MME에 전송한다.
    • 이 메시지는 다시 방문 네트워크를 통해 모바일 장치에 전달된다.

  1. 모바일 장치 인증
    • 모바일 장치는 AUTH_RESP 메시지의 auth_token을 검증하여 네트워크를 인증한다.
    • auth_token을 올바르게 생성한 주체는 KHSS-M를 알고 있어야 하므로, 모바일 장치는 네트워크가 신뢰할 수 있는 네트워크임을 확인할 수 있다.



c단계: 모바일 장치의 인증 응답

  1. 비밀 키를 사용한 계산
    • 모바일 장치는 자신의 비밀 키를 사용하여 HSS와 동일한 암호화 계산을 수행하여 응답 토큰 resM을 생성한다.
    • 이 과정은 HSS가 xres_HSS를 계산한 방법과 동일한 방식으로 수행된다.

  1. 응답 토큰 생성
    • 모바일 장치는 HSS가 생성한 xres_HSS와 동일한 방법으로 응답토큰 resM을 생성한다.
    • 이를 통해 모바일 장치는 자신이 HSS와 동일한 비밀 키를 공유하고 있음을 증명할 수 있다.

  1. MME로 전송
    • 생성된 응답 토큰resM을 MME에 전송한다.
    • 이 응답은 모바일 장치가 네트워크에 인증되었음을 나태난다

  1. 인증 확인
    • MME는 모바일 장치로부터 받은 resM과 HSS로부터 받은 xres_HSS를 비교한다.
    • 두 값이 일치하면, 모바일 장치는 성공적으로 인증된 것으로 간주된다.



d 단계: 4G LTE에서의 인증 및 암호화

  1. MME와 HSS의 응답 비교
    • MME는 모바일 장치로부터 받은 resM값을 HSS에서 계산한 xresHSS값과 비교한다.
    • 두 값이 일치하면, 모바일 장치는 성공적으로 인증된 것으로 간주된다.

  1. 인증의 이유
    • 왜 이 방법으로 인증이 이루어지는가?
      • resM와 xresHSS가 일치하면, 이는 모바일 장치와 HSS가 동일한 비밀 키를 공유하고 있음을 의미한다.
      • 이는 모바일 장치가 네트워크에 올바르게 인증되었음을 보장한다.

  1. BS에게 인증 상태 알림
    • MME는 기지국(BS)에게 모바일 장치가 인증되었음을 알린다.
    • 이를 통해 BS는 모바일 장치와의 통신을 시작할 수 있다.

  1. 암호화 키 생성
    • MME는 BS와 모바일 장치 간의 통신을 위해 필요한 암호화 키를 생성한다.
    • 이러한 키는 모바일 장치와 BS 간의 데이터를 안전하게 암호화하고 보호하는 데 사용된다.



e 단계: 4G LTE에서의 인증 및 암호화
모바일 장치와 기지국이 4G 무선 채널을 통해 데이터를 암호화하고 제어 프레임을 보호하기 위한 키를 결정하는 과정을 설명한다.

  1. 키 결정
    • 모바일 장치와 기지국(BS)은 4G 무선 채널을 통해 데이터를 암호화하기 위한 키를 결정한다.
    • 이 과정을 상호 간의 안전한 통신을 보장한다.
  2. AES 암호화 사용 가능
    • 결정된 키는 AES(Advanced Encryption Standard)와 같은 강력한 암호화 알고리즘을 사용하여 데이터를 암호화하고 사용될 수 있다.

'학교수업 > 컴퓨터망' 카테고리의 다른 글

Chapter7: Wireless and Mobile Networks  (4) 2024.07.14
Chapter6: The Link Layer and LANs  (0) 2024.07.12
Chapter5 Network Layer: Control Plane  (0) 2024.07.09
Chapter4: Network Layer-Data Plane  (0) 2024.07.04
Chapter3: Transport Layer-2  (0) 2024.07.04

Wireless and Mobile Networks: context

  1. 무선 전화 가입자 수 증가
  2. 모바일 브로드밴드 연결 장치 증가
  3. 두 가지 주요 도전 과제
    • 무선(Wireless): 무선 링크를 통한 통신
    • 모빌리티(Mobility): 네트워크 연결 지정을 변경하는 모바일 사용자를 처리하는 문제

Chapter7 outline

  • introduction

Wireless

  • Wireless Links and Network Charateristics(무선 링크 및 네트워크 특성)
  • WiFi: 802.11 Wireless LANs(무선 랜)
  • Cellular Networks: 4G and 5G(셀룰러 네트워크)

Mobility(모빌리리티)

  • Mobility Management: Principles(모빌리티 관리 원칙)
  • Mobility Managemet: Practice(모빌리티 관리 실무)
  • Molbility: Impact on Higher-Layer Protocols(모빌리티가 상위 계층 프로토콜에 미치는 영향)

Elements of a wireless network

base station(기지국)

  • 기능
    • 무선 네트워크에서 중요한 역할을 담당
    • 유선 네트워크에 연결되어 있으며, 유선 네트워크와 무선 호스트(단말기) 간의 패킷 전송을 담당
  • 연결 방식:
    • 유선 네트워크 infrastructor에 연결된다.
    • 무선 호스트(e.g. 스마트폰, 노트북)과 연결되어 데이터를 중계한다.
  • 예시:
    • 셀 타워(기지국)
    • 802.11 access point(wifi AP)

Relay(중계기)

  • 역할
    • 유선 네트워크와 무선 호스트 사이에서 패킷을 전송
    • 기지국의 영역 내에서 무선 호스트와 데이터를 주고받는다.

Wireless Link(무선 링크)

  • 기능
    • 주로 모바일 장치(e.g. 스마트폰, 태블릿)를 기지국에 연결하는 데 사용
    • 또한 백본 링크(중추 네트워크 연결)로 사용될 수 있다.
  • 접근 방식
    • 다중 접근 프로토콜을 사용하여 링크 접근을 조정한다. 이는 여러 장치가 동일한 무선 채널을 공유할 때 충돌을 피하고 효율적으로 통신할 수 있게 한다.
  • 특성
    • 다양한 전송 속도와 거리, 주파수 대역을 가진다.
    • 무선 링크의 전송 속도는 네트워크의 요구 사항과 사용 환경에 따라 다를 수있다.

Characteristics of Selected Wireless

Element of a wireless network

Infrastructure mode(인프라 모드)

  • 기지국 역할

    • 기지국은 모바일 장치(스마트폰, 노트북 등)를 유선 네트워크에 연결한다.
    • 이는 기지국이 모바일 장치와 유선 네트워크 사이의 중개 역할을 수행함을 의미한다.
  • 핸드오프(Handoff)

    • 핸드오프는 모바일 장치가 연결을 유지하면서 한 기지국에서 다른 기지국으로 전환하는 과정
    • 모바일 장치가 이동하면서 기존 기지국과의 연결을 끊고 새로운 기지국과 연결하여 유선 네트워크에 지속적으로 연결되도록 한다.

Ad Hoc Mode(애드혹 모드)

  • 기지국 없음
    • 애드혹 모드에서는 중앙 기지국이 존재하지 않는다. 즉, 각 장치들이 독립적을 통신한다.
  • 노드 간의 직접 통신
    • 노드들을 링크 범위 내에서 다른 노드와 직접 통신할 수 있다. 이는 장치들 간의 직접 연결을 의미한다
  • 네트워크 자율 구성
    • 노드들은 스스로 조직되어 네트워크를 형성하고, 서로 간의 라우팅을 처리한다. 각 노드가 라우터 역할을 하여 데이터를 전달한다.

Wireless network taxonomy

infrastructure

  • Single hop
    • 호스트가 기지국(e.g. WiFi, 셀룰러)에 연결되고, 기지국이 더 큰 인터넷에 연결된다.
    • e.g. WiFi 액세스 포인트(AP) 또는 셀룰러 타워에 연결된 스마트폰
  • Multiple hops
    • 호스트가 더 큰 인터넷에 연결되기 위해 여러 무선 노드를 통해 데이터를 중계해야 할 수 있다.
    • e.g. mesh network, 여러 중간 노드를 통해 인터넷에 연결

no infrastructure

  • Single hop
    • 기지국이 없으며, 더 큰 인터넷에 연결되지 않는다. 대신, 장치들 간의 직접 연결이 이루어진다.
    • e.g. 블루투스, ad hoc 네트워크
  • Multiple hops
    • 기지국 없이 더 큰 인터넷에 연결되지 않으며, 주어진 무선 노드에 도달하기 위해 여러 노드를 통해 데이터를 중계해야 한다.
    • e.g. 이동 애드혹 네트워크(MANET), 차량 애드혹 네트워크(VANET)

Wireless

Wireless link characteristic

무선 링크와 유선 링크의 중요한 차이점

  1. 신호 강도 감소(decreased signal strength)
    • 무선 신호는 물체를 통해 전파될 때 감쇠한다. 이것을 경로 손실(path loss)이라고 한다.
    • 물리적인 장애물이나 거리 증가로 인해 신호 강도가 약해진다.
  2. 다른 소스의 간섭(interference from other sources)
    • 무선 네트워크는 많은 장치들이 동일한 주파수 대역(e.g. 2.4 GHz)을 공유한다.
    • WiFi, 셀룰러 네트워크, 모터 등 여러 장치들이 간섭을 일으킬 수 있다.
  3. 다중 경로 전파(multiple propagation)
    • 무선 신호는 물체나 지면에 반사되어 여러 경로를 통해 수신기에 도달한다.
    • 이러한 반사로 인해 신호가 목적지에 약간 다른 시간에 도착하게 된다.

이러한 요인들은 무선 링크에서의 통신을 유선 링크보다 훨씬 더 어렵게 만든다. 심지어 point-to-point 통신에서도 이러한 문제들이 발생할 수 있다.

SNR: 신호 대 잡음비(Signal-to-Noise Ratio)

  • SNR는 신호 강도와 잡음 강도의 비율이다.
  • SNR이 클수록 잡음 속에서 신호를 추출하기가 더 쉬워진다. 따라서 높은 SNR은 좋은 것이다.

SNR과 BER 간의 상층 관계(SNR vs BER Tradeoffs)

  • BER(Bit Error Rate)는 비트 오류율로, 전송된 비트 중 오류가 발생하는 비율을 나타낸다.
  • SNR과 BER 사이에는 상충 관계가 있다. 즉, SNR이 증가하면 BER이 감소하고, 그 반대도 성립한다.

주어진 물리 계칭(given physical layer)

  • 송신 전력을 증가시키면 SNR이 증가하고, 이에 따라 BER이 감소한다.

주어진 SNR(given SNR)

  • 주어진 SNR에서 BER 요구사항을 충족하는 물리 계층을 선택하여 최대의 처리량을 달성할 수 있다.
  • e.g QAM256(8 Mbps), QAM16(4 Mbps), BPSK(1 Mbps) 등의 변조 기술과 속도 중에서 선택할 수 있다.

SNR과 BER 간의 상충 관계를 다루는 방법

  • 이동성에 따라 SNR이 변할 수 있기에, 물리 계층을 동적으로 조정해야 할 필요가 있다. 이는 변조 기술과 속도를 조정하는 것을 포함한다.

여러 무신 송신자와 수신자가 만드는 추가적인 문제

Hidden Terminal Problem(숨겨진 터미널 문제)

  • e.g.
    • A, B, C 세 노드가 있다.
    • A, B는 서로의 신호를 들을 수 있다.
    • B, C도 서로의 신호를 들을 수 있다
    • A, C는 서로의 신호를 들을 수 있다
  • 문제
    • 만일 A, C가 동시에 B에게 데이터를 전송하려고 하면, B는 두 신호의 충돌로 인해 데이터를 제대로 수신 못할 수 있다.
    • A, C는 서로의 신호를 들을 수 없기에 충돌이 발생하는지 인식하지 못한다. 따라서 A와 C는 자신들이 문제를 일으키고 있다는 사실을 모른다.

Signal Attenuation(신호 감쇠)

  • e.g.
    • A, B, C 노드가 있다.
    • A, B는 서로의 신호를 들을 수 있다.
    • B, C도 서로의 신호를 들을 수 있다.
    • 하지만 A와 C는 서로의 신호를 들을 수 없다.
  • 문제
    • A와 C는 서로의 신호를 들을 수 없기에 B에게 데이터를 전송할 때 B에서 충돌이 발생할 수 있다.
    • B는 두 신호를 모두 들을 수 있기에 충돌을 감지할 수 있다.
    • A와 C는 서로의 신호를 들을 수 없기에 자신들의 신호가 B에서 충돌하는지 알 수 없다.
  • 그래프 설명
    • 그래프에서 A의 신호 세기와 C의 신호 세기가 공간에 따라 다르게 변하는 것을 보여준다.
    • B는 A와 C의 신호를 모두 듣지만, A와 C는 서로의 신호를 듣지 못하는상황을 나타낸다.

Code Division Multiple Access(CDMA)

  • 개념
    • 고유 코드: 각 사용자에게 고유한 "코드"가 할당된다. 이를 코드 세트 분할이라고 한다.
    • 공유 주파수: 모든 사용자가 동일한 주파수를 공유하지만, 각 사용자는 데이터를 인코딩하기 위해 고유의 "chipping" 시퀀스(즉, 코드)를 사용한다.
  • 장점
    • 동시 전송: 여러 사용자가 동시에 존재하고 전송할 수 있으며, 코드가 직교(orthogonal) 인 경우 최소한의 간섭으로 동작할 수 있다
  • 인코딩
    • 내적(inner product): (원본 데이터) x (칩핑 시퀀스)
  • 디코딩
    • 내적 합계(summed inner product): (인코딩된 데이터) x (칩핑 시퀀스)

WiFi: 802.11 wireless LANs

802.11 LAN archiecture

  • 기본 개념

    • 무선 호스트(wireless host): 무선 네트워크에 연결된기기(e.g. 스마트폰, 노트북 등)
    • 기지국(base station): 무선 호스트가 통신하는 장치로, 흔히 AP(Access Point)라고 불림
  • 주요 구성 요소

    • 기본 서비스 세트(BSS, Basic Service Set) aka "cell"
      • 무선 호스트(wireless hosts): 무선 네트워크에 연결된 사용자 기기들
      • 액세스 포인트(AP: Access Point): BSS 내에서 무선 호스트와 유선 네트워크 간의 통신을 중계하는 기지국
      • ad hoc mode: BSS에서 호스트들만 존재하고, AP가 없는 모드, hosts only.
  • 네트워크 구성

    • BSS1, BSS2
      • 여러 개의 BSS가 스위치나 라우터를 통해 서로 연결되어 있음
      • 각 BSS는 독립적으로 동작하며, AP를 통해 유선 네트워크와 연결됨

802.11: Channels, assocation

채널

  • 스펙트럼 분할: 다양한 주파수에서 채널로 나뉨
    • AP 관리자: AP의 주파수를 선택
    • 간섭 가능성: 인근 AP와 같은 채널을 선택할 수 있음

호스트 연결 절차

  • 도착한 호스트: AP와 연동(associate)해야 함
    1. 채널 스캔: 호스트는 채널을 스캔하며, beacon frames을 청취
      • beacon frames에는 AP의 이름(SSID)과 MAC 주소가 포함됨
    2. AP 선택: 연동할 AP를 선택
    3. 인증 수행: 보통 인증 절차를 수행
    4. DHCP 실행: AP의 서브넷에서 IP 주소를 얻기 위해 보통 DHCP를 실행

802.11: passive/active scanning

Passive Scanning(패시브 스캐닝)

  1. beacon frames 전송: AP에서 비컨 프레임을 전송
  2. 연동 요청 프레임 전송: H1에서 선택된 AP로 연동 요청 프레임(Association Request frame)을 전송
  3. 연동 응답 프레임 수신: 선택된 AP에서 H1에게 연동 응답 프레임(Association Response frame)을 전송

Active Scanning(액티브 스캐닝)

  1. 프로브 요청 프레임 전송: H1이 프로브 요청 프레임(Probe Request frame)을 브로드 캐스트
  2. 프로브 응답 프레임 수신: AP들에서 H1에게 프로브 응답 프레임(Probe Response frame)을 전송
  3. 연동 요청 프레임 전송: H1이 선택된 AP로 연동 요청 프레임(Association Request frame)을 전송
  4. 연동 응답 프레임 수신: 선택된 AP에서 H1에게 연동 응답 프레임(Association Response frame)을 전송

IEEE 802.11: multiple access

충돌 방지

  • 충돌 회피: 2개 이상의 노드가 동시에 전송하는 것을 피하기 위해 노력한다.

CSMA(Carrier Sense Multiple Access)

  • 전송 전 감지: 다른 노드가 이미 전송 중인 신호를 감지하고 전송을 시작하지 않는다.

충돌 감지 없음

  • 충돌 감지 어려움: 강한 전송 신호와 약한 수신 신호로 인해 충돌을 감지하기 어렵다
  • 모든 충돌을 감지할 수 없음: 숨겨진 터미널 문제와 페이딩으로 인해 모든 충돌을 감지할 수 없다.

목표

  • 충돌 회피: CSMA/CA(Collision Avoidance)를 통해 충돌을 피하는 것이 목표

IEEE 802.11 MAC Protocol: CSMA/CA

802.11 송신지(Sender)

  1. 채널이 DIFS 동안 비어 있는 경우
    • 프레임 전체를 전송한다.(CD 없음)
  2. 채널이 바쁠 경우
    • 무작위 백오프 타이머를 시작한다.
    • 채널이 비어 있는 타이머가 다운 카운트를 한다.
    • 타이머가 만료되면 전송을 시작한다.
    • ACK을 받지 못하면 무작위 백오프 간격을 증가시키고 2번 단계로 다시 돌아간다.

802.11 수신기(Receiver)

  • 프레임을 제대로 수신한 경우
    • SIFS 후 ACK을 반환한다.(숨겨진 터미널 문제 때문에 ACK이 필요함)

Avoiding collisions

  • 개념 (Idea)

    • 송신기(Sender) 가 데이터 프레임을 전송하기 위해 작은 예약 패킷을 사용하여 채널 사용을 "예약"합니다.
  • 과정(Process)

    1. 송신기는 먼저 작은 전송 요청 (RTS: Request to Send) 패킷을 CSMA를 사용하여 기지국 (BS)으로 전송합니다.
      • RTS 패킷은 여전히 서로 충돌할 수 있지만, 짧은 패킷이기 때문에 그 영향은 작습니다.
    2. 기지국 (BS)는 RTS에 응답하여 전송 허가 (CTS: Clear to Send)를 브로드캐스트합니다.
    3. CTS는 모든 노드에 들립니다.
      • 송신기는 데이터 프레임을 전송합니다.
      • 다른 스테이션들은 전송을 지연합니다.

Collision Avoidance: RTS-CTS exchange

802.11 frame: addressing

802.11 프레임의 주소 체계에 대해 설명
각 프레임에는 여러 개의 주소 필드가 있으며, 각 주소는 서로 다른 용도로 사용된다.

각 주소 필드의 역할

  1. Address 1: 프레임을 수신할 무선 호스트 또는 AP의 MAC 주소입니다. 이 주소는 프레임이 어디로 갈지 지정합니다.
  2. Address 2: 프레임을 송신하는 무선 호스트 또는 AP의 MAC 주소입니다. 이 주소는 프레임이 어디서 왔는지 나타냅니다.
  3. Address 3: AP가 연결된 라우터 인터페이스의 MAC 주소입니다. 이 주소는 프레임이 더 큰 네트워크로 나가기 위한 라우터의 주소를 나타냅니다.
  4. Address 4: 애드 혹 모드에서만 사용됩니다. 애드 혹 네트워크에서는 노드들이 직접 통신하므로 추가적인 주소가 필요합니다.

802.11 WiFi 프레임 주소 체계

  • address 1 (AP MAC addr): 프레임을 수신할 AP의 MAC 주소
  • address 2 (H1 MAC addr): 프레임을 송신하는 호스트 H1의 MAC 주소
  • address 3 (R1 MAC addr): AP가 연결된 라우터 R1의 MAC 주소

802.3 Ethernet 프레임 주소 체계

  • MAC dest addr (R1 MAC addr): 라우터 R1의 MAC 주소
  • MAC source addr (H2 MAC addr): 다음 홉(또는 송신 호스트)의 MAC 주소

프레임 타입(RTS, CTS, ACT, Data)

  • RTS (Request To Send): 작은 예약 패킷으로 채널 사용을 예약합니다.
  • CTS (Clear To Send): RTS에 대한 응답으로 채널 사용을 허가합니다.
  • ACK (Acknowledgement): 데이터 프레임이 성공적으로 수신되었음을 확인합니다.
  • Data: 실제 데이터를 포함한 프레임.

802.11: mobility within same subnet

  • H1이 동일한 IP 서브넷 내에 있을 때:

    • H1이 동일한 IP 서브넷 내에 남아 있으면, IP 주소를 변경할 필요가 없습니다. 이는 네트워크의 주소 체계가 변경되지 않기 때문에 사용자가 지속적으로 연결을 유지할 수 있음을 의미합니다.
  • 스위치의 역할:

    • 스위치는 H1이 어떤 AP (액세스 포인트)와 연결되어 있는지 파악해야 합니다.
    • 스위치는 셀프 러닝 메커니즘을 사용합니다. 즉, 스위치는 H1로부터 프레임을 수신하면 H1을 도달할 수 있는 스위치 포트를 "기억"합니다.

802.11: advanced capabilities

속도 적응(Rate Adaptation)

  • 설명

    • 속도 적응은 무선 호스트가 이동하면서 신호 대 잡음 비율(SNR)이 변할 때 전송 속도(물리 계층 변조 기술)를 동적으로 변경하는 기능입니다.
    • 기지국과 모바일 장치는 이동 중에 SNR에 따라 전송 속도를 조정합니다.
  • 두 가지 주요 과정

    1. SNR 감소 및 BER 증가:

      • 모바일 장치가 기지국에서 멀어지면 SNR이 감소하고, 이로 인해 비트 오류율(BER)이 증가합니다.
    2. BER이 너무 높을 때:

      • BER이 너무 높아지면, 시스템은 더 낮은 전송 속도로 전환하여 BER을 낮춥니다. 이는 낮은 SNR에서 더 신뢰성 있는 통신을 유지하기 위함입니다.

# 802.11: advanced capabilities

전력 관리(Power Management)

  • node-to-AP 메시지:

    • node-to-AP: "나는 다음 비콘 프레임(beacon frame)까지 잠을 잘 거야"
      • 무선 노드가 AP(Access Point)에게 자신이 잠자리에 들 것임을 알립니다.
      • 이 메시지를 받으면 AP는 이 노드에게 프레임을 전송하지 않습니다.
      • 노드는 다음 비콘 프레임 전에 깨어납니다
  • 비콘 프레임 (Beacon Frame):

    • 비콘 프레임:
      • 비콘 프레임은 AP에서 주기적으로 전송되는 프레임으로, 네트워크 상태 정보를 담고 있습니다.
      • 여기에는 AP에서 모바일 장치로 전송 대기 중인 프레임의 목록이 포함됩니다.
      • 만약 AP에서 모바일 장치로 전송할 프레임이 있으면 노드는 깨어있는 상태를 유지합니다. 그렇지 않으면, 노드는 다음 비콘 프레임까지 다시 잠자리에 듭니다.

Personal area networks: Bluetooth

  • 범위: 반경 10m 이내의 거리에서 작동
  • 케이블 대체: 마우스, 키보드, 헤드폰 등의 케이블을 대체
  • Ad hoc 모드: 인프라가 필요 없음
  • 주파수 대역: 2.4~2.5 GHz ISM 주파수 대역에서 작동, 최대 3 Mbps 속도 지원
  • 마스터/클라이언트 장치:
    • 마스터 장치(M): 클라이언트 장치를 폴링하고 클라이언트 전송 요청을 승인
    • 클라이언트 장치(C): 마스터 장치의 제어를 받음
    • Parked 장치(P): 비활성 상태의 장치

  • TDM (Time Division Multiplexing):
    • 625 마이크로초 슬롯: 각 장치는 시간 슬롯을 이용하여 데이터를 전송합니다.
  • FDM (Frequency Division Multiplexing):
    • 송신자는 79개의 주파수 채널을 사용합니다. 각 슬롯마다 알려진, 의사 랜덤 순서로 주파수를 변경하며 스프레드 스펙트럼을 구현합니다.
    • 피코넷에 속하지 않은 다른 장치나 장비는 일부 슬롯에서만 간섭을 일으킵니다.
  • Parked Mode:
    • 클라이언트 장치는 '잠자기(park)' 모드로 전환할 수 있으며 나중에 깨어납니다.(배터리를 절약하기 위함).
  • Bootstrapping:
    • 노드들은 피코넷에 자동으로 자가 조립됩니다(플러그 앤 플레이).

4G/5G celluar networks

  • 4G/5G 셀룰러 네트워크는 넓은 지역에 걸친 모바일 인터넷 솔루션으로 자리잡고 있다.
  • 4G/5G 셀룰러 네트워크는 널리 배포되고 사용되고 있다.
  • 2019년 기준으로 모바일 브로드밴드 연결 장치가 고정 브로드밴드 연결 장치보다 5배 더 많습니다. 이는 모바일 브로드밴드 사용이 고정 브로드밴드 사용을 능가하고 있음을 나타냅니다.
  • 4G 네트워크의 가용성은 한국에서는 97%, 미국에서는 90%입니다. 이는 이 두 나라에서 4G 네트워크가 거의 항상 사용할 수 있음을 의미합니다.
  • 4G/5G 네트워크의 전송 속도는 수백 Mbps에 달할 수 있습니다. 이는 매우 빠른 데이터 전송 속도를 의미합니다.
  • 4G/5G 네트워크의 기술 표준은 3GPP(3rd Generation Partnership Project)에서 정의됩니다.
  • 4G는 LTE(Long-Term Evolution) 표준을 사용합니다. LTE는 4G 네트워크의 기술 표준 중 하나로, 높은 데이터 전송 속도와 효율성을 제공합니다.

4G/5G cellular networks

유사점(similarities to wirted internet)

  1. 유선 인터넷과 마찬가지로, 엣지(edge)와 코어(core) 구분이 존재하지만, 둘 다 동일한 통신 사업자에 속한다.
  2. 글로벌 셀룰러 네트워크는 여러 네트워크가 연결된 네트워크이다.
  3. HTTP,DNS,TCP,UDP,IP,NAT, 데이터/제어 평면의 분리, SDN, 이더넷, 터널링 등 앞서 학습한 프로토콜이 널리 사용된다.
  4. 유선 인터넷과 상호 연결된다.

차이점(differences from wired internet)

  1. 무선 링크 계층이 다르다.
  2. 이동성이 일급 서비스로 제공된다.
  3. 사용자의 정체성이 SIM 카드를 통해 확인된다.
  4. 사용자는 셀룰러 제공자에게 구독을 한다.
    • "홈 네트워크"와 방문 네트워크에서의 로밍 개념이 강하다.
    • 인증 인프라와 통신 사업자 간 정산을 통한 글로벌 액세스가 가능하다.

Elements of 4G LTE architecture

Mobile device(모바일 장치)

  • 스마트폰, 태블릿, 노트북, IoT 장치 등: 4G LTE 라디오를 탑재한 모든 장치
  • 64비트 국제 모바일 가입자 식별자(IMSI): SIM(가입자 신분 모듈) 카드에 저장됨
  • LTE 용어:
    • 사용자 장비(UE, User Equipment): LTE 네트워크에서 사용되는 장치

Base station: eNode-B

  • 기지국은 통신 사업자 네트워크의 엣지(말단)에 위치하여, 무선 신호를 통해 모바일 장치와 직접 통신한다.
  • 기지국은 무선 라디오 자원을 관리하고, 자신의 커버리지 영역(셀)에 있는 모바일 장치들을 관리한다.
  • 기지국은 다른 네트워크 요소들과 협력하여 장치 인증을 조정한다.
  • WiFi 액세스 포인트(AP)와 유사하지만 다음과 같은 차이점이 있다.
  • LTE 용어로 기지국은 eNode-B 라고 불린다.

Home Subscriber Service(HSS)

  • HSS는 자사 네트워크를 "홈 네트워크"로 사용하는 모바일 장치에 대한 정보를 저장
  • 여기에는 사용자 프로필, 인증 정보, 서비스 구독 정보 등이 포함된다.
  • HSS는 MME(Mobility Management Entity)와 협력하여 장치 인증을 수행한다.
  • 이는 사용자가 네트워크에 접속할 때 보안과 인증 절차를 통해 접근 권한을 확인하는 과정이다.

Service Gateway(S-GW)

  • S-GW는 모바일 장치와 인터넷 간의 데이터 경로에 위치한다.
  • 모바일 장치에서 인터넷으로 데이터를 전송하거나, 인터넷에서 모바일 장치로 데이터를 전송할 때 경유하는 중간 지점이다.

PDN Gateway(P-GW)

  • P-GW는 모바일 셀룰러 네트워크로의 게이트웨이 역할을 한다.
  • 외부 인터넷과 셀룰러 네트워크를 연결하는 중요한 지점이다.
  • P-GW는 다른 인터넷 게이트웨이 라우터와 유사한 역할을 한다.
  • 네트워크 트래픽을 라우팅하고 관리한다.
  • P-GW는 네트워크 주소 변환(NAT) 서비스를 제공한다.
  • 이는 내부 네트워크의 사설 IP 주소를 공용 IP 주소로 변환하여 인터넷과 통신할 수 있도록 한다.

other router

  • 다른 라우터들은 터널링을 광범위하게 사용한다.
  • 터널링은 데이터를 캡슐화하여 네트워크를 통해 안전하고 효율적으로 전송하는 기술이다.

Mobility Management Entity(MME)

  • MME는 모바일 홉 네트워크의 HSS(Home Subscriber Service)와 협력하여 장치 인증을 수행한다.
  • 여기에는 장치-네트워크 간 및 네트워크-장치 간의 인증이 포함된다.
  • MME는 모바일 장치 관리를 담당한다.
    • 셀 간의 장치 핸드오버를 관리한다. 이는 사용자가 이동할 때 네트워크 연결이 끊기지 않도록 하는 중요한 과정이다.
    • 장치의 위치를 추적하고 페이징을 통해 위치 정보를 갱신한다.
  • MME는 모바일 장치에서 P-GW(PDN Gateway)로의 경로(터널링)를 설정한다.
  • 이를 통해 데이터가 올바른 경로로 전송될 수 있도록 보장한다.

LTE: data plane control plane separation

제어 평면(Control Plane)

  1. 새로운 프로토콜

    • 이동성 관리, 보안, 인증 등을 위한 새로운 프로토콜을 사용한다.
  2. 구성 요소와 역할

    • MME(Mobility Management Entity): 이동성 관리와 인증을 담당한다.
    • HSS(Home Subscriber Service): 사용자 정보를 저장하고 MME와 협력하여 인증을 수행한다.
    • S-GW(Service GateWay): 데이터 전송 경로를 관리한다.
    • P-GW(PDN Gateway): 외부 네트워크와의 연결을 관리한다.

데이터 평면(Data Plane)

  1. 새로운 프로토콜
    • 링크 계층과 물리 계층에서 새로운 프로토콜을 사용한다.
  2. 터널링의 광범위한 사용
    • 이동성을 지원하기 위해 터널링을 광범위하게 사용한다.
    • 데이터가 모바일 장치에서 인터넷으로 전달될 때 IP 터널을 통해 전송된다.
  3. 구성 요소와 역할
    • 기지국(Base Station): 모바일 장치와 직접 통신하며, 데이터 전송을 시작한다.
    • S-GW(Serving Gateway): 기지국과 P-GW 사이의 데이터 경로를 관리한다.
    • P-GW(PDN Gateway): 외부 네트워크로의 게이트웨이 역할을 한다.

LTE data plane protocol stack: first hop

LTE 링크 계층 프로토콜

  1. packet data convergence
    • 헤더 압축(Header Compression)
      • 데이터 패킷의 헤더 크기를 줄여 전송 효율을 높인다.
    • 암호화(Encryption)
      • 데이터의 보안을 유지하기 위해 암호화를 수행한다.
  1. Radio Link Control(RLC) Protocol:
    • 단편화/재조립(Fragmentation/Reassembly)
      • 큰 데이터 패킷을 작은 조각으로 나누고, 이를 다시 조립하여 원래의 데이터로 복원
    • 신뢰할 수 있는 데이터 전송(Reliable Data Transfer)
      • 데이터 전송 과정에서 발생할 수 있는 오류를 감지하고 수정하여 신뢰할 수 있는 전송을 보장한다.
  1. Medium Access
    • 요청 및 무선 전송 슬롯 사용
      • 데이터 전송을 위해 무선 자원을 요청하고 할당받은 슬롯을 사용하여 데이터를 전송

LTE radio access network

  1. 다운스트림 채널
    • 주파수 채널 내에서 FDM(주파수 분할 다중화)과 TDM(시간 분할 다중화)을 사용하여 데이터를 전송한다.
    • OFDM(직교 주파수 분할 다중화(은 각 채널 간의 간섭을 최소화하기 위해 "직교" 성질을 이용한다.
  2. 업스트림(Upstream)
    • 업스트림 데이터 전송도 OFDM과 유사하게 FDM과 TDM을 사용한다.
  3. 할당된 시간 슬롯
    • 각 활성 모바일 장치는 12개의 주파수에 걸쳐 두 개의 이상의 0.5 밀리초 시간 슬롯을 할당받는다.
  4. 스케줄링 알고리즘
    • 스케줄링 알고리즘은 표준화되어 있지 않으며, 각 통신 사업자가 자체적으로 결정한다.
  5. 데이터 전송 속도
    • 각 장치당 최대 수백 Mbps의 데이터 전송 속도를 달성할 수 있다.

LTE data plane protocol stack: packet core

터널링(Tunneling)

  1. 모바일 데이터그램 캡슐화(Mobile Datagram Encapsulation)

    • GPRS Tunneling Protocol(GTP)을 사용하여 모바일 데이터그램을 캡슐화한다.
    • 캡슐화된 데이터그램은 UDP 데이터그램 안에 넣어 S-GW로 전송된다.
  2. S-GW의 재터널링

    • S_GW는 받은 데이터그램을 다시 캡슐화하여 P-GW로 전송한다.
  3. 이동성 지원

    • 모바일 사용자가 이동할 때 터널링 엔드포인트만 변경된다.
    • 즉, 사용자가 이동하더라도 데이터 전송 경로를 유지할 수 있다.

LTE data plane: associating with a BS

  1. 기지국이 기본 동기화 신호를 모든 주파수에서 매 5ms마다 방송함
    • 여러 통신사들이 기지국이 동기화 신호를 방송할 수 있다.
    • 이는 모바일 장치가 기지국의 신호를 찾고 동기화할 수 있도록 한다.
  2. 모바일 장치가 기본 동기화 신호를 찾고, 같은 주파수에서 두 번째 동기화 신호를 찾음
    • 모바일 장치는 기지국이 방송하는 채널 대역폭, 구성, 기지국의 셀룰러 통신사 정보 등의 추가 정보를 수신한다.
    • 여러 기지국과 여러 셀룰러 네트워크에서 정보를 받을 수 있다.
  3. 모바일 장치가 연결할 기지국을선택함
    • e.g. 홈 통신사를 선호하는 경우 해당 통신사의 기지국을 선택한다.
  4. 추가적인 단계가 필요함
    • e.g. 인증, 상태 설정, 데이터 평면 설정 등을 수행해야 한다.

LTE mobiles: sleep modes

라이트 슬립(light sleep)

  1. 비활성 상태가 100ms 지속된 후에 라이트 슬립 모드로 전환됨
    • 모바일 장치가 100ms 동안 활동이 없으면 라이트 슬립 모드로 전환된다.
    • 주기적으로 깨어나서 다운스트림 전송(서버나 기지국에서 오는 데이터)이 있는지 확인한다. 이 주기는 약 100ms이다.

딥 슬립(deep sleep)

  1. 비활성 상태가 5~10초 지속된 후에 딥 슬립 모드로 전환됨
    • 모바일 장치가 5~10초 동안 활동이 없으면 딥 슬립 모드로 전환된다.
    • 딥 슬립 모드에서는 모바일 장치가 셀을 변경할 수 있으며, 이 경우 연결을 다시 설정해야 한다.

추가 설명

  • WiFi와 BlueTooth와 마찬가지로, LTE 모바일 장치는 배터리 절약을 위해 라디오를 슬립 모드로 전환한다.
    • 슬립 모드를 통해 모바일 장치는 불필요한 전력 소모를 줄이고 배터리 수명을 연장할 수 있다.

Global celluar network: a network of IP networks

홈 네트워크 HSS(Home Network HSS)

  1. 식별 및 서비스 정보 관리(Identity & Services Info)
    • 홈 네트워크와 로밍 중일 때 모두 사용자 식별 및 서비스 정보를 관리
    • HSS(Home Subscriber Server)는 사용자의 프로필 정보, 서비스 구독 정보 등을 저장하고 관리한다.

ALL IP

  1. 통신사 간 상호 연결
    • 통신사들은 서로 연결되며, 공용 인터넷 및 교환 지점에서 상호 연결된다.
    • 이는 모든 IP 기반의 네트워크를 통해 통신이 이루어지도록 한다.
  2. 레거시 2G, 3G
    • 모든 네트워크가 IP 기반인 것은 아니다. 2G와 3G 네트워크는 IP가 아닌 방식으로 처리된다.

What is mobility?

  1. 무 이동성(No Mobility)
    • 기기 간 네트워크 간 이동, 이동 중 전원 꺼짐
      • 장치가 네트워크 간을 이동하지만, 이동 중에는 전원이 꺼져있다. 이 경우 네트워크는 이동성 관리가 필요하지 않는다.
  2. 중간 이동성(Medium Mobility)
    • 동일 제공자 네트워크 내 동일 AP에서 이동
      • 장치가 동일한 AP(Access Point) 내에서 이동한다. 네트워크는 연결을 유지하기 위해 최소한의 이동성 관리를 필요로 한다.
  3. 중간-고 이동성(Medium-High Mobility)
    • 동일 제공자 네트워크 내 여러 AP 간 이동
      • 장치가 동일한 제공자 네트워크 내에서 여러 AP 간을 이동한다. 네트워크는 핸드오버를 관리하여 연결을 유지해야 한다.
      • 슬라이드에서 "우리가 관심 있는 부분" 이라고 강조한 부분이다.
  4. 고 이동성(High Mobility)
    • 여러 제공자 네트워크 간 이동, 연결 유지
      • 장치가 여러 제공자 네트워크 간을 이동하면서 지속적인 연결을 유지한다. 이 경우, 네트워크는 복잡한 이동성 관리와 핸드오버 기술을 필요로 한다.

Mobility Approaches

이동성 접근 방식(Mobility Approaches)
네트워크(라우터)가 처리하게 하기 -> 광범위한 확장성 문제

  1. 라우터가 방문 중인 모바일 노드의 이름, 주소 또는 번호를 광고
    • 라우터는 방문 중인 모바일 노드의 잘 알려진 이름, 주소(영구적인 32bit IP 주소) 또는 번호(e.g. 셀 번호)를 광고한다.
    • 이는 일반적인 라우팅 테이블 교환 과정을 통해 이루어진다.
  1. 인터넷 라우팅은 이미 이 작업을 할 수 있음
    • 인터넷 라우팅은 이미 이러한 작업을 변경 없이 수행할 수 있다.
    • 라우팅 테이블은 가장 긴 접두사 매칭(longest prefix match)을 통해 각 모바일의 위치를 나타낸다.

엔드 시스템이 처리하게 하기

  • "edge"에서의 가능성
    • 이동성 관리를 네트워크의 엣지, 즉 엔드 시스템에서 처리한다.
  1. 간접 라우팅(indirect routing)
    • 통신 방식: 발신자(통신 상대)에서 모바일 장치로의 통신이 홈 네트워크를 거쳐 원격 모바일 장치로 전달된다.
    • 절차
      1. 발신자는 모바일 장치가 있는 홈 네트워크로 데이터를 보낸다.
      2. 홈 네트워크는 데이터를 원격 모바일 장치로 전달된다.
  1. 직접 라우팅(direct routing)
    • 통신 방식: 발신자가 모바일 장치의 외부 주소를 받아서 직접 모바일 장치로 데이터를 보낸다.
    • 절차
      1. 발신자는 모바일 장치의 외부 주소를 획득한다.
      2. 발신자는 획득한 주소를 사용하여 데이터를 직접 모바일 장치로 보낸다.





Home network, visited network: 4G/5G

홈 네트워크(Home Network)

  • 홈 모바일 통신사 네트워크(Home Mobile Carrier Network)
    • 사용자가 가입한 기본 네트워크이다.
    • 사용자는 셀룰러 제공자와 유료 서비스 계획을 가지고 있다.
    • 홈 네트워크의 HSS는 사용자의 식별 정보 및 서비스 정보를 저장한다.

방문 네트워크(Visited Network)

  • 방문 모바일 통신사 네트워크(Visited Mobile Carrier Network)
    • 사용자의 홈 네트워크가 아닌 다른 네트워크이다.
    • 방문 네트워크는 다른 네트워크와의 서비스 계약을 통해 방문하는 모바일 장치에 접근을 제공한다.

주요 요소 및 흐름

  1. 홈 네트워크
    • 사용자의 SIM 카드에는 글로벌 식별 정보가 포함되어 있으며, 홈 네트워크에 대한 정보도 포함되어 있다.
    • 홈 네트워크에서 사용자는 기본적으로 서비스를 이용한다
  2. 방문 네트워크
    • 사용자가 홈 네트워크를 벗어나 다른 네트워크 영역에 들어가면, 방문 네트워크에서 로밍을 통해 서비스를 제공한다.
    • 방문 네트워크는 홈 네트워크와의 협력을 통해 사용자의 인증 및 서비스 접근을 관리한다.
  3. 공용 인터넷 및 교환 지점
    • 홈 네트워크와 방문 네트워크는 공용 인터넷 및 교환 지점을 통해 연결된다.
    • 이는 글로벌 통신을 가능케한다.






Home Network, Visitied Network: ISP/WiFi

ISP/WiFi: 글로벌 "홈"의 개념이 없음
주요 내용

  1. ISP로부터의 자격 증명
    • e.g. 사용자 이름, 비밀번호 등이 장치나 사용자와 함께 저장된다.
  2. ISP의 국가 및 국제적 존재
    • ISP는 국가적, 국제적으로 네트워크를 제공할 수 있다.
  3. 다른 네트워크: 다른 자격 증명
    • 서로 다른 네트워크에서는 다른 자격 증명이 필요하다.
    • 일부 예외가 존재한다(e.g. eduroam)
  4. 4G와 유사한 이동성을 위한 아키텍처 존재
    • 모바일 IP와 같은 아키텍처가 존재하지만, 사용되지 않는다.



네트워크 접속 과정(Access Process)

  • 장치가 네트워크에 접속(Attach)
    • 장치가 네트워크에 접속할 때, 인증 액세스 서버를 통해 인증된다.
    • 공용 인터넷을 통해 다른 네트워크와 연결된다.담





Home network, visited network: generic







Registration: home needs to know where you are!

  1. 모바일 장치가 방문 네트워크의 이동성 관리자와 연결됨

    • 모바일 장치가 방문 네트워크에 접속하여 이동성 관리자와 연결한다.
    • 이 과정에서 방문 네트워크의 이동성 관리자가 모바일 장치의 위치 정보를 획득한다.
    • 방문 네트워크에서 할당된 NAT IP: 10.0.0.99

  2. 방문 네트워크의 이동성 관리자가 홈 네트워크의 HSS에 모바일 위치를 등록함

    • 방문 네트워크의 이동성 관리자는 모바일 장치의 위치 정보를 홈 네트워크의 HSS에 등록한다.
    • 이 과정은 공용 또는 사설 인터넷을 통해 이루어진다.


최종 결과(End Result)

  • 방문 네트워크의 이동성 관리자가 모바일 장치에 대한 정보를 가짐
    • 방문 네트워크의 이동성 관리자는 모바일 장치의 위치와 관련된 정보를 관리한다.

  • 홈 네트워크의 HSS가 모바일 장치의 위치를 알게됨
    • 홈 네트워크의 HSS는 모바일 장치가 어느 방문 네트워크에 있는지에 대한 위치 정보를 가지고 있다.

'학교수업 > 컴퓨터망' 카테고리의 다른 글

Chapter8: Security  (1) 2024.07.16
Chapter6: The Link Layer and LANs  (0) 2024.07.12
Chapter5 Network Layer: Control Plane  (0) 2024.07.09
Chapter4: Network Layer-Data Plane  (0) 2024.07.04
Chapter3: Transport Layer-2  (0) 2024.07.04

Link Layer: Introduction

용어 정의(Terminology)

  1. 호스트와 라우터(Hosts and Routers): 노드(Nodes)
    • 네트워크에서 데이터를 송수신하는 장치들
    • e.g. 컴퓨터, 서버, 라우터 등
  2. 통신 채널(Communication Channels): 링크(Links)
    • 인접한 노드들을 연결하여 통신 경로를 형성하는 채널
    • 유형
      • 유선(Wired) : 물리적인 케이블을 통해 연결되는 링크
      • 무선(Wireless) : 무선 주파수를 통해 연결되는 링크
      • LANs(로컬 에어리어 네트워크) : 근거리 통신망으로 제한된 범위 내에서 노드들을 연결한다.
  3. 계층-2 패킷(Layer-2 Packet): 프레임(Frame)
    • 데이터그램을 캡슐화하는 역할
    • 링크 계층에서 전송되는 데이터 단위

링크 계층의 책임

  • 데이터그램 전송(Transferring Datagram)
    • 한 노드에서 물리적으로 인접한 노드로 데이터그램을 링크를 통해 전송하는 책임이 있다.
    • 이는 네트워크 계층에서의 논리적 경로 설정과는 다르게, 물리적으로 인접한 노드 간의 실제 데이터 전송을 담당한다.

Link layer: context

데이터그램 전송(Datagram Transfer)

  • 다양한 링크 프로토콜을 통한 데이터그램 전송

    • 데이터그램은 통신 경로를 따라 다양한 링크 프로토콜을 통해 전송된다.
    • e.g. 첫 번째 링크에서는 WiFi를 사용하고, 다음 링크에서는 Ethernet을 사용할 수 있다.
  • 각 링크 프로토콜의 서비스

    • 각 링크 프로토콜은 서로 다른 서비스를 제공한다.
    • 예를 들어, 일부 프로토콜은 링크를 통해 신뢰성 있는 데이터 전송을 제공할 수 있고, 다른 프로토콜은 그렇지 않을 수 있다.

교통 비유

  • 여행경로

    • 프린스턴에서 로잔까지의 여행을 예로 들 수 있다.
    • 리무진: 프린스턴에서 JFK공항까지 이동
    • 비행기: JFK 공항에서 제네바까지 이동
    • 기차: 제네바에서 로잔까지 이동
  • 비유의 요소들

    • 관광객 = 데이터그램
      • 전송되는 데이터그램을 여행하는 관광객에 비유할 수 있다.
    • 운송 구간 = 통신 링크
      • 각각의 링크는 관광객이 이동하는 운송 구간과 같다.
    • 운송 수단 = 링크 계층 프로토콜
      • 각 링크에서 사용하는 프로토콜은 관광객이 이용하는 다양한 운송 수단에 비유할 수 있다.
      • WiFi, Ethernet
    • 여행사 = 라우팅 알고리즘
      • 데이터그램이 전송되는 경로를 결정하는 라우팅 알고리즘은 여행사가 여행 경로를 계획하는 것과 유사하다.

Link Layer: Services

프레이밍, 링크 접근(Framing, Link Access)

  • 데이터그램을 프레임에 캡슐화하고 헤더와 트레일러 추가

    • 링크 계층은 데이터 그램을 프레임이라는 단위로 캡슐화하고, 데이터의 시작과 끝을 나타내는 헤더와 트레일러를 추가한다.
  • 공유 매체일 경우 채널 접근

    • 여러 장치가 동일한 통신 매체를 공유하는 경우, 링크 계층은 각 장치가 언제나 통신 할 수 있는지 관리한다.
  • 프레임 헤더의 'MAC" 주소

    • 프레임의 헤더는 출발지와 목적지를 식별하기 위핸 MAC 주소가 포함된다.
    • MAC 주소는 IP 주소와는 다르며, 물리적인 네트워크 인터페이스를 식별한다.

인접 노드 간의 신뢰성 있는 전송

  • 이미 이 방법을 알고 있음
    • 인접 노드 간의 신뢰성 있는 데이터 전송은 잘 알려진 기술이다.
  • 비트 오류율이 낮은 링크에서는 거의 사용되지 않음
    • 비트 오류율이 낮은 유선 링크에서는 신뢰성 있는 전송이 거의 필요하지 않다.
  • 무선 링크: 높은 오류율
    • 무선 링크는 높은 오류율을 가지고 있어, 신뢰성 있는 전송이 중요하다.
  • 질문: 왜 링크 수준과 종단 간의 신뢰성을 모두 사용하는가?
    • 이 질문은 링크 계층과 전송 계층 간의 역할 분담에 대한 이해를 요구한다.
    • 링크 계층은 인접 노드 간의 데이터 전송을 신뢰성 있께 보장하며, 전송 계층은 종단 간의 신뢰성 있는 전송을 보장한다.

흐름제어(Flow Control)

  • 인접 송신 및 수신 노드 간의 페이싱
    • 링크 계층은 데이터 전송 속도를 조절하여 송신 노드와 수신 노드 간의 데이터 전송을 조화롭게 유지한다.
    • 이를 통해 데이터가 너무 빠르게 전송되어 수신 노드가 처리하지 못하는 상황을 방지한다.

오류 검출

  • 신호 감쇠, 잡음에 의해 발생하는 오류
    • 링크 계층은 신호 감쇠나 잡음으로 인해 발생하는 오류를 검출
  • 수신자가 오류를 검출하고, 재전송을 신호하거나 프레임을 폐기함
    • 수신 노드는 데이터 프레임의 오류를 검출하고, 송신 노드에게 재전송을 요청하거나 오류가 있는 프레임을 폐기한다.

오류 수정

  • 수신자가 비트 오류를 식별하고 수정함
    • 링크 계층은 수신 노드가 비트 오류를 식별하고 재전송 없이 오류를 수정할 수 있도록 한다.

반이중 및 전이중

  • 반이중 모드(Half-Duplex)
    • 링크 양쪽 끝의 노드가 데이터를 전송할 수 있지만, 동시에 전송할 수는 없다.
    • 한 번에 하나의 방향으로만 통신이 가능하다.
  • 전이중 모드(Full-Duplex)
    • 링크 양쪽 끝의 노드가 동시에 데이터를 전송할 수 있다.
    • 양방향으로 동시에 통신이 가능

링크 계층은 어디에 구현되는가?

각 호스트에 구현

  • 링크 계층은 네트워크에 연결된 모든 호스트에 구현
  • 네트워크 인터페이스 카드(NIC) 또는 칩에 구현*
  • 이더넷, WIFI 카드 또는 칩
  • 링크 계층 및 물리 계층 구현
  • 호스트 시스템 버스에 연결*
  • NIC는 호스트의 시스템 버스(PCI)를 통해 시스템에 연결
  • 하드웨어, 소프트웨어, 펌웨어의 조합*
  • 링크 계층 기능은 하드웨어, 소프트웨어, 펌웨어의 조합으로 구현

Interfaces communicating

송신 측(Sending Side)

  • 데이터그램을 프레임에 캡슐화
    • 송신 측에서 데이터그램은 프레임이라는 형식으로 캡슐화된다. 이는 링크 계층에서 이루어진다.
  • 오류 검사 비트, 신뢰성 있는 데이터 전송, 흐름 제어 추가
    • 송신 측은 프레임에 오류 검사 비트, 신뢰성 있는 데이터 전송을 위한 정보, 흐름 제어 정보를 추가한다.
    • 이를 통해 데이터 전송의 정확성과 신뢰성을 높인다.
  • 송신 측(Receiving Side)*
  • 오류 검사, 신뢰성 있는 데이터 전송, 흐름 제어 확인
    • 수신 측에서는 프레임을 수신한 후 오류가 있는지 확인하고, 신뢰성있는 데이터 전송과 흐름 제어를 수행한다.
  • 데이터그램을 추출하여 상위 계층으로 전달
    • 프레임에서 데이터그램을 추출하여 수신 측의 상위 계층으로 전달
    • 이는 주로 네트워크 계층으로 전달

Error Detection

EDC(Error Detection and Correction Bits): 오류 검출 및 수정 비트

  • e.g. 중복성(e.g. Redundancy)
    • EDC는 데이터그램에 추가되는 비트로, 주로 데이터의 중복성을 이용해 오류를 검출하고 수정한다.

D: 오류 검사를 통해 보호된 데이터

  • 헤더 필드를 포함할 수 있음
    • D는 오류 검사를 통해 보호되는 데이터로, 데이터그램의 본문뿐만 아니라 헤더 필드를 포함할 수 있다.

오류 검출의 한계

  • 100% 신뢰할 수 없음
    • 프로토콜이 일부 오류를 놓칠 수 있지만. 이는 매우 드물다.
  • 더 큰 EDC 필드는 더 나은 검출 및 수정 제공
    • EDC 필드가 클수록 더 효과적으로 오류를 검출하고 수정할 수 있다.

Parity Checking

단일 비트 패리티(Single Bit Parity)

  • 단일 비트 오류 검출
    • 패리티 비트를 사용하여 데이터 전송 중 발생할 수 있는 단일 비트 오류를 검출한다.
  • 짝수 패리티
    • 데이터 비트에서 1의 개수가 짝수가 되도록 패리티 비트를 설정한다.
    • 예를 들어, 데이터 비트가 '0111 0001 1010 1011' 이라면, 1의 개수가 9개로 홀수이므로 패리티 비트는 1으로 설정된다.
  • e.g.
    • 0111 0001 1010 1011: (데이터 비트) + '1' (패리티 비트)
    • 데이터 비트의 1의 개수가 짝수여야 하므로, 패리티 비트가 1로 설정된다.

2차원 비트 패리티(Two-Dimensional Bit Parity)

  • 단일 비트 오류 검출 및 수정
    • 2차원 패리티는 행과 열 모두에 패리티 비트를 추가하여 단일 비트 오류를 검출하고 수정할 수 있다.
  • 행 패리터와 열 패리티
    • 각 행과 열에 대해 별도의 패리티 비트를 계산한다.
    • e.g. 데이터 비트가 2차원 배열로 표현될 때, 각 행과 열의 1의 개수가 짝수가 되도록 패리티 비트를 설정

Internet Checksum

전송된 세그먼트에서 오류(e.g. 플립된 비트) 검출

송신 측(Sender)

  • UDP 세그먼트의 내용을 16비트 정수 시퀀스로 취급

    • UDP 헤더 필드와 IP 주소를 포함한 UDP 세그먼트의 내용을 16비트 정수 시퀀스로 변환
  • 체크섬: 세그먼트 내용의 합

    • 세그먼트 내용의 1의 보수 합을 계산하여 체크섬을 생성
  • 체크섬 값을 UDP 체크섬 필드에 삽입

    • 계산된 체크섬 값을 UDP 헤더의 체크섬 필드에 삽입

수신 측(Recevier)

  • 수신된 세그먼트의 체크섬 계산

  • 계산된 체크섬이 체크섬 필드 값과 일치하는지 확인

    • 계산된 체크섬이 수신된 세그먼트의 체크섬 필드 값과 일치하는지 확인
    • 일치하지 않으면(Not Equal): 오류가 검출되었음을 의미한다.
    • 일치(Equal): 오류가 검출되지 않았음을 의미하지만, 여전히 오류가 있을 가능성이 있다.

CRC(순환 중복 검사, Cyclic Redundancy Check)

  • CRC는 더 강력한 오류 검출 코딩 방식으로, 데이터 전송 시 발생할 수 있는 오류를 검출하는 데 사용

주요 요소

  • D: 데이터 비트(Data Bits)

    • 주어진 데이터 비트로, 이 비트들은 이진수로 생각
  • G: 비트 패턴(생성기)(Bit Pattern, Generator)

    • r+1 비트로 구성된 주어진 비트 패턴
  • R: CRC 비트

    • r개의 CRC 비트로, 데이터 비트에 추가되는 오류 검출 비트

과정

  1. 데이터 비트와 생성기 비트 패턴

    • 데이터 비트 D에 생성기 G를 사용하여 CRC 비트 R을 계산한다.
    • D의 끝에 r개의 0을 추가한 후, 이를 G로 나눈다. 여기서 나머지가 CRC 비트 R이 된다.
  2. CRC 비트 추가

    • 데이터 비트 D에 CRC 비트 R을 추가하여 <D,R>을 만든다.
    • 이렇게 만들어진 <D,R>은 G로 나누어 떨어져야 한다.
  3. 수신 측

    • 수신 측에서는 <D,R>을 수신하고, 이를 생성기 G로 나눈다.
    • 나머지가 0이 아니면 오류가 검출된다.

목표

  • r개의 CRC 비트 R을 선택하여 <D,R>이 G로 정확히 나누어지도록 한다(mod2)
  • 수신 측에서 G를 사용하여 <D,R>을 나눌 때, 나머지가 0이 아니면 오류가 발생했음을 의미한다.
  • CRC는 r + 1 비트 미만의 모든 버스트 오류를 검출할 수 있다.

CRC: example

multiple access protocols

다중 링크 프로토콜

  1. point-to-point 링크
    • 정의: 단일 송신자와 단일 수신자 사이의 직접 연결
    • 예시:
      • 이더넷 스위치와 호스트 간의 포인트 투 포인트 링크
      • 전화 접속 액세스를 위한 PPP(Point-to-Point Protocol)
  1. broadcast 링크(공유된 와이어 또는 매체)
    • 정의: 여러 장치가 동일한 통신 매체를 공유하여 데이터를 주고받음
    • 예시:
      • 구형 이더넷: 여러 장치가 동일한 케이블을 통해 데이터를 주고받음
      • 케이블 기반 액세스 네트워크의 업스트림 HFC: 여러 사용자가 케이블을 공유하여 인터넷에 액세스
      • 802.11 무선 LAN, 4G/5G, 위성: 여러 장치가 동일한 무선 주파수를 공유하여 데이터를 송수신

Multiple Access Protocols

  1. 단일 공유 브로드캐스트 채널

    • 여러 노드가 하나의 브로드캐스트 채널을 통해 데이터를 송수신한다.
    • 모든 노드가 동일한 채널을 공유하므로 동시에 전송을 시도할 때 충돌이 발생할 수 있다.
  2. 충돌(Collision)

    • 두 개 이상의 노드가 동시에 데이터를 전송하면 충돌이 발생한다.
    • 충돌이 발생하면 수신 노드는 두 개 이상의 신호를 동시에 수신하여 데이터를 제대로 인식할 수 없다.

다중 접속 프로토콜(Multiple Access Protocol)

  • 분산 알고리즘(Distributed Algorithm)

    • 노드가 채널을 어떻게 공유할지 결정하는 알고리즘이다.
    • 각 노드가 언제 데이터를 전송할 수 있는지 결정한다.
  • 채널 공유에 대한 통신

    • 채널 공유에 대한 통신은 채널 자체를 사용해야 한다.
    • 채널 공유를 조정하기 위한 별도의 채널(out-of-band 채널)은 없다.

An ideal multiple access protocol

주어진 조건
다중 접속 채널(Multiple Access Channel, MAC)

  • 전송 속도가 R bps(bits per second)인 채널

요구 조건(Desiderata)

  1. 단일 노드 전송
    • 하나의 노드가 전송을 원할 때, 해당 노드는 R의 속도로 전송할 수 있어야 한다.
  2. 다중 노드 전송
    • M개의 노드가 동시에 전송을 원할 때, 각 노드는 평균적으로 R/M의 속도로 전송할 수 있어야 한다.
  3. 완전 분산화(Fully Decentralized)
    • 특별한 노드가 필요없음
      • 전송을 조정하는 특별한 노드가 없어야 한다.
    • 시계나 슬롯의 동기화가 필요없음
      • 노드 간의 시계 동기화나 시간 슬롯의 동기화가 필요 없어야 한다.
  4. 단순성(Simple)
    • 프로토콜이 단순해야 한다.

MAC protocols: taxonomy

  1. 채널 분할(Channel Partitioning)

    • 채널을 더 작은 "조각"으로 나눔(시간 슬롯, 주파수, 코드)
    • 각 노드에게 고유하게 사용할 수 있도록 조각을 할당
  2. 랜덤 액세스(Random Access)

    • 채널을 나누지 않음, 충돌을 허용
    • 충돌에서 "복구"할 수 있는 메커니즘을 제공
  3. 차례로 전송(Taking Turns)

    • 노드가 차례로 전송을 함, 전송할 데이터가 많은 노드는 더 긴 시간 동안 전송할 수 있음

Channel Partitioning MAC protocols: TDMA

TDMA(Time Division Multiple Access)는 시간 분할 다중 접근 방식을 사용하여 채널에 접근

  1. 라운드 단위 접근

    • 모든 스테이션은 순서대로 라운드별로 채널에 접근
  2. 고정 길이 슬롯

    • 각 스테이션은 라운드 내에서 고정된 길이의 슬롯을 받는다.
    • 슬롯 길이는 패킷 전송 시간과 동일
  3. 미사용 슬롯

    • 사용되지 않은 슬롯은 비활성 상태가 된다.
  4. e.g.

  • 6개의 스테이션으로 구성된 LAN에서 1,3,4번 스테이션이 패킷을 전송하려고 한다.
  • 2,5,6은 비활성 상태로 남아있다.
  • 그림에서는 6개의 슬롯으로 구성된 프레임이 반복되며, 각각의 라운드에서 스테이션 1,3,4가 데이터를 전송하는 모습이 나타나 있다.

채널 분할 MAC 프로토콜: FDMA(Frequency Division Multiple Access)

FDMA는 주파수 분할 다중 접근 방식을 사용하여 채널에 접근

주요 특징

  1. 주파수 대역으로 분할된 채널 스펙트림

    • 채널 스펙트럼을 여러 개의 주파수 대역으로 나눈다.
  2. 고정 주파수 대역 할당

    • 각 스테이션에 구정된 주파수 대역이 할당된다.
  3. 미사용 전송 시간

    • 주파수 대역 내의 미사용 전송 시간은 비활성 상태로 남아 있다.
  4. e.g.

    • 6개의 스테이션으로 구성된 LAN에서 1,3,4번 스테이션이 패킷을 전송하려고 한다.
    • 주파수 대역 2,5,6은 비활성 상태로 남아 있다.

Random access protocols

random access protocol은 네트워크의 각 노드가 데이터를 전송할 때 사전에 조율하지 않고 임의로 채널에 접근할 수 있다.

  1. 전송 시점

    • 노드에 데이터 패킷이 있을 때, 채널 데이터 전송률 R을 최대한 활용하여 전송
    • 노드 간 사전 조율이 없다(no a priori coordination)
  2. 충돌(Collision)

    • 두 개 이상의 노드가 동시에 데이터를 전송할 때 충돌이 발생한다.
  3. 랜덤 접근 MAC 프로토콜이 지정하는 것

    • 충돌을 감지하는 방법
    • 충돌로부터 회복하는 방법(e.g. 지연된 재전송)
  4. 랜덤 접근 MAC 프로토콜의 예

    • ALOHA, slotted ALOHA, CSMA, CSMA/CD, CSMA/CA

Slotted ALOHA

가정 assumptions

  1. 프레임 크기 동일: 모든 데이터 프레임이 같은 크기를 가진다.
  2. 시간 슬롯: 시간이 동일한 크기의 슬롯으로 나뉜다. 각 슬롯의 길이는 한 프레임을 전송하는 데 걸리는 시간과 같다.
  3. 슬롯 시작 시점에 전송: 노드는 슬롯의 시작 시점에서만 전송을 시작할 수 있다.
  4. 노드 동기화: 모든 노드가 동일한 슬롯 타이밍에 동기화되어 있다.
  5. 충돌 감지: 두 개 이상의 노드가 동일한 슬롯에서 전송을 시도하면 모든 노드가 충돌을 감지할 수 있다.

운영 operation

  1. 프레임 전송: 노드가 새로운 프레임을 얻으면, 다음 슬롯에서 전송을 시도한다
  2. 충돌 없음: 충돌이 발생하지 않으면 노드는 다음 슬롯에서 새로운 프레임을 전송할 수 있다.
  3. 충돌 발생: 충돌이 발생하면 노드는 다음 슬롯에서 프레임을 재전송한다. 재전송은 성공할 때까지 각 슬롯마다 확률 p로 이루어진다.

장점

  1. 단일 활성 노드 전송

    • 단일 활성 노드는 채널의 전체 속도로 연속적으로 전송할 수 있다.
  2. 높은 분산화

    • 노드 간의 슬롯만 동기화되면 되므로 분산화되어 있다.
  3. 단순함

    • 구현이 간단하다

단점

  1. 충돌 및 슬롯 낭비

    • 충돌이 발생하여 슬롯이 낭비될 수 있다.
  2. 유휴 슬롯

    • 전송이 없는 유휴 슬롯이 발생할 수 있다.
  3. 충돌 감지 시간 문제

    • 노드가 패킷 전송 시간보다 짧은 시간 내에 충돌을 감지할 수 있다.
  4. 시계 동기화 필요

    • 슬롯 동기화를 위해 노드 간의 시계 동기화가 필요하다.

Slotted ALOHA: efficiency

Slotted ALOHA의 효율성은 많은 노드가 많은 프레임을 보내야 할 때, 성공적인 슬롯의 비율을 나타낸다.

기본 가정

  • N개의 노드가 있으며, 각 노드는 슬롯에서 확률 p로 전송을 시도한다.

성공 확률

  • 주어진 노드가 슬롯에서 성공할 확률: p(1-p)N-1
  • 어떤 노드라도 슬롯에서 성공할 확률: Np(1-p)N-1

최대 효율성

  • 최대 효율성을 찾기 위해, Np(1-p)N-1을 최대화하는 p값을 찾는다.
  • 많은 노드가 있는 경우, Np(1-p)N-1의 극한을 N이 무한대로 갈때마다 구한다.

max efficiency = 1/e ≈ 0.37

최대 효율성(max efficiency): 채널이 유용한 전송에 사용되는 비율이 최대 37프로이다.

Pure ALOHA

기본 개념

  • Unslotted ALOHA
    • 단순하고 동기화가 필요없다.
    • 프레임이 도착하면 즉시 전송한다.
  • 충돌 확률
    • 충돌 확률 증가
      • 동기화가 없기에 충돌 확률이 높아진다.
      • 프레임이 t0 시점에 전송될 때, 다른 프레임들이 [t0-1, t0+1] 구간에 전송되면 충돌이 발생할 수 있다.
      • t0 시점에서 전송된 프레임은 t0-1 시점에 시작된 프레임의 끝부분과 충돌하거나, t0+1 시점에 시작된 프레임의 시작부분과 충돌할 수 있다.
  • 효율성
    • Pure ALOHA 효율성
      • 최대 효율성은 18%이다.
      • 이는 Pure ALOHA에서 채널이 유용한 전송에 사용되는 비율이 최대 18%라는 의미이다.
      • Slotted ALOHA와 비교하여 효율성이 낮다. 이는 동기화가 없기에 충돌이 더 자주 발생하기 때문이다.

CSMA(Carrier Sense Multiple Access)

CSMA 기본 개념

  • 기본 CSMA
    • 전송 전에 채널을 청취한다.
    • 채널이 비어있으면: 전체 프레임을 전송
    • 채널이 사용 중이면: 전송을 연기한다.
    • 사람에 비유: 다른 사람을 방해하지 마세요

CSMA/CD(Collision Detection) 개념

  • CSMA/CD
    • 충돌이 발생했을 때 이를 감지한다.
    • 충돌 감지
      • 충돌이 발생하면 짧은 시간 안에 이를 감지한다.
      • 충돌한 전송은 중단되어 채널 낭비를 줄인다.
      • 유선에서는 충돌 감지가 쉽지만, 무선에서는 어렵다.
    • 사람의 비유: 예의 바른 대화자처럼 행동하세요.

CSMA: collisions

충돌 발생 가능성

  • 충돌 가능성
    • 캐리어 센싱이 있어도 충돌이 발생할 수 있다.
    • 캐리어 센싱: 네트워크 통신에서 노드가 데이터를 전송하기 전에 현재 통신 채널이 사용중인지 아닌지를 감지하는 과정
    • 전파 지연(propagation delay)
      • 두 노드가 동시에 전송을 시작할 때, 서로의 전송을 듣지 못할 수 있다.
      • 이로 인해 두 노드가 동시에 데이터를 전송하여 충돌이 발생할 수 있다.

충돌의 영향

  • 충돌 시
    • 패킷 전송 시간이 모두 낭비된다.
    • 거리 및 전파 지연
      • 충돌 확률을 결정하는 데 중요한 역할을 한다.
        • 노드 간의 거리와 신호가 이동하는 데 걸리는 시간이 충돌 가능성에 영향을 미친다.

예시 그림 설명

  • 공간 레이아웃
    • 여러 노드가 일렬로 배치되어 있다.
    • 각 노드는 t0 시점에 전송을 시작할 수 있으며, 전파 지연으로 인해 서로의 전송을 즉시 감지하지 못할 수 있다.
    • t1 시점에 이르러서야 충돌 여부를 알 수 있다.

CSMA/CD(Carrier Sense Multiple Access with Collision Detection)

  • CSMA/CD는 충돌을 감지하고 회피하여 네트워크에서 데이터를 효율적으로 전송하는 프로토콜

CSMA/CD의 동작 원리

  1. 채널 감지(Carrier Sensing)
    • 데이터를 전송하려는 노드는 먼저 채널이 비어있는지 확인
    • 채널이 비어 있으면 데이터를 전송하고, 사용 중이면 전송을 지연
  2. 충돌 감지(Collision Detection)
    • 데이터를 전송하는 동안 노드는 충돌이 발생했는지 감지
    • 충돌이 발생하면 즉시 전송을 중지한다.
  3. 전송 중단 및 재전송
    • 충돌이 감지되면, 노드는 전송을 중단하고 랜덤한 시간을 기다린 후 다시 전송을 시도한다. 이 랜덤한 대기 시간은 다른 노드와의 충돌 가능성을 줄이는 데 도움이 된다.

Ethernet CSMA/CD Algorithm 설명

Ethernet에서 CSMA/CD 알고리즘은 데이터 충돌을 감지하고 처리하는 방법을 정의한다. 알고리즘은 다음과 같은 단계로 구성된다.

  1. 프레임 생성: NIC는 네트워크 계층에서 데이터그램을 수신하고 프레임을 생성한다.
  2. 채널 감지
    • NIC는 채널이 비어 있는지 확인
      • 채널이 비어 있으면: 프레임 전송을 시작
      • 채널이 사용 중이면: 채널이 비어 있을 때까지 기다린 다음 전송을 시작한다.
  3. 충돌 없는 전송
    • NIC가 충돌 없이 전체 프레임을 전송하면, 해당 프레임 전송을 완료한다.
  4. 충돌 감지
    • NIC가 전송 중 다른 전송을 감지하면 전송을 중단하고, "잼 신호(jam signal)"를 보낸다.
  5. 이진 백오프(Binary Exponential Backoff)
    • 전송을 중단한 후, NIC는 이진 백오프 알고리즘을 적용
      • m번째 충돌 후, NIC는 {0,1,2, ... 2^m - 1} 범위에서 무작위로 K를 선택한다.
      • NIC는 K * 512 bit 시간 동안 대기한 후 다시 2단계로 돌아간다.
      • 충돌이 많을수록 대기 시간(백오프 간격)이 길어진다.

CSMA/CD efficiency

  • Tprop : 두 노드 간 최대 전파 시간(LAN에서의 최대 전파 지연)
  • ttrans: 최대 크기 프레임을 전송하는 데 걸리는 시간

효율성 공식

  • 효율성이 1로 수렴하는 경우
    • Tprop이 0으로 갈 때(즉, 전파 지연이 매우 작을 때)
    • Ttrans이 무한대로 갈 때(즉, 전송 시간이 매우 클 때)

추가 설명

  • 전파 지연이 작을 때: 데이터 전송이 빠르게 이루어지면서 충돌 감지 및 회복이 더 효율적이다.
  • 전송 시간이 클 때: 프레임을 전송하는 데 오랜 시간이 걸리므로 충돌이 발생할 가능성이 줄어들고, 충돌 발생 시 낭비되는 시간의 비율이 줄어든다.

"Taking Turns" MAC Protocols

channel partitioning MAC protocols

  • 효율적이고 공정한 채널 공유: 높은 부하에서 채널을 효율적이고 공정하게 나눈다.
  • 낮은 부하에서 비 효율적: 채널 접근의 지연과 1/N 대역폭 할당으로 인해 비효율적이다.
    e.g. 활성 노드가 하나뿐인 경우에도 모든 노드가 대기해야한다.

random access MAC protocols

  • 낮은 부하에서 효율적: 단일 노드가 채널을 완전히 활용할 수 있다.
  • 높은 부하에서 충돌 오버헤드: 여러 노드가 동시에 전송하려고 하면 충돌이 발생하면 오버헤드가 증가한다.

"taking turns" protocols

  • 두 가지 장점을 결합: 채널 파티셔닝과 랜덤 엑세스의 장점을 결합하여 낮은 부하와 높은 부하 모드에서 최적의 성능을 추구
  • 효율적이고 공정한 채널 공유: 활성 노드가 많을 때도 공정하게 채널을 나누며, 충돌을 최소화한다.
  • 낮은 부하에서 높은 효율성: 한 노드가 효율적을 채널을 사용할 수 있도록 한다.

**polling** - polling은 "taking turns" MAC 프로토콜 중 하나로, 마스터 노드가 다른 노드들에게 전송할 수 있는 기회를 순차적으로 부여하는 방식이다. 주로 단순한 장치와 함께 사용된다. 이 프로토콜의 주요 특징과 우려 사항은 다음과 같다. - 특징 1. 마스터 노드가 다른 노드를 초대 - 마스터 노드는 슬레이브 노드들을 순서대로 초대하여 데이터 전송을 하도록 한다. - 각 노드는 자신의 순서가 되었을 때만 데이터를 전송한다. 2. 주로 '덤프(dumb)' 장치와 함께 사용 - 단순한 장치들이 마스터 노드의 명령에 따라 순서대로 동작하기에 시스템이 복잡하지 않다. - 우려사항 1. Polling 오버헤드 - 마스터 노드는 각 노드를 초대하는 과정을 거쳐야 하므로 오버헤드가 발생 2. 지연(latency) - 각 노드가 자신의 순서를 기다려야 하므로 지연이 발생할 수 있다. 3. 단일 실패 지점(Single Point of Failure) - 마스터 노드가 고장 나면 전체 시스템이 동작하지 않게 된다.

**token passing** - "Taking Turn" MAC 프로토콜의 한 유형으로, 제어 토큰을 사용하여 순차적으로 노드 간에 전송 권한을 부여하는 방식이다. - 특징 1. 제어 토큰(Control Token) 사용 - 네트워크에서 데이터를 전송할 권한을 가진 특별한 메시지인 "토큰"을 사용한다. - 토큰은 노드 간에 순차적으로 전달되며, 전송이 끝나면 토큰을 다음 노드로 전달한다.

2. 토큰 메시지    
    - 토큰은 특별한 메시지로, 노드가 데이터를 전송할 수 있는 권한을 나타낸다.

- 우려사항 1. 토큰 오버헤드 - 토큰 자체가 네트워크를 통해 전달되므로 오버헤드가 발생한다. - 토큰을 전달하는 과정에서 네트워크 자원이 소모된다.

2. 지연(Latency)
    - 토큰이 각 노드를 순차적으로 지나가기에 지연이 발생할 수 있다.
    - 특정 노드가 토큰을 기다리는 동안 전송 지연이 발생할 수 있다.

<br>

3. 단일 실패 지점(Single Point of Failure)
    - 토큰이 손실되거나 고장 나면 네트워크 전체가 동작하지 않게 된다.
    - 토큰이 사라지면 네트워크는 데이터 전송 권한을 재설정해야한다.

Cable access networks: FDM, TDM and random access

  1. 다중 다운스트림 채널
    • FDM(Frequency Division Multiplexing)을 사용하여, 여러 개의 다운스트림(브로드캐스트) 채널을 통해 데이터를 전송
    • CMTS(Cable Modem Termination System)는 각 채널로 데이터를 전송하며, 각 채널은 최대 1.6 Gbps의 속도로 전송될 수 있다.

2. 다중 업스트림 채널 - 업스트림 채널에서는 여러 사용자가 동시에 데이터를 보낼 수 있다. 각 채널은 최대 1Gbps의 속도를 가질 수 있다. - 모든 사용자는 업스트림 채널 시간 슬롯을 위해 경쟁(random access)을 하거나, 특정 시간 슬롯에 할당(TDM)될 수 있다.

Cable access network

DOCSIS(Data Over Cable Service Interface Specification)는 케이블 TV 시스템을 통해 데이터 전송을 가능하게 하는 표준이다.

DOCSIS의 주요 특징

  1. FDM(Frequency Division Multiplexing)
    • 업스트림 및 다운스트림 주파수 채널을 사용하여 데이터를 전송한다. 이는 주파수 대역을 여러 개의 작은 채널로 나누어 각 채널을 통해 동시에 데이터를 전송할 수 있도록 한다.
  2. TDM(Time Division Multiplexing)
    • 업스트림에서는 시간 슬롯을 사용하여 데이터를 전송한다. 일부 슬롯은 곶정적으로 할당되고, 일부 슬롯은 경쟁을 통해 할당된다.
  3. 다운스트림 MAP 프레임
    • MAP 프레임은 특정 시간 구간 동안 업스트림 슬롯을 할당하는 데 사용된다. 예를 들어 t1에서 t2까지의 시간 구간 동안 어떤 슬롯이 할당되었는지에 대한 정보를 제공한다.
  4. 업스트림 슬롯 요청 및 데이터 전송
    • 케이블 모뎀이 업스트림 슬롯을 요청할 때는 미니 슬롯을 사용하여 요청 프레임을 전송한다. 그런 다음, 할당된 미니 슬롯을 사용하여 업스트림 데이터 프레임을 전송한다.
    • 데이터 전송 중 충돌이 발생할 경우, 랜덤 액세스(binary backoff) 방식을 사용하여 다시 전송을 시도한다.

그림 설명

  1. 케이블 헤드엔드(CMTS)
    • 케이블 네트워크의 중심 장치로, 모든 데이터 전송이 이곳을 통해 이루어진다.
  2. 다운스트림 채널
    • CMTS에서 각 가정으로 데이터가 전송되는 경로
  3. 업스트림 채널
    • 각 가정에서 CMTS로 데이터가 전송되는 경로
  4. 미니 슬롯
    • 업스트림 데이터 전송을 위한 작은 시간 단위. 이 시간 단위는 데이터 전송 요청을 포함하며, 이후 데이터 프레임 전송을 위해 할당된다.

Summary of MAC protocols

채널 분할(Channel Partitioning)

  1. 시간 분할(Time Division)
    • 각 장치가 고정된 시간 슬롯을 할당받아 데이터 전송
  2. 주파수 분할(Frequency Division)
    • 각 장치가 고정된 주파수 대역을 할당받아 데이터 전송

랜덤 액세스(Random Access)

  • ALOHA, Slotted ALOHA, CSMA, CSMA/CD, CSMA/CA

교대 방식(Taking Turns)

  1. 폴링(Pollings)
    • 중앙 노드가 다른 노드들에게 순서대로 전송을 초대
  2. 토큰 전달(Token Passing)
    • 토큰이라는 제어 메시지를 순차적으로 전달하여 데이터 전송 권한을 가짐
    • e.g. 블루투스, FDDI, 토큰 링

MAC addresses

IP 주소

  • 32-bit IP 주소: e.g. 128.119.40.136와 같은 형태
  • 네트워크 계층 주소: 네트워크 계층에서 인터페이스의 주소로 사용된다.
  • 레이어 3 포워딩: IP주소는 네트워크 계층(Layer 3)에서 패킷을 전달하는 데 사용됩니다.

MAC 주소

  • MAC(Media Access Control) 주소: LAN 주소, 물리 주소 또는 이더넷 주소로도 불린다.
  • 기능: 같은 서브넷 내에서 물리적으로 연결된 인터페이스 사이에서 프레임을 전달하는 데 "로컬"로 사용된다.
  • 48-bit MAC 주소: 대부분의 LAN에서 사용되며, 네트워크 인터페이스 카드(NIC) ROM에 저장되어 있다. 소프트웨어로도 설정 가능할 때가 있다.
  • 예시: 1A-2F-BB-76-09-AD와 같은 형태이다. 이는 16진수 표기법으로 사용하며, 각 숫자는 4비트를 나타낸다.

MAC addresses

  1. 고유한 48비트 MAC 주소
    • LAN의 각 인터페이스는 고유한 48비트 MAC 주소를 가지고 있다.
    • MAC 주소는 장치 간 데이터 프레임 전달을 위해 사용된다.
    • e.g. 1A-2F-BB-76-09-AD, 71-65-F7-2B-08-53
  2. 로컬 고유 32비트 IP 주소
    • 각 인터페이스는 로컬 네트워크에서 고유한 32비트 IP주소도 가지고 있다.
    • IP주소는 네트워크 계층에서 데이터 패킷을 전달하는 데 사용된다.
    • e.g. 137.196.7.78, 137.196.7.23
  3. LAN 환경
    • 슬라이드에서는 LAN 환경(유선 또는 무선)을 묘사하고 있으며, 여러 장치들이 고유한 MAC 주소와 IP 주소를 가지고 연결되어 있는 못브을 보여준다.

MAC addresses

  1. MAC 주소 할당 및 관리

    • IEEE가 관리: MAC 주소의 할당은 IEEE(Institute of Electrical and Electronics Engineers)에서 관리
    • 제조사가 MAC 주소 공간을 구매: 고유성을 보장하기 위해 제조사가 MAC 주소 공간의 일부를 구매
  2. 유추

    • MAC 주소: 사회 보장 번호(Social Security Number)와 유사하다. 고유한 식별자로서 장치에 할당된다.
    • IP 주소: 우편 주소와 유사하다. 네트워크 내에서 장치의 위치를 나타낸다.
  3. MAC 평탄 주소: 이동성

    • LAN 간 이동 가능: 한 LAN에서 다른 LAN으로 인터페이스를 이동할 수 있다.
    • IP 주소의 비이동성: IP주소는 이동할 수 없으며, 장치가 연결된 IP 서브넷에 의존한다.





ARP: address resolution protocol

Q. IP 주소를 알고 있을 때, 인터페이스의 MAC 주소를 어떻게 확인할 수 있을까?

ARP 테이블

  • 각 IP 노드의 테이블: LAN 내의 모든 IP 노드(호스트, 라우터)는 ARP 테이블을 가지고 있다.
  • IP/MAC 주소 매핑: ARP 테이블에는 일부 LAN 노드의 IP 주소와 MAC 주소 간의 매핑 정보가 저장된다.
    • 형식: <IP address; MAC address; TTL>



TTL(Time To Live)

  • TTL 정의: 주소 매핑이 기억되는 시간
  • 일반적인 TTL 값: 보통 20분 동안 유지된다.



ARP의 동작 방식

  1. IP 주소를 통한 MAC 주소 확인
    • IP 주소를 이용하여 해당 IP 주소에 대한 MAC 주소를 확인하기 위해 ARP 요청을 보낸다.

  1. ARP 요청 패킷
    • 네트워크에 브로드 캐스트 된다.
    • 대상 IP 주소를 가진 노드는 자신의 MAC 주소를 응답으로 보낸다.

  1. ARP 응답
    • 요청을 보낸 노드는 응답을 받고, 해당 IP 주소와 MAC 주소를 ARP 테이블에 저장

  1. TTL 이후
    • TTL 시간이 지나면, 매핑 정보는 삭제되며 다시 ARP 요청을 통해 갱신해야 한다.





ARP protocol in action

시나리오

  • 목적: 호스트 A가 호스트 B로 데이터그램을 보내고자한다.
  • 문제: 호스트 A가 ARP 테이블에 호스트 B의 MAC 주소가 없다

단계

  1. ARP 쿼리 브로드캐스트

    • 호스트 A가 LAN에 ARP 쿼리를 브로드캐스트한다.
    • ARP 쿼리에는 호스트 B의 IP 주소가 포함되어 있다.
    • 목적지 MAC 주소: FF-FF-FF-FF-FF-FF(브로드캐스트 주소로, LAN의 모든 노드가 이 쿼리를 받는다.)
    • 호스트 A의 ARP 테이블: 처음에는 호스트 A의 ARP 테이블에 호스트 B의 항목이 없다.

  2. ARP 쿼리 수신

    • LAN의 모든 노드가 ARP 쿼리를 수신한다.
    • 각 노드는 ARP 쿼리의 IP 주소가 자신의 IP 주소와 일치하는지 확인한다.

  3. 이더넷 프레임 세부 사항

    • 출발지 MAC 주소: 71-65-F7-2B-08-53 (호스트 A의 MAC 주소).
    • 출발지 IP 주소: 137.196.7.23 (호스트 A의 IP 주소).
    • 목적지 IP 주소: 137.196.7.14 (호스트 B의 IP 주소).








Routing to another subnet: addressing

시나리오:

  • 목적: 호스트 A가 호스트 B로 데이터그램을 라우터 R을 통해 보내고자 한다.
  • 포커스: IP(데이터그램)와 MAC(프레임) 계층에서의 주소 지정


가정:

  1. A는 B의 IP 주소를 알고 있다.
  2. A는 첫 번째 홉 라우터 R의 IP 주소를 알고 있다.
  3. A는 R의 MAC 주소를 알고 있다.






과정:

  1. IP 데이터 그램 생성
    • 호스트 A는 IP 소스 주소가 자신의 IP 주소(111.111.111.111)이고, 목적지 IP 주소가 B의 IP 주소(222.222.222.222)인 IP 데이터그램을 생성한다.

  1. 링크 계층 프레임 생성
    • 호스트 A는 A에서 B로 가는 IP 데이터그램을 포함하는 링크 계층 프레임을 생성한다.
    • 이 프레임의 목적지 MAC 주소는 라우터의 R MAC 주소(E6-E9-00-17-BB-4B) 이다.


  1. 프레임이 A에서 R로 전송됨
    • A가 생성한 프레임
      • 소스 MAC 주소: 74-29-9C-E8-F5-55 (A의 MAC 주소)
      • 목적지 MAC 주소: E6-E9-00-17-BB-4B (R의 MAC 주소)
      • IP 데이터그램
        • 소스 IP 주소: 111.111.111.111 (A의 IP 주소)
        • 목적지 IP 주소: 222.222.222.222 (B의 IP 주소)

  1. 프레임이 R에서 수신됨
    • 라우터 R은 프레임을 수신한다.
    • 프레임에서 데이터그램을 추출
      • 라우터 R은 프레임에서 IP 데이터그램을 제거하고, 이를 IP 계층으로 전달한다.


  1. R이 출발 인터페이스를 결정함
    • 라우터 R은 IP 데이터그램을 수신하고, 이 데이터그램의 소스 IP는 A, 목적지 IP는 B이다.
    • R은 이 데이터그램을 어느 인터페이스로 보낼지 결정한다.

  1. 데이터그램을 링크 계층으로 전달
    • 라우터 R은 A에서 B로 가는 IP 데이터그램을 링크 계층으로 전달한다.
    • 이를 위해 새로운 링크 계층 프레임을 생성한다.

  1. 프레임 생성
    • 소스 MAC 주소: 1A-23-F9-CD-06-9B (R의 MAC 주소)
    • 목적지 MAC 주소: 49-BD-D2-C7-56-2A (B의 MAC 주소)
    • IP 데이터그램:
      • 소스 IP 주소: 111.111.111.111 (A의 IP 주소)
      • 목적지 IP 주소: 222.222.222.222 (B의 IP 주소)

  1. 프레임 전송:
    • 라우터 R은 생성한 프레임을 B로 전송
    • 이 프레임은 B의 MAC 주소를 목적지로 하고, IP 데이터그램을 포함한다.


  1. 프레임 수신 및 처리
    • B는 수신된 프레임의 목적지 MAC 주소가 자신의 MAC 주소와 일치하는지 확인한다.
    • 일치할 경우, B는 프레임을 수신하고 IP 데이터그램을 추출하여 상위 계층으로 전달





Ethernet

지배적인 유선 LAN 기술

  • 첫 번째로 널리 사용된 LAN 기술
    • Ethernet은 최초로 널리 사용된 로컬 네트워크(LAN) 기술로, 많은 네트워크 환경에서 표준으로 자리 잡았다

  • 간단하고 저렴
    • Ethernet은 상대적으로 간단한 구조와 저렴한 비용으로 인해 인기를 끌었다.

  • 속도 경쟁에 대응
    • 초기 속도는 10 Mbps였지만, 현재는 최대 400 Gbps까지 지원할 수 있다.

  • 단일 칩, 여러 속도 지원
    • 예를 들어 Broadcom BCM5761과 같은 칩은 여러 속도를 지원할 수 있어 다양한 네트워크 요구를 충족한다.





Ethernet: physical topology

  • 버스(bus)
    • 90대 인기 방식
      • 모든 노드가 동일한 충돌 도메인에 포함되어 있으며, 따라서 서로 충돌할 수 있다.

- **스위치(swtiched)** - 오늘날 널리 사용되는 토폴로지로, 중앙에 활성화된 **2 계층 스위치**를 배치한다. - 특징 - 스위치 중심: 중앙 스위치가 각 노드를 연결한다. - 충돌 도메인 분리: 각 노드는 별도의 Ethernet 프로토콜을 사용하며, 따라서 노드 간 충돌이 발생하지 않는다.






Ethernet frame structure

Ethernet 프레임은 네트워크 통신에서 데이터 전송을 위한 기본 단위. 프레임은 IP 데이터그램을 Ethernet 프레임에 캡슐화한다.


프레임 구성 요소

  1. Preamble
    • 역할: 수신기와 송신기의 클록 레이트를 동기화하는 데 사용
    • 구성: 7 바이트의 '10101010' 시퀀스와 1 바이트의 '10101011'로 구성된다.
    • 기능: 데이터 전송 전에 수신기와 송신기가 동일한 타이밍을 맞추도록 한다.

  1. Destiniation Address
    • Ethernet 프레임이 도달해야 하는 장치의 MAC 주소를 나타낸다.
    • 일반적으로 48비트(6바이트) 주소이다.
    • 어댑터는 프레임을 수신하면, 목적지 주소가 자신의 MAC 주소와 일치하거나 브로드캐스트 주소인 경우(e.g. ARP 패킷) 프레임의 데이터를 네트워크 계층 프로토콜로 전달한다. 그렇지 않으면 프레임을 폐기한다.

  1. Source Address

    • Ethernet 프레임을 보내는 장치의 MAC 주소
    • 일반적으로 48비트(6바이트) 주소이다.
  2. Type

    • 상위 계층 프로토콜(e.g. IP, ARP)을 식별하는 필드. 이는 수신자가 어떤 프로토콜을 사용할지 결정하는 데 도움을 준다.
    • 수신기에서 여러 프로토콜 중에서 올바른 프로토콜을 선택하는 데 사용된다.(디멀티플렉싱)
  3. Data(Payload)

    • 실제 전송되는 데이터(Payload)이다.
    • 최대 1500 바이트의 데이터를 포함할 수 있다.
    • 데이터가 46바이트 미만인 경우, 최소 프레임 크기(64바이트)를 충족하기 위해 패딩이 추가된다

  1. CRC(Cyclic Redundancy Check)
    • 전송된 데이터의 무결설을 확인하기 위한 오류 검출 필드이다.
    • 4바이트로 구성되며, 프레임의 마지막에 위치하여 프레임 전체에 대한 체크섬을 제공





Ethernet: unreliable, connectionless

Connectionless(비연결형)

  • 특징: 데이터 프레임을 전송할 때, 송신 NIC와 수신 NIC 사이에 핸드셰이킹(handshaking)이 없다.
    • 핸드셰이킹 없음: 데이터 전송 전에 송신자와 수신자가 통신을 설정하는 과정이 없다
    • 결과: 데이터가 전송되지만, 수신자가 그것을 받을 준비가 되었는지 확인하지 않는다.


Unreliable(신뢰성 없음)

  • 특징: 수신 NIC는 송신 NIC에게 ACK(인정) 또는 NAK(부인) 신호를 보내지 않는다.
    • ACK/NAK 없음: 수신자가 프레임을 제대로 받았는지 송신자에게 알리지 않는다.
    • 데이터 손실: 프레임이 손실되면, 상위 계층 프로토콜(e.g. TCP)이 재전송 요청을 하지 않은한 데이터가 영구적으로 손실된다.
    • 복구: 상위 계층의 신뢰성 있는 데이터 전송 프로토콜(rdt)이 손실된 데이터를 복구할 수 있다. 그렇지 않으면 손실된 데이터는 복구되지 않는다.


Ethernet의 MAC 프로토콜

  • 프로토콜: 비슬롯(slotted) CSMA/CD와 이진 백오프(binary backoff) 알고리즘을 사용한다.
    • CSMA/CD: 충돌이 감지되면 전송을 중단하고, 이진 백오프 알고리즘을 사용하여 충돌 회피를 시도한다.
    • 이진 백오프: 충돌 후 재전송하기 전에 랜덤한 시간 동안 기다린 후 다시 전송을 시도한다.





802.3 Ethernet Standards: link & physical layers

다양한 Ethernet 표준

  • 공통 MAC 프로토콜 및 프레임 포맷: 모든 Ethernet 표준은 공통의 MAC 프로토콜과 프레임 형식을 사용한다.
  • 다양한 속도: 2, 10, 100 Mbps, 1, 10, 40 Gbps

물리 계층 매체

  • 다양한 물리 계층 매체: Ethernet은 다양한 물리 계층 매체를 사용하여 데이터를 전송한다. 주요 매체는 다음과 같다.
    • 광섬유(fiber)
    • 케이블(copper)





Ethernet switch

  • Ethernet Switch의 역할과 기능
    • Link-Layer Device
      • Ethernet 스위치는 링크 계층 장치이다. 즉, 데이터 링크 계층에서 작동한다.
      • Active Role: 스위치는 능동적인 역할을 한다. 이는 데이터 프레임을 저장하고 전달하는 기능을 수행하는 것을 의미한다.
    • 기능
      • Store and Forward: 들어오는 Ethernet 프레임을 저장한 후 적절한 포트로 전달
      • MAC Address Examination: 들어오는 프레임의 MAC 주소를 검사하여, 프레임을 한 개 이상의 아웃고잉 링크로 선택적으로 전달한다.
      • CSMA/CD: 세그먼트에 접근할 때 CSMA/CD 메커니즘을 사용한다.


  • 특징
    • Transparent
      • 스위치는 네트워크의 호스트들이 스위치의 존재를 인식하지 못하도록 투명하게 작동한다.
      • 즉, 스위치는 네트워크 트래픽을 관리하지만, 호스트 장치들은 스위치의 존재를 알 필요가 없다.
    • Plug-and-Play, Self-learning
      • 설정 불필요: 스위치는 플러그 앤 플레이 방식으로 동작하며, 설치 후 별도의 설정이 필요하지 않다
      • self-learning: 스위치는 자동 학습 기능을 통해 네트워크의 MAC 주소를 학습하고 기억하여, 효율적으로 데이터 프레임을 전달한다.





Switch: multiple simultaneous transmission

  1. Dedicated, Direct Connections
    • 각 호스트는 스위치에 전용, 직접 연결되어 있다.



  1. Buffer Packets
    • 스위치는 패킷을 버퍼링한다. 이는 일시적인 저장소 역할을 하여 데이터 충돌을 방지하고 효율적인 전송을 보장한다.



  1. Ethernet Protocol on Each Incoming Link
    • 각 들어오는 링크에서 이더넷 프로토콜이 사용되므로
      • No Collisions: 충돌이 발생하지 않는다.
      • Full Duplex: 전이중 통신이 가능하다. 즉, 동시에 송신과 수신이 가능하다.
      • Own Collision Domain: 각 링크는 고유한 충돌 도메인을 갖는다. 이는 다른 링크의 충돌로부터 영향을 받지 않음을 의미한다.


4. **Switching** - A-to-A, B-to-B의 데이터 전송은 **동시에** 가능하며, **충돌 없이** 이루어진다. - 하지만 A-to-A', C-to-A'는 **동시에 일어날 수 없다** -> **동일한 목적지로 불가.** - 스위치에는 여섯 개의 인터페이스가 있다.(1,2,3,4,5,6)






Switch: multiple simultaneous transmissions

Q. 스위치는 A'가 인터페이스 4를 통해 도달 가능하고 B'가 인터페이스 5를 통해 도달 가능하다는 것을 어떻게 아는가?
A. 스위치 테이블

  • 스위치 테이블
    • 각 스위치는 스위치 테이블을 유지하며, 이는 라우팅 테이블과 비슷하게 구성된다. 각 항목은 다음을 포함한다.
      • 호스트의 MAC 주소: 네트워크 내 특정 장치를 식별
      • 호스트에 도달하기 위한 인터페이스: 스위치가 해당 호스트에 도달할 수 있는 인터페이스(포트)를 지정
      • 타임스탬프(항목이 추가되거나 마지막으로 업데이트된 시간)


Q. 스위치 테이블의 항목은 어떻게 생성되고 유지되는가? 라우팅 프로토콜 같은 것이 있는가?











Switch: self-learning

스위치는 네트워크에서 어떤 호스트가 어느 인터페이스를 통해 도달 가능한지 자동으로 학습한다 이 과정은 프레임을 수신할 때마다 이루어진다.






작동 방식

  1. 프레임 수신 시 학습
    • 스위치가 프레임을 수신하면, 해당 프레임이 어느 LAN 세그먼트(인터페이스)에서 들어온 것인지를 확인한다.
    • 이로써 스위치는 송신자의 위치를 "학습"한다.



  1. 스위치 테이블에 기록
    • 스위치는 송신자의 MAC 주소와 해당 위치(인터페이스)를 스위치 테이블에 기록한다.
    • e.g. 호스트 A가 인터페이스 1을 통해 스위치에 연결되어 있다고 학습한다.



  1. e.g.
    • 호스트 A가 A'에게 프레임을 보낼 때, 스위치는 프레임을 수신하고 A의 위치 정보를 스위치 테이블에 기록한다.
      • 송신자(MAC 주소):A
      • 인터페이스: 1
      • TTL: 60(테이블에서 항목이 유지되는 시간)
    • 스위치 테이블 초기 상태
      • 초기에는 스위치 테이블이 비어 있다.
      • 프레임이 수신될 때마다 스위치는 테이블을 채워나간다.









Switch: frame filtering/forwarding

스위치가 프레임을 수신하면, 다음과 같은 절차를 통해 프레임을 필터링하고 전달한다.

  1. 송신 호스트의 MAC 주소와 수신 인터페이스 기록
    • 프레임이 스위치에 도착하면, 스위치는 프레임이 들어온 인터페이스의 송신 호스트의 MAC 주소를 기록한다.



  1. 목적지 주소로 스위치 테이블 인덱싱
    • 프레임의 목적지 MAC 주소를 사용하여 스위치 테이블을 참조한다.



  1. 목적지 항목 확인
    • 목적지 항목이 스위치 테이블에 존재하는지 확인한다.
    • 목적지 항목이 존재하는 경우
      • 프레임이 도착한 세그먼트에 목적지가 있는 경우: 프레임을 드롭한다.
      • 프레임이 도착한 세그먼트에 목적지가 없는 경우: 스위치 테이블에 지정된 인터페이스로 프레임을 전달(forward)한다.
    • 목적지 항목이 존재하지 않는 경우
      • 프레임을 모든 인터페이스로 플러딩(flooding)한다. 단, 프레임이 도착한 인터페이스는 제외한다.
      • 플러딩: 네트워크에서 데이터를 전송하는 방식 중 하나로, 특정 목적지로 지정하지 않고 네트워크에 연결된 모든 장치로 데이터를 보내는 것을 의미한다.









Self-learning, forwarding: example


1. 프레임 목적지 'A''의 위치를 모를 때: **Flood** - 플러딩: 스위치는 목적지 'A''의 MAC 주소를 모르면, 플러딩을 수행하여 모든 포트로 프레임을 전송한다. - 이 과정을 통해 스위치는 목적지 A'가 어느 포트에 연결되어 있는지 알게 된다.

  1. 목적지 A의 위치를 알 때: Selectively send on just one link
    • 선택적 전송: 스위치는 목적지 A의 MAC 주소와 연결된 포트를 알고 있으면, 해당 포트로만 프레임을 전송한다.
    • 이렇게 하면 네트워크의 효율성을 높이고, 불필요한 트래픽을 줄일 수 있다.







interconnecting switches





  • 여러 개의 스위치가 연결되어 하나의 큰 네트워크를 형성할 수 있다.
  • self-learning 기능을 갖춘 스위치들은 서로 연결되어도 문제없이 작동한다.

Q. A에서 G로 데이터를 전송할 때, S1은 어떻게 S4와 S3를 통해 G로 프레임을 전달해야 하는지 알 수 있을까요?
A. Self-Learning(단일 스위치의 경우 동일하게 작동한다)







Self-Learning multi-switch example



Q. S1, S2, S3, S4의 스위칭 테이블과 패킷 전달 과정을 보여라
A.

  1. initial frame transmission(C to I)
    • C는 I에게 프레임을 보낸다.
    • S1은 처음에 I의 위치를 모르기에 모든 포트로 프레임을 플러딩한다.
    • 프레임은 S4, S3을 거쳐 I에게 도달한다.

  1. Switch Table Update After Initial Frame
    • S1: C가 연결된 포트를 학습(C의 MAC 주소와 포트 기록)
    • S4: C의 프레임을 받으면서 C의 위치 학습
    • S3: C의 프레임을 받으면서 C의 위치 학습

  1. Response from I to C
    • I는 C에게 응답 프레임을 보냅니다.
    • S3는 C의 위치를 알고 있으므로, S4로 프레임을 전달합니다.
    • S4는 C의 위치를 알고 있으므로, S1로 프레임을 전달합니다.
    • S1은 C의 위치를 알고 있으므로, C에게 프레임을 전달합니다.

  1. Final Switch Table Entries
Switch MAC Address Interface
S1 C 1
S1 I 2
S3 C 2
S3 I 1
S4 C 1
S4 I 2





Small institutional network






Switches vs routers

공통점

  1. Store-and-Forward 방식 사용
    1. 라우터(Routers): 네트워크 계층 장치로, 네트워크 계층 헤더를 검사한다.
    2. 스위치(Switches): 링크 계층 장치로, 링크 계층 헤더를 검사한다.

  1. 포워딩 테이블(Forwarding Tables) 사용
    1. 라우터(Routers): 라우팅 알고리즘과 IP 주소를 사용하여 포워딩 테이블을 계산한다.
    2. 스위치(Switches): 플러딩, 학습, MAC 주소를 사용하여 포워딩 테이블을 학습한다.






Virtual LANs(VLANs): motivation


Q. LAN의 크기가 확장되고 사용자가 접속 지점을 변경하면 어떻 일이 발생할까?



배경 설명

  • Single Broadcast Domains: 현재 네트워크는 단일 브로드캐스트 도메인으로 구성되어 있다.


    - **Scaling 문제** - 모든 계층-2 브로드캐스트 트래픽(e.g. ARP, DHCP, 알 수 없는 MAC 주소 탐색)이 전체 LAN을 가로질러 전파된다.
    • 효율성, 보안, 프라이버시 문제
      • 네트워크의 크기가 커질수록 브로드캐스트 트래픽이 증가하여 네트워크 효율성이 저하된다.
      • 모든 브로드캐스트 트래픽이 전체 네트워크를 가로질러 전파되므로 보안과 프라이버시 문제가 발생할 수 있다.
    • 관리상의 문제
      • e.g. 컴퓨터 과학 사용자가 사무실을 전기 공학 부서로 옮길 때
        • 사용자는 물리적으로 전기 공학 스위치에 연결되지만 논리적으로는 여전히 컴퓨터 과학 네트워크에 속하고 싶어 한다.
        • 이는 네트워크 관리에 있어 복잡성을 증가시킨다.






Port-Based VLANs

Virtual Local Area Network(VLAN)

  • VLAN의 개념: VLAN은 물리적으로 하나의 LAN infreastructure에서 여러 개의 가장 LAN을 정의할 수 있게 하는 기술이다. 이는 네트워크 스위치가 VLAN 기능을 지원할 때 가능하다.


Port-based VLAN(포트 기반 VLAN)

  • 포트 기반 VLAN 정의: 포트 기반 VLAN에서는 스위치 관리 소프트웨어를 통해 스위치 포트를 그룹화하여 단일 물리적 스위치여러 개의 가상 스위치처럼 운영할 수 있게 한다.







Port-based VLANs

  1. 트래픽 격리(Traffic Isolation)
    • 특정 포트 그룹(e.g. 포트 1-8)으로의 프레임은 오직 해당 포트 그룹 내에서만 도달할 수 있다.
    • 예를 들어, 포트 1-8에서 전송된 데이터는 포트 1-8로만 전송되고, 다른 포트(e.g. 9-15)로는 전송되지 않는다.
    • VLAN을 스위치 포트가 아닌 단말기의 MAC 주소를 기반으로 정의할 수도 있다.


  1. 동적 멤버십(Dynamic Membership)
    • 포트는 VLAN 간에 동적으로 할당될 수 있다.
    • 이는 네트워크 관리자가 필요에 따라 포트를 특정 VLAN에 할당하거나 해제할 수 있음을 의미한다.


  1. VLAN 간 포워딩(Forwarding between VLANs)
    • 서로 다른 VLAN 간의 데이터 전송은 라우팅을 통해 이루어진다. 이는 별도의 스위치를 사용하는 경우와 동일한 방식이다.
    • 실제로는 벤더들이 스위치와 라우터가 결합된 장비를 판매하여 이러한 기능을 제공한다.






VLANs spanning multiple switches

  1. 트렁크 포트(Trunk Port)
    • 트렁크 포트는 여러 물리적 스위치에 걸쳐 정의된 VLAN 간의 프레임을 전달하는 역할을 한다.
    • 트렁크 포트를 통해 전달되는 프레임은 단순한 802.1 프레임이 아니라 VLAN ID 정보를 포함해야 한다.
    • 이는 프레임이 정확한 VLAN으로 라우팅될 수 있도록 보장


  1. 802.1q 프로토콜
    • 802.1q 프로토콜은 트렁크 포트를 통해 전달되는 프레임에 추가적인 헤더 필드를 추가/제거한다.
    • 이 헤더 필드는 VLAN ID 정보를 포함하여, 프레임이 어떤 VLAN에 속하는지 식별할 수 있게 한다.





802.1Q VLAN frame format






MultiProtocol label switching(MPLS)

  • 목표: MPLS(Multiprotocol Label Switching)의 주요 목표는 MPLS를 지원하는 라우터 네트워크 내에서 고속 IP 포워딩을 제공하는 것이다. 이를 위해 고정 길이의 라벨(Label)을 사용하며, 이는 전통적인 IP 라우팅에서 사용되는 가장 짧은 접두사 매칭 방식 대신에 사용된다.

  • 주요 포인트
    • 빠른 조회: 고정 길이 식별자를 사용하여 라우팅 테이블 조회 시간을 단축한다.
    • 가상 회로(Virtual Circuit) 접근법 차용: MPLS는 가상 회로 방식에서 아이디어를 가져와 데이터를 전달한다.
    • IP 데이터그램 유지: MPLS로 IP 데이터그램을 전달할 때도 여전히 IP 주소를 유지한다.







MPLS capable routers

  • 별칭: 라벨 스위치 라우터(Label-Switched Router)라고도 한다.
  • 기능: 패킷을 전송할 때 라벨 값만을 기반으로 출력 인터페이스로 전달한다. IP주소를 검색하지 않는다.
    • MPLS 포워딩 테이블: IP 포워딩 테이블과 구별된다.


유연성

  • MPLS 포워딩 결정: IP와 다를 수 있다.
    • 목적지 및 소스 주소 사용: 트래픽 엔지니어링을 위한 동일한 목적지로 흐름을 다르게 라우팅할 수 있다.
    • 빠른 재라우팅: 링크가 실패할 경우 미리 계산된 백업 경로를 사용하여 흐름을 신속하게 재 라우팅한다.





MPLS vs IP path


IP routing

  • 경로결정: 목적지 주소만으로 경로가 결정된다.
  • 동작: 패킷이 목적지로 향하는 경로는 오직 패킷에 포함된 IP 주소를 기반으로 라우터가 결정한다.



MPLS 라우팅

  • 경로 결정: 경로는 소스 주소와 목적지 주소를 기반으로 결정될 수 있다.
  • 동작: MPLS 라우터는 고정 길이 라벨을 사용하여 패킷을 라우팅한다.
    • R4와 같은 IP/MPLS 라우터는 소스 주소 또는 다른 필드를 기반으로 다른 MPLS 경로를 사용할 수 있다.
  • 유연성
    • 일반화된 포워딩: 다양한 경로를 사용할 수 있으며, 트래픽 엔지니어링이 가능하다.
    • 빠른 재라우팅: 링크 장애 시 백업 경로를 미리 계산하여 빠르게 전환할 수 있다.





MPLS signaling

  • 링크 상태 플러딩 프로토콜 수정
    • OSPF,IS-IS 프로토콜 수정: MPLS 라우팅에서 사용되는 정보를 전달하기 위해 링크 상태 플러딩 프로토콜이 수정된다.
      • 전달되는 정보: 링크 대역폭, 예약된 링크 대역폭의 양 등


  • MPLS 라우터의 동작
    • RSVP-TE 신호 프로토콜 사용: MPLS 라우팅을 설정하기 위해 MPLS 엔트리 라우터는 RSVP-TE 신호 프로토콜을 사용한다
      • RSVP-TE (Resource Reservation Protocol - Traffic Engineering): MPLS 포워딩을 설정하고 트래픽 엔지니어링을 지원하는 프로토콜입니다.
    





MPLS forwarding tables

'학교수업 > 컴퓨터망' 카테고리의 다른 글

Chapter8: Security  (1) 2024.07.16
Chapter7: Wireless and Mobile Networks  (4) 2024.07.14
Chapter5 Network Layer: Control Plane  (0) 2024.07.09
Chapter4: Network Layer-Data Plane  (0) 2024.07.04
Chapter3: Transport Layer-2  (0) 2024.07.04

Network-layer functions

  1. 포워딩(Forwarding)
    • 기능: 라우터의 입력에서 적절한 라우터 출력으로 패킷을 이동
    • data plane
    • 설명: 포워딩은 라우터의 들어오는 링크에서 나가는 링크로 패킷을 보내는 과정이다. 이는 포워딩 테이블을 기반으로 하여 실제 데이터가 네트워크를 통해 이동하는 것을 처리한다.
  1. 라우팅(routing)
    • 기능: 패킷이 출발지에서 목적지까지 가는 경로를 결정한다.
    • control plane
    • 설명: 라우팅은 패킷이 목적지에 도달하기 위해 취해야 할 경로를 결정하는 작업이다. 이는 라우팅 알고리즘과 프로토콜을 사용하여 패킷이 효율적이고 정확하게 네트워크를 통해 전달되도록 한다.

network control plane을 구성하는 두 가지 접근 방식

  1. 라우터별 제어(전통적 방식)
  2. 논리적으로 중앙집중화된 제어(소프트웨어 정의 네트워킹, SDN)

Per-router control plane

  1. Individual routing algorithm(개별 라우팅 알고리즘)
    • 각 라우터마다 개별적으로 라우팅 알고리즘이 존재하고, 이들이 control plane 에서 상호작용한다.
    • 각 라우터마다 독립적으로 라우팅 테이블을 관리하고 업데이트한다.

Software-Defined Networking (SDN) control plane

  1. 원격 컨트롤러(Remote Controller)
    • 중앙집중화된 컨트롤러가 모든 라우터의 포워딩 테이블을 계산하고 설치한다

  1. 구성요소
    • Remote Controller: 네트워크 중앙에서 모든 라우터의 forwarding table을 관리한다.
    • CA(Controller Agent): 라우터에 설치된 agent로, 컨트롤러와 통신하여 forwarding table를 받는다.
    • local forwarding table: 컨트롤러가 제공한 정보를 기반으로 라우터에서 패킷을 포워딩하는 데 사용된다.

Routing Protocols

  • Routing Protocol goal:
    • 목표: 보내는 호스트에서 받는 호스트까지 네트워크의 라우터를 통해 'good' path를 결정하는 것
    • 경로: 초기 source 호스트에서 최종 목적지 호스트까지 패킷이 거치는 라우터의 시퀀스
    • 좋은 경로: 비용이 적거나. 가장 빠르거나. 가장 혼잡하지 않은 경로
    • 라우팅: 상위 10개 네트워크 챌린지 중 하나로 언급됨

Graph abstraction: link costs

Routing Algorithm classification

  1. How fast do routes change?(경로가 얼마나 빨리 변경되는가?)
    • Static(정적): 경로가 시간이 지나면서 천천히 변경된다.
    • Dynamic(동적): 경로가 더 빨리 변경되며, 주기적인 업데이트나 링크 비용 변화에 반응하여 변경된다.
  2. Global or decentralized information?(전역 또는 분산된 정보?)
    • Global(전역): 모든 라우터가 완전한 토폴로지와 링크 비용 정보를 가지고 있다.
    • Decentralized(분산): 정보 교환과 계산 과정이 반복적으로 이루어지며. 라우터는 처음에 연결된 이웃 라우터에 대한 링크 비용만 알고 있다.
      • "distance vercotr algorithm": 라우터는 이웃 라우터와의 정보 교환을 통해 경로를 점진적으로 계산한다. 처음에는 이웃 라우터에 대한 링크 비용만 알고있으며, 반복적인 정보 교환을 통해 전체 경로 정보를 얻게 된다.

Dijkstra's link-state routing algorithm

  1. centralized(중앙화된)
    • 네트워크 토폴로지와 링크 비용이 모든 노드에 알려져 있다.
    • "링크 상태 브로드 캐스트"를 통해 달성된다.
    • 모든 노드는 동일한 정보를 가진다.
  2. Least Cost Paths
    • 한 노드(출발지)에서 다른 모든 노드로의 최소 비용 경로를 계산한다.
    • 이 과정에서 포워딩 테이블이 생성된다.
  3. Iterative(반복적인)
    • k번의 반복 후. k개의 목적지에 대한 최소 비용 경로를 알게 된다.
  4. Notation(표기법)
    • cx,y: 노드 x에서 y로의 직접 링크 비용. 직접 연결된 이웃이 아닐 경우 무한대로 설정된다.
    • D(v): 출발지에서 목적지 v까지의 최소 비용 경로의 현재 추정치
    • p(v): 출발지에서 v까지의 경로에서의 이전 노드
    • N' : 최소 비용 경로가 확정적으로 알려진 노드의 집합

  • Least-Cost-Path Tree: 이전 노드를 추적하여 최소 비용 경로 트리를 구성한다.
  • Ties: 동일한 비용의 경로가 있을 수 있으며, 이는 임의로 선택될 수 있다.

Dijkstra's algorithm:discussion

  1. algorithm complexity
    • 다익스트라 알고리즘은 각 반복에서 모든 노드를 검사해야 하므로 기본적으론 O(n2)의 시간 복잡도를 가진다.
    • 더 효율적인 구현을 통해 O(nlogn)의 시간 복잡도를 달성할 수 있다.
  2. message complexity
    • 각 라우터는 링크 상태 정보를 다른 모든 라우터에 브로드캐스트해야한다.
    • 효율적인 브로트캐스트 알고리즘을 사용하면 메시지 복잡도는 O(n2)가 된다.

Dijkstra's algorithm: oscillations possible

  1. 링크 비용과 트래픽 볼륨
    • 링크 비용이 트래픽 볼륨에 의존할 때, route oscillations이 발생할 수 있다.
  2. 샘플 시나리오
    • 목적지 a로의 라우팅에서, 트래픽이 노드 d,c,e에서 각각 1,e(1보다 작음), 1의 비율로 돌아온다.
    • 링크 비용은 방향성이 있으며, 트래픽 볼륨에 따라 달라진다.

Distance vector algorithm

  • Bellman-Ford(BF) 방정식을 기반으로 한 거리 벡터 알고리즘(Distance Vector Algorithm)에 대해 설명하고 있다.
  • Dynamic 프로그래밍을 이용하여 최소 비용 경로를 계산한다.

  • Dx(y): 노드 x에서 노드 y까지의 최소 비용 경로의 비용
  • cx,y: 노드 x에서 이웃 노드 v로의 직접 링크 비용
  • Dy(y): 노드 v에서 노드 y까지의 최소 비용 경로의 추정 비용

Bellman-Ford Example

Dx(y) : x에서 y까지의 최소 비용 경로의 비용
cx,v: 노드 x에서 이웃 노드 v까지의 직접적인 링크 비용
Dx(y): 노드 v에서 y까지의 추정된 최소 비용 경로의 비용

방정식: Dx(y) = minv{cx,v + Dv(y)}

방정식 해석

  1. min: 방정식에서 x의 모든 이웃 v를 대상으로 최소값을 계산한다.
  2. cx,v: 노드 x에서 이웃 노드 v까지의 직접적인 링크 비용
  3. Dv(y): 이웃 노드 v에서 목적지 y까지의 추정된 최소 비용 경로

Distance Vector Algorithm

주요 개념

  1. 거리 벡터의 전송
    • 일정 시간마다 각 노드는 자신의 거리 벡터(각 목적지까지의 추정 최소 비용)를 이웃노드들에게 전송한다.
    • 거리 벡터는 노드가 알고 있는 모든 목적지에 대한 현재 최적 경로 비용을 포함한다.
  2. 거리 벡터의 수신 및 업데이트
    • 노드 x는 이웃으로부터 새로운 거리 벡터를 수신할 때마다, Bellman-Ford 방정식을 사용하여 자신의 거리 벡터를 업데이트한다.
    • Dx(y) <- minv{cx,v + Dv(y)}
  3. 수렴성
    • 자연스러운 조건하에서는, 각 노드 x에서 목적지 y까지의 추정된 최소 비용 경로 Dx(y)는 실제 최소 비용 경로 dx(y)로 수렴하게 된다,

Distnace Vector Algorithm

각 노드의 작업 과정

  1. 기다림(Wait for)
    • 각 노드는 지역 링크 비용의 변화 또는 이웃 노드들로부터 메시지 수신을 기다린다.
  2. 재계산(recompute)
    • 이웃으로부터 받은 거리 벡터(DV) 정보를 사용하여 자신의 거리 벡터를 재계산한다.
  3. 알림(notify)
    • 만약 어떤 목적지에 대한 거리 벡터가 변경되었으면, 그 변경 사항을 이웃 노드들에게 알린다.

특성

  1. 반복적이고 비동기적(iterative, asynchronous)
    • 각 지역 반복은 다음의 원인으로 발생한다.
      • 지역 링크 비용의 변화
      • 이웃으로부터 받은 거리 업데이트 메시지
  2. 분산적이고 자기 정지(distributed, self-stopping)
    • 각 노드는 자신의 거리 벡터가 변경되었을 때만 이웃 노드들에게 알린다.
    • 이웃 노드들도 필요할 때만 그들의 이웃 노드들에게 알린다.
    • 알림을 받지 않으면 아무런 행동을 하지 않는다.

Distance Vector:Example

  1. 초기 설정
    • 모든 노드는 자신과 직접 연결된 이웃 노드들에 대한 거리 벡터를 초기화한다.
    • 직접 연결되지 않은 노드들에 대한 경로 비용은 무한대로 설정된다.
  2. 정보 교환 및 업데이트
    • 일정 시간마다 또는 이웃 노드들로부터 거리 벡터를 업데이트를 받을 때마다, 각 노드는 자신의 거리 벡터를 갱신하고 이를 이웃 노드들에게 전송한다.
    • Bellman-Ford 방정식을 사용하여 각 노드는 이웃 노드들로부터 받은 정보를 바탕으로 최적 경로를 다시 계산한다.
  3. 수렴
    • 이 과정을 반복하면, 네트워크 내의 모든 노드는 모든 목적지까지의 최적 경로를 찾게 된다.
    • 최종적으로 모든 노드는 목적지까지의 최소 비용 경로 정보를 갖게 된다.

Distance Vector: Link Cost Changes

link cost changes

  • node는 local link cost의 변화를 감지한다.
  • 변화가 감지되면 routing info를 업데이트하고, local DV를 재계산한다.
  • DV가 바뀌면, 이웃들에게 알린다.
  • good nnew travels fast
    • t0: y가 link-cost 의 변화를 감지한다. 그리고 DV를 업데이트하고 이웃들에게 알린다.
    • t1: z는 y로부터 업데이트를 받는다. 그리고는 z의 테이블을 업데이트하고, x에 대한 최소 비용을 계산하고 DV를 이웃들에게 전달한다.
    • t2: y는 z의 업데이트를 받고, distance table을 업데이트한다. y의 최소비용은 바뀌지 않는다. 그렇기에 이를 z에게 메시지를 보내지 않는다.

  • bad news travels slow
    • y는 x로의 cost가 60인 것을 바로 알 수 있다. 허나 z는 x로의 cost가 5 인것으로 알고 있다. 그래서 y는 "노드 x로 가는 나의 새로운 비용은 6이 될 것이다. (노드 z를 경유해서)라고 계산하고, 노드 z에게 새로운 비용 6을 알린다.
    • 노드 z는 노드 y를 통해서 노드 x로 가는 경로의 새로운 비용이 6임을 알게 되어, "노드 x로 가는 나의 새로운 비용은 7이 될 것이다. (노드 y를 경유해서)라고 계산하고, 노드 y에게 새로운 비용 7을 알린다.
    • 노드 y는 노드 z를 통해 노드 x로 가는 경로의 새로운 비용이 7임을 알게 되어 "노드 x로 가는 나의 새로운 비용은 8이 될 것 이다.(노드 z를 경유해서)라고 계산하고, 노드 z에게 새로운 비용 8을 알린다.
    • 이러한 과정이 반복되면서 비용이 계속 증가한다.
      • 노드 z는 비용이 8이 되고, 노드 y에게 9를 알림
      • 노드 y는 비용이 9가 되고, 노드 z에게 10을 알림
      • 계속된다...

Comparison of LS and DV algorithms

message complexity

  • LS(Link State)
    • n개의 라우터가 있을 때 O(n^2) 메시지가 전송된다.
  • DV(Distance Vector)
    • 이웃 간의 교환만 필요하다
    • 수렴 시간은 상황에 따라 다르다.

수렴 속도(speed of Convergence)

  • LS(Link State)
    • O(n^2) 알고리즘이며 O(N^2) 메시지가 필요하다.
    • 경로의 진동(oscillations)이 발생할 수 있다.
  • DV(Distance Vector)
    • 수렴 시간은 상황에 따라 다르다.
    • 라우팅 루프가 발생할 수 있으며 무한 루프 문제(count-to-infinity problem)가 존재한다.

견고성(Robustness)

  • 라우터가 오작동하거나 손상되었을 때 어떻게 되는지에 대한 비교
  • LS(Link State)
    • 라우터가 잘못된 링크 비용을 광고할 수 있다.
    • 각 라우터는 오직 자신의 테이블만 계산한다.
  • DV(Distance Vector)
    • DV 라우터는 잘못된 경로 비용을 광고할 수 있다.("나는 모든 곳으로 정말 낮은 비용의 경로를 가지고 있다.): black-holing 문제
    • 각 라우터의 테이블이 다른 라우터들에 의해 사용되기에 오류가 네트워크를 통해 전파될 수 있다.






Making Routing Scalable

현재까지의 라우티 연구 - 이상적(Idealized)

  • 모든 라우터가 동일하다고 가정
  • 네트워크가 "평평하다(flat)"고 가정
  • 실제로는 그렇지 않음



확장성 문제(Scale: Billions of Destination)

  • 모든 목적지를 라우팅 테이블에 저장할 수 없음:
    • 라우티 테이블에 모든 목적지를 저장하는 것은 불가능
  • 라우팅 테이블 교환이 링크를 압도할 것
    • 모든 라우터가 모든 목적지에 대한 정보를 교환하면 네트워크 링크가 과부하될 수 있다.



관리적 자율성(Administrative Autonomy)

  • 인터넷: 네트워크의 네트워크
    • 인터넷은 여러 네트워크로 구성된 네트워크이다.
  • 각 네트워크 관리자는 자신의 네트워크에서 라우팅을 제어하고자 할 수 있음
    • 각 네트워크 관리자는 자신이 관리하는 네트워크 내에서 라우팅을 제어하고 싶어할 수 있다.






Internet approach to scalable routing

  • 인터넷은 확장 가능한 라우팅을 위해 라우터들을 "자율 시스템(Autonomous Systems, AS)" 또는 "도메인"으로 알려진 영역으로 집계합니다.



Intra-AS (Intra-Domain) 라우팅

  • 동일한 AS 내에서의 라우팅
    • 네트워크 내에서 라우팅을 의미한다.
    • AS 내부의 모든 라우터는 동일한 인트라-도메인 프로토콜을 실행해야 한다.
    • 다른 AS에 있는 라우터들은 서로 다른 인트라-도메인 라우팅 프로토콜을 실행할 수 있다.
    • 게이트웨이 라우터(Gateway Router)
      • 자신의 AS의 "가장자리"에 위치하며, 다른 AS에 있는 라우터와 연결된 링크를 가진다.



Inter-AS(Inter-Domain)

  • AS 간 라우팅:
    • 여러 AS 간의 라우팅을 의미한다.
    • 게이트웨이 라우터는 인트라-도메인 라우팅뿐만 아니라 인터-도메인 라우팅도 수행한다.






Internonnected ASes



포워딩 테이블(Forwarding Table)

  • 포워딩 테이블의 구성
    • 포워딩 테이블은 Intra-AS routing 및 Inter-AS routing 알고리즘에 의해 구성된다.
    • 인트라-AS 라우팅 (Intra-AS Routing)
      • AS 내부의 목적지에 대한 항목을 결정합니다.
    • 인터-AS 라우팅 (Inter-AS Routing)
      • 외부 목적지에 대한 항목을 결정하는 데 인트라-AS 라우팅과 함께 사용됩니다.



라우팅의 예

  • AS1, AS2, AS3 간의 라우팅:
    • 그림에서 AS1, AS2, AS3이 서로 연결된 모습입니다.
    • 각 AS는 내부 라우팅(Intra-AS Routing)을 통해 자체 네트워크 내부의 데이터를 처리하고, 외부 라우팅(Inter-AS Routing)을 통해 다른 AS와의 데이터를 처리합니다.

 






Inter-AS routing: a role in intradomain forwarding

  • AS1 내부의 라우터가 AS1 외부로 향하는 데이터그램을 수신한다.
    • 이 라우터는 AS1 내의 게이트웨이 라우터로 패킷을 전달해야 한다. 그러나 어느 게이트웨이 라우터로 보내야 할까?



  • AS1 inter-domain routing의 역할
    1. 목적지 학습
      • AS1 인터-도메인 라우팅은 AS2와 AS3를 통해 도달 가능한 목적지를 학습해야 합니다.
    2. 접근성 정보 전파
      • 이 접근성 정보를 AS1 내의 모든 라우터에게 전파해야 합니다.






Inter-AS routing: routing within an AS

AS(Autonomous Systems) 내에서 사용되는 일반적인 라우팅 프로토콜에 대해 설명한다.

  1. RIP(Routing Information Protocol)
    • 고전적인 DV 기반 프로토콜
    • 거리 벡터는 30초마다 교환된다.
    • 더 이상 사용되지 않음

 

  1. EIGRP(Enhanced Interior Gateway Routing Protocol):
    • DV 기반 프로토콜
    • Cisco 장비에서 주로 사용된다.

 

  1. OSPF (Open Shortest Path First)
    • 링크 상태 라우팅 프로토콜
    • 각 라우터는 전체 네트워크 토폴로지를 알고 있으며, 다익스트라 알고리즘을 사용하여 최단 경로를 계산
    • 다양한 링크 비용 메트릭을 지원(대역폭, 지연)
    • 보안: 모든 OSPF 메시지는 인증되어 악의적인 침입을 방지
    • IS-IS 프로토콜은 ISO 표준이며, OSPF와 본질적으로 동일






OSPF(Open Shortest Path First) routing

주요 특징

  1. 공개 표준("Open")
    • OSPF는 공개적으로 사용할 수 있는 프로토콜



  1. 클래식 링크 상태 라우팅(classic link-state)
    • 링크 상태 광고(Link-State Advertisements)
      • 각 라우터는 OSPF 링크 상태 광고를 전체 자율 시스템(AS)의 다른 모든 라우터에게 전송
      • 이는 TCP/UDP를 사용하지 않고 직접 IP를 통해 이루어진다.
    • 다양한 링크 비용 매트릭 지원
      • OSPF는 대역폭, 지연 시간 등 다양한 링크 비용 메트릭을 지원한다.
    • 전체 토폴로지 인식
      • 각 라우터는 네트워크의 전체 토폴로지를 알고 있으며, 다익스트라 알고리즘을 사용하여 포워딩 테이블을 계산한다.



  1. 보안(Security)
    • 모든 OSPF 메시지는 인증되어 악의적인 침입을 방지한다.






Hierarchical OSPF



  • 두 계층 구조(Two-Level Hierarchy)
    • 로컬 영역(Local Area)
    • 백본(Backbone)

 

  • 링크 상태 광고(Link-State Advertisements)
    • 링크 상태 광고는 해당 영역 내에서만 또는 백본 내에서만 플러딩(전송)된다.

 

  • 노드의 토폴로지 인식
    • 각 노드는 해당 영역의 상세한 토폴로지를 알고 있으며, 다른 목적지로 가는 방향만을 알고 있다.



구성 요소

  1. 로컬 라우터(Local Routers)
    • LS 플러딩: 링크 상태 광고는 해당 영역 내에서만 플러딩된다.
    • 라우팅 계산: 영역 내에서의 라우팅을 계산
    • 패킷 포워딩: 영역 외부로 가는 패킷은 영역 경계 라우터를 통해 포워딩된다.



  1. 영역 경계 라우터(Area Border Routers)
    • 자신의 영역 내 목적지로의 거리를 요약하여 백본에 광고한다.



  1. 백본 라우터(Backbone Routers)
    • 백본 내에서 OSPF를 실행
    • 백본은 전체 네트워크의 중심 역할을 한다.



  1. 경계 라우터(Boundary Routers)
    • 다른 AS와 연결된다.






routing among ISPs: BGP



Internet inter-AS routing: BGP(Border Gateway Protocol)

  • BGP 개요
    • BGP(Border Gateway Protocol): 사실상의 inter-domain 라우팅 프로토콜이다.
      • "인터넷을 하나로 묶는 접착제"라고 불린다.



  • BGP의 역할
    • 서브넷이 자신의 존재와 도달할 수 있는 목적지를 인터넷의 다룬 부분에 광고할 수 있도록 한다.
      • "나는 여기 있고, 내가 도달할 수 있는 곳과 그 방법은 이것이다."



  • BGP가 각 AS에 제공하는 기능
    1. eBGP(External BGP)
      • 이웃 AS로부터 서브넷 도달 가능 정보를 얻는다.
    2. iBGP(Internet BGP)
      • 도달 가능 정보를 모든 AS 내부 라우터에게 전파
    3. 경로 결정
      • 도달 가능 정보와 정책에 기반하여 다른 네트워크로의 "좋은" 경로를 결정






eBGP, iBGP connections






BGP basics

 

BGP Session

  • 두 개의 BGP 라우터("peer")가 반영구적인 TCP 연결을 통해 BGP 메시지를 교환한다.
    • 서로 다른 목적지 네트워크 프리픽스(destination network prefixes)로 가는 경로를 광고한다.
    • BGP는 "경로 벡터(path vector)" 프로토콜이다.
  • 예: AS3 게이트웨이 3a가 AS2 게이트웨이 2c에게 path AS3, X를 광고할 때, AS3는 AS2에게 X로 가는 데이터그램을 전달할 것을 약속한다.








Path attributes and BGP routes



  • BGP advertised route: prefix + attributes
    • prefix: 광고되는 목적지를 나타낸다.
    • 중요한 두 가지 속성
      1. AS-PATH: 접두사 광고가 통과한 자율 시스템(AS)의 목록
      2. NEXT-HOP: 다음 홉 AS로 가는 특정 내부 AS 라우터를 나타낸다.



  • policy-based routing
    • 경로 광고를 수신하는 게이트웨이는 수입 정책(import policy)을 사용하여 경로를 수락하거나 거부한다.
      • e.g. AS Y를 통해 절대 라우팅하지 않도록 설정
    • AS 정책은 또한 다른 인접 AS에 경로를 광고할지 여부를 결정






BGP path advertisement

  1. AS2 라우터 2c가 경로 광고를 수신
    • AS2의 라우터 2c는 AS3의 라우터 3a로부터 AS3, X 경로 광고를 eBGP를 통해 수신한다.
    • 이 광고는 AS3가 목적지 X로 가는 경로를 가지고 있음을 나타낸다.

 

  1. AS2 정책에 따라 경로 수락 및 전파
    • AS2 정책에 따라, AS2의 라우터 2c는 AS3, X 경로를 수락하고, iBGP를 통해 이 경로를 모든 AS2 라우터에게 전파한다.
    • 이로써 AS2 내부의 모든 라우터는 AS3, X 경로를 알게된다.

 

  1. AS2 정책에 따라 경로 광고
    • AS2 정책에 따라, AS2의 라우터 2a는 eBGP를 통해, AS2, AS3, X 경로를 AS1의 라우터 1c에게 광고한다.
    • 이제 AS1도 X로 가는 경로를 알게 된다.



gateway router는 destination에 대한 multiple paths에 대해 학습할 것이다.

  • AS1의 게이트웨이 라우터 1c는 AS2의 라우터 2a로부터 AS2, AS3, X 경로를 학습한다.
  • 또한, AS1의 게이트웨이 라우터 1c는 AS3의 라우터 3a로부터 직접 AS3, X 경로를 학습한다.
  • 정책 기반 경로 선택: AS1의 정책에 따라, 게이트웨이 라우터 1c는 AS3, X 경로를 선택하고, iBGP를 통해 AS1 내의 모든 라우터에게 광고한다.






BGP messages

  • BGP(Border Gateway Protocol) 메시지는 peer 간에 TCP 연결을 통해 교환된다. 이러한 메시지는 BGP 피어 간의 경로 정보 교환과 연결 상태를 유지하는 데 사용된다.
  • BGP 메시지 유형
    1. OPEN: - 기능: 원격 BGP peer에 TCP 연결을 열고, 발신 BGP 피어를 인증한다. - 용도: BGP 세션을 초기화하고 연결을 설정한다.
    2. UPDATE: - 기능: 새로운 경로를 광고하거나 기존 경로를 철회한다. - 용도: 경로 정보를 갱신하고 BGP 피어 간에 최신 경로 정보를 전달한다.
    3. KEEPALIVE: - 기능: 업데이트가 없는 경우에도 연결을 유지한다. 또한 OPEN 요청을 확인(ACK)한다. - 용도: BGP 세션이 살아있음을 확인하고, 정기적으로 연결 상태를 점검한다.
    4. NOTIFICATION - 기능: 이전 메시지에서 발생한 오류를 보고하거나 연결을 종료하는 데 사용 - 용도: 오류 발생 시 이를 보고하고, 필요 시 연결을 종료하여 문제를 해결




BGP path advertisement



  • AS1의 라우터 1a, 1b, 1d는 iBGP를 통해 라우터 1c로부터 "목적지 X로 가는 경로는 1c를 거쳐 간다"는 정보를 학습하낟.
  • 라우팅 테이블
    • AS1의 라우터 1d는 라우팅 테이블에서 목적지 X로 가기 위해 인터페이스 1을 사용해야 함을 알게 된다.
    • 이 정보는 OSPF intra-domain 라우팅을 통해 라우터 1d에게 전달된다.




 

  • 라우팅 테이블
    • AS1의 라우터 1d
      • AS1의 라우터 1d는 라우팅 테이블에서 목적지 X로 가기 위해 인터페이스 1을 사용해야 함을 알게 된다.
      • 이 정보는 OSPF intra-domain 라우팅을 통해 라우터 1d에게 전달된다.


    • AS1의 라우터 1a
      • OSPF 인트라-도메인 라우팅을 통해 목적지 1c로 가기 위해 인터페이스 2를 사용해야한다.
      • 목적지 x로 가기 위해서는 1c를 거쳐야 하므로 인터페이스 2를 사용한다.






Why different Intra-, Inter- AS routing?

Policy

  • inter-AS:
    • 관리자는 네트워크를 통해 트래픽이 어떻게 라우팅되는지, 누가 라우팅하는지에 대한 제어를 원한다.
    • 다수의 관리자가 존재하기에 각 AS의 정책이 중요하다.
  • intra-AS
    • 단일 관리자에 의해 관리되므로 정책의 중요성이 상대적으로 적다.





Scale

  • 계층적 라우팅:
    • 계층적 라우팅은 라우팅 테이블 크기를 줄이고, 업데이트 트래픽을 감소시킨다.
    • AS 내부에서는 네트워크를 더 작은 단위로 나눌 수 있어 효율적이다.





성능(Performance)

  • Intra-AS
    • 성능에 집중할 수 있다.
    • AS 내부에서는 트래픽이 최적의 경로를 따라 이동하도록 성능 최적화가 가능하다.
  • Inter-AS
    • 정책이 성능보다 우선한다.
    • 다른 AS와의 관계, 계약 조건 등이 성능보다 중요한 역할을 한다.






BGP: achieving policy via advertisements

  • ISP는 고객 네트워크로의 트래픽만 라우팅하려고 한다.
    • 다른 ISP 간의 중계 트래픽을 전달하고 싶어하지 않는다.
    • 이는 일반적인 "실제" 정책이다.

단계별 설명

  1. 광고 경로
    • A는 경로 A, w를 B와 C에 광고한다.
      • A는 자신이 w로 가는 경로를 가지고 있음을 B와 C에 알린다.

 

  1. 정책 결정:
    • B는 경로 B, A, w를 C에 광고하지 않기로 선택한다.
      • B는 C,B,A,w 경로에 대한 "수익"을 얻지 못한다. C,A,w는 B의 고객이 아니기 때문이다.
      • 따라서 C는 C,B,A,w 경로를 알지 못하게 된다.

 

  1. 경로 선택:
    • C는 경로 C, A, w를 통해 w로 가는 경로를 선택합니다 (B를 사용하지 않음)
      • C는 A를 통해 w로 가는 경로를 알고 있으며, B를 통해 가는 경로를 사용하지 않습니다.






BGP: achieving policy via advertisements(more)



  • A,B,C: 제공자 네트워크(Provider Networks)
  • x,y,z: 제공자 네트워크의 고객(Customer Networks)
  • x: 두 네트워크에 연결된 듀얼 홈드(Dual-Homed)고객



정책(Policy)

  • ISP는 다른 ISP 간의 중계 트래픽을 전달하지 않고 고객 네트워크로의 트래픽만 라우팅하려고 한다.
  • 이는 일반적인 "실제" 정책이다.
  • x가 B에서 C로 가는 경로를 광고하지 않음
    • x는 B에서 C로 가는 트래픽을 라우팅하고 싶지 않습니다.
    • 따라서 x는 B에서 C로 가는 경로를 광고하지 않습니다.
    • 결과적으로, B는 x를 통해 C로 가는 경로를 알지 못하게 된다.






BGP route selection

  • BGP 라우터는 목적지 AS로 가는 여러 경로에 대해 학습할 수 있으며, 다음 기준을 기반으로 최적의 경로를 선택한다.
  1. 로컬 우선순위 값 속성(Local Preference Value Attribute): 정책 결정(Policy Decision)
    • 네트워크 관리자가 특정 경로에 우선순위를 부여하는 값
    • 정책 결정에 따라 우선순위가 높은 경로를 선택한다.



  1. 가장 짧은 AS-PATH(Shortest AS-PATH)
    • 경로에 포함된 AS의 수가 가장 적은 경로를 선택한다.
    • 일반적으로 가장 적은 수의 AS를 통과하는 경로가 더 빠르고 효율적이다.



  1. 가장 가까운 NEXT-HOP 라우터(Closest NEXT-HOP Router): 핫 포테이토 라우팅(Hot Potato Routing)
    • 다음 홉 라우터가 가장 가까운 경로를 선택한다.
    • 트래픽을 빠르게 외부 네트워크로 전달하는 것을 목표로 한다.



  1. 추가 기준(Additional Criteria)
    • 위의 기준으로 경로를 선택할 수 없을 때 사용되는 추가적인 기준이다.
    • 이는 다양한 네트워크 조건에 따라 다를 수 있다.






SDN(Software defined networking)

  • 인터넷 네트워크 계층의 전통적인 구현 방식
    • 분산된 라우터 기반 제어(Distributed, Per-Router Control)
      • 전통적으로 인터넷 네트워크 계층은 분산된 각 라우터에 의해 제어되었다.
      • 단일체(monolithic) 라우터
        • 스위칭 하드웨어를 포함하고, 인터넷 표준 프로토콜(IP, RIP, IS-IS, OSPF, BGP 등)의 고유 구현을 실행한다.
        • 전용 라우터 운영 체제(e.g. Cisco IOS)에서 작동한다.
      • 미들박스(Middleboxes)
        • 방화벽, 로드 밸런서, NAT 박스 등 다양한 네트워크 계층 기능을 수행하는 장치들이다.



  • 2005년경: 네트워크 제어 평면 재고에 대한 새로운 관심
    • 네트워크 제어 평면을 재고하려는 새로운 관심이 일어났다.
    • 이는 네트워크의 유연성과 효율성을 높이기 위한 노력의 일환






Pre-router control plane

 

개별 라우팅 알고리즘 구성 요소

  • 각 라우터마다 개별 라우팅 알고리즘 구성 요소가 존재한다.
  • 이 구성 요소들은 제어 평면에서 상호 작용하여 포워딩 테이블을 계산한다.



구성 요소 및 동작 방식

  • 제어 평면(Control Plane)
    • 라우팅 알고리즘이 실행되는 영역
    • 각 라우터는 제어 평면에서 라우팅 정보를 계산하고, 이를 바탕으로 포워딩 테이블을 작성한다.

 

  • 데이터 평면(Data Plane)
    • 패킷이 실제로 전달되는 영역
    • 포워딩 테이블의 값을 기반으로 패킷을 적절한 출력 포트로 전달한다.

 

  • 포워딩 테이블(Forwarding Table)
    • 도착하는 패킷 헤더의 값을 기반으로 출력 포트를 결정한다.
    • e.g. 도착 패킷의 헤더 값이 0111 일 때 출력 포트가 2번으로 설정되어 있으면, 패킷은 2번 포트로 전달된다.






Software-Defined Networking(SDN) control plane

 

SDN(Software-Defined Networking)

  • 전통적인 네트워크와 달리 SDN에서는 중앙 집중식 컨트롤러가 네트워크 제어를 담당한다.
  • 컨트롤러는 네트워크 전반의 라우팅 결정을 내리고, 각 라우터에 포워딩 테이블을 설치한다.



구성 요소 및 동작 방식

  1. 리모트 컨트롤러(Remote Controller)
    • 네트워크 전반을 제어하는 중앙 집중식 장치
    • 네트워크 상태와 요구에 따라 포워딩 테이블을 계산한다.
    • 각 라우터에 포워딩 테이블을 설치한다.


2. **포워딩 테이블 설치** - 리모트 컨트롤러가 계산한 포워딩 테이블을 각 라우터에 설치한다. - 라우터는 컨트롤러로부터 받은 포워딩 테이블을 사용하여 패킷을 전달한다.
3. **제어 평면(Control Plane) 및 데이터 평면(Data Plane)** - 제어 평면: 리모트 컨트롤러가 네트워크 전반의 라우팅 결정을 내리는 영역이다. - 데이터 평면: 라우터가 포워딩 테이블을 사용하여 패킷을 전달하는 영역이다.
4. **CA(Control Agent)** - 각 라우터에 있는 제어 에이전트로, 리모트 컨트롤러와 통신하여 포워딩 테이블을 설치받고 실행한다.




Software Defined Networking(SDN)

논리적으로 중앙 집중화된 제어 평면

  1. 쉬운 네트워크 관리
    • 라우터의 잘못된 구성 방지: 중앙에서 일관된 제어가 가능하므로, 각 라우터의 개별적인 구성 실수를 방지할 수 있다.
    • 트래픽 흐름의 유연성: 중앙 집중식 제어로 인해 트래픽 흐름을 더 유연하게 관리할 수 있다.

 

  1. 테이블 기반 포워딩(Table-Based Forwarding)
    • OpenFlow API: 테이블 기반 포워딩을 통해 라우터를 "프로그래밍"할 수 있다.
    • 중앙 집중식 프로그래밍:
      • 테이블을 중앙에서 계산하고 각 라우터에 분배하는 방식으로, 더 쉽게 관리할 수 있다.
    • 분산 프로그래밍
      • 각 라우터마다 분산된 알고리즘(프로토콜)을 구현하여 테이블을 계산하는 방식은 더 어렵고 복잡하다.

 

  1. 오픈 (비동점적) 제어 평면 구현
    • 혁신 촉진
      • 개방형 표준을 통해 다양한 혁신이 이루어질 수 있다.
      • "1000개의 꽃이 피게 하라"는 철학을 반영하여, 다양한 기술과 아이디어가 자유롭게 발전할 수 있도록 한다.






Traffic engineering: difficult with traditional routing



질문과 대답

  • Q: 네트워크 운영자가 u에서 z로 가는 트래픽이 u-v-w-z 경로를 따르기를 원한다고 가정하자. 대신 u-x-y-z 경로를 피하고자 한다.
  • A: 트래픽 라우팅 알고리즘이 경로를 재계산하도록 링크 가중치를 다시 정의해야 한다.(또는 새로운 라우팅 알고리즘이 필요할 수도 있다.)



제어의 한계

  • 전통적인 라우팅에서 링크 가중치는 트래픽 엔지니어링을 제어할 수 있는 유일한 "조절기"이다.
  • 이는 라우팅 경로를 세밀하게 제어하는 데 충분하지 않다.






Traffic engineering: difficult with traditional routing



질문과 대답

  • Q. 네트워크 운영자가 u에서 z로 가는 트래픽을 u-v-w-z와 u-x-y-z 경로로 분할하고자 한다면(로드 밸런싱) 어떻게 해야하는가?
  • A. 전통적인 라우팅 방식에서는 이를 할 수 없으며, 새로운 라우팅 알고리즘이 필요하다.






Traffic engineering: difficult with traditional routing



질문과 대답

  • Q. w가 z로 가는 파란색 트래픽과 빨간색 트래픽을 다르게 라우팅하려면 어떻게 해야할까?
  • A. 목적지 기반 포워딩과 링크 상태(LS) 및 거리 벡터(DV) 라우팅으로는 이를 할 수 없다.






Software defined networking(SDN)

 

 

  1. 일반화된 "흐름 기반" 포워딩(Generalized "Flow-Based" Forwarding)
    • e.g. OpenFlow
    • 네트워크 스위치가 흐름 단위로 트래픽을 처리한다.
    • 각 흐름에 대해 포워딩 규칙을 설정하고, 이러한 규칙은 중앙 집중식 컨트롤러에 의해 관리된다.

 

  1. 제어 평면과 데이터 평면의 분리(Control Plane and Data Plane Separation)
    • 제어 평면(Control Plane): 네트워크 트래픽의 경로를 결정하고, 포워딩 규칙을 설정하는 논리적 영역
    • 데이터 평면(Data Plane): 실제로 데이터 패킷을 전달하는 물리적 영역
    • 이 두 영역을 분리함으로써 네트워크의 유연성과 관리 효율성을 높인다.

 

  1. 데이터 평면 스위치 외부의 제어 평면 기능(Control Plane Fucntions External to Data-Plane Switches)
    • 네트워크의 제어 기능이 데이터 평면 스위치 외부에 위치한 중앙 집중식 컨트롤러에 의해 수행된다.
    • 리모트 컨트롤러(Remote Controller): 네트워크 전체의 제어 기능을 중앙에서 관리하며, 포워딩 규칙을 계산하고 배포한다.

 

  1. 프로그래밍 가능한 제어 어플리케이션(Programming Control Applications)
    • 라우팅(Routing), 접근 제어(Access Control), 로드 밸런싱(Load Balancing) 등
    • 중앙 컨트롤러에서 실행되는 다양한 제어 어플리케이션이 네트워크의 다양한 요구를 충족시킨다.
    • 네트워크 관리자가 필요에 따라 제어 어플리케이션을 프로그래밍하여 네트워크 동작을 최적화할 수 있다.






Software defined networking(SDN)

데이터 평면 스위치(Data-Plane Switches)

  1. 역할 및 특징
    • 빠르고 간단한 상용 스위치(Fast, Simple, Commodity Switches)
      • 일반적인 하드웨어에서 구현되는 데이터 평면 포워딩을 수행한다.
      • 일반화된 데이터 평면 포워딩(Generalized Data-Plane Forwarding)
        • 특정 프로토콜에 구애받지 않고 다양한 유형의 트래픽을 처리할 수 있다.
        • e.g. 섹션 4.4에서 설명된 방식



  1. 흐름 테이블(Flow Table)
    • 컨트롤러 감독 하에 계산 및 설치(Computed and Installed Under Controller Supervision)
      • 중앙 집중식 컨트롤러가 각 스위치에 설치할 흐름 테이블을 계산하고, 이를 설치한다.



  1. API 및 프로토콜
    • 테이블 기반 스위치 제어를 위한 API
      • e.g. OpenFlow
      • 제어 가능한 것과 그렇지 않은 것을 정의
    • 컨트롤러와의 통신을 위한 프로토콜
      • e.g. OpenFLow
      • 스위치와 컨트롤러 간의 통신을 위한 표준 프로토콜






Software Defined Networking(SDN)

 

 

SDN 컨트롤러(SDN Controller, Network OS)

  1. 네트워크 상태 정보 유지(Maintain Network State Information)
    • SDN 컨트롤러는 네트워크의 전체 상태 정보를 유지합니다.
    • 네트워크의 트래픽 흐름, 링크 상태, 스위치 상태 등의 정보를 중앙에서 관리한다.

 

  1. 북향 API를 통한 네트워크 제어 어플리케이션과의 상호 작용(Interacts with Network Control Applications "Above" via Northbound API)
    • 네트워크 제어 어플리케이션(Network-Control Application)
      • 라우팅, 접근 제어, 로드 밸런싱 등의 어플리케이션이 포함된다.
    • 북향 API(Northbound API)
      • SDN 컨트롤러와 네트워크 제어 어플리케이션 간의 통신을 위한 인터페이스이다.

 

  1. 남향 API를 통한 네트워크 스위치와의 상호 작용(Interacts with Network Swithches "Below" via Southbound API)
    • SDN 제어 스위치(SDN-Controlled Switches)
      • SDN 컨트롤러의 명령에 따라 작동하는 네트워크 스위치이다.
    • 남향 API
      • SDN 컨트롤러와 네트워크 스위치 간의 통신을 위한 인터페이스이다.

 

  1. 분산 시스템으로 구현(Implemented as Distributed System)
    • 성능(Performance)
      • 네트워크의 성능을 최적화하기 위해 SDN 컨트롤러는 분산 시스템으로구현된다.
    • 확장성(Scalability)
      • 네트워크 규모에 따라 쉽게 확장할 수 있도록 설계된다.
    • 장애 내성(Fault-Tolerance)
      • 네트워크 장애에 대한 내성을 갖추고 있다.
    • 견고성(Robustness)
      • 네트워크의 견고성을 유지하기 위해 분산 시스템으로 운영된다.






Software Defined Networking

 

 

네트워크 제어 어플리케이션

 

  1. Brains of Control
    • 네트워크 제어 어플리케이션은 제어 기능을 구현하는 핵심 요소이다.
    • SDN 컨트롤러가 제공하는 하위 수준의 서비스와 API를 사용하여 네트워크 제어 기능을 수행한다.
    • 이러한 어플리케이션은 라우팅, 접근 제어, 로드 밸런싱 등 다양한 제어 작업을 처리한다.



  1. 언번들된(Unbundled)
    • 네트워크 제어 어플리케이션은 라우팅 벤더나 SDN 컨트롤러와 별개로 제 3자에 의해서 제공될 수 있다.
    • 이는 네트워크 관리자가 특정 벤더에 종속되지 않고 다양한 어플리케이션을 선택하여 사용할 수 있게 한다.






Components of SDN controller

'학교수업 > 컴퓨터망' 카테고리의 다른 글

Chapter7: Wireless and Mobile Networks  (4) 2024.07.14
Chapter6: The Link Layer and LANs  (0) 2024.07.12
Chapter4: Network Layer-Data Plane  (0) 2024.07.04
Chapter3: Transport Layer-2  (0) 2024.07.04
Chapter3: Transport Layer  (0) 2024.07.03

Network Layer services and protocols

  1. 송신 호스트에서 수신 호스트로의 전송 세그먼트
    • 송신자
      • 세그먼트를 데이터그램으로 캡슐화한다.
      • 데이터그램을 링크 계층으로 전달한다.
    • 수신자
      • 세그먼트를 전송 계층 프로토콜로 전달한다.
  1. 모든 인터넷 장치(호스트, 라우터)에서의 네트워크 계층 프로토콜
    • 네트워크 계층 프로토콜은 모든 인터넷 장치(호스트와 라우터)에 존재한다.
  1. 라우터의 역할
    • 라우터는 IP 데이터그램의 헤더 필드를 검사한다.
    • 라우터는 데이터그램을 입력 포트에서 출력 포트로 이동시켜 데이터그램이 끝에서 끝으로 전송될 수 있도록 한다.

Two key network-layer functions

네트워크 계층 기능

  1. 포워딩(Forwarding)
    • 역할: 라우터의 입력 링크에서 적절한 출력 링크로 패킷을 이동시키는 과정이다.
    • 비유: 고속도로의 한 교차로를 통과하는 과정이라고 생각할 수 있다.

2. **라우팅(Routing)** - 역할: 출발지에서 목적지까지 패킷이 이동할 경로를 결정하는 과정 - 라우팅 알고리즘을 사용하여 경로를 결정 - 비유: 출발지에서 목적지까지의 여행 계획을 세우는 과정으로 생각할 수 있다.

Network layer: data plane, control plane

데이터 플레인(Data Plane)

  • 로컬, 라우터별 기능
    • 데이터 플레인은 각 라우터에서 로컬로 작동하는 기능이다.
    • 라우터의 입력 포트에서 도착한 데이터그램이 라우터의 출력 포트로 어떻게 전달될지를 결정한다.
    • 예시 그림에서는 도착한 패킷 헤더의 값을 기반으로 데이터그램이 어떻게 전달되는지를 보여준다.

컨트롤 플레인(Control Plane)

  • 네트워크 전체의 논리
    • 컨트롤 플레인은 네트워크 전체에서 작동하는 논리이다.
    • 데이터그램이 출발지 호스트에서 목적지 호스트까지 여러 라우터를 통해 어떻게 라우팅될지를 결정한다.
    • 두 가지 컨트롤 플레인 접근 방식이 있다.
      • 전통적인 라우팅 알고리즘(Tranditional Routing Algorithms): 라우터에서 구현된다.
      • 소프트웨어 정의 네트워킹(Software-Defined Networking: SDN): (원격) 서버에 구현된다.

Per-router control plane

라우터별 컨트롤 플레인

  • 각 라우터에는 독립적인 라우팅 알고리즘이 있다.
  • 이 라우팅 알고리즘은 라우터 간의 상호 작용을 통해 네트워크 전체의 데이터를 관리한다.

컨트롤 플레인과 데이터 플레인의 상호작용

  • 슬라이드의 그림은 컨트롤 플레인과 데이터 플레인의 구조를 보여준다.
  • 컨트롤 플레인: 네트워크의 상위 레벨에서 라우터 간의 경로를 결정하는 데 사용된다.
  • 데이터 플레인: 각 라우터에서 패킷이 실제로 이동하는 경로를 처리한다.

라우팅 알고리즘

  • 각 라우터에는 라우팅 알고리즘이 구현되어 있다.
  • 이 알고리즘은 도착하는 패킷의 헤더 값을 기반으로 로컬 포워딩 테이블을 참조하여 적절한 출력 포트를 결정한다.

로컬 포워딩 테이블

  • 라우터의 로컬 포워딩 테이블은 도착하는 패킷 헤더 값과 그에 대응하는 출력 포트를 나타낸다.
  • 예를 들어, 헤더 값 0100은 출력 포트 3으로 설정되어 있다.

Software-Defined Networking(SDN) control plane

SDN은 네트워크의 데이터 흐름을 중앙에서 제어할 수 있도록 하는 접근 방식이다.

  1. 원격 컨트롤러(Remote Controller)
    • 원격 컨트롤러는 라우터의 포워딩 테이블을 계산하고 설치한다.
    • 이는 네트워크의 중앙 집중식 관리와 제어를 가능하게 한다.
  1. 포워딩 테이블 설치
    • 원격 컨트롤러는 각 라우터에 포워딩 테이블을 설치한다.
    • 이는 네트워크 전체의 데이터 흐름을 효과적으로 관리할 수 있게 한다.
  1. 컨트롤 플레인과 데이터 플레인의 구분
    • 컨트롤 플레인은 라우터 간의 경로를 결정하고 관리한다.
    • 데이터 플레인은 실제로 패킷이 이동하는 경로를 처리한다.

Network Service Model

Q. 송신자에서 수신자로 데이터그램을 전송하는 "채널"에 대한 서비스 모델은 무엇인가?

개별 데이터그램을 위한 서비스 예시

  1. 보장된 전달(Guaranteed Delivery)
    • 데이터그램이 반드시 목적지에 도달할 것을 보장한다.
  2. 40밀리초 이하의 지연으로 보장된 전달(Guaranteed Delivery with Less Than 40 msec Delay)
    • 데이터그램이 40밀리초 이하의 지연으로 목적지에 도달할 것을 보장한다.

데이터그램 흐름을 위한 서비스 예시

  1. 순서대로 데이터그램 전달(in-order Datagram Delivery)

    • 데이터그램이 전송된 순서대로 도착하도록 보장한다.
  2. 흐름에 대한 최소 대역폭 보장(Guranteed Minimum Bandwidth to Flow)

    • 특정 흐름에 대한 최소한의 대역폭을 보장한다.
  3. 패킷 간 간격 변화에 대한 제한(Restrictions on Changes in INter-packet Spacing)

    • 패킷 간 간격의 변화를 제한하여 일정한 간격으로 데이터그램이 전달되도록 한다.

인터넷 Best Effort 서비스 모델

  • 인터넷의 Best Effort 서비스 모델은 데이터그램의 전달을 최선의 노력으로 수행하지만, QoS 측면에서 어떠한 보장도 제공하지 않는다.
  • Best Effort 모델에서는 다음과 같은 사항에 대해 보장이 없다
    1. 성공적인 데이터그램 전달(Successful Datagram Delivery)
    2. 전달의 타이밍 또는 순서(Timing or Order of Delivery)
    3. 종단 간 흐름에 사용 가능한 대역폭(Bandwidth Available to End-to-End Flow)

Relections on best-effort service

Best-Effort 서비스 모델이 인터넷의 널리 채택되고 왜 성공하는 가?

  1. 간단한 메커니즘(Simplicity of Mechanism)

    • Best-Effort 서비스 모델의 단순함은 인터넷이 널리 배포되고 채택될 수 있도록 했다.
    • 복잡하지 않은 구조로 인해 구현과 관리가 용이
  2. 충분한 대역폭 제공

    • 충분한 대역폭이 제공되면 실시간 어플리케이션(e.g. 통화, 비디오)의 성능이 대부분의 경우에 "충분히 좋은" 상태를 유지할 수 있다.
    • 이는 Best-Effort 모델에서도 실시간 서비스가 어느 정도 품질을 유지할 수 있음을 의미한다.
  3. 분산된 어플리케이션 계층 서비스

    • 데이터 센터와 컨텐츠 배포 네트워크(CDN)와 같은 분산된 어플리케이션 계층 서비스는 클라이언트 네트워크에 가깝게 연결되어 있다.
    • 이러한 서비스는 여러 위치에서 제공될 수 있어 사용자가 더 나은 서비스를 받을 수 있다.
  4. "Elastic" 서비스의 혼잡제어

    • 탄력적인 서비스의 혼잡 제어는 네트워크의 혼잡을 관리하고 전체 성능을 향상시키는 데 도움이 된다.

Router architecture overview

  1. 라우터 입력 포트(Router Input Ports)

    • 데이터그램이 라우터에 들어오는 포트이다.
    • 각 입력 포트는 패킷을 처리하고, 올바른 출력 포트로 전달하기 위해 준비한다.
  2. 고속 스위칭 패브릭(Hight-Speed Switching Fabric)

    • 입력 포트에서 출력 포트로 패킷을 전달하는 고속 스위칭 메커니즘이다.
    • 이 패브릭은 매우 짧은 시간(나노초 단위) 내에 패킷을 전달할 수 있다.
  3. 라우터 출력 포트(Router Output Ports)

    • 데이터그램이 라우터를 떠나 목적지로 향하는 포트이다.
    • 출력 포트는 패킷을 최종 목적지로 전달하기 위해 준비한다.
  4. 라우팅 프로세서(Routing Processor)

    • 라우팅의 라우팅 및 관리 기능을 수행하는 프로세서이다.
    • 소프트웨어적으로 구현되며, 밀리초 단위의 시간 프레임 내에서 동작한다.

두 가지 주요 플레인

  1. 포워딩 데이터 플레인(Forwarding Data Plane)

    • 하드웨어적으로 구현되어 있다.
    • 패킷이 입력 포트에서 출력 포트로 이동하는 과정을 처리한다.
    • 나노초 단위의 시간 프레임 내에서 매우 빠르게 동작한다.
  2. 라우팅 및 관리 컨트롤 플레인(Routing and Management Control Plane)

    • 소프트웨어 적으로 구현되어 있다.
    • 네트워크의 라우팅 경로를 결정하고, 관리 기능을 수행한다.
    • 밀리초 단위의 시간 프레임 내에서 동작한다.

Input port functions

  1. 라인 종단(Line Termination)
    • 물리 계층(Physical Layer)
      • 비트 수준의 수신을 처리한다.
      • 전송 매체로부터 신호를 수신하고 이르 디지털 비트 스트림으로 변환한다.
  1. 링크 계층 프로토콜(Link Layer Protocol)
    • 링크 계층(Link Layer)
      • e.g. 이더넷
      • 수신된 프레임을 처리하고, 네트워크 계층으로 데이터를 전달한다.
  1. Loopup, Forwarding, Queueing
    • 탈중앙화 스위칭(Decentralized Switching)
      • 헤더 필드 값을 사용하여 입력 포트 메모리에 있는 포워딩 테이블을 조회해 출력 포트를 찾는다. 이를 "match plus action"이라고 한다.
      • 목표는 line speed에서 입력 포트 처리를 완료하는 것이다.
      • destination-based forwarding: destination IP address를 기반으로 forward하는 것(전통적)
      • generalized forwarding: header field 값을 기반으로 forword하는 것
    • Input Port Queueing
      • 데이터그램이 스위칭 패브릭으로 전달되는 속도보다 더 빨리 도착하면 큐에 저장된다.
      • 이를 통해 혼잡을 방지하고 데이터그램 손실을 최소화한다.

Destination-based forwarding

포워딩 테이블 구조

  • 목적지 주소 범위(Destination Address Range)

    • 라우터는 도착하는 패킷의 목적지 주소를 기반으로 출력 링크 인터페이스를 결정한다.
    • 각 범위는 특정 링크 인터페이스로 매핑된다.
  • 링크 인터페이스(Link Interface)

    • 특정 목적지 주소 범위에 해당하는 출력 포트

Q. 만일 주소범위가 제대로 나눠지지 않는다면?

  • 포워딩 테이블에서 주소 범위가 겹치거나 깔끔하게 나누어지지 않으면 특정 목적지 주소가 여러 범위에 속할 수 있다.

Longest prefix matching

라우터가 목적지 주소에 대해 포워딩 테이블 항목을 찾을 때 사용하는 최장 접두사 일치(Longest Prefix Match) 메커니즘을 설명한다.

정의: Longest Prefix Match

  • 주어진 목적지 주소에 대해 포워딩 테이블 항목을 찾을 때, 가장 긴 주소 접두사와 일치하는 항목을 사용한다.

위의 예에서 link interface는 0과 1이다.

Switching fabric

  1. 스위칭 패브릭의 역할
    • 입력 링크에서 적절한 출력 링크로 패킷을 전송한다.
    • 이는 라우터 내부에서 데이터가 효율적으로 전달되도록 한다.
  1. 스위칭 속도(Switching Rate)
    • 패킷이 입력에서 출력으로 전송되는 속도이다.
    • 종종 입력/출력 라인 속도의 배수로 측정된다.
    • 예를 들어, N개의 입력 포트가 있는 경우, 이상적인 스위칭 속도는 라인 속도의 N배이다.
    • 이는 라우터가 동시에 여러 입력 포트에서 들어오는 패킷을 처리할 수 있도록 하기 위함이다.

Switching via memory

  1. 초기 세대 라우터(First Generation Routers)
    • 전통적인 컴퓨터 구조: 스위칭이 CPU의 직접적인 제어 하에 이루어진다.
    • 패킷 복사: 패킷은 시스템의 메모리에 복사된다.
    • 속도 제한:
      • 메모리 대역폭에 의해 속도가 제한된다.
      • 각 데이터그램당 두 번의 버스 교차가 발생한다.

Switching via a bus

  1. 버스를 통한 데이터그램 전송

    • 입력 포트 메모리에서 출력 포트 메모리로 데이터그램을 전송하는 과정이 공유된 버스를 통해 이루어진다.
  2. 버스 경합(Bus Contention)

    • 스위칭 속도는 버스 대역폭에 의해 제한된다.
    • 여러 포트가 동시에 버스를 사용하려고 하면 버스 경합이 발생하여 스위칭 속도가 감소할 수 있다.
  3. 32 Gbps 버스

    • e.g. Cisco 5600 라우터는 32 Gbps의 버스를 사용하여 액세스 라우터로서 충분한 속도를 제공한다.

Switching via interconnection network

  1. 크로스바(CrossBar), 클로스(Clos) 네트워크:
    • 이러한 상호 연결 네트워크는 원래 멀티프로세서 시스템에서 프로세서를 연결하기 위해 개발되었다.
    • 라우터에서도 사용되어 고속 스위칭을 가능케 한다.
  1. 다단계 스위치(Multistage Switch)
    • 다단계 스위치는 n * n 스위치로, 여러 단계의 작은 스위치들로 구성된다.
    • 예를 들어, 8 * 8 스위치는 더 작은 크기의 스위치들로 구성되어 있다.
  1. 병렬성 활용(Expoiting Parallelism)
    • 데이터그램을 고정 길이 셀로 분할하여 입력한다.
    • 이 셀들은 패브릭을 통해 스위칭되고, 출구에서 다시 데이터그램으로 재조립된다.
    • 병렬 처리를 통해 스위칭 성능을 향상시킬 수 있다.

Switching via interconnection network

주요 내용:

  1. 확장(Scaling)
    • 여러 개의 스위칭 "평면(plane)"을 병렬로 사용하여 확장할 수 있다.
    • 병렬 처리를 통해 스위칭 속도와 성능을 향상시킬 수 있다.
  1. Cisco CRS 라우터
    • 기본 유닛: 8개의 스위칭 평면을 사용한다.
    • 각 평면은 3단계 상호 연결 네트워크로 구성된다.
    • 수백 Tbps에 달하는 스위칭 용량을 제공한다.






Input port queuing

input port에서 발생하는 queuing 현상과 Head-of-Line(HOL) 블로킹에 대해 설명한다.


  1. 스위치 패브릭 속도와 입력 포트:
    • 스위치 패브릭의 속도입력 포트의 총합보다 느리면 입력 큐에서 큐잉이 발생할 수 있다.
    • 입력 버퍼 오버플로우로 인해 큐잉 지연과 데이터그램 손실이 발생할 수 있다.


  1. Head of Line(HOL)블로킹
    • queue의 앞 부분에 있는 데이터그램이 다른 데이터그램의 전진을 방해하는 현상이다.






================================================================

Output port queuing

  1. 버퍼링(Buffering)

    • 스위치 패브릭에서 데이터그램이 링크 전송 속도보다 빠르게 도착할 때 버퍼링이 필요하다.
    • 드롭 정책(Drop Policy)
      • 버퍼가 가득 차면 어떤 데이터그램을 버릴지 결정하는 정책이다
      • 혼잡이나 버퍼 부족으로 인해 데이터그램이 손실될 수 있다.
  2. 스케줄링 규칙(Scheduling Discipline)

    • 큐에 있는 데이터그램 중 어떤 것을 전송할지 선택하는 규칙이다.
      • 우선순위 스케줄링(Priority Scheduling)
        • 누가 최고의 성능을 받을지 결정하는 과정이다.
          • 네트워크 중립성 문제와 관련될 수 있다.

================================================================

  • 버퍼링은 arrival rate가 output line speed를 넘을 때 발생한다.
  • queueing(delay) and loss는 output buffer의 overflow 때문이다.





Buffer Management

  1. 버퍼 관리(Buffer Management)

    • Drop
      • 버퍼가 가득 찼을 때 어떤 패킷을 추가하고, 어떤 패킷을 드롭할지 결정하는 과정
      • 테일 드롭(Tail Drop): 도착한 패킷을 드롭한다.
      • 우선 순위(Priority): 우선순위에 따라 패킷을 드롭하거나 제거한다.
    • Marking
      • 혼잡을 신호하기 위해 어떤 패킷을 마크할지 결정한다.(ECN, RED)
  2. 큐잉과 스케줄링(Queuing and Scheduling)

    • 큐잉은 패킷이 도착하여 대기하는 영역을 관리한다.
    • 스케줄링은 대기 중인 패킷 중 어떤 것을 먼저 전송할지 결정한다.




Packet Scheduling:FCFS

*packet scheduling: *

  • FCFS
  • Priority
  • round robin
  • Weighted Fair Queueing: 각 큐에 가중치를 부여하여 공정하게 전송

FCFS: 패킷이 도착한 순서대로 출력 포트로 전송된다.






Scheduling Policies: priority



우선순위 스케줄링

  • 도착한 트래픽을 분류하고 클래스별로 큐에 저장
  • 패킷 헤더의 다양한 필드를 분류에 사용할 수 있다.
  • 가장 높은 우선순위 큐에 있는 패킷부터 전송
  • 우선순위 클래스 내에서는 FCFS 방식으로 처리






Scheduling policies: round robin

라운드 로빈 스케줄링

  • 도착한 트래픽을 분류하고 클래스별로 큐에 저장
  • 패킷 헤더의 다양한 필드를 분류에 사용할 수 있다.
  • 서버는 주기적으로 각 클래스 큐에 스캔하며, 각 클래스에서 하나의 패킷을 차례대로 전송한다.
  • 모든 클래스 큐가 동일하게 처리되므로 공정한 스케줄링이 가능하다.


트래픽 분류(Traffic Classification)

  • 도착한 트래픽은 분류되어 각 클래스 큐에 저장된다.
  • e.g. 높은 우선순위 트래픽, 보통 우선순위 트래픽, 낮은 우선순위 트래픽


주기적 스캔 및 전송(Cyclic Scanning and Transmission)

  • 서버는 주기적으로 각 클래스 큐를 스캔한다.
  • 각 클래스에서 하나의 패킷을 선택하여 전송한다.
  • 각 클래스 큐가 돌아가며 패킷을 전송하게 된다.






Scheduling polices: weighted fair queueing

Weighted Fair Queuing(WFQ)

  • 일반화된 라운드 로빈
  • 가중치 부여(Weighting)
    • 각 클래스 i는 가중치 wi를 가지며, 각 주기에 가중치에 비례한 양의 서비스를 받는다.
    • 각 클래스가 받은 서비스의 비율은 다음과 같다.
  • minimum bandwidth 보장(per-traffic-class)






Sidebar: Network Neutrality

네트워크 중립성이란 무엇인가?

  1. 기술적 관점

    • ISP(인터넷 서비스 제공자)가 자원을 어떻게 공유하고 할당해야 하는지에 관한 것
    • 패킷 스케줄링, 버퍼 관리 등이 이러한 자원 할당을 위한 메커니즘이다.
  2. 사회적, 경제적 원칙

    • 자유로운 표현 보호
    • 혁신과 경쟁 촉진
  3. 법적 규칙과 정책의 시행






Network Layer: Internet

네트워크 계층 기능

  1. 경로 선택 알고리즘(Path-Selection-Algorithms)
    • 라우팅 프로토콜(OSPF, BGP) 및 SDN 컨트롤러에서 구현된다.
    • 경로 선택 알고리즘은 데이터그램이 목적지까지 가는 최적의 경로를 결정한다.


  1. IP 프로토콜(IP Protocol)
    • 데이터그램 형식(Datagram Format)
      • 데이터그램의 구조를 정의
    • 주소 지정(Addressing)
      • 데이터그램이 올바른 목적지에 도달하도록 주소를 지정한다.
    • 패킷 처리 규칙(Packet Handling Coventions)
      • 데이터그램이 네트워크를 통해 올바르게 전송되도록 처리 규칙을 정의한다.


  1. ICMP 프로토콜(ICMP Protocol)
    • 오류 보고(Error Reporting)
      • 데이터그램 전송 중 발생하는 오류를 보고
    • 라우터 신호(Router Signaling)
      • 라우터 간 신호 전달을 관리한다.


  1. 포워딩 테이블(Forwarding Table)
    • 데이터그램을 다음 목적지로 전달하기 위한 경로 정보를 저장한다.





IP Datagram foramt






IP addressing: introduction

  • IP addressing:

    • 32비트 식별자
    • 각 호스트나 라우터 인터페이스에 할당된다
    • e.g. 223.1.1.1
  • 인터페이스

    • 호스트/라우터와 물리적 링크 간의 연결을 의미한다.
    • 라우터는 보통 여러 개의 인터페이스를 가진다.
    • 호스트는 보통 하나 또는 두 개의 인터페이스를 가진다.(e.g. 유선 이더넷, 무선 802.11)









Subnets

  1. 서브넷이란?
    • 라우터를 거치지 않고 물리적을 서로 도달할 수 있는 장치 인터페이스들의 집합이다.
    • e.g. 같은 네트워크 스위치나 WiFi 기지국에 연결된 장치들


  1. IP주소의 구조(IP Addresses Have Structure)
    • 서브넷 부분(Subnet Part)
      • 같은 서브넷에 속한 장치들은 공통된 상위 비트를 가진다.
    • 호스트 부준(Host Part)
      • 나머지 하위 비트들은 호스트를 식별하는 데 사용된다.











  1. 서브넷의 정의 방법
    • 각 인터페이스를 호스트나 라우터에서 분리하여 고립된 네트워크 "섬"을 만든다.
    • 이렇게 고립된 네트워크를 "서브넷"이라고 부른다.


  1. 서브넷 구성

    • 서브넷 마스트(Subnet Mask)

      • '/24'는 상위 24비트가 서브넷 부분임을 나타낸다.

    • 서브넷 예시

      • 223.1.1.0/24: IP 주소 범위는 223.1.1.0에서 223.1.1.255까지.
      • 223.1.2.0/24: IP 주소 범위는 223.1.2.0에서 223.1.2.255까지.
      • 223.1.3.0/24: IP 주소 범위는 223.1.3.0에서 223.1.3.255까지.








  1. 서브넷의 위치
    • 네트워크 내에서 여러 서브넷이 존재한다.
    • 각 서브넷은 라우터와 호스트를 포함하며, 특정 IP 주소 범위를 가진다.



  1. /24 서브넷 주소(What are the /24 Subnet Addresses?)
    • 각 서브넷의 주소는 /24 서브넷 마스크를 사용하여 정의된다.
    • /24 서브넷 마스크는 상위 24비트가 서브넷 부분임을 나타낸다.









IP addressing: CIDR

  1. CIDR 정의
    • CIDR은 Classless InterDomain Routing의 약자로, "cider"로 발음된다.
    • 주소의 서브넷 부분의 길이를 임의로 지정할 수 있다.



  1. 주소 형식(Address Foramt)
    • 주소 형식은 a.b.c.d/x 형태로, 여기서 'x'는 서브넷 부분의 비트 수를 나타낸다.
    • e.g. 200.23.16.0/23



  1. 서브넷 부분과 호스트 부분(Subnet Part and Host Part)
    • 주소의 앞부분은 서브넷 부분이고, 뒷부분은 호스트 부분이다.
    • e.g. 200.23.16.0/23의 경우, 앞의 23비트가 서브넷, 나머지 비트는 호스트부분이다.









IP Addresses:How to Get One?

  1. 두 가지 질문(Two Questions)
    • Q1. 호스트가 자신의 네트워크 내에서 IP주소를 어떻게 얻는가?(호스트 주소 부분)
    • Q2. 네트워크가 자체적으로 IP 주소를 어떻게 얻는가?(네트워크 주소 부분)



  1. 호스트가 IP 주소를 얻는 방법(How Does a Host Get IP Address)
    • 시스템 관리자에 의해 고정 설정(Hard-Coded by Sysadmin)
      • 시스템 관리자가 구성 파일(e.g. UNIX의 /etc/rc.config)에서 IP 주소를 고정 설정한다.
    • DHCP(Dynamic Host Configuration Protocol)
      • DHCP 서버로 부터 동적으로 IP 주소를 얻는다
      • plug and play 방식을 자동 설정









DHCP: Dynamic Host Configuration Protocol

  1. 목표(Goal)
    • 호스트가 네트워크에 연결될 때 네트워크 서버로부터 동적으로 IP 주소를 받는다.
    • 사용 중인 주소의 임대를 갱신할 수 있다.
    • 주소의 재사용을 허용한다.(연결된 동안에는 주소를 유지)
    • 네트워크에 가입하고 탈퇴하는 모바일 사용자를 지원



  1. DHCP 개요
    • DHCP discover 메시지
      • 호스트가 네트워크에 가입할 때 브로드캐스트로 DHCP discover 메시지를 보낸다.(선택사항)
    • DHCP offe 메시지
      • DHCP 서버가 IP 주소를 제안하는 DHCP offer 메시지로 응답한다.(선택사항)
    • DHCP request 메시지
      • 호스트가 DHCP 서버에 IP 주소 요청 메시지를 보낸다.
    • DHCP ack 메시지
      • DHCP 서버가 IP 주소를 할당하는 DHCP ack 메시지를 보낸다.









DHCP: Client-Server Scenario

  1. DHCP 서버의 위치(DHCP Server Location)
    • DHCP 서버는 보통 라우터와 함께 위치한다.
    • 라우터에 위치한 모든 서브넷에 IP 주소를 할당한다.



  1. DHCP 클라이언트의 동작(DHCP Client Operation)
    • 네트워크에 새로 연결된 DHCP 클라이언트가 IP 주소를 필요로 한다.
    • DHCP 클라이언트는 네트워크에 연결될 때 DHCP 서버와 상호작용하여 IP 주소를 얻는다.









DHCP client-server scenario

  1. DHCP discover(탐색)
    • 클라이언트: DHCP 서버가 있나요? 라는 메시지를 브로드 캐스트한다.
    • 이는 네트워크에 DHCP 서버가 있는지 탐색하는 단계이다.


  2. DHCP offer(제공)
    • DHCP 서버: 나는 "DHCP 서버입니다. 사용할 수 있는 IP 주소가 여기에 있습니다." 라는 메시지를 브로드캐스트한다.
    • DHCP 서버는 사용 가능한 IP 주소를 클라이언트에게 제안한다.


  3. DHCP reqeust(요청)
    • 클라이언트: "알겠습니다. 이 IP 주소를 사용하고 싶습니다!" 라는 메시지를 브로드캐스트한다.
    • 클라이언트는 제안된 IP 주소를 사용하겠다고 요청한다.


  4. DHCP ACK(승인)
    • DHCP 서버: "알겠습니다. 이 IP 주소를 할당했습니다." 라는 메시지를 브로드캐스트한다.
    • DHCP 서버는 클라이언트에게 IP 주소를 할당하고 이를 확인한다.









DHCP: more than IP addresses

DHCP가 반환하는 추가 정보

  • 클라이언트를 위한 첫 홉 라우터의 주소(Address of First-Hop Router for Client)
    • 클라이언트가 네트워크 상에서 통신을 시작할 때 사용하는 첫 번째 라우터의 IP 주소



  • DNS 서버의 이름과 IP 주소(Name and IP Address of DNS Server)
    • 클라이언트가 도메인 이름을 IP주소로 변환할 때 사용하는 DNS 서버의 정보



  • 네트워크 마스크(Network Mask)
    • 네트워크와 호스트 부분을 구분하는 서브넷 마스크









DHCP: example

DHCP가 실제로 어떻게 작동하는가?

  1. 노트북 연결(Connecting Laptop)
    • 노트북을 네트워크에 연결하면 DHCP를 사용하여 IP주소, 첫 홉 라우터의 주소, DNS 서버의 주소를 얻는다.



  1. DHCP 요청 메시지(DHCP REQUEST Message)
    • DHCP REQUEST 메시지는 UDP에 캡슐화되고, 다시 IP에 캡슐화되고, 최종적으로 이더넷에 캡슐화된다.
    • 이는 메시지가 전송될 때 여러 프로토콜 계층을 통해 포장되는 과정을 나타내다.



  1. 이더넷 프레임 브로드캐스트(Ethernet Frame Broadcast)
    • 이더넷 프레임은 네트워크 상에서 브로드캐스트된다. 목적지 주소는 'FFFFFFFFFFFF'(모든 노드에게 전송됨)이다.
    • DHCP 서버가 실행 중인 라우터에게 이 프레임을 수신한다.



  1. 프레임 디멀티플렉싱(Frame Demultiplexing)
    • 이더넷 프레임이 IP로 디멀티플랙싱되고, IP는 UDP로 디멀티플랙싱 된다.
    • 최종적으로 UDP는 DHCP로 디멀티플랙싱된다.
    • 이는 각 프로토콜 계층이 데이터 단위로 상위 계층으로 전달하는 과정을 설명한다.





  1. DHCP 서버 응답(DHCP Server Reply)
    • DHCP 서버는 클라이언트의 IP 주소, 첫 홉 라우터의 IP 주소, DNS 서버의 이름과 IP 주소를 포함한 DHCP ACK 메시지를 작성한다.
    • 이 메시지는 클라이언트에게 전송된다.



  1. DHCP 서버 응답 캡슐화(Encapsulated DHCP Server Reply)
    • DHCP ACK 메시지는 여러 프로토콜 계층을 통해 캡슐화되어 클라이언트에게 전달된다.
    • 클라이언트에서 해당 메시지를 수신하고 각 계층을 통해 디멀티플렉싱하여 DHCP 메시지를 처리한다.



  1. 클라이언트 정보 획득(Client Information Acquisition)
    • 클라이언트는 이제 자신의 IP 주소, DNS 서버 이름과 IP 주소, 첫 홉 라우터의 IP 주소를 알게 된다.









IP addresses: how to get one

Q. 네트워크가 IP 주소의 서브넷 부분을 어떻게 얻는가?
A. 네트워크는 ISP가 할당한 주소 공간의 일부를 받는다









Hierarchinal addressing: route aggregation

계층적 주소 지정: 경로 집계

  1. 계층적 주소 지정
    • 계층적 주소 지정은 라우팅 정보를 효율적으로 광고하는 것을 가능케한다.
    • 이는 여러 개의 작은 네트워크 주소를 하나의 큰 주소로 집계하여 라우팅 테이블 크기를 줄이는 데 도움을 준다.

===================59,60,61,62 페이지 생략======================================









NAT:network address translation

네트워크 주소 변환(NAT)의 개념과 작동 방식을 설명함

  • NAT의 개념
    • 로컬 네트워크의 모든 장치는 "사설" IP 주소 공간(10/8, 172.16/12, 192.168/16 프리 픽스)를 사용한다.
    • 이런 사설 IP 주소는 로컬 네트워크에서만 사용할 수 있다.
    • NAT는 로컬 네트워크의 모든 장치가 외부 세계에 대해 단 하나의 IPv4 주소를 공유하도록 한다.
    • 예를 들어, 가정 네트워크 주소가 10.0.0.0/24 인 경우, 모든 장치는 외부 세계에 대해 138,76,29,7의 단일 NAT IP 주소를 사용하게 된다.



  • 로컬 네트워크와 외부 인터넷
    • 로컬 네트워크 내의 장치들은 로컬 IP 주소를 사용한다. e.g. 10.0.0.1, 10.0.0.2, 10.0.0.3
    • 이 장치들이 인터넷과 통신할 때, NAT 라우터는 이들의 로컬 IP 주소를 공인 IP 주소(138.76.29.7)



  • 데이터그램 전송
    • 로컬 네트워크를 떠나는 모든 데이터그램은 동일한 NAT IP 주소(138.76.29.7)를 가지지만, 각 데이터그램은 다른 소스 포트 번호를 가진다.
    • 로컬 네트워크 내에서 송수신되는 데이터그램은 여전히 로컬 주소(10.0.0.0/24)를 사용한다.



  • NAT의 장점
    • 단 하나의 IP 주소: 모든 장치에 대해 공급자 ISP로부터 단 하나의 공인 IP 주소만 필요한다.
    • 내부 주소 변경: 외부 세계에 알릴 필요 없이 로컬 네트워크 내 호스트의 주소를 변경할 수 있다.
    • ISP 변경 용이: 로컬 네트워크 내 장치들의 주소를 변경하지 않고도 ISP를 변경할 수 있다.
    • 보안: 로컬 네트워크 내부의 장치는 외부 세계에서 직접적으로 주소가 지정되거나 보이지 않는다.









NAT: network address translation

NAT 라우터의 구현 방식

  1. NAT 라우터의 역할
    • NAT 라우터는 투명하게 다음과 같은 작업을 수행해야 한다.



  1. 출발 데이터그램(outgoing datagrams)
    • 모든 출발 데이터그램의 소스 IP 주소와 포트 번호(NAT IP 주소, 새로운 포트 번호) 로 대체
    • 원격 클라이언트/서버는 (NAT IP 주소, 새로운 포트 번호)를 목적지 주소로 사용하여 응답한다.



  1. NAT translation table에 기억
    • 모든 (소스 IP 주소, 포트 번호)(NAT IP 주소, 새로운 포트 번호) 의 번역 쌍을 NAT 번역 테이블에 저장한다.



  1. 도착 데이터그램(incoming datagrams)
    • (NAT IP address, new port #)을 (source IP address, port #)로 replace
    • 모든 도착 데이터그램의 목적지 필드를 NAT 테이블에 저장된 대응하는 (소스 IP 주소, 포트 번호)로 대체한다.











NAT: network address translation

논란과 현황



논란

  1. 라우터 처리 계층 문제
    • 라우터는 원래 3계층(네트워크 계층)까지만 처리해야 한다고 여겨진다.
    • 그러나 NAT는 포트 번호를 변경하는 등 4계층(전송 계층)까지 처리한다.



  1. 주소 부족 문제
    • IPv6를 통해 주소 부족 문제를 해결해야 한다고 주장
    • IPv6는 더 많은 IP 주소를 제공하여 NAT 없이도 충분히 네트워크를 구성할 수 있다.



  1. 종단 간 논쟁 위반
    • NAT는 네트워크 계층 장치가 포트 번호를 조작하여 종단 간 통신의 투명성을 위반한다.
    • 이는 종단 간 논쟁(end-to-end argument)을 위반하는 행위로 여겨진다.



  1. NAT traversal 문제
    • 클라이언트가 NAT 뒤에 있는 서버와 연결하고자 할 때 NAT traversal 문제가 발생한다.
    • 이는 NAT가 외부에서 들어오는 트래픽을 적절히 전달하기 어렵게 만든다.



허나



NAT는 현재 널리 사용되고 있다.

  • 가정용 네트워크와 기관 네트워크에서 광범위하게 사용된다.
  • 4G/5G 셀룰러 네트워크에서도 NAT가 사용된다.






IPv6: motivation

등장배경:

  • IPv4 주소 공간 고갈: 32비트의 IPv4 주소 공간이 완전히 할당될 것이 예상되었다.
    • IPv4 주소 공간은 약 43억 개의 고유 주소를 제공한다.
    • 인터넷 사용자와 장치의 폭발적인 증가로 인해 IPv4 주소가 부족해졌다.
  • 처리 및 포워딩 속도 향상: 40 바이트 고정 길이 헤더를 사용하여 처리 속도를 높였다.
  • 흐름에 대한 네트워크 계층 처리 기능: 다양한 네트워크 계층에서 흐름(flow)을 다르게 처리할 수 있는 기능을 제공한다.









IPv6 datagram format



IPv4와 비교에서 없는 것

  • checksum이 없다.: 라우터에서 처리 속도를 높이기 위해 체크섬 필드가 제거되었다.
  • no fragmentation/reassemply: IPv6는 단편화와 재조립을 지원하지 않는다. 대신, 상위 계층에서 이 기능을 처리한다.
  • no option: IPv4에서는 다양한 옵션을 제공했지만, IPv6에서는 이러한 옵션이 제거되고 대신 상위 계층이나 다음 헤더 프로토콜에서 제공된다.









Transition from IPv4 to IPv6

IPv4에서 IPv6로의 전환은 네트워크 인프라 전반에 걸쳐 일괄적으로 이루어질 수 없기에 점진적인 전환 방법이 필요하다.

  • 주요 내용
    • 모든 라우터의 동시 업그레이드 불가: 모든 라우터를 동시에 업그레이드할 수 없으며, 이를 위한 "flag day" 같은 날을 정할 수도 없다.
    • 혼합 운영: 네트워크 IPv4와 IPv6 라우터가 혼재된 환경에서 운영될 수 있다.



  • 터널링(Tunneling)
    • 터널링 정의: 터널링은 IPv6 데이터그램을 IPv4 데이터그램의 페이로드로 운반하는 방법이다. 이는 "패킷 안의 패킷" 방식으로 작동한다.
    • 운영 방식: IPv4 헤더는 소스 및 목적지 주소를 포함하고, 이 IPv4 헤더 안에 IPv6 데어터그램 전체가 포함된다. IPv6 데이터그램 내부에는 다시 IPv6 헤더 필드와 UDP/TCP 페이로드가 포함된다.
    • 터널링의 활용: 터널링은 4G/5G 네트워크와 같은 다른 컨텍스트에서도 광범위하게 사용된다.



  • 도식 설명
    • IPv4 헤더 필드: 소스 주소와 목적지 주소가 포함된 IPv4 헤더가 데이터그램의 맨 앞부분을 차지한다.
    • IPv6 데이터그램: IPv4 헤더 뒤에는 IPv6 데이터그램이 포함되며, 여기에는 IPv6 헤더 필드와 UDP/TCP 페이로드가 포함된다.
    • 페이로드: 최종적으로 IPv4 페이로드로 감싸진 전체 패킷이 전송된다.











Generalized forwarding: match plus action

주요 내용

  • 포워딩 테이블: 각 라우터는 포워딩 테이블(또는 플로우 테이블)을 포함한다.
  • "매치 플러스 액션" 추상화: 도착하는 패킷의 비트를 매치하고, 특정 동작을 취한다.
    • 목적지 기반 포워딩: 목적지 IP 주소에 기반하여 포워딩을 수행한다.
    • 일반화된 포워딩: 여러헤더 필드가 액션을 결정할 수 있으며, 다양한 액션이 가능하다.






포워딩 테이블(Forwarding Table)

  • 포워딩 테이블 역할: 도착하는 패킷의 특정 비트를 확인하고, 그에 맞는 액션을 결정한다.
  • 일반화된 포워딩: 단순히 목적지 IP 주소뿐만 아니라, 여러 헤더 필드도 고려할 수 있다.
  • 가능한 액션들
    • 드롭(drop): 패킷을 폐기합니다.
    • 복사(copy): 패킷을 복사한다.
    • 수정(modify): 패킷의 내용을 수정한다.
    • 로그(log): 패킷을 로그에 기록









Flow Table abstraction

  • 플로우(Flow): 헤더 필드 값에 의해 정의된다.(링크 계층, 네트워크 계층, 전송 계층의 필드 포함)



  • 일반화된 포워딩(Generalized Forwarding): 단순한 패킷 처리 규칙을 포함한다.

    • 매치(Match) : 패킷 헤더 필드에서 패턴 값을 매칭한다.
    • 액션(Action): 매치된 패킷에 대해 다음과 같은 동작을 수행할 수 있다.
      • drop: 패킷을 폐기함
      • forward: 패킷을 전달함
      • modify: 패킷을 수정함
      • send to controller: 매치된 패킷을 컨트롤러로 보낸다.
    • Priority: 겹치는 패턴을 구별한다.
    • Counters: 바이트 수와 패킷 수를 세어준다.
  • 그림

    • Flow Table: 라우터의 매치 + 액션 규칙을 정의
    • match: 패킷의 헤더 필드를 매칭
    • 액션: 매치된 패킷에 대해 정의된 액션을 수행
    • src = ..., dest=3.4..: forward(2번 포트로 전달)
    • src=1.2.., dest=...: drop(패킷 폐기)
    • src=10.1.2.3, dest=...: controller로 전송






OpenFlow: 플로우 테이블 항목

주요 내용

  • Match(매치): 패킷의 헤더 필드 값을 기준으로 매치
  • Action(액션): 매치된 패킷에 대해 수행할 동작을 정의
    1. 패킷을 특정 포트로 전달
      1. 패킷 폐기
      2. 헤더 필드 수정
      3. 캡슐화하여 컨트롤러로 전달
  • Stats(통계): 패킷과 바이트 카운터를 포함









OpenFlow: examples











OpenFlow abstraction

  • match + action
    • 이 추상화는 다양한 종류의 네트워크 장치를 통합하는 개념이다. 모든 네트워크 장치는 특정 조건을 매칭하고, 그에 따른 행동을 수행한다.



  • Router(라우터)
    • match(매칭)
      • 가장 긴 목적지 IP 접두사(longest destination IP prefix)를 매칭한다. 즉, 목적지 IP 주소가 특정 범위에 속하는지를 확인한다.
    • action(행동)
      • 해당 링크로 패킷을 전달한다(forward out a link)



  • Switch(스위치)
    • match(매칭)
      • 목적지 MAC 주소(destination MAC address)를 매칭한다. 즉, 이더넷 프레임의 목적지 MAC 주소를 확인한다.
    • action(행동)
      • 패킷을 전달하거나 (forward) 모든 포트로 전송(flood)한다.



  • Firewall(방화벽)
    • match(매칭)
      • IP 주소와 TCP/UDP 포트 번호를 매칭한다. 즉, 특정 IP 주소와 포트 번호로 들어오는 패킷을 확인한다.
        • action(행동)
        • 패킷을 허용하거나 (permit) 차단한다. (deny)



  • NAT(Network Address Translation, 네트워크 주소 변환)
    • match(매칭)
      • IP 주소와 포트를 매칭한다. 즉, 내부 네트워크의 특정 IP 주소와 포트를 확인한다.
    • action(행동)
      • 주소와 포트를 재작성 (rewrite)한다. 즉, 내부 네트워크 주소를 외부 네트워크 주소로 변환한다.









OpenFlow example









Generalized forwarding : summary

match plus action: Abstraction

  • 개념: 패킷 헤더의 비트를 다양한 계층에서 일치시키고 해당하는 동작을 수행하는 추상화
  • 매칭: 링크, 네트워크, 전송 계층의 여러 필드에 대해 매칭한다.
  • 로컬 액션: 패킷을 드롭, 포워드, 수정, 컨트롤러로 보낼 수 있다.
  • 네트워크 전반의 동작: 네트워크 전체의 동작을 "프로그래밍"할 수 있다.



network programmability

  • 간단한 형태: 패킷당 "처리"를 프로그래밍할 수 있다.
  • 역사적 배경: 활성 네트워킹에서 시작되었다.
  • 오늘날: 더 일반화된 프로그래밍을 의미하며, P4와 같은 도구를 사용한다.









Middleboxes

  • Middlebox; 일반적인 IP 라우터의 표준 기능 외에 다른 기능을 수행하는 중간 장치이다. 이러한 장치는 소스 호스트와 목적지 호스트 사이의 데이터 경로에 위치한다









Middleboxes everywhere!

주요 middlebox의 종류와 용도

  1. NAT(Network Address Translation)
    • 용도: 여러 장치들이 하나의 공인 IP 주소를 공유하도록 함
    • 사용처: 가정, 셀룰러 네트워크, 기관 네트워크



  1. Application-specific Middleboxes
    • 용도: 특정 어플리케이션의 성능 및 보안을 위해 설계된 중간 장치
    • 사용처: 서비스 제공자. 기관 네트워크, CDN(컨텐츠 전송 네트워크)



  1. Firewalls, IDS(Intrusion Detection Systems)
    • 용도: 네트워크 보안을 강화하고 침입을 탐지 및 차단
    • 사용처: 기업, 기관, 서비스 제공자, ISP(인터넷 서비스 제공자)



  1. Load Balancers
    • 용도: 트래픽을 여러 서버에 분산하여 부하를 균등하게 분배
    • 사용처: 기업 네트워크, 서비스 제공자, 데이터 센터, 모바일 네트워크



  1. Caches
    • 용도: 자주 사용하는 데이터를 로컬에 저장하여 접근 속도를 향상
    • 사용처: 서비스 제공자, 모바일 네트워크, CDN






Middleboxes



초기 Middlebox

  • 초기 형태: 초기 Middlebox는 독점적인 하드웨어 솔루션으로, 폐쇄된 시스템을 사용했다.


Whitebox 하드웨어로의 이동

  • Whitebox 하드웨어: 오픈 API를 구현한 범용 하드웨어로의 전환이 진행되고 있다.
    • 독점 하드웨어 탈피: 기존의 독점적인 하드웨어 솔루션에서 벗어나고 있다.
    • 프로그래밍 가능한 로컬 액션: 'match+action' 메커니즘을 통해 로컬에서 프로그래밍 가능한 작업을 수행할 수 있다.
    • 소프트웨어 혁신: 소프트웨어에서의 혁신과 차별화로 나아가고 있다.


SDN(Software Defined Networking)

  • 중앙 집중식 관리: 논리적으로 중앙 집중식 제어 및 구성 관리를 제공하며, 종종 사설 또는 공용 클라우드에서 수행된다.


NFV(Network Functions Virtualization)

  • 프로그래머블 서비스: Whitebox 네트워킹, 계산 및 저장소를 통해 프로그래밍 가능한 서비스를 제공한다





The IP hourglass

하나의 네트워크 계층 프로토콜(IP)

  • 인터넷에서 사용되는 유일한 네트워크 계층 프로토콜은 IP(Internet Protocol)이다.
  • IP는 전 세계의 수십억 개의 인터넷 연결 장치에 의해 구현되어야 한다.

인터넷의 "love handles"

  • 인터넷이 시간이 지나면서 네트워크 내부에서 동작하는 다양한 중간 장치(middleboxes)가 등장했다.

'학교수업 > 컴퓨터망' 카테고리의 다른 글

Chapter6: The Link Layer and LANs  (0) 2024.07.12
Chapter5 Network Layer: Control Plane  (0) 2024.07.09
Chapter3: Transport Layer-2  (0) 2024.07.04
Chapter3: Transport Layer  (0) 2024.07.03
Chapter2: Application Layer-2  (0) 2024.07.03

Connection-oriented transport: TCP

  • segment structure
  • reliable data transfer
  • flow control
  • connection management



TCP: overview

  • Point-to-Point
    • 한 송신자와 한 수신자 간의 통신
    • 일대일 연결



  • Reliable, In-Order Byte Stream
    • 신뢰할 수 있고, 순서가 맞는 바이트 스트림 전송
    • 메시지 경계 없음(연속된 바이트 스트림으로 처리)



  • Full Duplex Data
    • 양방향 데이터 흐름을 지원
    • 동일한 연결에서 동시에 송수신 가능
    • MMS(Maximum Segment Size): 하나의 세그먼트에서 전송할 수 있는 최대 데이터 크기



  • Cumulative ACKs(Acknowledgements)
    • 누적 확인 응답
    • 특정 번호까지의 모든 패킷을 확인 응답하는 방식



  • Pipelining
    • 여러 패킷을 동시에 전송하는 기술
    • TCP 혼잡 제어 및 흐름 제어 메커니즘을 통해 윈도우 크기 설정



  • Connection-Oriented
    • 연결 지향적 통신
    • 데이터 교환 전에 제어 메시지를 주고받아 송신자와 수신자의 상태를 초기화하는 핸드셰이킹 과정 필요



  • Flow Controlled
    • 흐름 제어
    • 송신자가 수신자를 과부하시키지 않도록 전송 속도 조절









TCP segment structrue

  1. Source Port #(출발지 포트 번호)
    • 세그먼트를 송신하는 장치의 포트 번호



  1. Dest Port #(목적지 포트 번호)
    • 세그먼트를 수신하는 장치의 포트 번호이다.



  1. Sequence Number(순서 번호)
    • 바이트 스트림 내의 바이트에 순서를 매기는 데 사용된다. 이는 세그먼트의 첫 번째 바이트의 번호를 나타낸다.



  1. Acknowledgement Number(확인 응답 번호)
    • 송신자가 다음에 받을 것으로 기대하는 바이트의 순서 번호이다. 이 번호는 수신 측에서 데이터가 제대로 도착했음을 확인하는 역할을 한다.



  1. Header Length
    • TCP 헤더의 길이를 나타냅니다. 단위는 32비트 워드이다.



  1. Flags

    • 제어 비트로 구성되어 있으며, 각각의 비트는 특정한 제어 정보를 나타낸다.
      • C, E: 혼잡 알림(Congestion Nofitication)
      • U: 긴급 포인터(Urgent Pointer)
      • A: 확인 응답(ACK)
      • P: 푸시(Push)
      • R: 재설정(RST)
      • S: 동기화(SYN)
      • F: 종료(FIN)


  2. Receive Window(수신 윈도우)

    • 수신 측이 수신할 준비가 된 데이터의 최대 바이트 수를 나타낸다. 이는 흐름 제어에 사용된다.



  1. Checksum(체크섬)
    • 오류 검출을 위해 사용된다. 데이터와 헤더가 전송 중에 손상되지 않았는지 확인한다.



  1. Urgent Data Pointer(긴급 데이터 포인터)
    • 긴급 데이터의 끝을 가리키는 포인터이다. 긴급 데이터는 보통의 데이터보다 우선 처리된다.



  1. Options(옵션, 가변 길이)
    • 선택적 필드로, TCP 연결에 대한 추가 정보를 제공할 수 있다.



  1. Application Data(응용 데이터, 가변 길이)
    • 응용 프로그램에서 전송하는 실제 데이터









TCP sequence numbers, ACKS

Sequence numbers(순서 번호)

  • 정의: TCP는 바이트 스트림을 전달할 때 각 바이트에 번호를 매긴다. 이 번호를 통해 송신 측과 수신 측은 각 바이트가 데이터 스트림 내에서 어디에 위치하는지 알 수 있다.
  • 기능: 세그먼트의 첫 번째 바이트의 순서 번호를 지정하여 데이터의 정확한 순서를 유지하고 손실된 데이터를 재전송할 수 있게 한다.



Acknowledgements(확인 응답)

  • 정의: 수신 측이 다음에 받을 것으로 기대되는 바이트의 순서 번호를 송신 측에 알려주는 메커니즘이다.
  • 기능: 누적 ACK를 사용하여 현재까지 제대로 수신한 데이터의 마지막 바이트 다음에 올 바이트의 순서 번호를 송신 측에 알려준다. 이는 데이터의 손실이나 오류를 감지하고 재전송을 요청할 수 있게 한다.



중요한 질문 및 답변

  • Q: 수신 측이 순서가 뒤섞인 세그먼트를 어떻게 처리하는가?
  • A: TCP 사양은 이에 대해 명시적으로 규정하지 않으며, 구현자에게 맡겨진다.









TCP sequence numbers, ACKs

  1. 사용자가 'C'를 입력
    • 호스트 A의 사용자가 문자 'C'를 입력
    • 호스트 A는 이 데이터를 포함한 TCP 세그먼트를 생성
    • 이 세그먼트의 순서 번호(seq)는 42, 확인 응답 번호(ACK)는 79, 데이터는 'C'이다.
    • 이 세그먼트는 호스트 B로 전송된다.


  2. 호스트 B가 'C'를 수신하고 에코
    • 호스트 B는 seq=42인 세그먼트를 수신한다.
    • 호스트 B는 이 세그먼트를 확인 응답(ACK)한다. 확인 응답 번호(ACK)는 43이다.(다음에 기대되는 바이트의 순서 번호)
    • 호스트 B는 데이터 'C'를 에코(반복)한다. 새로운 새그먼트를 생성하여 호스트 A로 보낸다.
    • 이 세그먼트의 순서 번호(Seq)는 79, 확인 응답 번호(ACK)는 43, 데이터는 'C'이다.


  3. 호스트 A가 에코된 'C'를 수신
    • 호스트 A는 Seq=79인 세그먼트를 수신
    • 호스트 A는 이 세그먼트를 확인 응답(ACK)한다. 확인 응답 번호(ACK)는 80이다.(다음에 기대되는 바이트의 순서 번호)









TCP round trip time, timeout

Q. TCP timeout 값을 어떻게 설정할 것인가?

  • RTT보다 길어야 함: RTT(Round Trip Time)보다 길어야 한다. 그러나 RTT는 변동한다.
  • 너무 짧은 경우: 타임아웃이 너무 짧으면 조기 타임아웃이 발생하여 불필요한 재전송이 일어날 수 있다.
  • 너무 긴 경우: 타임아웃이 너무 길면 세그먼트 손실에 대한 반응이 느려질 수 있다.



Q. RTT를 어떻게 추정할 것인가?

  • SampleRTT: 세그먼트 전송 시점부터 ACK(확인 응답) 수신 시점까지의 시간을 측정한다
    • 재전송된 세그먼트는 무시한다.
  • SampleRTT 변동: SampleRTT는 변동하기에, 추정된 RTT를 더 부드럽게 만들고 싶다.
    • 최근 여러 측정값을 평균화하여 사용한다. 단순히 현재의 SampleRTT만을 사용하지 않는다.



스크린샷 2024-07-04 001104.png
12.6 kB






  1. Exponential Weighted Moving Average(EWMA)
    • 과거 샘플의 영향을 지수적으로 감소시킨다.
    • 최신 SampleRTT에 더 많은 가중치를 두어, 네트워크 상태의 변동에 빠르게 반응할 수 있도록 한다.



  1. 이전 샘플의 영향 감소
    • 오래된 SampleRTT의 영향력이 지수적으로 빠르게 감소하여, 최근의 네트워크 상태를 더 정확히 반영할 수 있다.



  1. 알파 값의 일반적 설정:

    • α는 일반적으로 0.125로 설정됩니다. 이는 최근의 SampleRTT가 ExtimatedRTT에 어느 정도 영향을 미치는지를 결정한다.






타임 아웃 간격 설정

  • ExtimatedRTT: 예측된 RTT 값
  • DevRTT: SampleRTT가 EstimatedRTT로부터 벗어난 정도를 나타낸 값
  • Safety margin: 타임아웃 간격을 결정할 때 추가되는 여유 시간



타임아웃 간격을 예측된 RTT에 "안전 마진"을 더한 값입니다. 네트워크의 변동성을 고려하여, 타임 아웃 간격은 예측된 RTT와 DevRTT의 합으로 설정된다.






DevRTT 계산

  • β: 일반적으로 0.25로 설정되는 가중치
  • SampleRTT: 실제 측정된 RTT 값
  • EstimatedRTT: 예측된 RTT 값



DevRTTSampleRTTEstimatedRTT의 차이의 절대값을 사용하여 계산됩니다. 이는 예측된 RTT로부터의 편차를 측정하여, 타임아웃 간격 설정 시 변동성을 반영하는 데 사용된다.









TCP Sender(simplified)

event1: data received from application

  • 세그먼트 생성: 수신한 데이터를 바탕으로 세그먼트를 생성한다
    • 순번(seq #): 세그먼트 내 첫 번째 데이터 바이트의 바이트 스트림 번호이다.
  • 타이머 시작: 타이머가 이미 실행 중이 아니라면 시작한다.
    • 타이머는 가장 오래된 ACK되지 않은 세그먼트를 기준으로 생각한다.
    • 만료 간격은 TimeOutInterval이다.



event2 : timeout 발생

  • segment 재전송: 타임아웃을 유발한 세그먼트를 재전송한다.
  • 타이머 재시작: 타이머를 다시 시작한다.



event3 : ACK 수신

  • ACK 확인: 수신된 ACK가 이전에 ACK되지 않은 세그먼트를 확인하는 경우
    • ACK 된 것으로 알려진 내용을 업데이트한다.
    • ACK 되지 않은 세그먼트가 여전히 있는 경우 타이머를 시작한다.






TCP: retransmission scenarios











TCP fast retransmit

  • 송신자가 동일한 데이터에 대해 3개의 추가 ACK(트리플 중복 ACK)를 수신하면, 송신자는 타임아웃을 기다리지 않고 확인되지 않은 세그먼트 중 가장 작은 순서 번호를 가진 세그먼트를 재전송한다.






TCP flow control

Q. What happens if network layer delivers data faster than application layer removes data from socket buffers





결과: 버퍼 오버 플로우

  • 버퍼가 가득 차면 더 이상 데이터를 수용할 수 없게 되어, 추가로 도착하는 데이터는 손실된다.
  • 이를 방지하기 위해 수신자는 송신자에게 윈도우 크기를 조정하도록 알려준다.
  • 송신자는 수신자가 수용할 수 있는 데이터 양을 초과하지 않도록 조절한다. 송신자는 수신자의 버퍼가 넘치지 않도록 데이터를 너무 많이, 너무 빨리 전송하지 않는다.
  • TCP는 수신자의 현재 버퍼 상태를 기반으로 송신자가 보낼 수 있는 데이터 양을 제어한다.



주요 내용

  1. 수신자의 버퍼 공간 광고
    • TCP 수신자는 자신의 여유 버퍼 공간을 TCP 헤더의 'rwnd(receive window)' 필드에 광고합니다.
    • 'rwnd'는 수신자가 현재 수용할 수 있는 데이터의 양을 나타낸다.
  2. RcvBuffer
    • 'RcvBuffer'의 크기는 소켓 옵션을 통해 설정되며, 일반적으로 기본값은 4096 바이트이다.
    • 많은 운영 체제는 'RcvBuffer' 크기를 자동으로 조정한다.
  3. 송신자의 데이터 전송 제약
    • 송신자는 ACK되지 않은('unACKed') 데이터의 양을 수신한 'rwnd' 값에 맞춰 제한한다.
    • 즉, 송신자는 'rwnd' 값보다 많은 데이터를 한 번에 전송하지 않는다.
  4. 버퍼 오버플로우 방지
    • 이러한 메커니즘을 통해 수신자의 버퍼가 넘치는 상황을 방지한다.











TCP connection management

TCP 연결 관리는 데이터 교환 전에 송신자와 수신자가 연결을 설정하는 과정을 의미한다. 이를 위해 "handshake"라는 과정이 필요하며, 이는 연결을 설정하기 위한 절차이다.



  1. 연결 설정 동의
    • 송신자와 수신자는 연결을 설정하는 데 동의한다. 이는 양쪽 모두가 연결을 설정하기를 원한다는 것을 알게 되는 과정이다.
  2. 연결 매개변수 합의
    • 양쪽은 연결 매개변수(e.g. 시작 시퀀스 번호 등)에 대해 합의한다.





e.g.

  • 왼쪽(client)
    • 어플리케이션은 새로운 소켓을 생성하여 호스트 이름과 포트 번호를 지정
    • e.g. Socket clientSocket = newSocket("hostname", "port number")
    • 네트워크 계층을 통해 연결을 설정하며, 어플리케이션 계층에서 연결 상태와 연결 변수를 관리한다.



  • 오른쪽(server)
    • 서버는 소켓을 생성하여 연결을 수락한다.
    • e.g. Socket connectionSocket = welcomeSocket.accept()
    • 서버 역시 네트워크 계층을 통해 연결을 설정하며, 어플리케이션 계층에서 연결 상태와 연결 변수를 관리한다.






Agreeing to establish a connection

Q. will 2-way handshake는 항상 network에서 동작하는가?



문제점:

  1. 가변 지연(variable delays): 네트워크 환경에서는 메시지가 도착하는 시간이 일정하지 않는다. 지연 시간이 가변적이므로 연결 설정이 불안정할 수 있다.
  2. 메시지 재전송(retransmitted message): 메시지 손실로 인해 request 메시지를 재전송하는 경우가 발생한다.
  3. 메시지 순서 변경(message reordering): 네트워크에서는 메시지가 순서대로 도착하지 않을 수 있다. 순서가 뒤바뀌면 핸드 셰이크 과정이 실패할 수 있다.
  4. 상대방의 상태를 알 수 없음(cant see other side): 송신자는 수신자의 상태를 직접 확인할 수 없다. 상대방이 메시지를 받았는지 확인하는 방법이 없기에, 핸드셰이크 과정이 중단될 수 있다.






2-way handshake scenarios

clinet는 처음 x, server는 나중의 x, 그렇기에 client가 연결을 끊어도 server는 그대로 연결되어 있다. 이는 리소스 낭비






TCP 3-way handshake

클라이언트 측 상태

  1. LISTEN
    • 클라이언트 소켓이 연결 요청을 기다리는 상태
    • 코드: 'clientSocket = socekt(AF_INET, SOCK_STREAM)(소켓 생성)
    • 코드: 'clientSocket.connect((serverName, serverPort))'(연결 요청)



  1. SYN_SENT
    • 클라이언트가 초기 순서 번호(x)를 선택하고 SYN 메시지를 서버로 보낸 상태이다.
    • 상태 전환: LISTEN -> SYN_SENT
    • 메시지: 'SYNbit=1, Seq=x'(SYN 메시지)



  1. ESTAB(Established)
    • 클라이언트가 서버로부터 SYN-ACK 메시지를 받고, 이에 대한 ACK를 서버로 보낸 후 연결이 설정된 상태
    • 상태 전환: SYN_SENT -> ESTAB
    • 메시지: 'ACKbit=1, ACKnum =y + 1'(ACK 메시지)





서버 측 상태

  1. LISTEN

    • 서버 소켓이 연결 요청을 기다리는 상태
    • 코드: 'serverSocket = socket(AF_INET, SOCK_STREAM)'(소켓 생성)
    • 코드: 'serverSocket.bind(('', serverPort))'(소켓 바인딩)
    • 코드: 'serverSocket.listen(1)'(연결 대기)
    • 코드: 'connectionSocket, addr = serverSocket.accept()' (연결 수락)

  2. SYN_RCVD

    • 서버가 클라이언트로부터 SYN 메시지를 받고, 초기 순서 번호(y)를 선택한 후 SYN-ACK 메시지를 클라이언트로 보낸 상태이다.
    • 상태 전환: LISTEN->SYN_RCVD
    • 메시지: 'SYNbit=1, Seq=y' (SYN-ACK 메시지)


  1. ESTAB(Established)
    • 서버가 클라이언트로부터 ACK 메시지를 받아 연결이 설정된 상태이다.
    • 상태 전환: SYN_RCVD -> ESTAB
    • 메시지: ACKbit=1, ACKnum=x+1(ACK 메시지)



3-Way Handshake 과정

  1. SYN(Synchronize)
    • 클라이언트가 서버로 SYN 메시지로 보내 연결을 요청한다.
    • 클라이언트: 'SYNbit=1, Seq=x'
    • 클라이언트 상태: LISTEN->SYN_SENT
    • 서버 상태: LISTEN->SYN_RCVD


  1. SYN-ACK(Synchronize-Acknowledge)
    • 서버가 클라이언트의 SYN 메시지를 받고, 초기 순서 번호(y)를 선택하여 SYN-ACK 메시지를 클라이언트로 보낸다.
    • 서버: 'SYNbit=1, Seq=y, ACKbit=1, ACKnum=x+1'
    • 클라이언트 상태: SYN_SENT
    • 서버 상태: SYN_RCVD


  1. ACK(Acknowledge)
    • 클라이언트가 서버의 SYN-ACK 메시지를 받고, 이에 대한 ACK를 서버로 보낸다.
    • 클라이언트: 'ACKbit=1, ACKnum=y+1
    • 클라이언트 상태: SYN_SENT->ESTAB
    • 서버 상태: SYN_RCVD -> ESTAB

Closing a TCP Connection

TCP 연결 종료 절차

  1. 양쪽에서 연결 종료 요청
    • 클라이언트와 서버는 각각 연결을 종료하기 위해 FIN 비트가 1로 설정된 TCP 세그먼트를 보낸다.


  1. FIN 수신 시 응답
    • FIN 세그먼트를 받은 쪽은 이를 ACK(승인)하여 응답해야 한다.
    • FIN을 수신하면, ACK 응답을 보낼 수 있으며, 이 ACK 응답은 자신의 FIN 요청과 함께 결합될 수 있다.


3. 동시 FIN 교환 처리 - 클라이언트와 서버가 동시에 FIN 세그먼트를 교환하는 상황도 처리할 수 있다.






Principles of congestion control

Congestion(혼잡)

  • 비공식적으로, 너무 많은 소스가 너무 많은 데이터를 너무 빠르게 보내서 네트워크가 처리하기에 부담스러워하는 것



발생 양상

  • 긴 진연 시간: 라우터 버퍼에 데이터가 줄을 서기에 발생
  • 패킷 손실: 라우터의 버퍼가 오버플로우 되어 패킷이 손실됨



혼잡 제어 vs 흐름 제어

  • 흐름 제어는 하나의 송신자가 하나의 수신자에게 너무 빠르게 데이터를 보내는 상황을 다룸
  • 혼잡 제어는 많은 송신자가 너무 빠르게 데이터를 보내는 상황을 다룸



중요성

  • 혼잡 문제는 네트워크 성능을 저하시킬 수 있는 주요 문제 중 하나로 간주됨(top-10-problem)









Causes/costs of congestion: scenario1

시나리오 개요

  • 이 시나리오는 네트워크 혼잡의 가장 단순한 형태를 설명한다.
    • 한 라우터와 무한 버퍼
    • 입력 및 출력 링크 용량:R
    • 두 개의 흐름이 존재
    • 재전송 필요 없음



네트워크 구성

  • Host A와 Host B는 데이터를 보내고 받은 호스트이다.
  • 라우터는 두 호스트 간의 데이터를 중계한다.
  • 무한 버퍼는 출력 링크에서 사용된다.
  • 입력 데이터 속도(λin): 호스트가 보내는 원래 데이터 속도
  • 출력 데이터 속도(λout: 네트워크를 통해 전달되는 실제 데이터 속도



Q: 도착 속도(λin)가 R/2에 접근하면?









Causes/costs of congestion: scenario2

시나리오 개요

  • 이 시나리오는 네트워크 혼잡의 또 다른 형태를 설명한다
    • 한 라우터와 유한 버퍼
    • 송신자가 분실된 데이터나 타임아웃된 패킷을 재전송함
    • application layer input = application layer output(λin = λout)
    • 전송 계층 입력은 재전송을 포함 (λ'in >= λin)






주요 개념

  • 라우터의 유한 버퍼
    • 버퍼는 제한되어 있기에 패킷이 손실될 수 있다.
    • 버퍼가 가득 차면 새 패킷은 드롭된다.



  • 재전송
    • 패킷은 손실되거나 타임아웃되면 송신자는 이를 재전송한다.
    • 따라서 전송 계층 데이터 속도(λ'in)는 원래 데이터 속도(λin)보다 커질 수 있다.



  • 어플리케이션 레이어와 전송 계층
    • 어플리케이션 레이어 입력과 출력은 동일하다(λin = λout)
    • 전송 계층 입력은 재전송된 데이터를 포함한다.(λ'in >= λin)









이상적인 상황

  • 네트워크 혼잡을 완화하기 위해 송신자가 라우터의 버퍼 상태를 완벽하게 알고 있을 때의 이상적인 상황
  • packet이 라우터에서 버퍼가 가득 차서 손실될 수 있다.
    • 송신자는 패킷이 손실되었음을 알게 되면, 손실된 패킷만 재전송한다.









Realistic scenario: un-needed duplicates

  • 주요 개념
    • 패킷 손실 및 재전송
      • 패킷이 라우터에서 버퍼가 가득 차서 손실될 수 있다.
      • 이로 인해 송신자는 손실된 패킷을 재전송해야한다.
    • 중복된 전송
      • 송신자가 타임아웃으로 인해 패킷을 중복해서 보낼 수 있다.
      • 이 경우, 동일한 패킷이 두 번 전송되고, 둘 다 수신되면 네트워크 자원이 낭비된다.
    • 네트워크 자원의 낭비
      • 불필요한 중복 전송으로 인해 네트워크 용량이 낭비된다.
      • 이는 필요한 패킷과 불필요한 중복 패킷 모두가 전달되어야 하기 때문이다.






  • 네트워크 혼잡으로 인해 발생하는 cost

    • 더 많은 작업(재전송)

      • 설명: 네트워크 혼잡이 발생하면 송신자는 손실된 패킷을 재전송해야 한다. 이로 인해 동일한 수신 속도를 유지하기 위해 더 많은 작업(즉, 재전송)이 필요하다.
      • 결과: 네트워크 리소스의 효율성이 저하되고, 송신자는 더 많은 패킷을 보내야하기에 추가적인 작업 부담이 발생한다.
    • 불필요한 재전송

      • 설명: 혼잡으로 인해 링크가 동일한 패킷의 여러 복사본을 전달하게 된다. 이는 원래 데이터 패킷과 재전송된 패킷이 모두 네트워크를 통해 전달됨을 의미한다.
      • 결과: 이러한 불필요한 재전송은 네트워크의 최대 도달 가능한 처리량을 감소시킨다. 네트워크가 중복된 패킷을 전송하는데 사용되기 때문에, 실제로 유용한 데이터가 전달될 수 있는 용량이 줄어든다.











Causes/costs of congestion: scenario 3

Q. 만일 λin(original data), λ'in(original data, plus retransmitted data)가 증가한다면?



A: 빨간색 데이터 스트림이 증가하면, 상단 라우터의 버퍼가 가득 차게 된다. 이로 인해 Host B에서 전송된 파란색 데이터 패킷이 라우터에 도달했을 때 모두 버려지게 된다. -> throughtput = 0



congestion의 또다른 비용

  • 패킷 손실 시 비용: 패킷이 손실되면, 그 패킷을 위해 사용된 모든 상류 전송 용량과 버퍼링이 낭비된다.









Causes/Costs of congestion: insights

  1. 처리량(throughput)은 용량(capacity)을 초과할 수 없다.
    • 네트워크의 처리량은 그 용량을 초과할 수 없다. 즉, 네트워크가 처리할 수 있는 최대 용량 이상으로 데이터를 보낼 수 없다.






  1. 용량에 근접할수록 지연이 증가한다.
    • 네트워크 용량에 가까워질수록 지연 시간이 증가한다. 이는 라우터와 네트워크 장비에서 패킷이 대기열에 머무르는 시간이 길어지기 때문이다.
    • 그래프에서 볼 수 있듯이, 입력률이 R/2에 도달하면 지연이 급격히 증가한다.






  1. 손실/재전송은 실질 처리량을 감소시킨다.
    • 패킷 손실과 재전송은 네트워크의 실질적인 처리량을 감소시킨다. 데이터가 손실될 때마다 재전송이 필요하고, 이는 네트워크의 효율성을 저하시킨다.
    • 그래프에서 손실이 발생하여 재전송되는 경우 실질 처리량이 감소하는 것을 볼 수 있다.






  1. 불필요한 중복은 실질 처리량을 더 감소시킨다.
    • 필요하지 않은 중복 패킷은 네트워크의 실질적인 처리량을 더욱 감소시킨다. 이는 동일한 패킷이 두 번 이상 전송되면서 발생하는 현상이다.
    • 네트워크가 이러한 중복된 패킷을 처리하는 동안 다른 중요한 데이터 전송이 지연될 수 있다.
    • 그래프에서 중복 패킷이 전송되면서 처리량이 감소하는 것을 볼 수 있다.






  1. downstream에서 손실된 패킷을 위한 upstream 전송 용량/버퍼링 낭비
    • 패킷이 하류에서 손실되면, 그 패킷을 상류에서 전송하기 위해 사용된 모든 용량과 버퍼링이 낭비된다.
    • 이는 네트워크 자원이 비효율적인 사용으로 이어진다.
    • 그래프에서 입력률이 증가함에 따라 처리량이 증가하다가, 일정 시점 이후 급격히 감소하는 것을 볼 수 있다. 이는 상류에서 낭비된 자원 때문이다.









Approaches towards congestion control

End-end congeston control

  • 명시적 네트워크 피트백 없음
    • 네트워크에서 혼잡 상황에 대한 직접적인 피드백을 제공하지 않는다.
    • 네트워크 라우터나 중간 장치가 혼잡 상황을 직접 알리지 않는다.
  • 관찰된 손실 및 지연을 통한 혼잡 추론
    • 네트워크 혼잡은 데이터 손실이나 지연 시간을 통해 추론된다.
    • 패킷 손실이 발생하거나 지연 시간이 증가하면, 송신자는 네트워크가 혼잡하다고 판단한다.
  • TCP의 접근 방식
    • TCP(Transmission Control Protocol)는 이러한 방식으로 혼잡 제어를 수행한다.
    • TCP는 데이터 전송 중 발생하는 손실이나 지연 시간을 관찰하여 혼잡 상황을 추론하고, 이에 따라 데이터 전송 속도를 조절한다









Network-assistsed congestion control:

  • 라우터의 직접 피드백
    • 라우터는 혼잡한 경로를 통해 흐르는 송신/수신 호스트에 직접 피드백을 제공한다.
    • 혼잡 상태를 실시간으로 감지하고, 이에 대한 정보를 송신자와 수신자에게 전달하다.



  • 혼잡 수준 또는 전송 속도 설정
    • 피드백은 네트워크의 혼잡 수준을 나타내거나. 명시적으로 송신 속도를 설정할 수 있다.
    • e.g. 혼잡 정도를 표시하여 송신자가 전송 속도를 줄이도록 유도하거나, 특정 전송 속도를 제안할 수 있다.



  • 혼잡 제어 프로토콜
    • 다양한 혼잡 제어 프로토콜이 네트워크 지원 혼잡 제어를 수행한다.
    • TCP ECN(Explicit Congeston Notification): TCP에서 혼잡 상황을 명시적으로 알리는 방식
    • ATM(Asynchronous Transfer Mode): 비동기 전송 모드에서 혼잡 제어를 수행하는 방식
    • DECbit: 라우터가 패킷 헤더의 비트를 설정하여 혼잡 정보를 전달하는 방식









TCP congestion control

TCP congestion control: AIMD

AIMD(Additive Increase, Multiplicatvie Decrease) 접근 방식

  • 송신자는 패킷 손실(혼잡)이 발생할 때까지 전송 속도를 증가시킬 수 있으며, 손실 이벤트가 발생하면 전송 속도를 감소시킨다.


  1. Additive Increase(AI)

    • 증가: 각 RTT(왕복 시간)마다 전송 속도를 1MSS(최대 세그먼트 크기)만큼 증가시킨다.
    • 목표: 손실이 발생할 때까지 전송 속도를 점진적으로 증가시켜 가능한 최대 대역폭을 찾는 것이다.

  2. Multiplicative Decrease(MD)

    • 감소: 손실 이벤트가 발생하면 전송 속도를 절반으로 줄인다.
    • 목표: 네트워크 혼잡을 신속히 완화하고, 손실 이벤트 후에도 신속히 회복할 수 있도록 한다.






TCP AIMD: more

Multiplicative Decrease(다중 감소) 세부 사항

  • 손실이 감지되었을 때 전송 속도 절반 감소
    • 세 배의 중복 ACK(TCP Reno): 손실이 세 배의 중복 ACK으로 감지될 때 전송 속도를 절반으로 감소시킨다.
    • 타임아웃으로 손실 감지 시(TCP Tahoe): 타임아웃으로 손실이 감지될 때 전송 속도를 1MSS(최대 세그먼트 크기)로 감소시킨다.


왜 AIMD인가

  • AIMD는 분산되고 비동기적인 알고리즘으로, 다음과 같은 이유로 사용된다.
    • 네트워크 전체에서 혼잡한 흐름 속도 최적화
      • 네트워크의 혼잡 상태를 효과적으로 관리하고 최적의 데이터 흐름을 유지한다.
    • 바람직한 안정성 특성
      • 안정적이고 예측 가능한 성능을 제공하며, 네트워크의 안정성을 보장한다.





TCP congestion control: details

TCP 전송 동작

  • cwnd 크기만큼 바이트를 전송하고, ACK를 받기 위해 RTT만큼 대기한 후, 추가 바이트를 전송한다.
  • 전송 속도: TCP rate ≈ cwnd/ RTT(bytes/sec)




TCP 전송 제약

  • TCP 전송자는 전송을 제한한다.
    • LastByteSent - LastByteAcked <= cwnd
  • cwnd는 네트워크 혼잡 상태를 관찰하여 동적으로 조정된다.(TCP 혼잡 제어를 구현함)






TCP slow start

TCP 느린 시작은 연결이 시작될 때 전송 속도를 기하급수적으로 증가시키는 알고리즘이다. 이는 초기 전송 속도를 천천히 증가시켜 혼잡을 방지하는 데 도움을 준다.



동작 원리

  • 초기 값: 처음에는 혼잡 윈도우(cwnd)가 1MSS(Maximum Segment Size)로 설정된다.
  • 속도 증가:
    • 매 RTT(Round-Trip-Time)마다 cwnd가 두 배로 증가시킨다.
    • 각 ACK를 받을 때마다 cwnd를 증가시켜 전송 속도를 높인다


요약

  • 초기 전송 속도는 느리지만, ACK를 받을 때마다 cwnd를 증가시키므로 전송 속도가 기하급수적으로 빠르게 증가한다.





TCP: from slow start to congestion avoidance

Q. 지수 증가(exponnential increase)에서 선형 증가(linear increase)로 언제 바뀌는가?
A: 'cwnd(혼잡 윈도우 크기)'가 타임아웃 전에 최대값의 절반에 도달했을 때

구현 세부사항

  • 변수 ssthresh
    • ssthresh는 혼잡 회피를 위해 설정되는 임계값
    • 패킷 손실 이벤트 발생 시, ssthread는 손실 이벤트 직전의 cwnd 값의 절반으로 설정된다.





Summary : TCP congestion control






TCP CUBIC

TCP CUBIC은 AIMD(가산적 증가, 곱셈적 감소) 방식보다 더 나은 대역폭을 탐색하는 방법을 제시한다.

Wmax

  • Wmax는 혼잡 손실이 감지된 전송 속도를 의미한다.
  • 병목 링크의 혼잡 상태는 아마도 많이 변하지 않았을 가능성이 크다.


새로운 접근 방식

  • 손실 발생 후 전송률/윈도우를 반으로 줄인 후, 처음에는 Wmax 까지 빠르게 램프업하지만, 이후에는 더 천천히 Wmax 에 접근한다.





TCP CUBIC은 AIMD보다 효율적으로 대역폭을 사용할 수 있는 알고리즘이다.

  • K
    • K는 TCP 윈도우 크기가 Wmax에 도달하는 시점을 나타낸다.
    • K 자체는 튜닝이 가능하다.
  • 증가 방식
    • W(윈도우 크기)는 현재 시간과 K 사이의 거리를 큐브 함수로 증가시킨다.
    • K에서 멀리 떨어져 있을 때는 더 큰 증가
    • K에 가까울 때는 더 작은 증가(신중한 증가)
  • TCP CUBIC의 장점
    • TCP CUBIC은 리눅스의 기본 설정이며, 인기 있는 웹 서버에서 가장 많이 사용되는 TCP이다.








TCP and the congested "bottlenet link"

  • TCP(classic, CUBIC): 두 가지 버전의 TCP 모두 패킷 손실이 발생할 때까지 전송 속도를 증가시킨다. 이 패킷 손실은 라우터의 출력에서 발생하며, 이를 "bottleneck link" 라고 한다.




  • 혼잡 이해(understanding congestion): 혼잡을 이해하려면 혼잡한 병목 링크에 집중하는 것이 유용하다.

  • insight: TCP 전송 속도를 증가시키면, 측정된 RTT(왕복 시간)가 증가하지만, 혼잡한 병목 링크에서는 종단 간 처리량이 증가하지 않는다.

  • goal: 종단 간 파이프를 "가득 채우되 더 가득 차지 않게" 유지하는 것이다. 이는 TCP 전송 속도가 병목 링크의 처리 용량을 초과하지 않도록 조절해야 한다는 의미이다.





Delay-based TCP congestion control

Delay-based TCP 혼잡 제어는 송신자와 수신자 간의 파이프를 "충분히 채우지만 더 많이 채우지 않기" 위해 병목 링크를 바쁘게 유지하면서 높은 지연과 버퍼링을 피하려고 한다. 이는 네트워크 경로의 혼잡 상태를 RTT(왕복 시간)를 통해 감지하고 제어하는 방식이다.

  1. RTTmeasured(측정된 RTT)

    • 현재 네트워크 경로의 왕복 시간을 측정한다.
  2. RTTmin(최소 RTT)

    • 혼잡하지 않은 경로에서 관찰된 최소 RTT이다. 이를 기준으로 혼잡하지 않은 상태를 판단한다.
  3. measured throughtput(측정된 처리량)

    • 최근 RTT 간격 동안 전송된 바이트 수를 측정된 RTT로 나눈 값이다.
  4. cwnd(혼잡 창)

    • 송신자가 네트워크 경로에 한 번에 보낼 수 있는 데이터 양을 제어하는 윈도우 크기이다. 혼잡 제어의 주요 변수이다.




지연 기반 접근 방식(Delay-based Approach)

  • 네트워크 혼잡을 유도하거나 강제적으로 패킷 손실을 일으키지 않고도 혼잡을 제어하는 방법이다.
  • RTTmin: 혼잡하지 않은 경로에서의 최소 RTT이다. 이는 네트워크의 최소 지연을 나타내며, 혼잡하지 않은 상태를 기준으로 삼는다.
  • 혼잡하지 않은 처리랑(uncongested throughtput):
    • 혼잡 창을 기준으로 한 혼잡하지 않은 상태의 처리량은 'cwnd / RTTmin' 으로 계산된다.




알고리즘

  • 측정된 처리량이 혼잡하지 않은 처리량에 "매우 가까운" 경우
    • 경로가 혼잡하지 않다고 판단하고 cwnd를 선형적으로 증가 시킨다.
  • 측정된 처리량이 혼잡하지 않은 처리량에 "훨씬 미치지 못하는" 경우
    • 경로가 혼잡하다고 판단하고 cwnd를 선형적으로 감소시킨다.








주요 포인트

  1. 혼잡 제어 without inducing/forcing loss
    • 패킷 손실을 유도하거나 강제하지 않고도 혼잡을 제어할 수 있다.
  2. Maximizing throughtput while keeping delay low
    • 네트워크 경로의 파이프를 충분히 채우지만 더 많이 채우지 않기 위해 최대 처리량을 유지한다.
    • 이는 지연을 낮게 유지하는 동시에 처리량을 최대로 유지하려는 것이다.
  3. 다수의 지연 기반 접근 방식을 사용하는 TCP
    • 여러 배포된 TCP가 지연 기반 접근 방식을 채택하고 있다.
    • 예를 들어, Google's 내부 백본 네트워크에서 배포된 BBR(Bottleneck Bandwidth and RTT) 혼잡 제어 알고리즘이 있다.








Explicit congeston notification(ECN)

Explicit Congestion Notification(ECN)은 TCP 네트워크에서 혼잡을 통지하는 네트워크 보조 혼잡 제어 메커니즘이다. 이를 통해 네트워크는 혼잡을 감지하고 이를 발신자에게 알릴 수 있다.

주요 포인트

  1. 네트워크-보조 혼잡 제어
    • 네트워크 라우터는 IP 헤더의 두 비트(ToS 필드)를 사용하여 혼잡을 표시한다.
    • 혼잡 표시를 위해 네트워크 운영자가 선택한 정책을 사용한다.

  1. 혼잡 지시
    • 혼잡 지시는 목적지로 전달된다.
    • 목적지는 ACK 세그먼트에서 ECE 비트를 설정하여 송신자에게 혼잡을 알린다.

  1. IP 및 TCP에서의 ECN 사용
    • IP 헤더의 ECN 비트 마킹과 TCP 헤더의 C, E 비트 마킹을 사용한다.

'학교수업 > 컴퓨터망' 카테고리의 다른 글

Chapter5 Network Layer: Control Plane  (0) 2024.07.09
Chapter4: Network Layer-Data Plane  (0) 2024.07.04
Chapter3: Transport Layer  (0) 2024.07.03
Chapter2: Application Layer-2  (0) 2024.07.03
Chapter2: Application Layer  (0) 2024.07.01

Transport Layer: overview

our goal

  • transport layer의 service들의 principle을 이해하는 것
    1. multiplexing, demultiplexing
    2. reliable data transfer
    3. flow control
    4. congesion control
  • internet transport layer protocol를 배우기
    1. UDP: 비연결 전송
    2. TCP: 연결지향, 신뢰성있는 전송
    3. TCP congestion control






Transport Layer: roadmap

  1. Transport-layer service
  2. multiplexing and demultiplexing
  3. connectionless trasnport : UDP
  4. principles of reliable data transfer
  5. connection-oriented trasport : TCP
  6. Principle of congestion control
  7. TCP congestion control
  8. Evolution of Transport-layer functionality





Transport services and protocols


  1. Logical Communication
    • 전송 계층은 서로 다른 호스트에서 실행되는 어플리케이션 프로세스 간의 논리적 통신(logical communication)을 제공한다.
    • e.g. 모바일 네트워크, 홈 네트워크, 기업 네트워크, 지역 ISP, 국가 또는 글로벌 ISP, 데이터 센터 네트워크, 컨텐츠 제공자 네트워크 등을 포함한다.



  1. Transport Protocol Actions in End Systems
    • 송신 측(sender)
      • 어플리케이션 메시지를 새그먼트(segment) 로 분할하고 이를 네트워크 계층으로 전달한다.
    • 수신 측(receiver)
      • segment를 재조립하여 메시지를 만들고 이를 어플리케이션 계층으로 전달한다.



  1. Available Trasnport Protocols
    • 인터넷 어플리케이션에 사용 가능한 두 가지 전송 프로토콜은 TCP와 UDP이다.
    • TCP(Trasnport Control Protocol)
      • 연결 지향적이고 신뢰성 있는 전송을 제공
    • UDP(Transport Datagram Protocol)
      • 비연결형 전송을 제공, 신뢰성은 낮음








Trasnport vs Network Layer Services and Protocols

  • household 비유
    • Ann의 house의 12명의 애들이 Bill의 house의 12명의 애들에게 편지를 쓰려고 한다.
      • hosts = houses
      • process = kids
      • app message = letters in envelopes



  • Network Layer: host 간의 데이터 전송을 책임진다.



  • Transport Layer: process 사이의 데이터 전송을 관리하고 제어한다.






Transport Layer Actions





송신자(Sender)

  1. application layer의 message를 전달받음
    • 송신자는 응용 계층에서 메시지를 전달 받는다.



  1. segment header의 field 값을 결정
    • 메시지를 세그먼트로 분할할 때 세그먼트 헤더에 들어갈 값을 결정한다. 이는 각 세그먼트를 올바르게 전달하고 재조립하기 위해 필요하다.



  1. segment를 생성
    • application meesage를 segment로 만든다. segment는 데이터와 segment 헤더로 구성된다.



  1. segment를 IP 계층으로 전달
    • 생성된 segment를 네트워크 계층(IP)으로 전달하여 실제 네트워크를 통해 전송된다.






Transport Layer Actions





수신자(Receiver)

  1. segment를 IP로 부터 받음
    • 수신자는 network layer(IP)으로부터 segment를 전달받는다.



  1. 헤더 값을 확인(checks header value)
    • 세그먼트의 헤더 값을 확인하여 데이터의 무결성을 검증하고, 세그먼트가 올바르게 도착했는지 확인



  1. 어플리케이션 계층 메시지를 추출(extract application-layer message)
    • 세그먼트에서 application-layer message를 추출한다. 즉, 데이터 부분을 꺼낸다.



  1. socket을 통해 application으로 메시지를 전달(demultiplexes message up to application via socket)
    • 소켓을 통해 추출된 메시지를 어플리케이션 계층으로 전달. 이 과정은 여러 어플리케이션 프로세스가 하나의 네트워크 연결을 공유할 때, 각 메시지를 올바른 프로세스에 전달하기 위해 수행






Two Principle Internet Transport Protocols

  1. TCP(Transmission Control Protocol)
    • Reliable, in-order delivery(신뢰할 수 있는 순서대로의 전달)
      • 데이터를 신뢰성 있게, 순서대로 전달한다.
    • Congestion control(혼잡 제어)
      • 네트워크 혼잡을 방지하기 위해 데이터 전송 속도를 조절한다
    • Flow Control(흐름 제어)
      • 송신자와 수신자 간의 데이터 전송 속도를 조절하여 수신자가 과부하되지 않도록 한다.
    • Connection Setup(연결 설정)
      • 데이터를 전송하기 전에 송신자와 수신자 간에 연결을 설정한다.



  1. UDP(User Datagram Protocol)
    • Unreliable, unordered delivery(신뢰할 수 없는, 순서가 없는 전달)
      • 데이터를 신뢰성 없이, 순서에 상관없이 전달
    • No-frills extension of "best-effort" IP("최선 노력" IP의 단순한 확장)
      • IP 프로토콜의 "최선 노력" 서비스를 그대로 사용하며 추가적인 기능이 없다.



  1. Services not available(제공되지 않는 서비스)
    • Delay guarantees(지연 보상)
      • 전송 지연을 보장하지 않는다.
    • Bandwidth guarantees(대역폭 보장)
      • 대역폭을 보장하지 않는다.






Multiplexing and demultiplexing

  • 클라이언트
    • 여러 어플리케이션(e.g. Skype, Netflix, Firefox)이 실행되고 있다.
    • 전송 계층에서 응용 계층으로 HTTP 메시지가 전달된다.



  • HTTP 서버
    • Apache HTTP 서버가 실행 중이다.
    • 서버는 HTTP 메시지를 송신하고 있다.



  • 네트워크
    • 클라이언트와 서버 간의 네트워크 연결을 통해 데이터가 전달된다.

  • HTTP 서버
    • 서버는 네트워크 계층을 통해 전달된 HTTP 메시지를 송선힌다.
    • 메시지는 전송 계층으로 전달되어 header를 포함한 HTTP 메시지가 된다.



  • HTTP 서버
    • 전송 계층에서 네트워크 계층으로 전달될 때 Hn가 추가된다.



  • 네트워크: 클라이언트와 서버 간의 네트워크 연결을 통해 데이터가 전달된다.



  • 다수의 클라이언트
    • 두 개의 클라이언트(client1, client2)가 서버에 연결되어 있다.
    • 각 클라이언트는 어플리케이션 계층을 통해 HTTP 메시지를 서버로 전송한다.






Multiplexing/demultiplexing



  1. Multiplexing at Sender(송신 측 다중화)

    1. 여러 소켓에서 데이터 처리(handle data from multiple sockets)

      • 송신 측에서는 여러 어플리케이션 프로세스에서 전송되는 데이터를 처리한다.
      • 각 프로세스는 독립적인 소켓을 통해 데이터를 전송한다.



    2. transport 헤더 추가(add trasnport header)

      • 각 소켓에서 온 데이터에 전송 헤더를 추가한다.
      • 이 헤더 정보는 나중에 demultiplexing 과정에서 사용된다.



    3. 과정 요약

      • 송신 측 다중화는 여러 소켓으로부터 데이터를 수집하고, 각 데이터에 전송 헤더를 추가하여 하나의 네트워크 스트림을 결합한다.






  1. Demultiplexing at Receiver(수신 측 역다중화)

    1. 헤더 정보 사용(use header info)

      • 수신 측에서는 각 세그먼트의 헤더 정보를 사용하여 데이터의 출처를 식별한다.



    2. 올바른 소켓으로 세그먼트 전달(deliver received segments to correct socket)

      • 헤더 정보를 기반으로 각 세그먼트를 올바른 소켓으로 전달한다.
      • 각 소켓은 해당 소켓에 연결된 어플리케이션 프로세스로 데이터를 전달한다.



    3. 과정 요약:

      • 수신 측 역다중화는 수신된 데이터 세그먼트의 헤더 정보를 분석하여 이를 올바른 소켓으로 전달한다. 이를 통해 데이터를 원래의 어플리케이션 프로세스로 정확하게 전달할 수 있다.






  • 네트워크 계층 모델
    • 클라이언트
      • 여러 어플리케이션 프로세스(P1, P3)에서 데이터를 전송한다.
      • 전송 계층에서 각 데이터에 헤더를 추가하고 네트워크 계층으로 보낸다.
    • 서버
      • 네트워크 계층을 통해 수신된 데이터를 전송 계층에서 처리한다.
      • 전송 계층 헤더를 분석하여 각 데이터 세그먼트를 올바른 어플리케이션 프로세스(P2, P4)로 전달한다.






How demultiplexing works

  • 네트워크 계층의 패킷을 "데이터그램"
  • 전송 계층의 패킷을 "세그먼트"

  1. 호스트가 IP 데이터그램을 수신(host receives IP datagram)
    • 호스트는 네트워크를 통해 IP 데이터그램을 수신한다.
    • 각 데이터그램(네트워크)에는 출발지 IP 주소목적지 IP 주소가 포함되어 있다.
    • 각 데이터그램은 하나의 전송 계층 세그먼트를 포함한다.
    • 각 세그먼트(전송)에는 출발지 포트 번호목적지 포트 번호가 포함되어 있다.



  1. IP 주소 및 포트 번호 사용(uses IP address & port numbers)
    • 호스트는 수신한 세그먼트(전송 계층)를 적절한 소켓으로 전달하기 위해 IP주소와 포트 번호를 사용한다.
    • 이 정보를 바탕으로 세그먼트를 올바른 어플리케이션 프로세스로 전달한다.



TCP/UDP 세그먼트 포맷

  • Source port # (출발지 포트 번호)
    • 세그먼트가 발송된 출발지 포트를 나타냄
    • 32비트 크기
  • Destination port # (목적지 포트 번호)
    • 세그먼트가 도착해야 할 목적지 포트를 나타냄
    • 32비트 크기
  • Other header fields(기타 헤더 필드)
    • 세그먼트의 다른 헤더 정보를 포함
  • Application data(어플리케이션 데이터, payload)
    • 실제로 전달되는 데이터
    • 어플리케이션 계층에서 보내는 payload이다.







Connectionless demultiplexing

Connectionless Demultiplexing(비연결형 역다중화)

  • 소켓 생성 시(When creating socket)
    • 호스트 로컬 포트 번호 지정(specify host-local port #)
      • 소켓을 생성할 때 호스트 로컬 포트 번호를 지정해야 한다.
      • 예제 코드: 'DatagramSocket mySocket1 = new DatagramSocket(12534);'



  • UDP 소켓에 데이터그램 전송 시(When Creating Datagram to send into UDP socket)
    • 목적지 IP 주소 지정(specify destination IP address)
      • 데이터를 전송할 목적지 IP 주소를 지정해야 한다.
    • 목적지 포트 번호 지정(specify destination port #)
      • 데이터를 전송할 목적지 포트 번호를 지정해야 한다.



  • 수신 측에서의 처리(When receiving host receives UDP segment)
    • 세그먼트의 목적지 포트 번호 확인(checks destination port # in segment)
      • 수신 측에서는 세그먼트의 목적지 포트 번호를 확인한다.
    • 해당 포트 번호의 소켓으로 UDP 세그먼트 전달(directs UDP segment to socket with that port #)
      • 확인된 포트 번호를 기반으로 해당 소켓으로 UDP 세그먼트를 전달



  • 추가 설명
    • 같은 목적지 포트 번호, 다른 출발지 IP 주소/포트 번호(IP/UDP datagrams with same dest, port #, but different source IP address and/or source port numbers)
      • 동일한 목적지 포트 번호를 가진 IP/UDP 데이터그램은 출발지 IP 주소나 출발지 포트번호가 다르더라도 수신 측에서는 동일한 소켓으로 전달된다.








Connectionless demultiplexing: an example








Connection-oriented demultiplexing

TCP 소켓 식별(TCP socket identified by 4-tuple)

  1. 출발지 IP 주소(source IP address)
  2. 출발지 포트 번호(source port number)
  3. 목적지 IP 주소(destination IP address)
  4. 목적지 포트 번호(destination port number)



역다중화 과정(demux: receiver uses all four values(4-tuple) to direct segment to appropriate socket)

  • 수신자는 이 네 가지 값(4-tuple)을 사용하여 수신된 세그먼트를 적절한 소켓으로 전달한다.



서버에서의 다중 TCP 소켓 지원(server may support many simultaneous TCP sockets)

  • 서버는 동시에 여러 TCP 소켓을 지원할 수 있다.
  • 각 소켓은 고유한 4-tuple로 식별된다.
  • 각 소켓은 서로 다른 클라이언트와의 연결에 대응한다.






Connection-oriented demultiplexing: example

서로 다른 소켓으로 전달: 동일 서버의 동일한 포트(80) 로 데이터가 전달되지만, 출발지 IP주소와 포트 번호가 다르기 때문에 각 세그먼트는 서로 다른 소켓으로 전달된다.



port number는 기본적으로 네트워크 통신에서 데이터가 어떤 어플리케이션으로 전달되어야 하는지를 식별하는 데 사용된다



그러나 실제로는 출발지 IP 주소와 출발지 포트 번호도 함께 고려하여 데이터를 적절한 소켓으로 라우팅한다. 이를 TCP/IP 프로토콜에서는 4-tuple이라고 부른다.






Summary

  • Multiplexng, demultiplexing: datagram의 header field value와 segment 기반
  • UDP: 오직 destination port number만을 사용해 demultiplexing
  • TCP: 4-tuple을 사용해 demultiplexing한다.(source and destination IP address와 port number)
  • Multiplexing, demultiplexing은 all layer에서 일어난다.






Connectionless transport: UDP

UDP: User Datagram Protocol

특성(Characteristics)

  • "no frills", "bare bones" internet transport protocol
    • 추가 기능 없이 기본적인 인터넷 전송 프로토콜이다.
  • 'best effort' server, UDP segments may be:
    • lost:
      • UDP 세그먼트는 손실될 수 있다.
    • delivered out-of-order to app
      • 세그먼트가 어플리케이션에 순서가 바뀌어 도착할 수 있다.
  • connectionless
    • no handshaking between UDP sender, receiver
      • 송신자와 수신자 간의 핸드셰이킹(handshaking)이 없다.
    • each UDP segment handled independently of others
      • 각 UDP 세그먼트는 다른 세그먼트와 독립적으로 처리된다.

왜 UDP를 사용하는가?

  • 장점(Advantages)
    • no connection establishment(which can add RTT delay)
      • 연걸 설정이 없으므로 RTT(Round-Trip Time) 지연이 추가되지 않는다.
    • simple: no connection state at sender, receiver
      • 송신자와 수신자에서 연결 상태를 유지하지 않기에 간단하다.
    • small header size:
      • 헤더 크기가 작다.
    • no congetion control
      • UDP는 원하는 만큼 빠르게 데이터를 전송할 수 있다.
      • 혼잡 상황에서도 동작할 수 있다.





UDP: User Datagram Protocol

UDP 사용 사례(UDP uses)

  • Streaming multimedia apps(loss tolerant, rate sensitvie)
  • DNS(Domain Name System)
  • SNMP(Simple Network Management Protocol)
  • HTTP/3


UDP 위에서 신뢰할 수 있는 전송이 필요한 경우(if reliable transfer needed over UDP, e.g. HTTP/3)

  • add needed reliability at application layer
    • 신뢰성이 필요한 경우 어플리케이션 계층에서 필요한 신뢰성을 추가한다.
    • e.g. 패킷 손실 복구, 패킷 재전송 등의 메커니즘을 어플리케이션 계층에서 구현한다.
  • add congestion control at application layer
    • congestion control이 필요한 경우 어플리케이션 계층에서 혼잡 제어 메커니즘을 추가한다.
    • e.g. 전송 속도 조절, 패킷 손실에 따른 대처 등을 어플리케이션 계층에서 관리한다.





UDP: User Datagram Protocol

  • User Datagram Protocol(UDP)

    • 패킷 교환 방식의 컴퓨터 통신을 위해 설계된 데이터그램 모드를 제공한다.
    • 인터넷 프로토콜(IP)을 기반 프로토콜을 사용한다고 가정하자.

  • 목적

    • UDP는 최소한의 프로토콜 메커니즘으로 어플리케이션 프로그램이 다른 프로그램으로 메시지를 보내기 위한 절차를 제공한다.
    • 이 프로토콜은 트랜잭션 지향(각 데이터그램이 독립적으로 처리된다는 것을 의미)이며, 데이터의 전달 및 중복 보호가 보장되지 않는다.
    • 순차적이고 신뢰할 수 있는 데이터 전송이 필요한 어플리케이션은 TCP(Transmission Control Protocol)을 사용해야 한다.


  • Format

    1. Source Port(출발지 포트)

      • 데이터그램을 보낸 출발지 포트 번호를 나타낸다.
      • 16bit
    2. Destination Port(목적지 포트)

      • 데이터그램을 받을 목적지 포트 번호를 나타낸다.
      • 16bit
    3. Length(길이)

      • UDP 헤더와 데이터의 총 길이를 나타낸다.
      • 16bit
    4. Checksum(체크섬)

      • 데이터그램의 무결성을 확인하기 위한 체크섬 값
      • 16bit
    5. Data

      • 전송할 실제 데이터
      • 길이는 UDP 헤더의 길이 필드에 의해 결정된다.





UDP: Transport Layer Actions



UDP sender actions

  1. 응용 계층의 메시지 전달
    • UDP 송신자는 응용 계층에서 전달된 SNMP 메시지를 받는다.
  2. UDP segment header field 값 결정
    • UDP 송신자는 UDP 세그먼트의 헤더 필드 값을 결정한다. 이는 출발지 포트 번호, 목적지 포트 번호, 길이, 체크섬 등을 포함한다.
  3. UDP 세그먼트 생성
    • UDP 송신자는 SNMP 메시지를 포함하여 UDP 세그먼트를 생성한다. 이 세그먼트는 헤더와 데이터로 구성된다.
  4. 세그먼트를 IP 계층으로 전달
    • 생성된 UDP 세그먼트는 네트워크 계층(IP)으로 전달되어 전송된다.


UDP receiver actions

  1. IP 계층에서 세그먼트를 수신
    • UDP 수신자는 네트워크 계층(IP)으로부터 UDP segment를 수신한다.
  2. UDP 체크섬 헤더 값을 확인
    • UDP 수신자는 세그먼트의 체크섬 헤더 값을 확인하여 데이터의 무결성을 검증
  3. 응용 계층 메시지를 추출
    • UDP 수신자는 세그먼트의 응용 계층 메시지(SNMP 메시지)를 추출한다.
  4. 메시지를 소켓을 통해 어플리케이션으로 전달(demultiplexes message up to application via socket)
    • 추출된 메시지를 소켓을 통해 어플리케이션 계층으로 전달


UDP segment header

  1. 출발지 포트 번호(Source Port Number)
    • 위치: UDP segment의 첫 번째 16비트
    • 역할: 송신자의 포트 번호를 나타낸다. 수신자가 응답을 보낼 때 사용된다.
  2. 목적지 포트 번호(Destination Port Number)
    • 위치: UDP segment의 두 번째 16비트
    • 역할: 수신자의 포트 번호를 나타낸다. 이 포트 번호를 사용하여 데이터가 올바른 어플리케이션으로 전달된다.
  3. 길이(Length)
    • 위치: UDP segment의 세 번째 !6비트
    • 역할: UDP segment의 전체 길이를 나타낸다. 여기에는 헤더와 데이터(payload)가 모두 포함된다. 길이는 바이트 단위로 표시된다.
  4. 체크섬(Checksum)
    • 위치: UDP segment의 네 번째 16비트
    • 역할: 데이터의 무결성을 확인하기 위한 값이다. 송신자는 세그먼트를 생성할 때 체크섬을 계산하고, 수신자는 이름 검증하여 데이터가 손상되지 않았는지 확인한다.
  5. application data, payload
    • 위치: UDP 헤더 다음에 위치
    • 역할: application layer에서 전송된 실제 데이터이다. UDP는 데이터의 구조나 내용에 대해 신경 쓰지 않으며, 단순히 전송 역할을 수행한다.





UDP checksum

Goal: 전송된 segment의 error(i.e. flipped bits) 감지



Sender(송신자 측)

  1. UDP 세그먼트 내용 처리(treat contents of UDP segment)
    • UDP 세그먼트의 모든 내용을 16비트 정수의 연속으로 취급한다. 여기에는 UDP 헤더 필드와 IP 주소도 포함된다.

  1. 체크섬 계산(checksum)

    • 세그먼트 내용의 합계를 계산한다. 이 때 1의 보수 합(one's complement sum)을 사용한다.
  2. 체크섬 필드에 값 넣기(checksum value put into UDP checksum field)

    • 계산된 체크섬 값을 UDP 체크섬 필드에 넣는다.

Receiver(수신자 측)

  1. 수신된 세그먼트의 체크섬 계산(compute checksum of received segment)
    • 수신자는 수신된 세그먼트의 내용을 이용해 체크섬을 다시 계산한다.

  1. 계산된 체크섬과 필드 값 비교(check if computed checksum equals checksum field value)
    • 계산된 체크섬이 UDP 세그먼트의 체크섬 필드 값과 동일한지 확인한다.
      • 동일하지 않음(Not equal): 오류가 감지된다.
      • 동일함(Equal): 오류가 감지되지 않음. 그러나 오류가 없다는 보장은 아니다.





Internet Checksum: an example



wraparound: 최상위 비트(carryout)가 발생한 경우 이를 하위 비트에 더해준다.
checksum: 합계의 1의 보수를 계산한다.


Internet checksum: weak protecton

전달된 값이 에러로 인해 변경되었지만, 이는 checksum에서 감지하지 못한다.






Summary: UDP

  • "No frills" 프로토콜
    • 세그먼트가 손실되거나 순서가 바뀌어 전달될 수 있음
      • UDP는 신뢰성 있는 전송을 보장하지 않으므로, 데이터그램이 손실되거나 순서가 바뀌어 도착할 수 있다.
    • send and hope for the best
      • UDP는 데이터를 전송하기 위해 연결을 설정하지 않으며, 데이터를 최선의 노력으로 전송한다. 즉, 송신 후 수신 여부를 확인하지 않는다.


  • UDP의 장점
    • no setup/handshaking needed
      • 연결을 설정하는 과정이 없으므로, 추가적인 왕복 시간 지연(RTT)이 발생하지 않는다.
    • 네트워크 서비스가 손상되었을 때도 동작 가능
      • 네트워크 혼잡이나 손상이 발생해도 UDP는 계속해서 데이터를 전송할 수 있다.
    • 신뢰성 향상에 도움(helps with reliability)
      • UDP는 체크섬을 사용하여 데이터 무결성을 확인하고, 기본적인 오류 검출을 제공한다.


  • 어플리케이션 계층에서 UDP 위에 추가 기능 구축(build additional functionality on top of UDP in application layer)
    • e.g. HTTP/3와 같은 프로토콜은 UDP 위에 추가적인 기능을 구축하여, 신뢰성 있는 데이터 전송 및 혼잡 제어를 응용 계층에서 구현할 수 있다.





Principles of reliable data transfer






주요 구성 요소 1. 송신 프로세스(Sending Process) - 어플리케이션 데이터가 생성된다. - 데이터를 신뢰할 수 있는 데이터 전송 프로토콜의 송신 측에 전달한다.
2. 신뢰할 수 있는 데이터 전송 프로토콜의 송신 측(Sender-side of Reliable Data Transfer Protocol) - 데이터의 무결성과 전달을 보장하기 위한 메커니즘을 포함한다. - 데이터가 손실, 손상 또는 재정렬될 수 있는 신뢰할 수 없는 채널을 통해 전송된다.
3. 신뢰할 수 없는 채널(Unreliable Channel) - 데이터가 손실되거나, 손상되거나, 재정렬될 수 있는 전송 매체이다 - 신뢰할 수 있는 데이터 전송 프로토콜은 이러한 불확실성을 극복하기 위한 기능을 제공한다.
  1. 신뢰할 수 있는 데이터 전송 프로토콜의 수신 측(Receiver-side of Reliable Data Transfer Protocol)
    • 수신된 데이터의 무결성을 확인하고, 손상된 데이터를 감지하여 필요한 경우 재전송을 요청한다
    • 데이터를 수신 프로세스에 전달한다.

5. 수신 프로세스(Receiving Process) - 수신된 데이터를 어플리케이션 계층에서 처리한다.


요약

  • 신뢰할 수 있는 데이터 전송 프로토콜(Reliable data transfer protocol)은 데이터 전송 중 발생할 수 있는 다양한 문제를 해결하기 위한 메커니즘을 제공한다.
  • 송신 측은 데이터 검증 및 재전송 요청 처리 등의 기능을 통해 데이터의 무결성을 보장한다.
  • 수신 측은 수신된 데이터의 무결성을 확인하고, 필요한 경우 재전송을 요청한다
  • 신뢰할 수 없는 채널을 통해 데이터가 전송되더라도, 이러한 프로토콜을 통해 신뢰할 수 있는 데이터 전송을 구현할 수 있다.




송신자와 수신자는 서로의 상태를 알지 못함(Sender, receiver do not know the 'state' of each other)
- 송신자와 수신자는 메시지가 성공적으로 수신되었는지 여부를 알지 못한다.
- e.g. 송신자는 메시지가 수신자에게 도착했는지, 수신자는 메시지를 송신자가 보냈는지 모른다.



메시지를 통해 상태를 통신해야 함(unless communicated via a message)
- 송신자와 수신자는 메시지를 통해서만 서로의 상태를 알 수 있다.
- 즉, 수신자는 확인 응답(ACK) 메시지를 송신자에게 보내 메시지를 성공적으로 수신했음을 알릴 수 있다.





Reliable data transfer protocol(rdt) : interfaces

송신 측(Sender Side)

  1. rdt_send()
    • 역할: 응용 계층에서 데이터를 받아 수신자의 상위 계층으로 전달하기 위해 호출된다.
    • 설명: 송신 프로세스에서 데이터를 받아 rdt protocol의 송신측 구현으로 전달한다.


  1. udt_send()
    • 역할: 신뢰할 수 없는 채널을 통해 패킷을 전송하기 위해 rdt에 의해 호출된다.
    • 설명: 신뢰할 수 없는 채널을 통해 수신자에게 패킷을 전송한다.




수신 측(Receiver Side)

  1. rdt_rcv()
    • 역할: 신뢰할 수 없는 채널을 통해 패킷이 수신 측에 도착하면 호출된다.
    • 설명: 패킷이 수신자 측에 도착할 때마다 rdt protocol의 수신 측 구현으로 전달된다.


  1. deliver_data()
    • 역할: 데이터를 상위 계층으로 전달하기 위해 rdt에 의해 호출된다.
    • 설명: rdt protocol의 수신 측 구현에서 데이터를 수신 프로세스로 전달한다.






사진 설명

  1. Sending Process(송신 프로세스)
    • 응용 계층에서 data를 생성
    • rdt_send()를 호출하여 data를 신뢰할 수 있는 데이터 전송 프로토콜의 송신 측 구현으로 전달한다.


  1. Sender-side Implementation(송신 측 구현)
    • rdt_send()에서 받은 데이터를 udt_send()를 호출하여 신뢰할 수 없는 채널을 통해 packet으로 전송


  1. Unreliable Channel(신뢰할 수 없는 채널)
    • 데이터를 패킷으로 전송
    • 패킷은 수신 측으로 전달됨


  1. Receiver-side Implementation(수신 측 구현)
    • rdt_rcv()가 호출되어 신뢰할 수 없는 채널을 통해 도착한 패킷을 처리한다.
    • 패킷에서 데이터를 추출하여 deliver_data()를 호출하여 데이터를 수신 프로세스에 전달한다.


  1. Receiving Process(수신 프로세스)
    • deliver_data()를 통해 전달된 데이터를 상위 계층에서 처리





Reliable data transfer: getting started

  1. 점진적으로 송신자와 수신자 측 개발(incrementally develop sender, receiver sides of RDT)

    • 신뢰할 수 있는 데이터 전송 프로토콜(RDT)의 송신자와 수신자 측을 점진적으로 개발
    • 각 단계에서 프로토콜의 복잡성을 증가시켜 나간다.

  2. 단방향 데이터 전송만 고려(consider only unidirectional data transfer)

    • 여기서는 단방향 데이터 전송만을 고려
    • 하지만, 제어 정보는 양방향으로 흐른다. 즉, 데이터는 한 방향으로만 흐르지만, 확인 응답(ACK)이나 재전송 요청 등의 제어 정보는 반대 방향으로도 전송된다.


  1. 유한 상태 기계(FSM) 사용(use finite state machines to specify sender, receiver)
    • 송신자와 수신자를 정의하기 위해 유한 상태 기계를 사용한다.
    • 각 상태는 다음 상태로의 전이를 일으키는 이벤트와 상태 전이 시 수행되는 동작을 포함한다.






rdt1.0: reliable transfer over a reliable channel

  • 기본 가정(Underlying Assumptions
    • 완벽히 신뢰할 수 있는 채널(underlying channel perfectly reliable)
      • 비트 오류 없음(no bit errors): 데이터 전송 중에 비트 오류가 발생하지 않는다.
      • 패킷 손실 없음(no loss of packets): 데이터 전송 중에 패킷 손실이 발생하지 않는다.


  • 송신자와 수신자를 위한 별도의 FSM(Separate FSMs for sender and receiver)

    • 송신자(Sender)
      • 동작:
        1. 상위 계층에서 데이터 전송 요청이 있을 때까지 대기한다.('Wait for call from above')
        2. 'rdt_send(data)' 함수가 호출되면 데이터를 패킷으로 만든다('packet = make_pkt(data)')
        3. 패킷을 신뢰할 수 있는 채널을 통해 전송한다.('udt_send(packet)')
    • 수신자(Receiver)
      • 동작:
        1. 하위 계층에서 패킷이 도착할 때까지 대기한다.('Wait for call from below')
        2. 'rdt_rcv(packet)' 함수가 호출되면 패킷에서 데이터를 추출한다.('extract(packet, data)')
        3. 추출한 데이터를 상위 계층으로 전달한다. ('deliver_data(data)')




    rdt 2.0 : channel with bit errors

    채널에서 패킷 내의 비트가 변경될 수 있다. 즉, 데이터 전송 중에 비트 오류가 발생할 수 있다.

    • checksum(e.g. Internet checksum)이 bit error를 detect할 수 있다.


Q. error를 어떻게 복구할 것인가?

  • ACKs(Acknowledgements): 수신자는 송신자에게 패킷이 정상적으로 수신되었음을 명시적으로 알린다.
  • NAKs(Negative Acknowledgements): 수신자는 송신자에게 패킷에 오류가 있음을 명시적으로 알린다.
  • Retransmission: 송신자는 NACK를 수신하면 패킷을 재전송한다.

Stop-and-Wait 프로토콜

  • 송신자는 한 번에 하나의 패킷을 전송하고, 수신자로부터 응답을 기다린다
  • 수신자가 ACK를 보내면 다음 패킷을 전송한다.
  • 수신자가 NAK를 보내면 송신자는 동일한 패킷을 재전송한다.




rdt2.0: FSM specifications

상태(State)

  1. Wait for call from above(상위 계층으로부터 호출 대기)
    • 송신자는 상위 계층(응용 계층)에서 데이터 전송 요청이 있을 때까지 대기한다.
  2. Wait for ACK or NAK
    • 송신자는 데이터를 전송한 후, 수신자로부터 ACK(확인 응답) 또는 NAK(부정 응답)를 기다린다.


상태 전이(State Transition)

  1. Wait for call from above -> Wait for ACK or NAK
    • 조건: 상위 계층에서 데이터 전송 요청이 있을 때('rdt_send(data)')
    • 동작:
      • 데이터와 체크섬을 포함하는 패킷을 생성('snkpkt = make_pkt(data, checksum)')
      • 생성된 패킷을 신뢰할 수 없는 채널을 통해 전송('udt_send(snkpkt)')
  2. Wait for ACK or NAK -> Wait for call from above
    • 조건: 수신된 패킷이 ACK인 경우('rdt_rcv(rcvpkt) && isACK(rcvpkt)')
    • 동작:
      • ACK를 받으면 송신자는 상위 계층에서 다음 데이터 전송 요청을 기다린다.
  3. Wait for ACK or NAK -> Wait for ACK or NAK
    • 조건: 수신된 패킷이 NAK인 경우('rdt_rcv(rcvpkt) && isNAK(rcvpkt)')
    • 동작:
      • NAK를 받으면 송신자는 이전에 전송한 패킷을 다시 전송한다. ('udt_send(snkpkt)')


Note

  • "state"의 수신자는 송신자가 알 수 없다. 즉, 수신자가 메시지를 제대로 받았는지 여부를 송신자가 알 수 없다.
  • 이는 수신자가 송신자에게 ACK 또는 NAK를 통해 명시적으로 알려주지 않으면 송신자가 알 수 없음을 의미한다.
  • 이러한 이유로, 송신자가 수신자 간의 통신을 관리하는 프로토콜이 필요하다.




rdt2.0: operation with no erros



수신자(Receiver) FSM가 추가됬다.

  1. 상태: Wait for call from below(하위 계층으로부터 호출 대기)
    • 동작: 하위 계층에서 패킷이 도착할 때까지 대기한다.
    • 이벤트: 'rdt_rcv(rcvpkt) && corrupt(rcvpkt)
      • 작업: 수신된 패킷에 오류가 있는 경우, NAK를 전송한다.('udt_send(NAK)')
      • 전이: 상태는 "Wait for call from below"로 유지
    • 이벤트: rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)
      • 작업: 수신된 패킷에 오류가 없는 경우, 데이터를 추출하고('extrack(rcvpkt, data)'), 상위 계층으로 전달한다.('deliver_data(data)'). 그리고 ACK를 전송한다.('udt_send(ACK)')
      • 전이: 상태를 'Wait for call from below'






rdt2.0 has a fatal flaw



What happens if ACK/NAK corrupted?

  • 송신자가 수신자의 상태를 알 수 없음
    • ACK 또는 NAK가 손상된 경우, 송신자는 수신자가 패킷을 올바르게 수신했는지 여부를 알 수 없다.
  • 단순 재전송 불가능
    • 송신자가 패킷을 단순히 재전송할 수 없다. 이는 중복 패킷이 발생할 수 있기 때문이다.
    • 중복 패킷은 수신자가 동일한 데이터를 여러 번 수신하게 할 수 있다.


Handling Duplicates

  • 손상된 ACK/NAK에 대한 재전송(sender retransmits current pkt if ACK/NAK corrupted)
    • 송신자가 ACK 또는 NAK가 손상된 경우, 현재 패킷을 재전송한다.
  • 순서 번호 추가(sender adds sequence number to each pkt)
    • 송신자는 각 패킷에 순서 번호를 추가하여 중복을 식별할 수 있게 한다.
    • 순서 번호를 통해 수신자는 중복 패킷을 감지하고 무시할 수 있다.
  • 수신자가 중복 패킷을 버림(receiver discards (doesn't deliver up) duplicate pkt)
    • 수신자는 중복 패킷을 식별하여 이를 상위 계층으로 전달하지 않고 버린다.


Stop-and-Wait 프로토콜

  • 송신자는 한 번에 하나의 패킷을 전송하고, 수신자의 응답(ACK, NAK)을 기다린다
    • 이는 데이터 전송의 신뢰성을 보장하기 위한 기본적인 흐름 제어 방식이다..





rdt2.1: Sender, Handling garbled ACK/NAKs



순서 번호 0,1을 통해 중복 패킷을 식별하고 처리

상태(state)

  1. Wait for call 0 from above
    • 동작: 상위 계층에서 데이터 전송 요청이 있을 때까지 대기한다.
    • 이벤트: 'rdt_send(data)'
      • 작업: 순서 번호 0과 데이터를 포함하는 패킷을 생성('sndpkt = make_pkt(0, data, checksum)')하고 전송('udt_send(sndpkt)')
      • 전이: 상태가 'Wait for ACK or NAK 0'로 전이된다


  1. Wait for ACK or NAK 0
    • 동작: 패킷 전송 후, 수신자로부터 ACK 또는 NAK를 기다린다.
    • 이벤트: 'rdt_rcv(rcvpkt) && (corrupt(rcvpkt) || isNAK(rcvpkt))'
      • 작업: 수신된 패킷이 손상되었거나 NAK인 경우, 현재 패킷을 다시 전송('udt_send(sndpkt)')
      • 전이: 상태는 'Wait for ACK or NAK 0'로 유지된다.
    • 이벤트 'rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt)
      • 작업: 수신된 패킷이 손상되지 않았고 ACK인 경우, 다음 데이터 전송 요청을 기다린다.
      • 전이: 상태는 'Wait for call 1 from above'로 전이된다.


  1. Wait for call 1 from above
    • 동작: 상위 계층에서 데이터 전송 요청이 있을 때까지 대기한다.
    • 이벤트: 'rdt_send(data)'
      • 작업: 순서 번호 1과 데이터를 포함하는 패킷을 생성('sndpkt = make_pkt(1, data, checksum)')하고 전송('udt_send(sndpkt)')
      • 전이: 상태가 'Wait for ACK or NAK 1'로 전이된다.


  1. Wait for ACK or NAK 1
    • 동작: 패킷 전송 후, 수신자로부터 ACK 또는 NAK를 기다린다.
    • 이벤트: 'rdt_rcv(rcvpkt) && (corrupt(rcvpkt) || isNAK(rcvpkt))
      • 작업: 수신된 패킷이 손상되었거나 NAK인 경우, 현재 패킷을 다시 전송('udt_send(sndpkt)')
      • 전이: 상태는 "Wait for ACK or NAK 1"로 유지
    • 이벤트: 'rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt)
      • 작업: 수신된 패킷이 손상되지 않았고 ACK인 경우, 다음 데이터 전송 요청을 기다림
      • 전이: 상태가 "Wait for call 0 from above"로 전이된다.






rdt2.1 : receiver, handling garbled ACK/NAKs



상태(state)

  1. Wait for 0 from below
    • 동작: 하위 계층에서 순서 번호 0의 패킷이 도착할 때까지 대기
    • 이벤트: 'rdt_rcv(rcvpkt) && corrupt(rcvpkt)
      • 작업: 수신된 패킷이 손상된 경우, NAK 패킷을 생성('sndpkt = make_pkt(NAK, chksum)')하고 전송('udt_send(sndpkt)')
      • 전이: 상태는 "Wait for 0 from below"로 유지된다.
    • 이벤트: 'rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq0(rcvpkt)'
      • 작업: 수신된 패킷이 손상되지 않았고 순서 번호 0인 경우, 데이터를 추출('extrack(rcvpkt, data)')하여 상위 계층으로 전달('deliver_data(data)')한다. ACK 패킷을 생성('snkpkt = make_pkt(ACK, chksum)')하고 전송('udt_send(sndpkt)')
      • 전이: 상태가 'Wait for 1 from below'로 전이된다.



  1. Wait for 1 from below
    • 동작: 하위 계층에서 순서 번호 1의 패킷이 도착할 때까지 대기한다.
    • 이벤트: 'rdt_rcv(rcvpkt) && corrupt(rcvpkt)'
      • 작업: 수신된 패킷이 손상된 경우, NAK 패킷을 생성('sndpkt = make_pkt(NAK, chksum)')하고 전송('udt_send(sndpkt)')
      • 전이: 상태는 "Wait for 1 from below"로 유지된다.
    • 이벤트: 'rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq1(rcvpkt)'
      • 작업: 수신된 패킷이 손상되지 않았고 순서 번호 1인 경우, 데이터를 추출('extrack(rcvpkt, data)')하여 상위 계층으로 전달('deliver_data(data)')한다.
      • 작업: ACK 패킷을 생성('sndpkt = make_pkt(ACK, chksum)')하고 전송('udt_send(sndpkt)').
      • 전이: 상태가 "Wait for 0 from below"로 전이된다.






rdt2.1: discussion

송신자(Sender)

  1. 순서 번호 추가(seq # added to pkt)
    • 각 패킷에 순서 번호가 추가된다. 이 번호는 송신자가 보낸 패킷이 중복되었는지 여부를 확인하는 데 사용된다.

  1. 두 개의 순서 번호(0,1)로 충분(two seq. #s (0,1) will suffice, why?
    • 송신자는 두 개의 순서 번호(0과 1)만 사용해도 된다. 이는 송신자가 한 번에 하나의 패킷만 전송하고, 다음 패킷을 전송하기 전에 이전 패킷에 대한 확인 응답을 기다리기 때문이다.
    • 각 패킷은 번갈아 가며 0 또는 1의 순서 번호를 가지므로 중복을 쉽게 식별할 수 있다.

  1. 수신된 ACK/NAK의 손상 여부 확인(must check if received ACK/NAK corrupted)
    • 송신자는 수신된 ACK 또는 NAK가 손상되었는지 확인해야 한다. 손상된 경우에는 패킷을 재전송 해야한다.

  1. 두 배 많은 상태(twice as many states)
    • 프로토콜은 두 배 많은 상태를 필요로 한다. 이는 송신자가 "기대하는" 패킷이 순서 번호 0인지 1인지 기억해야 하기 때문이다.




수신자(Receiver)

  1. 중복 패킷 여부 확인(must check if received packet is duplicate)
    • 수신자는 수신된 패킷이 중복된 패킷인지 확인해야 한다.
    • 상태는 기대하는 패킷의 순서 번호가 0인지 1인지 나타낸다.

  1. 수신자는 마지막 ACK/NAK가 송신자에게 올바르게 수신되었는지 알 수 없음(note : receiver can not know if its last ACK/NAK received OK at sender)
    • 수신자는 마지막으로 보낸 ACK 또는 NAK가 송신자에게 올바르게 도착했는지 알 수 없다.
    • 이는 수신자가 항상 ACK 또는 NAK를 송신자에게 보내는 이유 중 하나이다.






rdt2.2: a NAK-free protocol



  1. rdt2.1과 동일한 기능(same functionality as rdt2.1, using ACKs only)
    • rdt2.2는 rdt2.1과 동일한 기능을 수행하지만, NAK를 사용하지 않고 ACK만을 사용한다.

  1. NAK 대신 ACK 사용(instead of NAK, receiver sends ACK for last pkt received OK)
    • 수신자는 NAK 대신, 마지막으로 올바르게 수신된 패킷에 대한 ACK를 보낸다.
    • 수신자는 ACK에 확인하는 패킷의 순서 번호를 명시적으로 포함시켜야 한다.

  1. 중복된 ACK에 대한 처리(duplicate ACK at sender results in same action as NAK)
    • 송신자는 중복된 ACK를 수신하면, NAK를 수신한 것과 동일하게 현재 패킷을 재전송한다.
    • 이는 중복된 ACK가 수신자가 이전에 수신한 패킷이 손상되었음을 나타낼 수 있기 때문이다.

  1. TCP의 NAK-free 접근 방식
    • TCP는 이러한 접근 방식을 사용하여 NAK를 사용하지 않는다.
    • TCP는 ACK만을 사용하여 신뢰할 수 있는 데이터 전송을 보장한다.





rdt3.0 : channels with errors and loss

새로운 채널 가정(New Channel Assumption)

  • 기본 가정: 채널에서 데이터 패킷과 ACK(확인 응답) 패킷이 손실될 수 있다.
    • 오류 및 손실 가능: 기존의 비트 오류뿐만 아니라 패킷 자체가 손실될 수 있다.
    • 체크섬, 순서 번호, ACK, 재전송: 이러한 메커니즘은 도움을 줄 수 있지만, 충분하지 않다.
      • 체크섬: 비트 오류를 감지
      • 순서 번호: 패킷의 순서를 관리하여 중복을 방지
      • ACK: 수신자가 패킷을 정상적으로 수신했음을 송신자에게 알린다.
      • 재전송: 손실된 패킷을 다시 전송한다.

질문

  • Q. 사람들은 대화 중에 송신자와 수신자 간의 단어가 손실되는 경우를 어떻게 처리합니까?



접근 방식:

  • 송신자가 합리적인 시간 동안 ACK를 기다림(sender waits "reasonable" amount of time for ACK)
  • 해당 시간 내에 ACK를 받지 못하면 재전송(retransmits if no ACK received in this time)

패킷이 지연된 경우(if pkt(or ACK) just delayed(not lost))

  • 재전송된 패킷이 중복될 수 있음(retransmission will be duplicate, but seq #s already handles this!)
  • 수신자가 ACK가 확인하는 패킷의 순서 번호를 명시해야 함(receiver must specify seq # of packet being ACKed)

타이머 사용(use countdown timer to interrupt after "reasonable" amount of time)

  • 타이머를 사용하여 설정된 시간이 지나면 인터럽트 발생(timeout)
    • 송신자는 카운트다운 타이머를 사용하여 설정된 시간 동안 ACK를 기다리고, 그 시간이 지나면 타임아웃이 발생하여 패킷을 재전송한다.





rdt3.0 sender



rdt3.0 in action








Performance of rdt3.0 (Stop-and-Wait)

활용도(Utilization)

  • U_sender: 송신자의 활용도는 송신자가 데이터를 전송하는 데 바쁜 시간의 비율을 나타낸다.


예제(Example)

  • 1 Gbps 링크(1 Gbps link):

    • 링크 속도: 1 Gbps(기가비트/초)
  • 15 ms 전파 지연(15 ms prop.delay)

    • 전파 지연: 15ms(밀리초)
  • 8000 비트 패킷(8000 bit packet)
    • 패킷 크기: 8000 bit


전송 시간 계산(Time to Transmit Packet into Channel)

  • 전송 시간(D_trans)
    • 전송 시간은 패킷을 채널에 전송하는 데 걸리는 시간이다.
    • 계산식: Dtrans = L / R
      • L : 패킷 크기(8000bit)
      • R : 링크 속도(1 Gbps = 10^9 bits/sec)
    • 계산: Dtrans = 8000bits / 10^9 bits/ sec = 8microseconds
      • 따라서, 패킷을 채널에 전송하는 데 걸리는 시간은 8 마이크로초이다.





rdt3.0: stop-and-wait operation



  • rdt 3.0 프로토콜은 성능은 좋지 않음(rdt 3.0 protocol performance stinks)
    • 이 계산 결과는 송신자의 활용도가 매우 낮음을 보여준다.
    • 송신자가 실제로 데이터를 전송하는 데 바쁜 시간은 전체 시간의 극히 일부분이다.
  • 프로토콜이 채널의 성능을 제한함(protocol limits performance of underlying infrastructrue(channel))
    • rdt3.0의 stop-and-wait 방식은 채널의 높은 대역폭을 효과적으로 사용하지 못한다.





rdt3.0: pipelined protocols operation

파이프라인 처리(pipelining)

  • 정의: 송신자는 ACK를 기다리지 않고 여러 개의 "비행 중인(in-flight)" 패킷을 전송할 수 있다. 즉, 아직 확인되지 않은 여러 패킷을 한 번에 전송하는 것 이다.


파이프라인 처리를 위한 요구 사항

  1. 순서 번호의 범위를 증가시켜야 함(Range of Sequence Numbers Must Be Increased)
    • 여러 패킷을 동시에 전송할 때, 각 패킷을 식별하기 위해 더 큰 범위의 순서 번호가 필요하다.
  2. 송신자와 수신자에서의 버퍼링(Buffering at Sender and/or Receiver)
    • 송신자와 수신자는 아직 확인되지 않은 패킷들을 저장하기 위해 버퍼를 사용해야 한다.







Go-Back-N: sender

Go-Back-N 프로토콜: 송신자가 일정 크기의 창을 통해 여러 패킷을 전송할 수 있도록 하며, ACK를 받지 못한 패킷이 있을 경우 해당 패킷과 이후의 패킷을 모두 재전송한다.



기본 개념

  • Window: 송신자는 N개의 연속적으로 전송되었지만 ACK를 받지 못한 패킷을 허용한다.
  • k-bit sequence number: 패킷 헤더에 포함된 k-bit sequence number를 사용하여 패킷을 식별한다.


Window 메커니즘 설명

  • send_base: 송신 창의 시작 지점, 이 지점 이전의 패킷은 이미 ACK를 받았다.
  • nextseqnum: 다음으로 전송할 패킷의 순서 번호이다.
  • window size N: 창의 크기는 N


누적 ACK(Cumulative ACK)

  • ACK(n): n번까지의 모든 패킷에 대해 ACK를 받았음을 의미한다.
  • ACK(n)을 수신한 경우: 송신자는 창을 n+1부터 시작하도록 앞으로 이동한다.


타이머와 재전송(Timer and Retransmission)

  • 타이머: 비행 중인 가장 오래된 패킷에 대해 타이머를 설정하고, 타임아웃이 발생하면 해당 패킷과 이후의 패킷을 모두 재전송한다.
  • timeout(n): n번 패킷과 그 이후의 모든 패킷을 재전송한다.





Go-Back-N: receiver

기본 개념

  • ACK-only: 수신자는 지금까지 올바르게 수신된 패킷에 대해 가장 높은 순서 번호(in-order) 와 함께 ACK를 보낸다.
  • 순서가 맞지 않는 패킷 수신 시: 수신자는 해당 패킷을 버리거나 버퍼링할 수 있으며, 이는 구현에 따라 달라진다.


수신자 동작

  1. 올바르게 수신된 패킷에 대해 ACK 전송
    • 수신자는 지금까지 올바르게 수신된 패킷에 대해 가장 높은 순서 번호와 함께 ACK를 보낸다.
    • 이는 중복된 ACK를 생성할 수 있다.
    • 수신자는 'rcv_base' 만 기억하면 된다.


  1. 순서가 맞지 않는 패킷 수신 시
    • 수신자는 순서가 맞지 않는 패킷을 수신하면 이를 버리거나 버퍼링할 수 있다.
    • 패킷을 버리는 경우(버퍼에 넣지 않음), 수신자는 가장 높은 순서 번호의 패킷에 대해 다시 ACK를 보낸다.



수신자 창의 상태

  • 녹색: 수신하고 ACK를 보낸 패킷이다.
  • 분홍색: 수신했지만 ACK를 보내지 않은 순서가 맞지 않는 패킷이다.
  • 흰색: 아직 수신하지 않은 패킷이다.






Selective repeat

선택적 반복 프로토콜에 대한 설명이다. 이 프로토콜은 Go-Back-N 프로토콜의 단점을 보완하기 위해 만들었다.

  1. 수신자 동작
    • 수신자는 올바르게 수신된 각 패킷을 개별적(individually) 으로 확인한다.
    • 필요한 경우, 상위 계층으로 순서대로 전달하기 위해 패킷을 버퍼링한다.


  1. 송신자 동작
    • 송신자는 ACK를 받지 못한 패킷에 대해 개별적으로 타임아웃하고 재전송한다.
    • 송신자는 ACK를 받지 못한 각 패킷에 대해 타이머를 유지한다.


  1. 송신 창
    • 송신자는 N개의 연속적인 순서 번호를 가진 패킷을 전송할 수 있다.
    • 이는 송신된 패킷 중 ACK를 받지 못한 패킷의 순서 번호를 제한한다.




주요 요소 설명 1. send_base - 송신 창(window)의 시작 부분을 나타낸다. 이 지점은 ACK를 받지 않은 가장 오래된 패킷의 순서 번호를 가리킨다.
2. nextseqnum - 송신자가 다음에 보낼 패킷의 순서 번호를 나타낸다. 이 지점부터 오른쪽으로 있는 패킷들은 아직 전송되지 않은 패킷이다.
3. Window Size - 송신 창의 크기를 나타낸다. 송신자는 동시에 N개의 패킷을 전송할 수 있다.




Selective Repeat: Sender and Receiver

송신자 측

  1. 상위 계층에서 데이터 수신
    • 응용 계층에서 데이터를 보내려고 할 때, 송신자는 다음 사용할 수 있는 시퀀스 번호가 송신 창 내에 있는지 확인한다. 시퀀스 번호가 창 내에 있다면 송신자는 패킷을 생성하고 보낸다.


  1. 타임아웃(timeout(n))
    • 패킷 n의 타이머가 만료되면 해당 패킷의 ACK(승인 응답)를 제시간에 받지 못했다는 의미이다. 송신자는 패킷 'n'을 재전송하고 해당 패킷의 타이머를 다시 시작한다.


  1. ACK(n)이 [sendbase, sendbase + N] 내에 있음
    • 송신자가 현재 창 내에서 패킷 'n'에 대한 ACK를 받으면 해당 패킷을 받은 것으로 표시한다. 'n'이 가장 작은 미승인 패킷이라면 송신자는 창의 시작점을 다음 미승인 시퀀스 번호로 이동시킨다.




수신자 측

  1. packet n in [rcvbase, rcvbase + N - 1]
    • send ACK(n)
    • out-of-order: buffer
    • in-order: 수신자는 해당 패킷을 응용 계층에 전달하고 버퍼에 저장된 순서대로 패킷을 전달하며, 수신 창을 다음 수신되지 않은 패킷으로 이동시킨다.


  1. packet n in [rcvbase - N, rcvbase - 1]
    • 수신자가 이미 승인된 시퀀스 번호 범위 내에 있는 패킷 n을 받으면 해당 패킷에 대한 ACK를 다시 송신자에게 보낸다.


  1. otherwise: ignore





Selective Repeat in action






Selective repeat: a dilemma


문제 상황 b

  1. 송신 측: 패킷 전송 중 pkt0에 문제가 발생하여 재전송함
  2. 수신 측: 순서가 맞지 않는 패킷을 받으면 버퍼링하고, 순서가 맞는 패킷을 확인 응답함
    • 예: pkt0 (0), ptk1 (1), pkt2 (2)가 전송되었을 때 pkt0이 손실되고 재전송됨
  3. 문제 발생: 재전송된 pkt0이 수신될 때 수신 측이 이를 새 패킷으로 오인하고 다시 받아들이게 됨
    • 이는 시퀀스 번호의 크기와 윈도우 크기 사이의 관계로 인해 발생



핵심 이슈

  • 시퀀스 번호의 크기와 윈도우 크기 사이의 관계
    • 시퀀스 번호 공간이 충분히 크지 않으면 재전송된 패킷이 중복으로 인식될 수 있다.
    • 이 문제를 해결하려면 시퀀스 번호 공간이 윈도우 크기보다 적어도 두 배는 커야 한다.


해결 방법

  • 시퀀스 번호의 크기를 늘리기: 이를 통해 패킷의 중복 문제를 방지할 수 있다.
  • 윈도우 크기 조절: 윈도우 크기를 시퀀스 번호 공간에 맞춰 조정하여 중복 패킷이 발생하지 않도록 한다.

'학교수업 > 컴퓨터망' 카테고리의 다른 글

Chapter4: Network Layer-Data Plane  (0) 2024.07.04
Chapter3: Transport Layer-2  (0) 2024.07.04
Chapter2: Application Layer-2  (0) 2024.07.03
Chapter2: Application Layer  (0) 2024.07.01
Chapter1: Introduction  (0) 2024.06.30

SMTP: closing observations

SMTP: 주요 특징 및 마무리 설명

  • Persistent Connections
    • SMTP는 지속적인 연결을 사용한다.
  • Message Format
    • Message(헤더 및 본문)는 7 bit ASCII 형식이어야 한다.
    • Message 끝은 CRLF.CRLF로 구분한다.



HTTP와의 비교

  • HTTP와 SMTP의 차이점
    • HTTP: 'pull' 프로토콜. client가 server에서 데이터를 요청하여 가져온다.
    • SMTP: 'push' 프로토콜. server가 client로 데이터를 보낸다.
    • 둘 다 ASCII command/response interaction 및 status code를 사용한다.
  • 객체 전송 방식
    • HTTP: 각 object는 자체 response message에 encapsulate 된다.
    • SMTP: 여러 object는 multipart message로 전송된다.






Mail message format

  1. SMTP(Simple Mail Transfer Protocol): 이메일 메시지를 교환하기 위한 프로토콜로, RFC 531에 정의되어 있다. HTTP와 유사하게 동작한다.
  2. RFC 822: 이메일 메시지의 문법을 정의한다. HTML과 비슷하게 메시지의 형식을 규정한다.
  3. 헤더 라인(Header Lines):
    • To : 수신자.
    • From : 발신자
    • Subject : 주제
    • 이 라인들은 이메일 메시지 본문 내에서 SMTP MAIL FROM:, RCPT TO: 명령과 구분된다.
  4. 본문(Body): 메시지 본문은 ASCII 문자로만 구성된다.






Mail Access Protocols

이메일 접근 프로토콜

  • SMTP: e-mail message를 receiver's server로 전달하고 저장하는 역할을 한다.
  • mail access protocol: 서버에서 이메일을 검색하는 역할을 한다.


  1. IMAP(Internet Mail Access Protocol)
    • RFC 3501에 정의되어 있다.
    • 메시지는 서버에 저장되며, IMAP은 저장된 메시지의 검색, 삭제, 폴더 관리 기능을 제공한다.
  2. HTTP
    • Gmail, Hotmail, Yahoo! Mail 등은 웹 기반 인터페이스를 제공한다.
    • 이메일을 전송하기 위해 SMTP를 사용하며, IMAP(또는 POP)을 사용하여 이메일 메시지를 검색한다.




The Domain Name System DNS

DNS: Domain Name System

  1. 식별자(Identifiers)
    • 사람들은 여러 가지 식별자를 가지고 있다. 예를 들어 SSN, 이름, Passport 등이 있다.
    • internet host와 router도 IP 주소(32bit)와 name(e.g. cs.umass.edu)을 가지고 있다.


  1. DNS의 역할
    • IP address와 name 간의 매핑을 처리한다.
    • 이 매핑을 통해 사람이 이해하기 쉬운 이름을 IP 주소로 변환하고 그 반대의 경우도 처리할 수 있다.


  1. 분산 데이터베이스(Distributed DataBase)
    • DNS는 많은 name server로 구성된 계층적(hierarchy) 분산 데이터베이스이다.
    • application layer protocol로 구현되어 있으며, host와 name server 간의 통신을 통해 이름을 resolve하고 주소를 변환한다.


  1. 인터넷의 핵심 기능
    • DNS는 인터넷의 핵심 기능 중 하나로, application layer protocol로 구현되어 있다.
    • 네트워크의 'edge'에 복잡성이 존재한다.




DNS: services, structure

DNS Service

  1. 호스트 이름을 IP 주소로 변환

    • DNS는 도메인 이름을 IP 주소로 변환하는 서비스이다.
    • e.g. www.google.com을 172.217.164.110으로 변환
  2. 호스트 별칭(host aliasing)

    • 여러 별칭을 사용할 수 있다.
    • e.g. www.ibm.com와 같은 별칭을 사용하여 더 긴 공식 이름을 대신할 수 있다.
  3. 메일 서버 별칭(host aliasing)

    • DNS는 메일 서버의 별칭도 제공한다.
  4. 부하 분산(load distribution)

    • 여러 IP 주소가 하나의 도메인 이름에 대응할 수 있다.
    • 복제된 웹 서버를 사용하여 부하를 분산한다.
  5. Q. 왜 DNS를 중앙 집중화를 피하는가?

    • 단일 장애 지점(single point of failure)
      • 중앙 집중화된 DNS 서버가 장애를 겪으면 전체 시스템이 영향을 받게 된다.
    • 트래픽 볼륨(traffic volume)
      • 중앙 집중화된 서버는 모든 DNS 쿼리를 처리해야 하기에 트래픽이 집중되고 서버 과부하가 발생할 수 있다.
    • 멀리 떨어진 중앙 집중형 데이터베이스(distant centralized database)
      • 중앙 집중화된 데이터베이스는 지리적으로 멀리 떨어진 사용자에게 지연 시간을 증가시킬 수 있다.
      • 분산형 구조는 더 가까운 서버에서 쿼리를 처리할 수 있어 성능이 향상된다.
    • 유지보수(maintenance)
    • 스케일링 문제를 해결하기 위해
      • e.g. Comcast의 DNS 서버는 하루에 600억 개의 DNS 쿼리를 처리한다.
  6. 분산 데이터베이스

    • DNS는 분산 계층 구조로 구성된다.
    • 여러 이름 서버가 계층적으로 배치되어 있다.




Thinking about the DNS

  1. 거대한 분산 데이터베이스(Humongous distributed database)
    • 약 10억 개의 간단한 레코드가 포함되어 있다.
  2. 수많은 쿼리 처리(Handles many trillions of queries/day)
    • 읽기 작업이 쓰기 작업보다 훨씬 많다.
    • 성능이 중요하다. 거의 모든 인터넷 거래는 DNS와 상호작용하며, 밀리초 단위의 응답 시간이 중요하다.
  3. 조직적으로, 물리적을 분산화됨(Organizationally, Physically decentralized)
    • 수백만 개의 조직이 각자의 레코드를 관리한다.
  4. 탄탄함(Bulletproof)
    • 신뢰성과 보안이 뛰어나다.




DNS: a distributed, hierarchical database

  1. 루트 DNS 서버(Root DNS Servers)
    • 최상위에 위치하며, .com, .org, .edu 등의 최상위 도메인(TLD) 서버로 쿼리를 전달한다.


  1. 최상위 도메인(TLD) 서버(Top-Level Domain Server)
    • 각 TLD에 대한 정보를 가지고 있으며, 특정 TLD에 속한 권한 있는 DNS 서버로 쿼리를 전달한다.
    • e.g. .com, .org, .edu 등


  1. 권한 있는 DNS 서버(Authoritative DNS Servers)
    • 특정 도메인 이름에 대한 최종 IP 주소 정보를 가지고 있다.
    • e.g. amazon.com, pbs.org, nyu.edu 등의 서버


    1. client가 root server에 query를 보낸다.
    2. root server가 .com TLD server 주소를 client에게 전달한다.
    3. client는 .com TLD server에 query를 보낸다.
    4. .com TLD server가 amazon.com Authoritative DNS server 주소를 client에게 전달한다.
    5. client가 amazon.com Authoritative DNS server에 qeury를 보낸다.
    6. amamzon.com Authoritative DNS server는 www.amazon.com의 IP 주소를 client에게 전달한다.
    7. client는 IP 주소를 받는다.




DNS: root name servers

  1. 역할
    • 루트 네임 서버는 도메인 이름을 해결하지 못하는 경우 마지막으로 연결할 수 있는 공식적인 연락처이다.
    • 인터넷 기능에서 매우 중요한 역할을 한다. 인터넷은 루트 네임 서버 없이는 제대로 작동할 수 없다.


  1. DNSSEC
    • DNSSEC는 보안을 제공하며, 인증과 메시지 무결성을 보장한다.


  1. ICANN
    • 인터넷 할당 번호 관리 기관(Internet Corporation for Assigned Names and Numbers)이 root DNS domain을 관리한다.


  1. 전 세계에 분포된 루트 네임 서버
    • 전 세계에 13개의 논리적 루트 네임 서버가 있으며, 각 서버는 여러 번 복제되어 있다. 미국에만 약 200개의 서버가 존재한다.
    • 지도에는 루트 네임 서버의 분포가 시각적으로 표시되어 있다.





Top-Level Domain, and Authoritative Servers

  1. Top-Level Domain(TLD) Server
    • .com, .org, .net, .edu, .aero, .jobs,. museums와 같은 최상위 도메인 및 국가 도메인(e.g. .cn, .uk, .fr, .ca, .jp)을 담당한다.
    • Network Solutions: .com 및 .net TLD의 권한 있는 레지스트리
      • Educause: .edu TLD의 권한 있는 레지스트리


  1. Authoritative DNS Servers(권한 있는 DNS 서버)
    • organization 자체 DNS 서버로서, 조직의 네임드 host에 대한 host name을 IP 주소로 매핑하는 기능을 제공한다.
    • organization이나 서비스 제공자가 maintaine 할 수 있다.





Local DNS name servers

  1. host가 DNS query를 만들 때
    • Local DNS server로 query를 보낸다.
    • Local DNS server는 name-address translation pair의 Local cache에서 response를 반환하거나(가능한 경우), DNS hierarchy 구조로 request을 전달하여 해결한다.


  1. Local DNS 서버의 역할
    • local cache에서 최근의 name-address translation pair을 반환할 수 있다.(다만, 이 정보가 오래되었을 수도 있다)
    • 계층 구조로 request을 전달하여 해결한다.
    • ISP마다 Local DNS name server를 가지고 있으며, 이를 찾는 방법은 다음과 같다.
      • MacOS: scutil --dns
      • Windows: ipconfig /all


  1. 계층 구조에서의 위치
    • local DNS 서버는 엄격하게 말하면 계층 구조에 속하지 않는다.




DNS name resolution: iterated query

DNS 이름 해석:반복 쿼리



  1. 예시 시나리오:
    • host가 반복 쿼리
      • enginerring.nyu.edu의 host가 gaia.cs.umass.edu의 IP 주소를 요청할 때


  1. iterated query:
    • Client가 request을 보낸 server는 요청된 이름을 모를 경우, 다음으로 문의할 server의 이름을 응답을 보낸다.
    • "이 이름은 모른다. 그러니까 이 서버에 물어봐라"





DNS name resolution: recurisve query

  1. 예시 시나리오:
    • host가 반복 쿼리
      • enginerring.nyu.edu의 host가 gaia.cs.umass.edu의 IP 주소를 요청할 때


  1. Recursive query:
    • 요청한 이름의 해석을 담당하는 name server가 최종 응답을 찾기 위해 다른 name server와 통신한다.
    • 계층 구조 상위 레벨에서 큰 부하가 발생할 수 있다.
      • 모든 recursive query에 대해 상위 계층 DNS server들은 여러 번의 쿼리와 응답을 처리해야한다.





Caching, Updating DNS Records

  1. DNS 캐싱(DNS Caching)
    • name server가 mapping을 학습하면, 이를 Cache에 저장한다.
    • Cache 항목은 일정 시간이 지나면 만료(TTL)된다.
    • TLD server는 일반적으로 local name server에 Cache되므로 root name server는 자주 방문되지 않는다.


  1. Cache된 항목의 한계
    • 캐시된 항목이 오래(Out-Of-Date) 되었을 수 있다.(최선을 다한 이름-주소 변환)
    • host의 IP 주소가 변경되면, 모든 TTL이 만료될 때까지 인터넷 전역에서 알지 못할 수 있다.


  1. 업데이트 및 알림 메커니즘
    • IETF 표준으로 제안된 업데이트/알림 메커니즘이 있다.(RFC 2136)


주요 요점

  • DNS 캐싱은 성능 향상과 트래픽 감소에 도움이 되지만, 캐시된 데이터가 만료되기 전까지 최신 정보가 아닐 수 있다.
  • TTL(Time To Live)은 캐시 항목이 유효한 기간을 정의한다.
  • 업데이트 매커니즘은 DNS 레코드가 변경될 때 네트워크 전역에 알리기 위한 표준이다.




DNS records

DNS Record는 DNS 서버가 해당 패킷을 받았을 때 어떤식으로 처리할지를 나타내는 지침을 말한다.
간단히 말하면 DNS 상에서 도메인에 관한 설정을 하기 위해 사용되는 일련의 설정 문자라고 보면 된다.
DNS Record에서는 서버가 요청에 응답하는 방법에 대한 다양한 구문과 명령이 포함되어 있다.



DNS Record를 공부해야 하는 이유는 만일 개인 도메인을 구입하기 위해 도메인 업체 사이트에 접속해서 도메인과 내 서버 IP와 연결하려면 해당 정보가 필요하기 때문이다.



이 밖에 실 서비스의 도메인을 관리하기 위해서는 레코드의 각 특징에 대해 알아둘 필요가 있다.

DNS는 resource records(RR)를 저장하는 distributed database이다. 각 RR은 네 가지 필드로 구성된다.



  1. 형식(RR Format)
    • (name, value, type, ttl) 로 구성된다.


  1. DNS Recode의 종류
    • Type = A:: DNS에 저장되는 정보의 타입으로 도메인 주소와 서버의 IP 주소가 직접 매핑시키는 방법이다. 도메인 tistroy.com을 예로 들면, A record는 '티스토리 도메인은 IP 주소 121.53.105.234에 연결되어 있다.라고 말하는 역할을 한다고 보면 된다
      • A 레코드는 반드시 domain과 IP 간의 일대일 매칭이 될 필요는 없다.
      • 도메인 매핑 설정에 따라서 일대다/다대일이 될 수 있다.
      • 이름(name): 호스트 이름
      • 값(value): IP 주소
    • Type = NS(Name Server): NS 레코드는 네임 서버 레코드로 도메인에 대한 네임서버의 권한을 누가 관리하고 있는지 알려주는 레코드이다. 쉽게 말해, example.co.kr 이라는 도메인을 cafe24 업체에서 구입해서 사용하고 있다고 하면, example.co.kr 도메인을 관리하는 네임서버는 당연히 cafe24가 되게 된다.
      • 이름(name): 도메인 이름(e.g. foo.com)
      • 값(value): 해당 도메인의 권한 있는 name server의 host 이름
    • Type = CNAME(Canonical Name record):: CName 레코드는 도메인 별명 레코드라고 부르며, 도메인 주소를 또 다른 도메인 주소로 이중 매핑시키는 형태의 DNS 레코드 타입이다. 쉽게 말하면 도메인 주소로 연결한 부분에 다시 한번 도메인 주소로 연결하는 방식이다.
      • 예를 들어 daum.net 도메인이 있다고 했을 때, 이 도메인의 CNAME을 daum2.net으로 정해, 브라우저에 daum2.net을 입력하면 daum.net로 접근되는 형식이다.
      • 이름(name): 별칭 이름(www.ibm.com)
        • 값(value): 실제 이름(servereast.backup2.ibm.com)
    • Type = MX(Mail Exchanger):: MX 레코드는 메일 서버 레코드이며, 해당 도메인과 연동되어 있는 메일서버를 확인하는 데 사용하는 레코드이다. 즉, MX 레코드가 해당 도메인에 설정되어 있어야, 해당 도메인을 이메일 주소로 사용할 수 있다는 뜻이다.
      • 이름(name): 메일 서버와 연결된 도메인 이름
      • 값(value): 메일 서버의 이름



  1.  Type = A:
         name: www.example.com
         value: 192.0.2.1
    
     Type = NS:
         name: example.com
         value: ns1.example.com
    
     Type = CNAME:
         name: www.example.com
         value: servereast.backup2.example.com
    
     Type = MX:
         name: example.com
         value: mail.example.com

DNS protocol messages



DNS의 queryreply message, 둘 다 같은 format을 가진다.



  1. 메시지 헤더
    • 식별자: response와 request를 일치시키기 위해 사용되는 16bit 숫자
    • 플래그: 여러 플래그가 포함되어 있다.
      • query 또는 response flag
      • recursion 요청 플래그
      • recursion 사용 가능 플래그
      • authoritative(권위 있는) reply 플래그


  1. questions(질문) 수: 포함된 질문 수
    • quesition section: host name, type filed 등을 포함
  2. answer(응답) 수: 포함된 응답 리소스 레코드(RR)의 수
    • answer section: query에 대한 리소스 레코드가 포함
  3. authority(권위) RR 수: 권위 서버에 대한 리소스 레코드의 수
    • authority section: authority server에 대한 리소스 레코드
  4. additional RR 수: 추가 정보 섹션의 리소스 레코드 수
    • addtional info section: 아마 쓰일 수 있는 "helpful"한 additional info
  5. 참조: RR(Resource Records)는 query에 대한 응답으로 제공되는 정보이다. 이름, 값, 타입, TTL field를 포함한다.






Inserting records into DNS

  1. 도메인 이름 등록
    • "Network Utopia"라는 새로운 스타트업의 도메인 이름 networkuptopia.com을 DNS registrar(등록 기관)(e.g. Network Solutions)에 등록한다.
    • 권위 있는 이름 서버(기본 및 보조)의 이름과 IP 주소를 제공한다.


  1. 등록기관의 역할
    • 등록기관은 .com 최상위 도메인(TLD) 서버에 NS 및 A 레코드를 삽입한다.
    • e.g.
      • NS Record: (networkutopia.com, dns1.networkutopia.com, NS)
      • A Record: (dns1.networkutopia.com, 212.212.212.1, A)


  1. authoritative server 생성
    • local에 IP 주소 212.212.212.1을 가진 권위 있는 서버를 생성한다.
    • www.networkutopia.com에 대한 A 레코드를 생성한다.
    • networkutopia.com에 대한 MX 레코드를 생성한다.



이 과정은 도메인 이름을 DNS에 등록하고, 도메인 이름에 대한 다양한 유형의 레코드를 설정하는 전형적인 절차를 설명한다. 이를 통해 도메인 이름이 인터넷 상에서 인식되고, 이메일 및 웹 트래픽이 해당 도메인으로 올바르게 라우팅될 수 있게 한다.






DNS Security

DDoS 공격(DDoS attack)

  • 루트 서버에 트래픽 폭탄(bombard root servers with traffic)

    • not successful to date: 지금까지 로트 서버에 대한 DDoS 공격이 성공하지 못했다.
    • traffic filtering: 트래픽 필터링을 통해 비정상적인 트래픽을 차단한다.
    • 로컬 DNS 서버가 TLD 서버의 IP를 캐시하여 루트 서버 우회 가능: 로컬 DNS 서버가 최상위 도메인(TLD) 서버의 IP 주소를 캐시함으로써, 루트 서버를 우회하여 직접 TLD 서버에 접근할 수 있다.
  • TLD 서버에 트래픽 폭탄(bombard TLD Servers)

    • potentially more dangerous: TLD 서버에 대한 공격은 잠재적으로 더 큰 위험을 초래할 수 있다.



리다이렉트 공격(Redirect attack)

  • 중간자 공격(man-in-middle):
    • DNS 쿼리를 가로챔(intercept DNS queries): 중간자 공격자는 DNS 쿼리를 가로채고 변조된 응답을 보낼 수 있다.
  • DNS 중독(DNS poisoning):
    • 가짜 응답을 DNS 서버에 보내서 캐시하게 함: 공격자는 DNS 서버에 가짜 응답을 보내 이를 캐시하게 함으로써, 사용자가 잘못된 IP 주소로 리다이렉트 되게 할 수 있습니다.



DDoS에 DNS 악용(Exploit DNS for DDoS)

  • 위조된 소스 주소로 쿼리 보내기(send queires with spoofed source address)
    • 타켓 IP 주소를 위조하여 쿼리를 보냄으로써, 대량의 응답 트래픽이 타켓 서버로 보내져 DDoS 공격을 유발할 수 있다.
  • 증폭 필요(requires amplification):
    • 작은 쿼리로 큰 응답을 유발하는 증폭 기법을 사용하여 공격의 효과를 극대화할 수 있다.



DNSSEC(DNS Security Extensions)

  • DNSSEC는 DNS에 대한 인증 및 무결성을 제공하여 DNS 중독과 같은 공격을 방지하는 데 사용된다.
  • RFC 4033은 DNSSEC의 표준을 정의






P2P application

Peer-to-peer(P2P) architecture

  • 항상 켜져 있는 서버가 없음: P2P 아키텍처는 항샹 켜져 있는 중앙 서버가 필요하지 않는다.
  • 임의의 종단 시스템 간 직접 통신: 임의의 종단 시스템(peer)이 서로 직접 통신한다.
  • peer 간 service 요청 및 제공: peer는 다른 peer로부터 서비스를 요청하여, 다른 peer에게 서비스를 제공한다. 이를 통해 자체 확장성이 이루어진다.
    • 새로운 peer가 추가될 때마다 새로운 서비스 용량과 새로운 서비스 요구가 발생한다.
      • 간헐적 연결 및 IP 주소 변경: peer는 간헐적으로 연결되며 IP주소가 변경될 수 있다.
    • 이러한 특성으로 인해 관리가 복잡해진다.



예시

  • 파일 공유: BitTorrent와 같은 파일 공유 서비스
  • 스트리밍: KanKan과 같은 스트리밍 서비스
  • VoIP: Skype와 같은 인터넷 전화 서비스






File distribution: client-server vs P2P

Q. 'F' 크기의 파일을 하나의 서버에서 N개의 peer에게 배포하는 데 얼마나 시간이 걸리는가?



옵션1: 단일, 큰 "mega-server"를 사용하는 경우 => 이 솔루션은 확장되지 않음
- 단일 장애 지점(single point of failture): 서버가 다운되면 전체 시스템이 작동하지 않음
- 네트워크 혼잡 지점(point of network congestion): 많은 사용자가 한 서버에 접속하면 혼잡이 발생함
- 원거리 클라이언트에게 긴 경로(long path to distant client): 서버와 클라이언트 간의 거리가 멀면 전송 시간이 길어짐
- 출발지 링크를 통해 여러 비디오 복사본 전송(multiple copies of video sent over outgoing link): 서버는 여러 클라이언트에게 각각의 비디오 복사본을 전송해야함



파일 배포의 두 가지 방식 비교

  • 클라이언트-서버 모델: 중앙 서버가 모든 파일을 클라이언트에게 전송
  • P2P 모델: 파일을 받은 클라이언트가 다른 클라이언트에게 파일을 전송하여 분산 처리



주요 요소
- 서버 업로드 용량(us): 서버가 데이터를 업로드 할 수 있는 속도
- peer 다운로드 용량(di): 각 피어가 데이터를 다운로드할 수 있는 속도
- peer 업로드 용량(ui): 각 피어가 데이터를 업로드할 수 있는 속도
네트워크
- network with abundant bandwidth: 네트워크 자체는 대역폭이 충분하여 병목 현상이 발생하지 않음을 가정






File distribution time: client-server

client-server model에서 파일을 배포하는 데 걸리는 시간을 설명한다. 주어진 파일 크기 F를 N명의 client에게 배포하는 상황을 다루고 있다.






서버 전송(server transmission)

  • 순차적으로 N개의 파일 복사본 전송
    • 서버는 각 클라이언트에게 파일을 업로드 해야한다.
    • 하나의 복사본을 전송하는 데 걸리는 시간: F/us
    • N개의 복사본을 전송하는 데 걸리는 총 시간: NF/us






클라이언트 전송(client transmission)

  • 각 클라이언트는 파일 복사본을 다운로드해야 함
    • 최소 클라이언트 다운로드 속도: dmin
    • 클라이언트가 파일을 다운로드하는 데 걸리는 최소 기간: F / dmin






파일 배포 시간 공식(File Distribution Time Formula)

  • 클라이언트-서버 접근 방식을 사용하여 N명의 클라이언트에게 F 크기 파일을 배포하는데 걸리는 시간

Dc-s >= max(NF/us , F/dmin)

  • NF/us: 서버가 N명의 클라이언트에게 파일을 전송하는 데 걸리는 시간
  • F/dmin: 각 클라이언트가 파일을 다운로드하는 데 걸리는 최소 시간






결론

  • client-server 모델에서 파일 배포 시간은 N의 크기에 선형적으로 증가한다.
  • 즉, client의 수가 증가할수록 서버가 각 클라이언트에게 파일을 전송하는 데 걸리는 시간이 선형적으로 증가한다.






File distribution time: P2P

P2P(Peer-to-Peer) 모델에서 파일을 배포하는 데 걸리는 시간을 설명한다. 주어진 파일 크기 F를 N명의 클라이언트에게 배포하는 상황을 다루고 있다.






서버 전송(server transmission)

  • 최소 하나의 복사본 업로드 필요
    • 서버는 최소한 하나의 파일 복사본을 업로드해야 한다.
    • 하나의 복사본을 전송하는 데 걸리는 시간: F/us






클라이언트 다운로드(client download)

  • 각 클라이언트는 파일 복사본을 다운로드해야함
    • 최소 클라이언트 다운로드 속도: dmin
    • 클라이언트가 파일을 다운로드하는 데 걸리는 최소 시간: F/dmin






클라이언트 업로드(clients upload)

  • 클라이언트는 총 NF 비트를 다운로드 해야함
    • 최대 업로드 속도(최대 다운로드 속도를 제한하는 속도): us + ∑ui






파일 배포 시간 공식(File Distribution Time Formula)

  • P2P 접근 방식을 사용하여 N명의 클라이언트에게 파일 F를 배포하는 데 걸리는 시간
    • F/us: 서버가 하나의 파일 복사본을 업로드하는 데 걸리는 시간
    • F/dmin: 각 클라이언트가 파일을 다운로드하는 데 걸리는 최소 시간
    • NF/us+∑ui: 모든 클라이언트가 파일의 총 NF 비트를 다운로드하는 데 걸리는 시간






결론(Conclusion)

  • P2P 모델에서 파일 배포 시간은 N의 크기에 선형적으로 증가한다.
  • 하지만, P2P 모델에서는 새로운 peer가 추가될 때마다 추가적인 서비스 용량을 제공하기에, 서비스 용량도 선형적으로 증가한다.









Client-server vs P2P: example

축:

  • X축: 파일을 받는 클라이언트의 수
  • Y축: 최소 배포 시간






조건:

  • 클라이언트 업로드 속도(u): 일정
  • 파일 크기(F) / 업로드 속도(u) = 1시간: 파일을 업로드하는 데 걸리는 시간
  • 서버 업로드 속도(us) = 10u: 서버의 업로드 속도는 클라이언트 업로드 속도의 10배
  • 최소 클라이언트 다운로드 속도(dmin) >= 서버 업로드 속도(us): 최소한 서버의 업로드 속도만큼의 다운로드 속도를 가져야함


위의 그래프는 P2P 모델이 클라이언트-서버 모델보다 파일 배포에 있어 더 효율적임을 시각적으로 보여준다. 특히 클라이언트가 많아질수록 P2P 모델의 장점이 더 두드러진다. P2P 모델에서는 클라이언트들이 서로 파일을 공유하므로, 네트워크 자원의 활용도가 높아지고 배포 시간이 단축된다.



P2P모델이 클라이언트-서버 모델보다 파일 배포에 더 효율적인 이유는 다음과 같다.

  • 분산된 자원 활용: C-S는 모든 파일이 중앙 서버에서 client로 전송된다. 이는 서버의 업로드 대역폭에 큰 부담을 준다. 허나 P2P에서는 파일을 다운로드한 클라이언트들이 다시 다른 클라이언트들에게 파일을 전송하기에 서버의 부담이 크게 줄고, 네트워크 총 업로드 대역폭이 증가한다.

  • 확장성: C-S는 클라이언트 수가 증가함에 따라 서버의 부담이 선형적으로 증가한다. 많은 클라이언트들이 동시에 파일을 요청하면 서버가 병목현상을 겪게 된다. P2P에서는 새로운 클라이언트가 추가될 때마다 그 클라이언트가 다른 클라이언트들에게 파일을 공유하므로, 네트워크의 자원이 자연스럽게 확장된다. 결과적으로 클라이언트 수가 증가해도 배포 효율성이 유지된다.

  • 병목 현상 감소: C-S에서는 중앙 서버가 모든 클라이언트들에게 파일을 전송하므로, 서버의 업로드 용량이 병목 현상이 될 수 있다. P2P에서는 여러 클라이언트가 동시에 파일을 공유하므로, 병목 현상이 분산되고 완화된다. 네트워크 전체의 자원을 더 효과적으로 활용할 수 있다.

  • 낮은 비용: C-S에서는 고성능 서버와 대역폭이 필요하며 많은 비용이 들 수 있다. P2P에서는 각 클라이언트가 자원을 공유하기에 서버의 필요성이 줄어들고, 비용이 절감된다.

  • 호율적인 대역폭 사용: C-S에서는 서버와 클라이언트 간의 대역폭만 사용된다. P2P에서는 클라이언트 간에도 직접 파일을 전송하므로, 네트워크의 대역폭을 더 효율적으로 사용할 수 있다.






P2P file distribution: BitTorrent

파일 분할

  • 파일은 256KB chunck로 분할됨: 큰 파일은 더 작은 256KB 단위의 청크로 나뉜다. 이 파일의 조각은 더 쉽게 공유하고 다운로드할 수 있도록 한다.


peer 간 chunck 전송

  • 토랜트 내의 peer들은 파일 청크를 송수신함: 각 pear는 파일의 일부 peer를 다른 peer들과 교환한다.


트래커(tracker)

  • 트래커의 역할: tracker는 torrent에 참여하는 peer들을 추적한다. tracker는 각 peer가 가지고 있는 file chunck 정보를 관리하고, 새로운 피어가 네트워크에 참여할 때 다른 peer들의 리스트를 제공한다
    • 트래커는 중앙 서버 역할을 하지만 파일 데이터를 직접 전송하지 않는다. 대신, peer들이 서로를 찾고 연결할 수 있도록 돕는다.


토렌트(torrent)

  • 토렌트의 정의: 토렌트는 파일 청크를 교환하는 peer들의 그룹이다. 이 그룹 내에서 각 peer는 파일 chunck를 다운로드하고 업로드 한다.


예시

  • Alice가 네트워크에 참여하는 과정
    • Alice가 토렌트에 도착한다.
    • Alice는 트래커로부터 peer들의 리스트를 얻는다.
    • Alice는 토랜트 내의 peer들과 file chunck를 교환하기 시작한다.






P2P file distribution: BitTorrent

  • peer joining torrent(피어가 토렌트에 참여하는 과정)
    • 청크가 없음(has no chuncks): 새로운 peer는 처음에는 file chunck를 하나도 가지고 있지 않는다.
    • 다른 peer들로부터 청크를 축적(will accumulate them over time from other peers): 시간이 지나면서 다른 peer들로부터 file chunck를 다운로드 받아 축적하게 된다.
    • 트래커에 등록하여 피어 목록을 얻음(registers with tracker to get list of peers) : tracker에 등록하여 peer list를 얻음: tracker에 등록하여 이웃 피어들의 목록을 얻는다.
    • 이웃 peer들과 연결(connects to subset of peers 'neightbors'): peer 목록에서 일부 peer들과 연결


  • while downloading(다운로드 중)
    • 업로드(uploads chuncks to other peers): 다운로드하는 동안, 피어는 자신이 다운로드한 파일 청크를 다른 피어들에게 업로드한다.


  • peer may change peers(피어 변경)
    • 청크를 교환하는 피어를 변경할 수 있음(with whom it exchanges chuncks): peer는 청크를 교환하는 다른 피어들을 변경할 수 있다.

  • churn(혼잡)
    • 피어는 왔다가 사라질 수 있음(peers may come and go): 피어들은 네트워크에 참여하거나 떠날 수 있음


  • once peer has entire file(파일 전체를 받은 후)
    • 이기적으로 떠날 수 있음(selfishly leave): peer가 파일 전체를 다운로드한 후에 네트워크를 떠날 수 있다.
    • 이타적으로 남아있을 수 있음(altruishtically remain in torrent): pper는 이타적으로 네트워크에 남아 다른 peer들에게 파일을 계속 업로드할 수도 있다.






BitTorrent:requesting, sending file chuncks


Requesting chuncks(파일 청크 요청)

  • 다양한 peer가 서로 다른 file chunck를 가짐
    • 각 peer는 서로 다른 file chunck의 하위 집합을 가지고 있다.

  • 주기적으로 peer들에게 file chunck 목록을 요청
    • Alice는 주기적으로 각 peer에게 그들이 가지고 있는 file chunck 목록을 요청한다.

  • 부족한 청크를 요청. 드문 청크를 우선 요청
    • Alice는 자신이 가지고 있지 않은 부족한 청크를 요청한다.
    • 이 때, 드문 청크를 우선적으로 요청한다. 이는 네트워크 전체의 균형을 맞추고 모든 청크가 고르게 배포되도록 돕는다.




sending chuncks: tit-for-tat(파일 청크 전송: 티트포텟)

  • 최고 속도로 청크를 보내주는 four peer에게 chunck 전송:
    • Alice는 현재 자신에게 가장 높은 속도로 chunck를 보내주는 네 pear에게 chunck를 전송
    • 이 외의 peer들은 Alice에게 청크를 받지 못한다. 이를 choking이라고 한다.

  • 매 10초마다 상위 네 피어 재평가
    • Alice는 매 10초마다 상위 네 피어를 재평가하여 변경할 수 있다.

  • 매 30초마다 무작위로 새로운 피어를 선택하여 chunck 전송 시작
    • Alice는 매 30초마다 무작위로 새로운 피어를 선택하여 청크 전송을 시작한다.
    • 이를 optimistically unchoke라고 하며, 선택된 새로운 피어는 상위 네 피어에 합류할 가능성이 있다.






BitTorrent: tit-for-tat

  1. Alice가 Bob을 optimistically unchoke한다.
  2. Alice가 Bob의 상위 4대 공급자 중 하나가 됨(Alice becomes one of Bob's top-four providers)
  3. Bob이 Alice의 상위 4대 공급자 중 하나가 됨(Bob becomes one of Alice's top-four providers)



효과

  • 높은 업로드 속도(higher upload rate)
    • peer들은 더 나은 거래 파트너를 찾기 위해 노력하며, 이를 통해 file을 더 빨리 받을 수있다.
    • Alice와 Bob은 서로에게 높은 업로드 속도로 청크를 전송함으로써 파일 전송 속도를 극대화한다.









Video Streaming and content distribution networks

Video Streaming and CDNs:context(Content Delivery Network)

  • 비디오 스트리밍 트래픽(stream video traffic)
    • 인터넷 대역폭의 주요 소비자(major consumer of internet bandwidth)
      • Netflix, youtube, amazon prime 등의 스트리밍 서비스는 2020년 residential ISP traffic의 80%를 차지한다.
      • 이는 비디오 스트리밍이 인터넷 트래픽의 큰 부분을 차지하고 있음을 보여준다.



  • 도전 과제(Challenges)

    1. 규모(Scale)

      • 약 10억 명의 사용자에게 도달하려면 어떻게 해야 하는가?
      • 단일 mega-video server는 작동하지 않는다.
      • 이유: 단일 서버는 많은 사용자를 동시에 처리할 수 없기에 네트워크 병목 현상이 발생할 수 있다.
    2. 이질성(heterogeneity)

      • 사용자들의 다양한 능력(e.g. 유선 대 모바일, 대역폭 풍부 대 대역폭 부족)을 처리해야한다.
      • 각 사용자는 서로 다른 네트워크 환경과 장치를 사용하고 있기에, 이를 고려한 전송 방법이 필요하다.



  • 해결책(solution)
    • 분산된 어플리케이션 레벨 인프라(distributed, application-level infrastructure)
      • 문제 해결을 위해서는 분산된 인프라가 필요하다.
      • CDN은 이러한 분산된 인프라의 좋은 예시로, 여러 서버에 컨텐츠를 분산시켜 사용자에게 가까운 위체에서 컨텐츠를 제공함으로써 대역폭 사용을 최적화하고, 사용자 경험을 향상시킨다.









Multimedia: video

  • 비디오의 기본 개념

    • 비디오(video): 일정한 속도로 연속적인 이미지가 표시되는 시퀀스이다.
      • e.g. 1초에 24장의 이미지가 표시된다.
    • 디지털 이미지(digital image): 픽셀 배열로 구성된다.
      • 각 픽셀은 bit로 표현된다.





  • Coding

    • 코딩의 목적: 이미지 내의, 이미지 간의 중복성을 사용하여 이미지 인코딩에 사용되는 비트 수를 줄인다.
      • 공간적 중복성(spatial redundancy): 이미지 내의 중복성
      • 시간적 중복성(temporal redundancy): 한 이미지에서 다음 이미지로의 중복성






  • 시간 코딩(temporal conding) 예제
    • 시간적 코딩의 예(temporal coding example)
      • i + 1 프레임에서 완전한 프레임을 보내는 대신, i 프레임과 차이점만 전송한다.
      • 예를 들어, 연속된 이미지 프레임 간의 차이점만 전송하여 데이터 양을 줄인다
    • 프레임 예시(Frame Example)
      • 프레임 i와 프레임 i + 1
        • 프레임 i: 원본 이미지
        • 프레임 i + 1: 이전 프레임과의 차이점만 인코딩된 이미지.






  • 비디오 인코딩 방식

    1. CBR(Constant Bit Rate)

      • 고정 비트율(constant bit rate): 비디오 인코딩 속도가 고정되어 있다.
      • 특징: 특정한 비트율로 인코딩하여 예측가능한 네트워크 대역폭 사용과 일정한 품질을 제공한다.



2. **VBR(Varaible Bit Rate)**
    - **가변 비트율(variable bit rate)**: 비디오 인코딩 속도가 공간적, 시간적 코딩 변화량에 따라 달라진다.
    - 특징: 인코딩 비트율이 변화하여 복잡한 장면에서는 높은 비트율을 사용하고, 단순한 장면에서는 낮은 비트율을 사용하여 효율성을 높인다.

<br><br>


- **예제**
    - MPEG(Moving Picture Experts Group) 1(CD-ROM): 1.5 Mbps의 비트율을 사용
    - MPEG 2(DVD): 3-6 Mbps의 비트율을 사용
    - MPEG 4(인터넷 사용): 64 Kbps에서 12 Mbps까지 다양한 비트율을 사용하며, 인터넷 스트리밍에 자주 사용된다.









Streaming stored video

  • 간단한 시나리오(Simple Scenario)
    • 비디오 서버(video server): 저장된 비디오 파일이 있는 서버
    • 인터넷(internet): 비디오 서버와 클라이언트 간의 네트워크 경로
    • 클라이언트(client): 비디오를 스트리밍하여 재생하는 장치






  • 주요 과제(Main Challenge)

    1. 서버-클라이언트 대역폭 변동(server-to-client bandwidth will vary)

      • 시간에 따라 네트워크 혼잡 수준이 변함에 따라 서버에서 클라이언트로의 대역폭이 변동한다.
      • 혼잡은 여러 위치에서 발생할 수 있다.
        • 가정 내(in house): 가정 내 네트워크 환경의 변동
        • 접속 네트워크(in access network): 인터넷 서비스 제공자(ISP)와의 접속 경로에서 발생하는 혼잡
        • 네트워크 코어(in network core): 인터넷 백본 네트워크에서 발생하는 혼잡
        • 비디오(at video server): 서버 자체의 대역폭 및 성능 문제





    2. 패킷 손실 및 지연(pacekt loss and delay)

      • 네트워크 혼잡으로 인한 패킷 손실 및 지여는 비디오 재생의 지연을 초래하거나 비디오 품질 저하를 초래한다.
      • 패킷 손실(packet loss): 데이터 패킷이 전송 도중 손실되는 현상. 비디오 스트리밍 시, 손실된 패킷은 재생 품질을 저하시킬 수 있다.
      • 지연(delay): 데이터 패킷이 목적지에 도달하는 데 걸리는 시간이 지연되는 현상. 이는 비디오 재생의 끊김을 유발할 수 있다.
<br><br>
<br><br>

아래의 그림은 저장된 비디오를 스트리밍하는 과정을 시각적으로 설명한다. 주요 단계와 관련된 네트워크 지연 및 데이터 전송을 보여준다.




주요단계

  1. 비디오 녹화(video recorded)
    • 비디오가 초당 30 frame의 속도로 녹화된다.
    • 그래프의 왼쪽에서 계단 모양의 선이 비디오가 시간에 따라 기록되는 누적 데이터를 나타낸다.






  1. 비디오 전송(video sent)
    • 녹화된 비디오 데이터가 서버에서 클라이언트로 전송된다.
    • network delay가 존재하며, 이는 고정된 값으로 가정한다.
    • 그래프에서 빨간색 선은 서버가 클라이언트로 비디오 데이터를 전송하는 속도를 나타낸다.






  1. 비디오 수신 및 재생(video received, played out at client)
    • client는 네트워크 지연 후 비디오 데이터를 수신하고 재생한다.
    • client는 초당 30 frame의 속도로 비디오를 재생한다.
    • 그래프에서 파란색 선은 client가 비디오 데이터를 수신하고 재생하는 과정을 나타낸다.






  • 스트리밍 동작(Streaming Operation)
    • 스트리밍 중(streaming): 이 시점에서 클라이언트는 비디오의 초반 부분을 재생하고 있으며, 서버는 여전히 비디오의 후반 부분을 전송하고 있다.
      • 클라이언트는 버퍼링을 통해 초반 데이터를 미리 받아 두고, 이후 데이터를 계속해서 받아 재생한다.









Streaming stored video: challenges

저장된 비디오를 스트리밍하는 과정에서 직면하는 주요 도전 과제를 설명한다.

  1. 지속적인 재생 제약(Continuous Playout Constraint)

    • 재생 시작 후 원래 타이밍과 일치해야 함

      • 클라이언트가 재생을 시작하면, 재생은 원래 타이밍과 일치해야 한다.
      • 이는 사용자가 비디오를 시청할 때 끊김 없이 자연스럽게 재생되도록 하는 것을 의미한다.



    • network delay의 변동성(Jitter)

      • 네트워크 지연은 변동될 수 있다. 이를 Jitter라고 한다.
      • 이러한 변동성을 맞추기 위해 client-side buffer가 필요하다.
      • 클라이언트 측 버퍼는 데이터의 변동성을 흡수하여, 일정한 재생을 유지하도록 도와준다.






  1. 기타 도전 과제(Other Challenge)
    • 클라이언트 상호작용(Client Interactivity)
      • 사용자는 비디오를 일시정지(Pause), 빨리 감기(Fast-forward), 되감기(Rewind), 특정 부분으로 이동(Jump throught video)할 수 있어야 한다.


    • 비디오 패킷 손실 및 재전송(Video Packets MayBe Lost, Retransmitted)









Streaming stored video: playout buffering

아래의 그림은 저장된 비디오 스트리밍 과정에서 재생 버퍼링이 어떻게 작동하는지를 시각적으로 설명한다. 네트워크 지연과 지터(Jitter, 지연 변동)를 보상하기 위해 클라이언트 측 버퍼링과 재생 지연을 사용하는 방법을 보여준다.



  1. 비디오 전송(video transmission)
    • 고정 비트율 비디오 전송(constant bit rate video transmission)
      • 서버는 고정 비트율로 비디오 데이터를 전송한다.
      • 그래프에서 빨간색 계단선으로 나타낸다.


  1. 네트워크 지연(Network Delay)
    • 변동 네트워크 지연(variable network delay)
      • 네트워크 지연은 일정하지 않고 변동될 수 있다.
      • 그래프에서 네트워크 지연으로 인해 클라이언트가 데이터를 수신하는 속도가 변동하는 것을 보여준다.


  1. 비디오 수신 및 버퍼링(Video Reception and Buffering)
    • 클라이언트 비디오 수신(client video recpetion)
      • 클라이언트는 서버로부터 비디오 데이터를 수신한다.
      • 그래프에서 검은색 계단선으로 나타낸다.
    • 버퍼링된 비디오(buffered video)
      • 클라이언트는 수신된 비디오 데이터를 재생하기 전에 버퍼링한다.
      • 버퍼링된 데이터는 지연 변동을 흡수하여 일정한 재생을 보장한다.


  1. 비디오 재생(Video Playout)
    • 고정 비트율 비디오 재생(constant bit rate video playout at client)
      • 클라이언트는 버퍼링된 데이터를 일정한 비트율로 재생한다.
      • 그래프에서 파란색 계단선으로 나타낸다.


  • 재생 지연(Playout Delay)

    • 클라이언트 재생 지연(client playout delay)

      • 클라이언트는 네트워크 지연과 지터를 보상하기 위해 재생을 약간 지연시킨다.
      • 이는 클라이언트 측 버퍼링이 필요한 이유 중 하나이다.









Streaming multimedia: DASH

DASH(Dynamic, Adaptive Steaming over HTTP) 프로토콜을 사용한 멀티미디어 스트리밍의 개념과 작동 방식을 설명한다.



  • DASH란 무엇인가?
    • DASH는 Dynamic, Adaptive, Streaming over HTTP의 약자로, HTTP를 통한 동적 적응 스트리밍을 의미한다.
      • Dynamic: 네트워크 상태에 따라 스트리밍 비트레이트를 동적으로 조정
      • Adaptive: 클라이언트의 네트워크 상황에 맞추어 최적의 비디오 품질을 제공
      • Streaming over HTTP: HTTP 프로토콜을 사용하여 비디오 스트리밍을 수행



  • 서버(Server)
    • 비디오 파일을 여러 청크로 나눔(divides video file into multiple chuncks)
    • 각 청크는 각각 다른 속도로 인코딩되고 저장된다.(each chunck stored, encoded at different rates)
    • 매니페스트 파일 제공(manifest file)
      • 매니페스트 파일은 각 청크에 대한 URL을 제공한다.
      • 클라이언트는 이 매니페스트 파일을 사용하여 필요한 청크를 요청한다.



  • 클라이언트(Client)
    • 주기적으로 서버-클라이언트 대역폭 측정(periodically measures server-to-client bandwidth)
    • 매니페스트 파일을 참조하여 한 번에 하나의 청크 요청(consulting manifest, requests one chunk at a time)
      • 현재 대역폭에 따라 최대 코딩 비트레이트 선택(choose maximum coding rate sustainable given current bandwidth)
      • 다른 시간대에 다른 코딩 비트레이트 선택 가능(can choose different coding rates at different points in time)









  • Intelligence at Client: client는 다음을 결정한다.

    1. 청크를 언제 요청할지 결정(when to request chunk)

      • 클라이언트는 버퍼가 고갈되거나 넘치지 않도록 적절한 시점에 청크를 요청해야한다.
      • 버퍼 고갈(buffer starvation): 버퍼에 충분한 데이터가 없어서 재생이 중단되는 상황
      • 버퍼 오버플로우(buffer overflow): 버퍼에 너무 많은 데이터가 쌓여서 새로운 데이터를 저장할 공간이 없는 상황





    2. 어떤 인코딩 버퍼 레이트를 요청할지 결정(what encoding rate to request)

      • 클라이언트는 현재 사용 가능한 대역폭에 따라 더 높은 품질의 비디오를 요청할 수 있다.
      • 더 높은 대역폭이 사용 가능할 때 더 높은 품질 요청(higher quality when more bandwidth available): 클라이언트는 더 많은 대역폭이 사용 가능할 때 더 높은 인코딩 비트 레이트를 선택하여 더 좋은 품질의 비디오를 스트리밍할 수 있다.






    3. 어디서 청크를 요청할지 결정(where to request chunk)

      • 클라이언트는 자신과 "가까운" URL 서버 또는 높은 가용 대역폭을 가진 서버에서 청크를 요청할 수 있다.
      • 가까운 서버(close to client): 클라이언트와 물리적으로 가까운 서버는 일반적으로 더 짧은 응답 시간을 가진다.
      • 높은 가용 대역폭(high available bandwidth): 클라이언트는 현재 높은 대역폭을 제공할 수 있는 서버를 선택할 수 있다.



  • 스트리밍 비디오의 구성요소(Streaming Video = Encoding + DASH + Playout Buffering)
    • 인코딩(Encoding): 비디오를 다양한 비트 레이트로 인코딩하여 여러 청크로 나눈다.
    • DASH: 클라이언트가 네트워크 상태에 따라 적응적으로 청크를 요청하는 프로토콜
    • 재생 버퍼링(Playout Buffering): 네트워크 지연과 지터를 보상하기 위해 클라이언트 측에서 버퍼링을 사용하여 일정한 재생을 유지한다.












Content distribution networks(CDNs)

도전 과제(Challenge): 수백만 개의 비디오 중에서 선택된 콘텐츠를 수십만 명의 동시 사용자에게 어떻게 스트리밍할 것인가?



  1. 단일, Large "Mega-Server": 해결책 안됨
    • 단일 장애 지점(Single Point of Failure)
    • 네트워크 혼잡 지점(Point of Network Congestion)
    • 먼 거리의 클라이언트까지 긴 경로(Long Path to Distant Clients)
    • 나가는 링크로 비디오의 여러 복사본 전송(Multiple Copies of Video Sent Over Outgoing Link)
      • 동일한 비디오의 여러 복사본을 여러 사용자에게 동시에 전송해야 하므로, 서버의 업로드 대역폭이 크게 소모된다.






  1. 지리적으로 분산된 여러 사이트에 여러 복사본 저장 및 제공(Store/Serve Multiple Copies of Videos at Multiple Geographically Distributed Sites, CDN)
    • CDN(Content Distribution Network): 비디오 컨텐츠의 여러 복사본을 다양한 지리적 위치에 분산하고 저장하고 제공하는 네트워크
    1. Enter Deep: access network 깊숙이 CDN 서버를 배치
      • 사용자에게 더 가까운 위치에 CDN 서버를 배치하여 네트워크 지연을 줄인다.
      • e.g. Akamai는 2015년 기준으로 120개국 이상에 240,000대의 서버를 배치했다.
    2. Bring Home: access network 근처(그러나 내부는 아닌)에 큰 cluster 배치
      • Limelight와 같은 회사는 더 적은 수(수십 개)의 큰 클러스터를 배치하여 관리한다.
      • 이러한 클러스터는 접속 네트워크 근처에 위치하여 접근성을 높인다.


CDN의 작동 방식(How CDNs Work)



  1. 컨텐츠 저장(Content Storage)
    • CDN 노드에 컨텐츠 복사본 저장(stores copies of content at CDN nodes)
      • 예를 들어, Netflix는 MadMen의 복사본을 여러 CDN 노드에 저장한다.
      • 이러한 방식으로 컨텐츠가 여러 위치에 분산되어 저장된다.


  1. 구독자의 요청(Subscriber Request)
    • 구독자가 CDN으로부터 컨텐츠 요청(subscriber requests content from CDN)
      • 구독자가 content를 요청하면, CDN은 구독자를 가까운 복사본으로 안내한다.
      • 구독자가 가까운 CDN 노드에서 컨텐츠를 가져온다.


  1. 네트워크 경로 혼자 시 대체 복사본 선택(Altername Copy Selection)
    • 네트워크 경로가 혼잡한 경우 다른 복사본 선택(may choose different copy if network path congested)
      • 네트워크 경로가 혼잡할 경우, CDN은 구독자가 다른 경로의 다른 복사본으로 선택하도록 안내할 수 있다.
      • 이를 통해 네트워크 혼잡을 피하고 더 빠르게 컨텐츠를 제공할 수 있다.




CDNs와 OTT(Over the Top)

  1. OTT란 무엇인가?
    • OTT(Over the Top): 인터넷을 통해 제공되는 컨텐츠 서비스를 의미한다. 예를 들어, Netflix와 같은 서비스가 이에 해당합니다.
      • 인터넷 호스트 간 통신 서비스(Internet host-host communication as a service): OTT 서비스는 인터넷을 통해 호스트 간의 통신을 서비스로 제공한다.


  1. CDN의 역할(Role of CDN)
    • CDN 노드에 컨텐츠 복사본 저장(Stores copies of content at CDN nodes)
      • e.g. Netfilx는 "MadMen"의 복사본을 여러 CDN 노드에 저장한다.
      • 여러 위치에 컨텐츠를 저장하여 사용자에게 더 가까운 곳에서 컨텐츠를 제공할 수 있다.


  1. OTT 도전 과제(OTT Challenges): 혼잡한 인터넷 대처(Coping with a Congested Internet)
    • 어떤 CDN 노드에서 컨텐츠를 가져올 것인가?(From which CDN node to retrieve content?)
      • 사용자 요청 시, 최적의 CDN 노드를 선택하여 컨텐츠를 가져와야 한다.
    • 혼잡 시 시청자의 행동(Viewer behavior in presence of congestion)
      • 네트워크가 혼잡할 때, 시청자가 어떻게 행동할 것인지 예측해고 대처해야한다.
    • 어떤 컨텐츠를 어떤 CDN 노드에 배치할 것인가?
      • 효율적인 컨텐츠 전송을 위해 각 CDN 노드에 어떤 컨텐츠를 배치할지 결정해야 한다.






CDN content access: a closer look

절차(Procedure)

  1. Bob이 비디오 URL을 받음(클라이언트 요청)


  1. Bob의 local DNS server를 통해 URL을 확인(DNS 확인)


  1. netcinema의 DNS가 CNAME을 반환(CNAME 반환)
    • netcinema의 권한 있는 DNS 서버가 CNAME(http://KingCDN.com/NetC6y&B23V)을 반환한다.
    • CNAME은 해당 컨텐츠가 kingCDN에 저장되어 있음을 나타낸다.


  1. kingCDN의 권한 있는 DNS 서버로 요청 전달(request forwarded to KingCDN's authoritative DNS)
    • Bob의 Local DNS 서버는 KingCDN의 권한 있는 DNS 서버로 요청을 전달한다.


  1. KingCDN 서버의 IP 주소 반환(최종 IP 주소 확인,returns IP address of KingCDN server)
    • KingCDN의 권한 있는 DNS 서버가 KingCDN 서버의 IP 주소를 반환한다.


  1. kingCDN 서버에서 비디오 요청(컨텐츠 스트리밍, request video from KingCDN server)
    • Bob은 KingCDN 서버로부터 HTTP를 통해 비디오를 요청하고 스트리밍을 시작한다.






Case study: Netflix

  1. Netflix 계정 관리(Bob manages Netflix account)
    • Bob은 Netflix 등록 및 계정 서버를 통해 자신의 계정을 관리한다.


  1. Netflix 비디오 탐색(Bob browses Netflix video)
    • Bob은 Netflix 웹사이트나 앱을 통해 원하는 비디오를 탐색한다.


  1. 매니페스트 파일 요청 및 반환(Manifest file, requested returned for specific video)
    • Bob이 특정 비디오를 선택하면, 매니페스트 파일 요청되는 반환된다.
    • 매니페스트 파일에는 비디오의 여러 버전에 대한 정보와 해당 파일들이 저장된 위치(CDN 서버)가 포함되어 있다.


  1. DASH 서버 선택 및 스트리밍 시작(DASH server selected, contacted, streaming begins)
    • DASH 서버가 선택되고 연결되며, 스트리밍이 시작된다
    • Bob의 기기는 네트워크 상태에 따라 최적의 비디오 품질을 선택하여 스트리밍을 시작한다.


  • Amazon 클라우드(Amazon cloud)
    • 비디오의 여러 버전이 Amazon 클라우드에 업로드되고, 이 버전들이 CDN 서버에 복사된다.
  • CDN servers
    • 여러 CDN 서버에 비디오 복사본이 저장되어 있어, 사용자에게 가장 가까운 서버에서 비디오를 제공할 수 있다.
    • 이를 통해 네트워크 지연을 최소화하고 스트리밍 성능을 최적화한다.






Socket programming with UDP and TCP

Socket programming

  • 목표: 소켓을 사용하여 통신하는 클라이언트/서버 어플리케이션을 구축하는 방법을 배우는 것
  • Socket: 어플리케이션 프로세스와 end-end trasport protocol 사이의 문 역할





Socket Programming

두 가지 소켓 유형(Two Socket Types)

  1. UDP(User Datagram Protocol)
    • 특징: 신뢰할 수 없는 데이터그램 전송
    • 설명: 데이터그램을 전송할 때 신뢰성, 순서 보장 및 흐름 제어가 제공되지 않는다. 즉, 데이터가 손실되거나 순서가 뒤바뀔 수 있다
    • 용도: 실시간 어플리케이션(e.g. 비디오 스트리밍, 온라인 게임)에서 주로 사용된다.


  1. TCP(Transmission Control Protocol)
    • 특징: 신뢰할 수 있는 바이트 스트림 지향 전송(reliable, byte stream-oriented)
    • 설명: 데이터 전송의 신뢰성, 순서 보장 및 흐름 제어를 제공한다. 데이터가 올바른 순서로 도착하고 손실되지 않도록 보장
    • 용도: 파일 전송, 이메일, 웹 브라우징 등에서 주로 사용된다.


어플리케이션 예제(Application Example)

  1. 클라이언트가 키보드로부터 데이터 읽기: 클라이언트는 키보드에서 문자열 데이터를 읽어 서버로 전송한다.

  1. 서버가 데이터를 수신하고 대문자로 변환: 서버는 클라이언트로부터 데이터를 수신한 후, 해당 문자열을 대문자로 변환

  1. 서버가 수정된 데이터를 클라이언트로 전송: 서버는 수정된 데이터를 클라이언트로 다시 전송한다.

  1. 클라이언트가 수정된 데이터를 수신하고 화면에 표시: 클라이언트는 수정된 데이터를 수신하여 화면에 표시






Socket programming with UDP

Features of UDP

  1. 연결 없음(No Connection)
    • 클라이언트와 서버 간의 "연결"이 없음(No "connection" between client & server)
      • 데이터 전송 전에 연결을 설정하지 않는다.
      • handshaking 과정이 없다. : 데이터를 전송하기 전에 연결을 설정하거나 확인하는 과정이 없다.


  1. 데이터 전송 방법(Data Transmission Method)
    • Sender
      • 각 패킷에 명시적으로 IP 목적지 주소포트 번호를 첨부한다.
      • IP 목적지 주소와 포트 번호 첨부
    • Receiver
      • 수신한 패킷에서 보낸 쪽의 IP 주소와 포트 번호를 추출한다.


  1. 데이터 전송의 신뢰성(Reliability of Data Transmission)
    • 전송된 데이터는 손실되거나 순서가 뒤바뀔 수 있다.
      • 데이터가 전송되는 동안 손실되거나 순서가 뒤바뀔 수 있다.
      • UDP는 신뢰성, 순서 보장, 흐름 제어 등의 기능을 제공하지 않는다.


어플리케이션 관점(Application Viewpoint)

  • UDP는 신뢰할 수 없는 데이터그램 전송을 제공(UDP provides unreliable transfer of groups of bytes "datagrams")
    • UDP는 클라이언트와 서버 간에 바이트 그룹("datagram")을 신뢰할 수 없는 방식을 전송
    • 데이터가 손실되거나 순서가 뒤바뀔 수 있지만, 이로 인해 실시간 애플리케이션에서는 높은 성능을 제공할 수 있다.






Client/Server Socket interaction: UDP



서버 측 과정(Server Side Process)

  1. 소켓 생성(Create Socket)
    • 서버 소켓 생성: 'serverSocket = socket(AF_INET, SOCK_DGRAM)'
      • AF_INET: IPv4 인터넷 프로토콜 사용
      • SOCK_DGRAM: 데이터그램 소켓(UDP)을 사용

  2. 데이터그램 수신(Read Datagram)
    • 데이터그램을 서버 소켓에서 읽기:'read datagram from serverSocket'
      • 클라이언트가 보낸 데이터그램을 수신한다.


3. **응답 작성 및 전송(Write Reply)** - 클라이언트 주소와 포트 번호를 지정하여 응답 작성: 'write reply to **serverSocket** specifying client address, port number' - 클라이언트로 응답을 전송한다.



클라이언트 측 과정(Client Side Process)

  1. 소켓 생성(Create Socket)

    • 클라이언트 소켓 생성: clientSocket = socket(AF_INET, SOCK_DGRAM)
      • AF_INET: IPv4 인터넷 프로토콜 사용
      • SOCK_DGRAM: 데이터그램 소켓(UDP)을 사용

  2. 데이터그램 생성 및 전송(Create and Send Datagram)

    • 서버 IP와 포트 번호로 데이터그램 생성 후 전송: 'Create Datagram with server IP and prot=x; send datagram via clientSocket'
      • 서버의 IP 주소와 포트 번호를 지정하여 데이터그램을 생성하고 전송

  3. 데이터그램 수신(Read Datagram)

    • 클라이언트 소켓에서 데이터그램 읽기: 'Read Datagram from clientSocket'
      • 서버가 보낸 응답 데이터그램을 수신

  4. 소켓 닫기(Close Socket)

    • 클라이언트 소켓 닫기: 'close clientSocket'
      • 데이터 통신이 완료되면 클라이언트 소켓을 닫는다.





Example App: UDP Client

Python UDP 클라이언트(Python UDP Client): Python을 사용하여 UDP 클라이언트를 구현하는 예제

  1. 소켓 라이브러리 포함(Include Python's socket library)
    • 'from socket import *': python의 소켓 라이브러리를 포함

  1. 서버 이름 및 포트 번호 설정(Set Server Name and Port Number)
    • 'serverName = hostname' : 서버의 호스트 이름을 설정
    • 'serverPort = 12000' : 서버의 포트 번호를 설정

  1. UDP 소켓 생성(Create UDP Socket)
    • 'clientSocket = socket(AF_INET, SOCK_DGRAM)'
      • AF_INET: IPv4 인터넷 프로토콜을 사용
      • SOCK_DGRAM: UDP 소켓을 사용한다.

  1. 사용자 입력 받기(Get User Keyboard Input)
    • 'message = raw_input('Input lowercase sentence:')
      • 사용자로부터 소문장 문장을 입력받습니다.

  1. 서버 이름과 포트를 메시지에 첨부하여 소켓에 전송(Attach Server Name and Port to Message and Send into Socket)

    • 'clientSocket.sendto(message.encdoe(), (serverName, serverPort))'
      • 메시지를 UTF-8로 인코딩하고, 서버 이름과 포트 번호를 지정하여 소켓을 통해 전송
  2. 소켓에서 응답 문자 읽기(Read Reply Characters from Socket into String)

    • 'modifiedMessage, serverAddress = clientSocket.recvfrom(2048)':
      • 서버로부터 수신된 응답 메시지를 읽고, 서버 주소를 받습니다.
      • 2048은 버퍼 크기를 의미한다.

  1. 수신된 문자열 출력 및 소켓 닫기(Print Out Received String and Close Socket)
    • 'print modifiedMessage.decode()'
      • 수신된 메시지를 UTF-8로 디코딩하여 출력한다.
    • clientSocket.close()
      • 클라이언트 소켓을 닫는다.







Example App: UDP Server

Python UDP Server

  1. 소켓 라이브러리 포함(Include Python's Socket Library)
    • 'from socket import *': Python의 소켓 라이브러리를 포함한다.

  1. 서버 포트 번호 설정(Set Server Port Number)
    • 'serverPort = 12000' : 서버가 사용할 포트 번호를 설정한다.

3. **UDP 소켓 생성(Create UDP Socket)** - 'serverSocket = socket(AF_INET, SOCK_DGRAM)' - 'AF_INET': IPv4 인터넷 프로토콜을 사용한다. - 'SOCK_DGRAM': UDP 소켓을 사용한다.
  1. 소켓을 로컬 포트 번호에 바인딩(Bind Socket to Local Port Number)
    • 'serverSocket.bind(("", serverPort))'
      • 서버 소켓을 로컬 포트 번호(12000)에 바인딩한다.
      • 빈 문자열 '""'은 모든 네트워크 인터페이스에서 수신을 허용한다.

  1. 서버 준비 상태 출력(Print Server Ready Message)
    • 'print("the server is ready to receive")'
      • 서버가 준비되었음을 알리는 메시지를 출력

  1. 무한 루프를 실행(Loop Forever)
    • while True:
      • 서버는 무한 루프를 실행해서 계속해서 클라이언트의 요청을 처리한다.

  1. UDP 소켓에서 메시지를 읽고 클라이언트 주소 얻기(Read from UDP Socket into Message, Getting Client's Address)
    • 'message, clientAddress = serverSocket.recvfrom(2048)'
      • 클라이언트로부터 메시지를 수신하고, 클라이언트의 주소(IP와 포트 번호)를 얻는다.
      • 2048은 버퍼의 크기를 의미

  1. 메시지를 대문자로 변환(Convert Message to Uppercase)
    • modifiedMessage = message.decode().upper()
      • 수신된 메시지를 UTF-8로 디코딩하고, 대문자로 변환

  1. 변환된 메시지를 클라이언트로 전송(Send Uppercase String Back to Client)
    • 'serverSocket.sendto(modifiedMessage.encode(), clientAddress)'
      • 변환된 메시지를 UTF-8로 인코딩하여 클라이언트의 주소로 전송






Socket Programming with TCP

Client Must Contact Server(클라이언트가 서버에 연락해야함)

  1. Server Process Must First Be Running(서버 프로세스가 먼저 실행 중이어야 함)
    • 서버는 클라이언트의 연결 요청을 수락할 준비가 되어 있어야 한다.
  2. Server Must Have Created Socket That Welcomes Client's Contact(서버가 클라이언트의 연락을 환영하는 소켓을 생성해야 함)
    • 서버는 클라이언트의 요청을 수락할 수 있는 소켓을 생성해야 한다.

Client Contacts Server By(클라이언트가 서버에 연락하는 방법)

  1. Creating TCP Socket(TCP 소켓 생성)
    • 클라이언트는 서버 프로세스의 IP 주소와 포트 번호를 지정하여 TCP 소켓을 생성
  2. When Client Creates Socket(클라이언트가 소켓을 생성할 때)
    • 클라이언트의 TCP는 서버의 TCP와 연결을 설정한다.

When Contacted by Client(서버가 클라이언트로부터 연락을 받으면)

  1. Server TCP Creates New Socket for Server Process to Communicate with Taht Particular Client(서버 TCP는 특정 클라이언트와 통신하기 위해 새로운 소켓을 생성함)
    • 서버는 여러 클라이언트와 동시에 통신할 수 있도록 새로운 소켓을 생성
    • Allows Server to Talk with Multiple Client(여러 클라이언트와 통신 가능)
    • Source Port Numbers Used to Distinguish Clients(소스 포트 번호를 사용하여 클라이언트를 구분)
      • 각 클라이언트는 고유한 소스 포트 번호를 사용하여 구분된다.

어플리케이션 관점(Application Viewpoint)

  • TCP Provides Reliable, In-Order Byte-Stream Transfer(TCP는 신뢰할 수 있는 순차적 바이트 스트림 전송을 제공함)
    • TCP는 클라이언트와 서버 간에 신뢰할 수 있고 순서가 보장된 바이트 스트림 전송을 제공
    • 파이프 역할(Pipe): TCP 연결은 클라이언트와 서버 간의 파이프 역할을 한다.






Client/Server Socket Interaction: TCP

서버 측 과정

  1. 소켓 생성(Create Socket)
    • 'serverSocket = socket()'
      • 서버는 수신 요청을 위해 포트 번호 'x'에 소켓을 생성

  2. 수신 연결 요청 대기(Wait for Incoming Connection Request)
    • 'connectionSocket = serverSocket.accept()`
      • 서버는 클라이언트로부터 연결 요청을 기다린다.
      • 연결 요청이 오면, accept() method를 통해 새로운 소켓 'connectionSocket'을 생성하여 클라이언트와 통신을 시작

  3. 요청 읽기(Read Request)
    • 'read request from connectionSocket'
      • 클라이언트로부터 요청을 'connectionSocket'을 통해 읽는다.

  4. 응답 작성 및 전송(Write Reply)
    • 'write reply to connectionSocket'
      • 클라이언트에게 응답을 작성하여 connectionSocket을 통해 전송한다.

  5. 연결 소켓 닫기(Close Connection Socket)
    • 'close connectionSocket'
      • 통신이 끝나면 connectionSocket을 닫는다.


클라이언트 측 과정(Client Side Process)

  1. 소켓 생성 및 연결(Create Socket and Connect)
    • clientSocket = socket()
      • 클라이언트는 서버의 호스트 ID와 포트 번호 'x'에 연결하기 위해 소켓을 생성
    • connect to hostid, port=x
      • 생성된 소켓을 서버의 호스트 ID와 포트 번호에 연결한다.

  2. 요청 전송(Send Request)
    • send request using clientSocket
      • 클라이언트는 clientSocket을 사용하여 서버에 요청을 전송한다.

  3. 응답 수신(Read Reply)
    • read reply from clientSocket
      • 서버로부터 응답을 clientSocket을 통해 수신한다.

  4. 클라이언트 소켓 닫기(Close Client Socket)
    • close clientSocket
      • 통신이 끝나면 clientSocket을 닫는다.






Example app: TCP client



  1. 소켓 라이브러리 포함
    • from socket import *
      • Python의 소켓 라이브러리를 포함한다.

  2. 서버 이름 및 포트 번호 설정
    • serverName = 'servername'
      • 서버의 호스트 이름을 설정
    • serverPort = 12000
      • 서버의 포트 번호를 설정

  3. TCP 소켓 생성
    • clientSocket = socket(AF_INET, SOCK_STREAM)
      • AF_INET: IPv4 인터넷 프로토콜을 사용
      • SOCK_STREAM: TCP 소켓을 사용한다.

  4. 서버에 연결
    • clientSocket.connect((serverName, serverPort))
      • 서버의 호스트 이름과 포트번호를 지정하여 TCP 연결을 설정한다.

  5. 사용자 입력 받기
    • sentence = raw_input('Input lowercase sentence')
      • 사용자로부터 소문자 문장을 입력받는다.

  6. 메시지 전송
    • clientSocket.send(sentence.encode())
      • 입력된 문장을 UTF-8로 인코딩하여 서버로 전송한다.

  7. 응답 수신
    • modifiedSentence = clientSocket.recv(1024)
      • 서버로부터 응답을 수신합니다.
      • 1024는 버퍼 크기를 의미한다.

  8. 응답 출력 및 소켓 닫기
    • print('From Server: ', modifiedSentence.decode())
      • 서버로부터 수신한 응답을 UTF-8로 디코딩하여 출력합니다.
    • clientSocket.close()
      • 클라이언트 소켓을 닫는다.







Example app: TCP server


  • serverSocket.bind(('', serverPort))
    • 서버 소켓을 지정된 포트 번호에 바인딩한다.
    • 빈 문자열 '""'은 모든 네트워크 인터페이스에서 수신을 허용한다.

  • serverSocket.listen(1)
    • 서버는 들어오는 연결 요청을 대기한다.
    • '1'은 대기열의 최대 연결 수를 설정한다.




Chapter 2: Summary



important Themes

  1. 중앙 집중식 vs 분산형
    • 중앙 집중식: 하나의 중앙 서버가 모든 클라이언트 요청을 처리
    • 분산형: 여러 서버가 요청을 분산 처리
  2. 무상태 vs 상태 유지
    • 무상태: 각 요청이 독립적이며, 서버는 이전 요청의 상태를 유지하지 않음
    • 상태 유지: 서버가 이전 요청의 상태를 유지하여 연속적인 요청을 처리
  3. 확장성
    • 시스템이 증가하는 요청을 처리할 수 있는 능력
    • 시스템의 성능을 저하시키지 않으면서 더 많은 클라이언트와 데이터를 처리할 수 있어야 함
  4. 신뢰성 vs 비신뢰성 메시지 전송
    • 신뢰성: 데이터가 손실되지 않고, 순서대로 정확하게 전달됨
    • 비신뢰성: 데이터 손실 가능성, 순서 보장 없음
  5. 네트워크 엣지의 복잡성
    • 네트워크 말단 장치들이 더 많은 처리와 기능을 수행하게 되는 경향

'학교수업 > 컴퓨터망' 카테고리의 다른 글

Chapter4: Network Layer-Data Plane  (0) 2024.07.04
Chapter3: Transport Layer-2  (0) 2024.07.04
Chapter3: Transport Layer  (0) 2024.07.03
Chapter2: Application Layer  (0) 2024.07.01
Chapter1: Introduction  (0) 2024.06.30

Application layer: overview

  • Network Application의 Principle
  • Web and HTTP
  • E-mail, SMTP, IMAP
  • The Domain Name System: DNS
  • P2P Application
  • Video Streaming, Content distribution networks
  • UDP와 TCP를 활용한 Socket Programming



Our Goal

  1. application-layer protocol의 개념적 및 구현 측면

    • transport-layer service model
    • client-server paradigm
    • peer-to-peer paradigm
  2. 유명한 application-layer protocol을 이해

    • HTTP
    • SMTP, IMAP
    • DNS
  3. programming network applications

    • socket API



Some network Apps

  • social networking
  • Web
  • Text Messaging
  • E-mail
  • Multi-user Network Games
  • Streaming Stored Video(YouTube, Hulu, Netflix)
  • P2P file sharing
  • void over IP(e.g. Skype)
  • Real-time video Conferencing
  • Internet Search
  • Remote Login
    ...



Creating a network app

  1. Network Application Program의 원칙
    • Network Application Program은 서로 다른 end system에서 실행되는 프로그램으로 구성된다.
    • 이러한 program은 network를 통해 통신하며, 예를 들어 web server software가 browser software와 통신하는 방식이다.
    • network core device에 대한 software를 작성할 필요가 없으며, network core device는 사용자 응용 프로그램을 실행하지 않는다.
    • end system의 application은 빠른 app development, propagation을 허용한다.



Client-Server Program

Server

  • server는 항상 켜져 있는 host로, permanent IP address를 가진다. 종종 data center에서 확장을 위해 사용된다.



Client

  • server와 통신을 시도한다.
  • 간헐적으로(intermittently)으로 연결될 수 도 있고, 동적(dynamic)인 IP 주소를 가질 수 있다.
  • client는 서로 직접 통신하지 않는다.
  • e.g. HTTP, IMAP, FTP



Peer-peer architecture

  • 항상 켜져 있는 server가 없으며, 임의의 end system이 직접 통신을 한다.

  • peer는 다른 peer에게 service를 요청하고, 다른 peer에게 service를 제공한다.

    • self scalability(셀프 확장성): 새로운 peer가 새로운 service 용량과 수요를 가져오므로 자체 확장성이 있다.
  • peer는 간헐적으로 연결되며 IP 주소가 변경될 수 있다.

  • e.g. P2P file sharing






Processes Communicating

Process

  • Process: host 내에서 실행되는 program이다.
  • 동일한 Host 내에서 두 Process가 통신할 때는 OS에서 정의한 Inter-Process Communication을 사용한다.
  • 다른 Host에 있는 Process들은 Message를 교환함으로써 통신한다.
  • P2P architecture를 가진 application은 client process와 server process를 가진다.
    • Client와 Server
      • Client Process: 통신을 시작하는 process이다.
      • Server Process: client로부터 통신 요청을 기다리는 process이다.






Sockets

소켓의 개념

  • socket은 process가 network를 통해 meesage를 보내고 받을 수 있도록 하는 통신 종점이다.
  • socket은 문(door)와 유사하게, process가 message를 socket을 통해 밖으로 내보내면, 네트워크의 다른 쪽에 있는 socket으로 전달된다.


소켓의 동작 방식

  • sending process는 message를 socket을 통해 내보내고, transport infrastructure를 통해 receiving process의 socket에 전달한다.
  • 각 통신에는 두 개의 소켓이 관여한다. 하나는 송신 측에 있고, 다른 하나는 수신 측에 있다.




  • 프로세스와 소켓: 네트워크 응용 프로그램에서 각 프로세스는 자신만의 소켓을 가지고 있으며, 이 소켓을 통해 다른 프로세스와 통신한다.

  • transport infrastructrue: 메시지는 sending process에서 receiving process로 이동하는 동안 네트워크의 transport infrastructure(e.g. internet)를 통과한다. sending process는 이 transport infrastructure를 통해 message가 올바른 receiving process에게 전달되기를 기대한다.

  • 두 개의 소켓: 통신에는 항상 두 개의 소켓이 관여한다. 하나는 송신 프로세스의 소켓이고, 다른 하나는 수신 프로세스의 소켓이다. 이러한 방식으로 프로세스 간의 메시지 교환이 이루어진다.


Addressing Processes

process identifier

  • message를 받기 위해, process는 고유한 identifier를 가져야한다.
  • host device는 고유한 32bit IP address를 가진다.


IP address와 port number

  • IP address만으로는 host 내의 특정 process를 식별하기에 충분치 않다.
  • identifier는 IP address와 host의 process와 연관된 port number를 포함해야 한다.


즉, identifier는 IP address와 host에서의 process와 연관된 port number를 반드시 포함해야 한다.



예시 포트 번호

  • HTTP server: port number 80
  • mail server: port number 25


message 전송 예시

  • HTTP 메시지를 특정 웹 서버(e.g. gaia.cs.umass.edu)로 보내기 위해서는 IP 주소와 포트 번호가 필요하다.
  • e.g. IP 주소 128.119.245.12, 포트번호 80




An Application-Layer Protocol Defines

응용 계층 프로토콜이 정의하는 다양한 요소들을 설명한다.
응용 계층 프로토콜이 네트워크 통신에서 어떤 역할을 하고, 어떻게 정의되는지를 설명한다.
각 프로토콜은 메시지의 유형, 구문, 의미, 그리고 교환 규칙을 명확히 하여, 서로 다른 시스템 간의 통신을 원활하게 한다.
또한 오픈 프로토콜과 독점 프로토콜의 차이점도 강조하고 있다.



  • Types of Message Exchanged(메시지 유형)

    • e.g. request, response와 같은 다양한 유형의 메시지들을 정의한다.
  • Message Syntax(메시지 구문)

    • 메시지 내의 필드가 무엇인지, 그리고 필드가 어떻게 구분되는지를 정의한다.
  • Message Semantics(메시지 의문)

    • 각 필드에 담긴 정보의 의미를 정의한다.
  • Rules for Message Exchange(메시지 교환 규칙)

    • process가 언제, 어떻게 메시지를 보내고 응답하는지에 대한 규칙을 정의한다.
  • Open Protocols(오픈 프로토콜)

    • RFC(인터넷 표준 문서)에 정의되어 있으며, 모든 사람이 접근할 수 있다.
    • 이러한 protocol은 상호운용성(interoperability)을 제공한다.
    • e.g. HTTP, SMTP
  • Proprietary Protocols(독점 프로토콜)

    • 특정 기업이나 조직에 의해 소유되며, 일반적으로 공개되지 않는다.
    • e.g. Skype




What Transport Service Does an App Need?

어플리케이션이 네트워크를 통해 데이터를 전송할 때 필요로 하는 다양한 서비스 요구사항을 설명한다.


  • Data Integrity(데이터 무결성)
    • 일부 어플리케이션(e.g. 파일 전송, 웹 트랜잭션)은 100% 신뢰할 수 있는 데이터 전송이 필요하다.
    • 다른 어플리케이션(e.g. 오디오)은 일부 손실을 허용할 수 있다.


  • Timing(타이밍)
    • 인터넷 전화, 대화형 게임 등 일부 어플리케이션은 낮은 지연 시간(low delay)이 필요하다.


  • ThroughtPut(처리량)
    • 네트워크를 통해 전송되는 데이터의 양을 시간 단위로 측정한 것이다. 이는 네트워크 성능의 중요한 지표 중 하나로, 특정 기간 동안 성공적으로 전송된 데이터의 양을 나타낸다.
    • 멀티미디어와 같은 일부 어플리케이션은 '효과적'이기 위해 최소한의 처리량이 필요하다.
    • 다른 어플리케이션("elastic apps")은 가능한 모든 처리량을 활용할 수 있다.
      • elastic apps: 네트워크 환경의 변화에 유연하게 대응하여 사용자가 최적의 경험을 할 수 있도록 설계된 어플리케이션을 의미한다. 이러한 어플리케이션은 네트워크 자원을 효율적으로 사용하고, 변동하는 네트워크 조건에 적응함으로써 안정적인 서비스를 제공한다.
      • 예를 들어, 웹 브라우징, 비디어 스트리밍, 파일 다운로드가 있다.


  • Security(보안)
    • 암호화, 데이터 무결성 등 보안 기능이 필요하다.




Trasnport Service Requirements: Common Apps





Internet Transport Protocols Services

  • TCP Service
    • Reliable Transport(신뢰할 수 있는 전송)
      • TCP는 송신, 수신 프로세스 간의 데이터 전송을 신뢰할 수 있게 만든다.
    • Flow Control(흐름 제어)
      • 송신자가 수신자를 압도하지 않도록 한다.
      • 송신자가 수신자의 처리 능력을 초과하지 않도록 조절하는 메커니즘이다.
      • 이는 데이터 전송 속도를 조절하여 수신자가 데이터 패킷을 처리할 수 있는 시간을 확보해 주는 역할을 한다.
    • Congestion Control(혼잡 제어)
      • 네트워크가 혼잡할 때 송신자를 조절한다.
      • 네트워크 내의 데이터 전송량이 과도해져서 네트워크 성능이 저하되지 않도록 조절하는 메커니즘이다.
    • Connection-Oriented(연결 지향)
      • 클라이언트와 서버 프로세스 간의 설정이 필요하다.
    • 제공하지 않는 기능
      • 타이밍, 최소 처리량 보장(minimum throughtput guarantee), 보안을 제공하지 않는다.


  • UDP Service
    • Unreliable Data Transfer(신뢰할 수 없는 데이터 전송)
      • 송신 프로세스와 수신 프로세스 간의 데이터 전송을 신뢰 할 수 없다.
    • 제공하지 않는 기능
      • 신뢰성, 흐름 제어, 혼잡 제어. 타이밍, 처리량 보장, 보안, 연결 설정을 제공하지 않는다.
    • Q. 왜 UDP를 사용하는가?
      • 특정 상황에서 UDP가 TCP보다 더 적합한 경우가 있기 때문이다.





Internet Transport Protocols Services





Securing TCP

기본(Vanilla) TCP & UDP Sockets

  • 암호화 없음(encryption): 기본 TCP 및 UDP 소켓은 데이터를 암호화하지 않는다.
  • 평문(ClearText) 비밀번호: 평문(ClearText) 비밀번호가 소켓을 통해 전송되며, 인터넷을 통해 평문으로 전달된다.



TLS(Transport Layer Security, 전송 계층 보안)

  • 암호화된 TCP 연결: TLS은 TCP 연결을 암호화하여 데이터의 기밀성을 보장한다.
  • 데이터 무결성(data integrity): TLS는 데이터 무결성을 제공하여 데이터가 전송 중에 변경되지 않았음을 보장한다.
  • End-Point Authentication(종단 인증): TLS은 통신하는 양쪽 종단의 신원을 확인한다.



TLS의 구현

  • Application Layer에서 구현
    • TLS는 application layer에서 구현되며, 응용 프로그램은 TLS 라이브러리를 사용해 TCP를 통해 보안 통신을 수행한다.
  • TLS Socket API
    • 평문 데이터(ClearText)가 socket을 통해 입력되면, TLS는 이를 암호화하여 인터넷을 통해 암호화된 상태로 전송한다.






Web and HTTP

  • 웹 페이지는 여러 개의 Object로 구성된다. 각 Object는 다른 웹 서버에 저장될 수 있다.
  • Object는 HTML 파일, JPEG image, Java applet, audio file 등 다양한 유형이 될 수 있다.
  • 웹 피이지는 base HTML file로 구성되며, 이 HTML 파일은 여러 referenced objects를 포함한다. 각 객체는 URL을 통해 접근할 수 있다.






HTTP overview

HTTP: HyperText Transfer Protocol

  • Web's application layer protocol



  • client/server model
    • Client: HTTP 클라이언트는 웹 브라우저이다. 이는 HTTP Protocol을 사용하여 웹 object를 request하고 receive하여, 이를 "display"한다.
    • Server: HTTP 서버는 request에 response하여 HTTP Protocol을 사용하여 web object를 보낸다.



  • HTTP uses TCP

    • Client가 TCP 연결을 시작한다.

      • 클라이언트 소프트웨어(e.g. web browser)는 TCP socket을 생성한다.
      • 소켓은 네트워크 통신의 종점(endpoint) 역할을 하며, 네트워크를 통해 데이터를 송수신하는 interface를 제공한다.
      • 클라이언트는 연결할 서버의 IP 주소와 포트 번호를 통해 TCP 연결을 한다.(HTTP 서비스의 기본 포트는 80)
    • Server는 Client로 부터 TCP connection을 수락한다.

      • Server는 Client의 TCP connection 요청을 받아들인다.
    • HTTP Message 교환

      • 웹 브라우저(HTTP Client)와 웹 서버(HTTP Server) 간에 HTTP Message가 교환된다.
    • TCP 연결 종료

      • HTTP message 교환 후, TCP connection은 닫힌다.



  • HTTP is "stateless"

    • 서버는 이전 클라이언트 요청에 대한 정보를 유지하지 않는다.

      • HTTP는 상태를 유지하지 않는 프로토콜이기에, 서버는 이전 클라이언트 요청에 대한 정보를 기억하지 않는다.
    • 상태(state)를 유지하는 프로토콜의 복잡성

      • 상태(state)를 유지하는 프로토콜은 복잡하다.
      • 과거의 history(state)를 유지해야 하고, 서버나 클라이언트가 충돌(crash)하면 그들의 "state"가 일치하지 않을 수 있으며 이를 조정해야한다.






HTTP connections: two types

HTTP 연결의 두 가지 주요 유형인 non-persistent와 persistent



Non-Persistent HTTP(비지속성 HTTP)

  • 과정:
    1. 클라이언트는 서버와 TCP 연결을 연다.
    2. 단 하나의 객체가 TCP 연결을 통해 전송된다.
    3. TCP 연결이 닫힌다.
  • 특징:
    • 여러 객체를 다운로드하려면 여러 TCP 연결이 필요하다
    • 각 객체마다 새로운 TCP 연결을 설정해야 하므로 오버헤드가 증가한다.



Persistent HTTP(지속성 HTTP)

  • 과정
    1. 클라이언트는 서버와 TCP 연결을 연다.
    2. 단일 TCP 연결을 통해 여러 객체를 전송할 수 있다.
    3. 모든 객체가 전송된 후에 TCP 연결이 닫힌다.
  • 특징
    • 하나의 TCP 연결로 여러 객체를 전송할 수 있어 오버헤드가 줄어든다.
    • TCP 연결을 반복해서 열고 닫는 시간을 절약할 수 있다.






Non-persistent HTTP: example

User enters URL: www.someSchool.edu/someDepartment/home.index (containing text, references to 10 jpeg images)

  1. 사용자가 URL을 입력한다.



  1. HTTP 클라이언트가 TCP 연결을 시작한다.
    • HTTP 클라이언트는 www.someSchool.edu의 HTTP 서버 프로세스(포트 80)로 TCP 연결을 시작한다.
    • 클라이언트는 TCP 소켓을 생성하여 서버의 포트 80에 연결 요청을 보낸다.



  1. 서버가 TCP 연결을 수락한다.
    • www.someSchool.edu의 HTTP 서버는 포트 80에서 TCP 연결 요청을 수락한다.
    • server는 client에 연결이 수락되었음을 알린다.



  1. HTTP request message 전송
    • HTTP 클라이언트는 TCP connection socket을 통해 URL을 포함한 HTTP request message를 전송한다.
    • message는 클라이언트가 someDepartment/home.index 객체를 요청하고 있음을 나타낸다.



  1. HTTP 요청 메시지 수신
    • HTTP 서버는 request message를 receive하고, 요청된 객체를 포함한 HTTP response message를 작성하여 자신의 소켓을 통해 보낸다.



  1. TCP 연결 종료
    • HTTP 서버는 응답 메시지를 보낸 후 TCP 연결을 닫는다.



  1. HTTP response message receive
    • HTTP client는 HTML 파일을 포함한 response message를 수신하고, 이를 표시한다.
    • HTML 파일을 파싱하면서, 클라이언트는 10개의 참조된 JPEG 객체를 찾는다.



  1. 각 JPEG Object에 대한 반복 과정
    • Client는 10개의 JPEG 객체 각각에 대해 앞에서 설명한 1-5단계를 반복한다.
    • 각 객체마다 새로운 TCP 연결이 설정되고, 객체가 전송된 후 연결이 종료된다.





Non-Persistent HTTP: Response Time

RTT(Round-Trip Time)

  • 정의: clinet에서 server로 작은 패킷이 이동하고, 다시 서버에서 클라이언트로 돌아오는 데 걸리는 시간



HTTP Response Time

  • Non-Persistent HTTP의 경우, 각 object에 대한 response time은 다음과 같이 구성된다.
  1. TCP 연결 초기화: TCP 연결을 설정하는 데 하나의 RTT가 필요하다.
  2. HTTP 요청 및 첫 번째 응답 바이트 수신: HTTP request를 보내고, 첫 번째 몇 바이트의 HTTP response을 받는 데 하나의 RTT가 필요하다.
  3. 객체/파일 전송 시간: 객체나 파일을 전송하는 데 필요한 시간이다. 나머지 객체를 수신하는 데 추가 시간이 걸린다.



이를 통해 Non-Persistent의 response Time은 다음과 같이 계산된다.

Non-persistent HTTP response time = 2 * RTT + file transmission time





Persistent HTTP(HTTP 1.1)



Non-Persistent의 문제점

  1. 2개의 RTT 필요
    • 각 객체마다 2개의 RTT(Round-Trip Time)가 필요하다. 첫 번째의 RTT는 TCP 연결을 설정하는데, 두 번째는 HTTP 요청을 보내고 응답을 받는 데 사용된다.
  2. 운영체제 오버헤드
    • 각 TCP 연결을 설정하고 해제하는 과정에서 운영체제의 오버헤드가 발생한다.
  3. 병렬 연결
    • 많은 웹 브라우저는 여러 개의 참조 객체를 병렬로 가져오기 위해 여러 개의 TCP 연결을 동시에 연다. 이는 네트워크 리소스를 많이 사용하게 된다.



Persistent HTTP

  1. 연결 유지

    • 서버는 응답을 보낸 후 TCP 연결을 유지한다. 이를 통해 동일한 클라이언트와 서버 간의 후속 HTTP message는 기존의 열린 연결을 통해 전송된다.
  2. 참조된 객체 요청

    • 클라이언트는 referenced object를 마주할 때마다 즉시 요청을 보낼 수 있다. 이는 HTTP 요청을 발견하는 즉시서버에 요청할 수 있게 하여 대기시간을 줄인다.
  3. RTT 감소

    • 모든 referenced object에 대해 단일 RTT가 필요하다. 이는 Non-Persistent에 비해 응답 시간을 절반으로 줄일 수 있다.






HTTP request message

  • HTTP message에는 두 타입이 존재한다. request, response
  • HTTP reqeust message
    • ASCII(human-readable format)



'\r\n'은 carriage return, line feed를 나타내며, 줄의 끝을 표시한다.

  • carriage return(\r, CR) : 텍스트의 줄을 끝내고 커서를 현재 줄의 처음으로 이동시키는 역할
  • line feed(\n, LF) : 텍스트의 줄을 끝내고 커서를 다음 줄로 이동시키는 역할



  1. Request Line
    • 요청 라인은 다음과 같은 형식으로 구성된다. "method URL version"
    • e.g. GET /index.html HTTP/1.1
    • method: 클라이언트가 수행하고자 하는 동작을 지정한다. 일반적으로 사용되는 method에는 'GET', "POST', 'HEAD' 등이 있다.
    • URL: 요청하는 resource의 path를 지정한다.
    • version: 사용 중인 HTTP의 version을 지정한다.



  1. Header Lines
    • 요청에 대한 추가적인 정보를 제공한다.
    • 각 헤더 라인은 'header filed name: value'의 형식으로 구성된다.
      Host: www-net.cs.umass.edu
      User-Agent: Firefox/3.6.10
      Accept: text/html,application/xhtml+xml
      Accept-Language: en-us,en;q=0.5
      Accept-Encoding: gzip,deflate
      Accept-Charset: ISO-8859-1,utf-8;q=0.7
      Keep-Alive: 115
      Connection: keep-alive



  1. Blank Line
    • header section의 끝을 나타낸다.
    • 빈 줄 이후에는 실제 데이터(entitiy body)가 올 수 있다. GET 요청의 경우 entity body가 없다.
      GET /index.html HTTP/1.1\r\n
      Host: www-net.cs.umass.edu\r\n
      User-Agent: Firefox/3.6.10\r\n
      Accept: text/html,application/xhtml+xml\r\n
      Accept-Language: en-us,en;q=0.5\r\n
      Accept-Encoding: gzip,deflate\r\n
      Accept-Charset: ISO-8859-1,utf-8;q=0.7\r\n
      Keep-Alive: 115\r\n
      Connection: keep-alive\r\n
      \r\n






HTTP Request Message: General Format






Other HTTP request message

HTTP Request message: web server에 특정 resource를 요청하는 클라이언트(e.g. web browser)에 의해 생성된다. 이 message는 ASCII 텍스트 형식으로 작성되어 사람이 읽을 수 있다.



POST method

  • 사용 사례: 웹 페이지에서 사용자 입력을 서버로 전송할 때 사용된다.

  • 동작 방식: 사용자 입력 데이터를 HTTP POST 요청 메시지의 entity body에 포함시켜 서버로 보낸다.

  • e.g.

      POST /path/to/resource HTTP/1.1
      Host: www.example.com
      Content-Type: application/x-www-form-urlencoded
      Content-Length: 27
    
      field1=value1&field2=value2



GET method(for sending data to server)

  • 사용 사례: 사용자 데이터를 URL 필드로 포함시켜 서버로 전송할 때 사용된다.
  • 동작 방식: 데이터는 URL의 Query String에 포함된다.
  • e.g.
      GET /animalsearch?monkeys&banana HTTP/1.1
      Host: www.somesite.com



HEAD method

  • 사용 사례: 특정 URL에 대한 header만 요청만 할 때 사용된다.
  • 동작 방식: 서버는 지정된 URL에 대해 HTTP GET 요청을 했을 때 반환될 header만을 응답한다.
  • e.g.
      HEAD /index.html HTTP/1.1
      Host: www.example.com



PUT method

  • 사용 사례: 서버에 새 파일을 업로드하거나 기존 파일을 대체할 때 사용된다.

  • 동작 방식: 지정된 URL에 있는 파일을 POST 요청 메시지의 entity 본문 내용으로 완전히 대체한다.

  • e.g.

      PUT /newfile.txt HTTP/1.1
      Host: www.example.com
      Content-Type: text/plain
      Content-Length: 11
    
      Hello world




HTTP response message

HTTP response message의 구성

  1. Status Line
    • 형식: HTTP-version statusCode statusPhrase
    • e.g. HTTP/1.1 200 OK
    • HTTP-version: 사용된 HTTP의 version
    • statusCode: 요청의 처리 결과를 나타내는 3자리 숫자
    • statusPhrase: 상태코드에 대한 설명


  1. Header Lines
    • response에 대한 추가적인 정보를 제공
    • 각 헤더 라인은 'header field name : value' 형식으로 구성
    • e.g.
        Date: Sun, 26 Sep 2010 20:09:20 GMT
        Server: Apache/2.0.52 (CentOS)
        Last-Modified: Tue, 30 Oct 2007 17:00:02 GMT
        ETag: "17dc6-a5c-bf716880"
        Accept-Ranges: bytes
        Content-Length: 2652
        Keep-Alive: timeout=10, max=100
        Connection: Keep-Alive
        Content-Type: text/html; charset=ISO-8859-1


  1. Blank Line
    • header section의 끝을 나타냄


  1. Data
    • 요청된 객체의 실제 데이터가 포함된다. e.g. 요청된 HTML 파일의 내용




HTTP response status codes

  • status code는 response message의 첫 번째 줄에 나타난다.
    • e.g. HTTP/1.1 200 OK
  1. 200 OK
    • 의미: 요청이 성공적으로 처리되었으며, 요청된 객체가 메시지에 포함된다.
    • 예시: 클라이언트가 웹 페이지를 요청했을 때, 서버가 해당 페이지를 성공적으로 찾고 반환할 때 사용된다.
  2. 301 Moved Permanently
    • 의미: 요청된 객체가 영구적으로 다른 위치로 이동되었다. 새 위치는 응답 메시지를 Location header field에 지정된다.
    • 예시: 특정 URL의 컨텐츠가 다른 URL로 영구적으로 이동된 경우 사용된다.
  3. 400 Bad Request
    • 의미: 서버가 요청 메시지를 이해할 수 없다. 이는 요청 메시지가 잘못되었을 때 발생한다.
    • 예시: 클라이언트가 잘못된 형식의 요청을 보낼 때 사용된다.
  4. 404 Not Found
    • 의미: 요청된 문서를 서버에서 찾을 수 없다.
    • 예시: 클라이언트가 존재하지 않는 페이지를 요청했을 때 사용된다.
  5. 505 HTTP Version Not Supported
    • 의미: 서버가 요청 메시지에서 사용된 HTTP 버전을 지원하지 않는다.
    • 예시: 클라이언트가 서버가 지원하지 않는 버전의 HTTP를 사용하여 요청을 보냈을 때 사용된다.





Trying out HTTP(client side) for yourself

HTTP 클라이언트 측 직접 실행

  1. Telnet을 사용하여 웹 서버에 연결하기

    • telnet을 사용하여 HTTP 서버의 기본 포트(80)로 TCP 연결을 연다.
    • e.g. telnet gaia.cs.umass.edu 80
      • 이는 gaia.cs.umass.edu 서버의 80번 포트에 TCP 연결을 연다.
  2. GET HTTP 요청 입력

    • telnet 연결이 성공하면, GET 요청을 입력할 수 있다.
    • e.g.
        GET /kurose_ross/interactive/index.php HTTP/1.1
        Host: gaia.cs.umass.edu
    • 'Host' header는 요청하는 host의 이름을 지정한다. HTTP/1.1에서는 필수이다.
    • 요청을 보낸 후, carriage return과 line-feed를 두 번 입력하여 request를 완료한다.
  3. HTTP 응답 메시지 확인

    • server는 요청에 대한 응답 메시지를 반환한다.

    • 응답 메시지는 상태 라인, 헤더 라인, 그리고 선택적으로 데이터 본문으로 구성된다.

      HTTP/1.1 200 OK
      Date: Mon, 27 Jul 2009 12:28:53 GMT
      Server: Apache/2.2.14 (Win32)
      Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
      Content-Length: 88
      Content-Type: text/html
      Connection: Closed
      
      <html>
      <body>
      <h1>It works!</h1>
      </body>
      </html>




Maintaining User/Server State: Cookies

Recall :HTTP GET/response interaction is stateless. 그렇기에 서버는 각각의 HTTP 요청이 독립적인 것으로 간주한다.
이를 해결하기 위해 Cookie가 등장했다.



HTTP의 Stateless의 특성

  1. 상태 비유지(Stateless)

    • HTTP 요청/응답 상호작용은 독립적(independent)이다. 각 요청은 독립적으로 처리되며, 이전 요청이나 이후 요청의 상태를 추적하지 않는다.
    • e.g. 클라이언트가 서버에 HTTP GET 요청을 보내고 서버가 응답을 반환하면, 이 요청과 응답의 상태는 다른 요청/응답에 영향을 주지 않는다.
  2. 다단계 교환(multi-step exchange) 없음

    • HTTP는 다단계 교환(multi-step exchange)의 개념이 없다. 즉, 웹 '트랜잭션'을 완료하기 위해 여러 HTTP 메세지를 주고받는 과정에서 "state"를 추적하지 않는다.
    • 클라이언트와 서버는 다단계 교환의 상태를 추적할 필요가 없으며 각 HTTP 요청은 독립적이다.
  3. 복구(recover) 필요 없음

    • 부분적으로 완료된 트랜잭션이 완전히 완료되지 않은 경우에도 클라이언트와 서버는 이를 '복구'할 필요가 없다.
    • 이는 요청이 실패하거나 중단될 때 시스템의 복잡성을 줄이는 데 도움이 된다.


a stateful protocol

  • 상태를 유지하는 protocol에서는 클라이언트와 서버는 연속적인 요청과 응답의 상태를 추적한다.

  • 예를 들어, DB transaction에서는 다음과 같은 상태 유지 특성이 필요하다.

  • 상태 유지(Stateful)

    • client가 두 가지 변경 사항을 X에 적용하려고 시도한다고 가정해보자. Stateful protocol에서는 이러한 변경 사항이 모두 적용되거나 전혀 적용되지 않아야 한다.
    • 이는 부분적으로 적용된 변경 사항이 시스템 일관성을 해치지 않도록 보장한다.
  • 예상 시나리오

    • 클라이언트가 X를 X'로, 그리고 X'를 X''로 두 단계로 X라는 state를 변경하려고 한다.
    • 이러한 변경은 연속적인 단계로 이루어져야 하며, 상태가 연속적으로 유지되어야 한다.
    • Q. 만일 t' 시점에서 네트워크 연결이 중단되거나 클라이언트가 충돌(crash)하면 어떻게 되는가?
      • 클라이언트가 첫 번째 변경을 완료하고 두 번째 변경을 시작하려는 순간(t')에 중단되면, X' 상태가 완료되지 않거나 불완전한 상태로 남게된다.
  • 상태 유지의 필요성

    • 클라이언트는 두 단계의 변경이 모두 완료되거나 전혀 완료되지 않아야 한다. 이는 트랜잭션의 원자성을 보장한다.






Cookie의 역할

  • 상태 유지: HTTP는 기본적으로 상태를 유지하지 않는 프로토콜이다. 즉, 서버는 클라이언트의 이전 요청을 기억하지 않는다. 쿠키는 이 문제를 해결하기 위해 사용되며, 서버와 클라이언트간의 상태를 유지하는 데 도움을 준다.
  • 사용자 식별: 쿠키는 사용자를 식별하는 데 사용된다. 이를 통해 사용자의 세션을 유지하고 맞춤형 경험을 제공할 수 있다.






Cookie의 구성 요소

  1. 쿠키 헤더 라인(HTTP response message)
    • 서버는 HTTP response message의 'Set-Cookie' header를 통해 클라이언트에 쿠키를 설정한다.
    • e.g. 'Set-Cookie: sessionID=abc123; Expires=Wed, 09 Jun 2021 10:18:14 GMT; Path=/; Domain=.example.com'



  1. 쿠키 헤더 라인(next HTTP request message)
    • 클라이언트는 이후의 HTTP request message에 'Cookie' header를 포함시켜 서버에 쿠키를 보낸다.
    • e.g. 'Cookie: sessionID=abc123'



  1. Cookie file(클라이언트 측)
    • client의 browser는 server로부터 받은 Cookei를 local file에 저장한다.
    • 이는 브라우저가 관리하며, 각 쿠키는 도메인, 경로, 만료 시간 등의 속성을 가진다.



  1. backend database(서버 측)
    • server는 각 클라이언트에 대한 상태 정보를 백엔드 데이터베이스에 저장한다.
    • 쿠키는 클라이언트를 식별하는 키 역할을 한다.






Example

  1. Susan은 노트북의 browser로 특정한 e-commerce site에 처음으로 방문한다.
  2. 첫 번째 HTTP request가 site에 도착하면, site는 unique ID(Cookie)를 생성하고, 이를 백엔드 데이터베이스에 저장한다.
  3. 서버는 'Set-Cookie' header를 통해 클라이언트에 쿠키를 설정한다.
  4. Susan이 동일한 site를 다시 방문하면, browser는 cookie를 포함한 HTTP request을 서버에 보낸다.
  5. Server는 Cookie ID를 통해 사용자를 식별하고, 백엔드 데이터베이스에서 해당 사용자 정보를 검색한다.
  6. 이를 통해 Server는 사용자가 이전에 방문했던 정보를 바탕으로 맞춤형 서비스를 제공할 수 있다.








HTTP cookies: comments



쿠키의 주요 용도

  1. Authorization(인증)
    • 사용자가 웹사이트에 로그인하면, 서버는 사용자를 식별하기 위해 쿠키를 설정한다. 이후 요청마다 클라이언트는 쿠키를 서버에 전송하여 사용자를 인증한다.



  1. Shopoing Carts(쇼핑 카드)
    • 사용자가 온라인 쇼핑몰에서 아이템을 장바구니에 추가할 때, 쿠키를 사용하여 아이템 목록을 저장한다. 이를 통해 사용자가 다른 페이지로 이동하거나 브라우저를 닫았다가 다시 열어도 장바구니의 상태를 유지할 수 있다.



  1. Recommendations(추천 시스템)
    • 웹사이트는 사용자의 방문 기록과 활동을 추적하여 개인화된 추천 컨텐츠를 제공한다. 이는 쿠키를 통해 사용자의 선호도와 관심사를 저장하고 분석하여 가능해진다.



  1. User Session State(사용자 세션 상태)
    • web mail 등과 같은 어플리케이션에서 사용자의 세션 상태를 유지하는데 사용된다. 쿠키를 통해 사용자의 세션이 지속되어, 로그인 상태가 유지되고, 작업이 중단되지 않는다.






Challenge: How to keep state

  • protocol endpoint에서의 상태유지: 송신자와 수신자가 여러 트랜잭션 동안 상태 정보를 유지하는 것을 의미한다. 이는 네트워크 통신의 일관성을 보장하고, 각 트랜잭션이 이전 트랜잭션의 문맥을 인식할 수 있도록 한다.
  • Cookie를 사용한 상태 유지: Cookie는 HTTP 메시지를 통해 상태 정보를 전달하고 유지하는 데 사용된다.






Cookie and Privacy

  • 쿠키는 웹사이트가 사용자의 활동을 추적하고 많은 정보를 수집할 수 있게 한다.
  • e.g. 쿠키를 사용하면 웹사이트는 사용자가 방문한 페이지, 클릭한 링크, 검색한 내용 등을 기록할 수 있다.
  • 이는 사용자 경험을 개선하는 데 도움이 되지만, 사용자 privacy를 침해할 수 있는 문제점도 있다.






Example: displaying a NY Times Web page

NY Times(뉴욕 타임즈) 웹 페이지 표시

  1. 사용자가 nytimes.com에 HTTP GET request를 보낸다.
  2. server는 HTTP 응답으로 HTML 파일을 보낸다.
  3. HTTP 파일은 AdX.com과 같은 광고 서버로부터 광고를 가져오는 링크를 포함한다.
  4. 브라우저는 광고 서버에 HTTP GET 요청을 보낸다.
  5. 광고 서버는 광고 데이터를 반환한다.
  6. 브라우저는 웹 페이지와 광고를 조합하여 사용자에게 표시한다.






Example: tracking a user's browsing behavior

주요 요소

  1. nytimes.com(sports): 사용자가 방문한 웹사이트
  2. AdX.com: 광고 서버, 사용자가 직접 방문하지 않았지만, 광고를 제공하는 제 3자 서버
  3. 사용자의 브라우저: nytimes.com을 방문하는 클라이언트
  4. Cookie(쿠키): 웹사이트가 사용자 브라우저에 저장하는 작은 데이터 파일. 여기서 두 가지 유형의 쿠키가 사용된다.
    • First-Party 쿠키: 사용자가 방문한 웹사이트(nytimes.com)가 설정한 쿠키
    • Third-Party 쿠키: 사용자가 직접 방문하지 않은 제 3자 웹사이트(AdX.com)가 설정한 쿠키



단계별 과정

  1. HTTP GET 요청(nytimes.com)

    • 사용자가 nytimes.com의 스포츠 페이지를 방문
    • 브라우저가 nytimes.com 서버에 HTTP GET 요청을 보냄
  2. HTTP 응답(Set-cookie: 1634)

    • nytimes.com 서버는 HTTP 응답과 함께 첫 번째 쿠키(1634)를 설정
    • 이 쿠키는 nytimes.com이 설정한 first-party 쿠키이다.
  3. 광고 요청(HTTP GET, Referrer: NY Times Sports)

    • nytimes.com 페이지에 포함된 광고를 로드하기 위해 브라우저가 AdX.com 서버에 HTTP GET 요청을 보낸다.
    • 이 request에는 참조 정보(Referrer)로 NY Times Sports 페이지가 포함된다.
  4. HTTP 응답(Set-Cookie: 7493)

    • AdX.com 서버는 HTTP 응답과 함께 두 번째 쿠키(7493)를 설정한다.
    • 이 쿠키는 AdX.com이 설정한 third-party 쿠키이다.




Example: tracking a user's browsing behavior

쿠키와 사용자 추적

  1. 예시 시나리오
    • 세 개의 웹 사이트가 등장한다. nytimes.com, AdX.com, 그리고 socks.com.
    • 사용자가 nytimes.com을 방문
      • 사용자가 nytimes.com에 접속하면, 이 웹 사이트는 AdX.com과 같은 광고 제공자의 컨텐츠나 광고를 포함할 수 있다.
      • 이 상호작용 동안 쿠키가 설정된다. 예를 들어 AdX.com은 사용자의 브라우징 정보를 기반으로 특정 쿠키를 설정할 수 있다.


  1. 쿠키의 역할

    • First-party Cookie

      • 사용자가 직접 방문한 웹사이트(nytimes.com)에서 설정된다.
      • e.g. nytimes.com에서 설정된 쿠키 1634: sports, 2/15/22
    • Third-party Cookie

      • 사용자가 직접 방문하지 않은 제3의 웹사이트('AdX.com')에서 설정된다.
      • e.g. AdX.com에서 설정된 쿠키 7493: NY Times Sports, 2/15/22


  1. 다른 웹사이트 방문
    • 사용자가 'socks.com'을 방문하면, 이 사이트의 요청이 'AdX.com'으로 전달되고, 쿠키 정보가 포함된다. (Referrer: socks.com, cookie: 7493)
    • 응답: AdX.com은 socks.com에서의 활동을 추적하고 관련 쿠키 정보를 업데이트한다.(Set cookie:7493)


  1. 추적 목적
    • AdX.com은 사용자가 여러 사이트에서 방문한 정보를 추적한다.
    • 이를 통해 사용자의 브라우징 기록을 기반으로 타켓 광고를 제공할 수 있다.




Cookies: tracking a user's browsing behavior(one day later)

  1. 이전 방문 기록
    • 사용자가 'nytimes.com'을 방문했고, 이 때 'AdX.com'의 Cookie ID '1634'을 설정했다.
    • 이후 사용자가 'socks.com'을 방문하면서 'AdX.com'의 Cookie ID '7493'이 설정되었다.


  1. 하루 후, 사용자가 nytimes.com 다시 방문
    • 이번에는 'nytimes.com'의 '예술 섹션(arts)'을 방문한다.
    • 웹 브라우저는 이전에 설정된 쿠키들을 포함하여 HTTP request를 보낸다. 즉, 'nytimes.com'과 'AdX.com' 모두 이전에 설정된 쿠키들을 사용하여 사용자를 인식한다.


  1. 쿠키를 통한 맞춤형 광고 제공
    • 'AdX.com'은 사용자가 'socks.com'에서 설정된 쿠키를 통해 사용자가 이전에 'socks.com'을 방문했음을 알고 있다.
    • 그 결과, 'nytimes.com'의 예술 섹션을 볼 때 'socks.com'과 관련된 광고가 표시된다.




Web Caches(Proxy Servers)

proxy servers(웹 캐시) 는 웹 브라우저와 원본 서버 사이에 위치하여 웹 요청을 처리하는 중간 서버이다.
proxy server의 목표는 client request를 original server가 관여하지 않고 수행하는 것이다.
이는 응답 시간을 줄이고, 네트워크 트래픽을 줄이며, 서버 부하를 줄이는 데 도움을 준다.



웹 캐시(proxy server)

  1. 웹 캐시 설정

    • 사용자가 브라우저를 구성하여 웹 캐시를 사용하도록 설정한다.
    • 이 설정 후 브라우저는 모든 HTTP 요청을 웹 캐시로 보낸다.
  2. 캐시에 객체가 있는 경우

    • 요청한 객체가 캐시에 이미 저장되어 있으면, 캐시는 해당 객체를 클라이언트에게 반환한다.
    • 이 과정에서 원본 서버와의 통신이 필요하지 않다.
  3. 캐시에 객체가 없는 경우

    • 요청한 객체가 캐시에 없으면, 캐시는 원본 서버에 요청을 보낸다.
    • 원본 서버로부터 객체를 수신한 후, 캐시는 해당 객체를 저장한 다음 클라이언트에게 반환한다.





Cookies: Tracking a User's Browsing Behavior

쿠키의 용도

  1. First Party Cookies(첫 번째 쿠키)

    • 사용자가 방문한 웹사이트에서 직접 설정한 쿠키
    • 특정 웹사이트에서 사용자의 행동을 추적하는 데 사용됨
  2. Third Party Cookies(세 번째 쿠키)

    • 사용자가 방문하지 않은 다른 웹사이트에서 설정한 쿠키
    • 여러 웹사이트에 걸쳐 사용자의 행동을 추적할 수 있다.
    • e.g. 광고 네트워크가 여러 웹사이트에 걸쳐 사용자의 행동을 추적하여 맞춤형 광고를 제공한다.


추적 방법

  • 추적이 사용자가 모르는 사이에 이루어질 수 있다.
    • e.g. 광고가 표시되는 대신 보이지 않는 링크를 통해 HTTP 요청이 전송될 수 있다.


브라우저별 쿠키 추적 방지

  • Firefox와 Safari: 기본적으로 세 번째 쿠키를 통한 추적을 방지한다.
  • Chrome: 2023년부터 세 번째 쿠키를 통한 추적을 방지한다.




GDPR(EU General Data Protection Regulation) and Cookies

  • GDPR은 유렵 연합(EU)의 개인정보 보호규정으로, 2018년 5월 25일부터 발효되었다. 이 규정은 개인의 개인정보 보호를 강화하고, 데이터 처리 및 이동을 규제하는 것을 목적으로 한다.
  • 쿠키와 GDPR
    • 쿠키는 웹사이트가 사용자의 브라우저에 저장하는 작은 데이터 파일로, 사용자 식별 및 활동 추적에 사용된다.
    • GDPR에 따르면, 쿠키가 개인을 식별할 수 있는 정보를 포함할 경우 이는 개인 데이터로 간주된다.





Web caches(proxy servers)

Web caches의 역할

  1. 클라이언트와 서버 역할

    • web cache는 클라이언트와 서버로 모두 작동한다.
    • client 역할: 원본 서버에 대한 요청을 보낸다.
    • server 역할: 원래 요청한 클라이언트에게 응답을 제공한다.
  2. 설치 위치

    • web cache는 주로 ISP에 의해 설치된다.
    • 이는 대학, 회사, 가정용 ISP 등 다양한 환경에서 사용된다.

Web cache의 목적

  1. 응답 시간 단축: web cache는 클라이언트에 더 가까이 위치하기에 요청에 대한 응답 시간이 줄어든다.
  2. 네트워크 트래픽 감소: 웹 캐시는 원본 서버로 가는 트래픽을 줄여, 네트워크의 부하를 감소시킨다.
  3. 인터넷 상의 웹 캐시 밀도:
    • 인터넷은 여러 웹 캐시로 밀집되어 있다.
    • 이를 통해 소규모 컨텐츠 제공자도 효율적으로 컨텐츠를 전달할 수 있다.





Caching Example



이는 original server, public internet, 기관 네트워크 간의 상호작용을 다루며, 캐시를 이용한 웹 객체의 요청과 전송 과정을 설명한다.

  1. 캐싱의 목적
    • 클라이언트 요청에 대한 응답 시간을 줄임
    • 기관의 액세스 링크에서 트래픽을 줄임
    • 컨텐츠 제공자가 더 효율적으로 컨텐츠를 제공할 수 있게함


  1. 캐싱의 문제점
    • 1.54Mbps의 access link가 높은 이용률(0.97)로 인해 병목 현상이 발생한다. 이는 대기 시간이 길어짐을 의미한다.


  1. 예시 시나리오
    • access link 속도: 1.54Mbps
    • 기관 라우터에서 서버까지의 RTT: 2초
    • web object의 크기: 100k bit
    • 브라우저에서 원본 서버로의 평균 요청 속도: 15/sec
    • 브라우저로의 평균 데이터 전송 속도: 1.50Mbps


  1. 성능
    1. LAN 이용률: 매우 낮음(0.0015). LAN은 고속(1 Gbps)이지만, 대부분의 트래픽이 access link에서 병목되기에 실제 사용량은 매우 적다.
    2. access link 이용률: 매우 높음(0.97). 이는 트래픽이 access link에서 병목되고 있다는 것을 의미한다.
    3. 종단 간 지연
      • internet delay, access link delay, LAN delay을 모두 고려한 종단 간 지연이 발생
      • end-to-end delay = internet delay + access link delay + LAN delay = 2 sec + minutes(높은 이용률로 인해) + usecs(낮은 이용률로 인해)




Caching Example: Buy a Faster Access Link

성능을 높이기 위해 더 빠른 엑세스 링크를 구입한다. 이는 caching 대신 network의 performance를 향상시키기 위한 또 다른 접근 방식이다.



성능 개선

  1. 예시 시나리오
    • access link 속도: 1.54Mbps -> 154Mbps
    • 기관 라우터에서 서버까지의 RTT: 2초
    • web object의 크기: 100k bit
    • 브라우저에서 원본 서버로의 평균 요청 속도: 15/sec
    • 브라우저로의 평균 데이터 전송 속도: 1.50Mbps


  1. 성능
    1. LAN 이용률: 매우 낮음(0.0015). LAN은 고속(1 Gbps)이지만, 대부분의 트래픽이 access link에서 병목되기에 실제 사용량은 매우 적다.
    2. access link 이용률: 빠른 링크를 구입함으로써 낮아짐(0.97 -> 0.0097)
    3. 종단 간 지연
      • internet delay, access link delay, LAN delay을 모두 고려한 종단 간 지연이 발생
      • end-to-end delay = internet delay + access link delay + LAN delay = 2 sec + msec(높은 이용률로 인해) + usecs(낮은 이용률로 인해)


  1. Cost
  • 빠르지만 비싸진다.


Caching Example: Install a Web Cache



  1. Cost : Web Cache가 훨신 싸다. 더 빠른 access link(e.g. 154 Mbps link)를 구입하는 것보다 cache 설치가 비용이 저렴하며, 종단 간 지연 시간도 낮출 수 있다.


  1. 시나리오
    • access link rate: 1.54 Mbps
    • RTT: 기관 라우터에서 서버까지의 왕복 시간 2초
    • web object 크기: 100k
    • 평균 요청 속도: 초당 15회
    • 평균 데이터 전송 속도: 1.50 Mbps


  1. 캐시 히트율 가정
    • 캐시 히트율: 0.4(즉, 40%의 요청이 캐시에서 처리됨)


  1. access link 이용률과 delay time 계산
    1. access link 사용: 60%의 요청이 access link를 통해 원본 서버에 도달
      • data 전송 속도: 0.6 * 1.50 Mbps = 0.9 Mbps
      • 이용률: 0.9 / 1.54 = 0.58 (이전의 0.97에서 크게 감소)
    2. 종단 간 지연 시간
      • cache에서 처리되는 요청: 매우 낮은 지연(마이크로초 단위)
      • 원본 서버에서 처리되는 요청: 2.01초(internet delay + access link delay + LAN delay)
      • 평균 지연 시간 = 0.6 * (delay from origin servers) + 0.4 * (delay when satisfied at cache) = 0.6 * 2.01초 + 0.4 *(마이크로초) ≈1.2초




Conditional GET

조건부 GET의 목적

  • object transmission delay 방지: cache된 version이 최신이면 object를 다시 전송하지 않음으로써 전송 지연을 방지한다.
  • 링크 이용률 감소: 불필요한 데이터 전송을 줄여 네트워크 링크의 이용률을 낮춘다.


  1. Cache의 역할
    • client가 HTTP 요청을 보낼 때, 캐시된 객체의 날짜를 'If-Modified-Since' header에 포함시킨다.
    • e.g. 'If-Modified-Since: <date>'


  1. Server의 역할
    • Server는 Client가 보낸 요청을 확인하고, 캐시된 객체가 최신 버전이면 객체를 전송하지 않고 'HTTP/1.0 304 Not Modified' 응답을 보낸다.
    • 최신 버전이 아니면 객체를 전송하고 'HTTP/1.0 200 OK' 응답을 보낸다.
  1. 예시

    • HTTP 요청 메시지

        GET /index.html HTTP/1.1
        Host: www.example.com
        If-Modified-Since: Wed, 21 Oct 2020 07:28:00 GMT
    • HTTP 응답 메시지(객체가 수정되지 않은 경우)

        HTTP/1.0 304 Not Modified
    • HTTP 응답 메시지(객체가 수정된 경우)

        HTTP/1.0 200 OK
        Content-Type: text/html
        Content-Length: 1234
      
        (객체 데이터)





HTTP/2

  1. HTTP/2의 주요 목표 : HTTP/2는 다중 객체 HTTP request의 delay를 줄이는 것을 주요 목표로 하고 있다.


  1. HTTP/1.1의 문제점:
    • 단일 TCP 연결에서 다중 GET request의 pipelining: HTTP/1.1에서는 여러 GET 요청을 단일 TCP 연결에서 pipeLining할 수 있다.
    • 서버의 순차 응답: 서버는 FCFS(First-Come-First_Served) 방식으로 GET 요청에 순차적으로 응답한다.
    • HOL 블로킹(Head-of-Line Blocking): FCFS으로 인해, 작은 객체가 큰 객체 뒤에 대기해야 하는 경우가 발생한다.
    • 손실 복구 문제: 손실된 TCP segment를 재전송하는 동안 객체 전송이 중단될 수 있다.


  1. HTTP/2의 주요 특징
    1. 변경되지 않은 method, status code, 대부분의 header field: HTTP/1.1과 동일한 method, status code 및 대부분의 header field를 사용한다.
    2. client지정 Priority에 따른 전송: 전송 순서는 클라이언트가 지정한 priority에 따라 결정된다.(not necessarily FCFS)
    3. 미요청 object의 push: server는 client가 요청하지 않은 객체를 푸시할 수 있다.
    4. 프레임으로 객체 분할 및 전송: 객체를 frames으로 분할하고, HOL blocking을 완화하기 위해 frame 전송을 스케줄링한다.





HTTP/2: mitigationg HOL blocking



HTTP 1.1 : client가 1개의 큰 object를 request한다.(e.g. video file, and 3 smaller objects)
아래의 그림에서는 O1 뒤에 O2, O3, O4가 뒤따른다.



HTTP/2: object가 frame으로 나뉜다. frame의 전송은 interleaved하다.





HTTP/2 to HTTP/3



HTTP/2의 한계

  • 단일 TCP 연결 사용: HTTP/2는 단일 TCP 연결을 사용하여 여러 객체를 전송한다. 이로 인해 패킷 손실 시 모든 객체 전송이 지연될 수 있다.
    • 패킷 손실이 발생하면 TCP 세크먼트 재전송이 필요하며 객체 전송이 지연된다.
  • 다중 TCP 연결 열기: 이러한 문제를 완화하기 위해 브라우저는 여러 개의 병렬 TCP 연결을 열어 전송을 시도한다. 이는 전체적인 처리량을 증가시키기 위한 방법이다.
  • 보안 문제: 기본 TCP 연결을 통한 보안이 부족하다.


HTTP/3의 주요 목표

  • UDP 기반 전송: HTTP/3는 UDP를 사용하여 객체를 전송한다. 이는 패킷 손실 시 개별 객체의 오류 및 혼잡 제어를 가능하게 한다.
    • UDP를 사용함으로써 패킷 손실이 발생해도 다른 객체의 전송이 지연되지 않는다.
  • 더 나은 보안: HTTP/3는 향상된 보안 기능을 제공한다.
    • 각 객체에 대한 개별적인 오류 및 혼잡 제어가 가능하여 전체 전송 성능을 취적화한다.




E-mail, SMTP, IMAP

E-mail

E-mail의 주요 구성 요소

  • User Agent(사용자 에이전트): 이메일을 작성, 수정, 읽기 위한 클라이언트 소프트웨어이다.
    • e.g. Outlook, Gmail

  • Mail Server(메일 서버): 이메일을 저장하고 전송하는 서버이다. SMTP(Simple Mail Transfer Protocol)를 사용하여 다른 메일 서버와 통신한다.



  • SMTP(Simple Mail Transfer Protocol): 이메일 전송을 위한 프로토콜이다. 클라이언트가 메일 서버에 메일을 보내고, 메일 서버 간에 메일을 전송하는 데 사용된다.





E-mail:mail servers

mail servers

  • mailbox: 사용자에게 도착한 이메일 메시지를 저장하는 장소이다. 각 사용자는 자신의 메일박스를 가지고 있으며, 이 메일박스에는 수신된 메시지가 저장된다.
  • message queue: 발신 대기 중인 이메일 메시지를 저장하는 큐이다. 메일 서버는 이 메시지 큐에 저장된 메시지를 다른 메일 서버로 전송된다.
  • SMTP Protocol: 메일 서버 간에 이메일 메시지를 전송하는 프로토콜이다. Simple Mail Transfer Protocol(SMTP)는 이메일을 보내고 받기 위해 사용된다.
    • 클라이언트: 이메일을 보내는 메일 서버
    • 서버: 이메일을 받는 메일 서버





Scenario: Alice sends e-mail to Bob

  1. Alice가 사용자 에이전트(User Agents)를 사용하여 이메일을 작성한다.

    • 이메일 메시지를 작성하여 bob@someschool.edu로 보낸다.
    • Alice의 User Agents는 이메일 메시지를 Alice의 메일 서버로 보낸다.
  2. SMTP(Simple Mail Transfer Protocol)

    • SMTP의 client 측은 Bob의 mail server와 TCP connection을 연다.
    • TCP connection을 통해 SMTP client는 Alice의 메시지를 Bob의 메일 서버로 전송한다.
  3. Bob의 메일 서버에 도착

    • Bob의 메일 서버는 메시지를 수신하고 Bob의 mailbox에 저장한다.
  4. Bob이 이메일을 확인

    • Bob은 자신의 사용자 에이전트를 사용하여 메일 서버에서 메시지를 읽는다.





E-mail: the RFC(5321)

SMTP Protocol의 사용

  • TCP를 사용하여 이메일 메시지를 신뢰성 있게 전송: 클라이언트(연결을 시작하는 메일 서버)에서 서버(수신하는 메일 서버)로 TCP 연결을 통해 메시지를 보낸다. PORT 25를 사용한다.
  • 직접 전송: 보내는 서버(클라이언트처럼 동작)가 받는 서버로 직접 전송한다.


이메일 전송의 세 단계

  1. handshaking(greeting): 초기 연결 설정 및 인사 메시지 교환
    • 클라이언트가 서버에 TCP 연결을 연다
      • 클라이언트가 서버의 SMTP 포트(보통 25)로 TCP 연결을 연다.
      • 이 과정에서 클라이언트는 서버의 IP 주소와 포트 번호를 알고 있어야 한다.
    • 서버가 연결 요청을 수락한다.
      • 서버는 클라이언트의 연결 요청을 수락하고 초기 환영 메시지를 보낸다.
      • 이 메시지는 보통 "220" 응답 코드와 함께 서버의 도메인 이름을 포함한다.
      • e.g. 220 smtp.example.com ESMTP Postifx
    • 클라이언트가 HELO 명령을 보낸다.
      • 클라이언트는 서버에게 자신의 도메인 이름을 알리기 위해 HELO 명령을 보낸다.
      • e.g. HELO client.example.com
    • 서버가 응답한다
      • 서버는 클라이언트의 HELO 명령에 응답하여 인사말과 함께 응답한다.
      • e.g. 250 Hello client.example.com, pleased to meet you
  2. trasfer of messages(메시지 전송): 이메일 메시지의 실제 전송
  3. closure(연결 종료): 메시지 전송 후 연결을 종료합니다.


명령/응답 상호작용

  • commands: ASCII text
  • response: status code and phrase


message는 반드시 7-bits ASCI이다.





Sample SMTP interaction

'학교수업 > 컴퓨터망' 카테고리의 다른 글

Chapter4: Network Layer-Data Plane  (0) 2024.07.04
Chapter3: Transport Layer-2  (0) 2024.07.04
Chapter3: Transport Layer  (0) 2024.07.03
Chapter2: Application Layer-2  (0) 2024.07.03
Chapter1: Introduction  (0) 2024.06.30

Overview/Roadmap

  1. internet이란 무엇인가?
  2. protocol이란 무엇인가?
  3. Network edge: host, access network, physical media
  4. Network core: packet/circuit switiching, internet structure
  5. Performance: loss,delay, throughput
  6. Security
  7. Protocol layers, service model
  8. History

The internet: a "nuts and bolts" view

"인터넷이 무엇인가?" 를 설명하는데는 여러 방법이 있다. 첫 번째로 "nuts and bolts"가 있다. 이는 hardware와 software component로 생각하는 것이다. 두 번째는 application에 서비스를 제공하는 networking infrastructure 면에서 internet을 설명하는 것이다. 먼저 "nuts and bolts"를 먼저 살펴보자.

 

과거의 desktop PC와 달리 현재는 laptop, smartphone, tablet, TV, gaming console, thermostat, home security system, home application, watch, eye glass, car, traffic controll system 등등 많은 장치들이 internet으로 연결되어 있다. 이러한 장치들을 전문용어로 host, end system이라고 불린다. 2015년의 조사결과로 5만 개의 장치가 internet으로 연결되어 있고, 2020년에는 25만 개의 장치가 연결되어 있다.

 

End System은 communication linkpacket switch들로 인해 연결되어 있다.

나중에 살펴 보겠으나 commuication link는 다양한 physical media로 연결되어 있다(e.g. 동축케이블(coaxial cable), 구리선(copper wire), 광섬유(optical fiber), 주파수대역(radio spectrum)). link들은 bit/second로 측정된 (전송 속도)transmission rate가 각각 다르다. 만일 한 end system에서 data를 다른 end system으로 보낼 때, 보내는 end system에서는 data를 세그먼트로 나누고 각 세그먼트들은 header byte에 추가된다. 보내고자 하는 정보의 pacakge(전문 용어로 packet)들은 network를 통해 목적지 end point로 전송된다. 그리고 목적지에서 original data로 결합된다.

 

packet swtich는 communication link 중 하나를 통해 도착한 packet을 받는다. 그리고 이 packet을 나가는 communication link 중 하나로 packet을 전달한다. packet switch는 다양한 형태를 지니나 현대에 들어서 가장 중요한 타입은 router, link-layer swtich이다. 두 개의 switch는 packet을 궁극적인 목적지로 보낸다.

 

link-layer switch들은 주로 access network에 쓰이고, 반면에 router는 network core에 사용된다. packet은 보내는 end system에서 받은 end system 받은 길을 거친다. 이 때 packet이 이동할 때 거치는 communication link와 packet swtich의 순서를 network를 통한 경로를 route or path라고 한다.

 

Cisco(미국의 인터넷 서비스 업체)는 2016년에 IP traffic이 zettabyte의 한계점을 지닌다고 했고, 2019년에는 2zettabyte의 한계점을 지닌다고 발표했다.

 

packet을 전송하는 Packet-swtiched network(패킷 교환 네트워크) 는 차량이 이동하는 고속도로, 도로 및 교차로로 구성된 교통 네트워크와 여러 면에서 유사하다. 예를 들어 많은 화물을 몇 키로미터와 떨어진 목적 창고로 보내는 공장을 생각해보자. 공장에서, 화물들은 분리되어 여러 대의 차량에 싣어진다. 그리고 각 트럭들은 독립적으로 고속도로, 도로, 교차로를 거쳐 목적지로 도착한다. 그리고 목적지에서 분리된 화물들이 다시 합쳐진다. 많은 부분에서 packet들은 truck과, communication link들은 highway와 road, packet switch들은 intersection, 그리고 end system은 building과 유사하다.

 

End system은 local cable 또는 telephone company들과 같은 지역 ISP를 포함한 Internet Service Provider(ISP) 을 통해 Internet에 접근한다. 회사 ISP, 공용 ISP들은 공항, 호탤, 카페, 다른 공용 공간에 WiFi 접근을 제공한다. 또한 cellular data ISP는 스마트폰에 mobile access를 제공한다. 각 ISP는 그 자체로 packet switch와 communication link로 구성된 network이다. ISP는 다양한 타입의 network access를 end system에 제공한다. 예를 들어. cable modem이나 DSL와 같은 residential broadband access, high-speed local area network access, 그리고 mobile wireless access를 제공한다. ISP는 또한 콘텐츠 제공자에게 internet access를 제공하여 Web site와 video server를 직접 인터넷에 연갈한다. internet은 전부 end system의 연결에 대한 것이다. 그래서 end system간의 연결을 제공하는 ISP는 반드시 서로 연결되어야 한다. 저수준의 ISP는 국가 내에서, 그리고 고수준의 ISP는 높은 속도의 광섬유를 통해 국가 간을 연결한다. 각 ISP network(저, 고수준)는 독립적으로 관리되고, IP protocol을 실행한다.

 

============================================================================================

 

 

End System, Packet Switch 그리고 다른 internet의 요소들은 Protocol를 지킨다. 이는 internet 내에서 보내는, 그리고 받은 정보들을 제어한다. Transmission Control Protoco(TCP), Internet Protocol(IP) 는 둘 다 중요한 protocol이다. IP protocol은 오가는 packet의 format를 지정한다. internet의 protocol은 TCP/IP로 불린다.

 

세상의 많은 computing device들이 연결되어 있다. 여기서 용어 정리를 하면 hostend system이다. 그리고 network app들은 internet의 edge에서 실행된다. Packet switch(패킷 교환) 에서 router과 swtich들이 사용된다. Communication links(연결선) 에는 fiber, copper, radio, statellite가 있고 전송 속도를 bandwidth(대역폭) 이라고 한다. Networks는 조직에 의해 관리되는 devices, routers, links들의 집합이다.

internetnetwork들의 network이다. 이는 ISP들의 연결이다.

 

protocol은 오가는 message들을 제어하는 역할을 한다. protocol의 예로는 HTTP, streaming video, Skype, TCP, IP, WIFI, 4G, Ethernet이 있다.

 

IETF(Internet Engineering Task Force) 에 의해 Internet Standard이 정해진다. IETF의 standard document를 RFC(Request For Comment) 라고 한다.

The Internet: a "service" view

우리는 또한 완전히 다른 시각에서 Internet을 설명할 수 있다. an infrastructure that provides services to application. 현재에는 다양한 service를 제공한다. 예를 들어, Web, Streaming video, smartphone, tablet application, music streaming, movie, television streaming, 등등. 이러한 application들을 distributed application이라고 한다. 이러한 것들은 multiple end system을 포함하고, 또 각각 data를 교환하기 때문이다. internet application은 network core에 있는 packet switch에서 실행되지 않고, end system에서 실행된다. packet switch는 end system 간의 data 교환에 용이하지만, data의 출처나 목적지가 되는 application에는 관여하지 않는다.

 

============================================================================================

  • Infrastructure는 service를 application에 제공한다.
    • Web, Streaming video, multimedia, teleconferencing, email, games, e-commerce, social media, interconnected appliances,....
  • distributed application에 programming interface를 제공한다.
    • 송신, 수신 app이 internet transport service를 사용할 수 있도록 hook를 제공한다.
    • 우편 서비스와 유사한 서비스 옵션을 제공한다.
    • hook은 소프트웨어 개발에서 주료 사용되는 용어로, 프로그램이 특정 지점에서 사용자 정의 동작을 삽입하거나 호출할 수 있도록하는 인터페이스나 메커니즘을 말한다.

What's a Protocol?

Protocol은 network entity간에 송수신되는 message의 order, format, 그리고 message 전송 및 수신 시 취해지는 행동을 정의한다.

Nestwork Protocol에서 internet에서의 모든 communication activity들은 protocol에 좌지우지된다.

The Nestwork Edge

A closer look at Internet structure

  • Network edge
    • host는 end system이다.
    • hosts는 두 개의 categories로 나뉘는데, clientserver로 나뉜다.
    • 오늘날, 우리가 검색 결과, 이메일, 웹 페잊, 비디오를 받는 대부분의 서버는 대형 data center에 위치해 있다.
  • Access networks, physical media
    • wired, wireless communication links(유선 및 무선 통신 링크)
  • Network core
    • 상호 연결된 라우터들로 구성
    • 네트워크의 네트워크

Access networks and physical media

Q. 어떻게 end system들이 edge router로 연결되는가?

  • residential access nets
  • institutional access networks(shcool, company)
  • mobile access networks(WiFi, 4G/5G)

무엇을 살펴보아야 하는가?

  • access network의 transmission rate(bits per second)(접근 네트워크의 전송 속도(초당 비트수)는?)
  • t사용자들 간에 공유된 접근인지 전용 접근인지?

Network Edge

네트워크 엣지는 인터넷의 끝부분에 위치하며, 사용자가 실제로 네트워크에 접속하고 어플리케이션을 실행하는 부분이다. 주요 구성 요소와 기능은 다음과 같다.

호스트(Host == End System)

  • 클라이언트와 서버를 포함한다.
  • 클라이언트는 웹 브라우저, 이메일 클라이언트, 게임 등 다양한 어플리케이션을 실행한다.
  • 서버는 웹 서버, 이메일 서버 등 서비스를 제공한다.
  • 서버는 종종 대형 데이터 센터에 위치한다.

Access Network(접근 네트워크)

사용자가 네트워크에 접속하는 방식을 의미한다.

  • 주요 유형:
    • 유선 네트워크: DSL, 케이블 모뎀, 광섬유
    • 무선 네트워크: Wi-Fi, 4G/5G 셀룰러 네트워크
  • 주요 요소:
    • 전송 속도: 접근 네트워크의 속도는 사용자 경험에 큰 영향을 미친다.
    • 공유 접근 또는 전용 접근: 네트워크 자원이 여러 사용자 간에 공유되는지 또는 특정 사용자에게 전용으로 제공되는지 여부

Physical Media(물리적 미디어)

- 데이터 전송에 사용되는 매체를 의미한다.
- 유선 매체: copper wire, optical fiber
- 무선 매체: radio, satellite

Network Core(네트워크 코어)

네트워크 코어는 인터넷의 중심부터, data packet을 전달하는 주요 역할을 한다. 주요 구성 요소와 기능은 다음과 같다.

  1. Router
  • 네트워크 중심에서 packet을 전달하는 장치
  • packet이 소스에서 목적지로 가는 경로를 결정하고, 각 라우터를 통해 전달된다.
  1. Packet Switching
  • data는 작은 packet으로 나누어 전송된다.
  • 각 pacekt은 독립적으로 네트워크를 통해 전달되며, 최종 목적지에서 다시 조립된다.
  • Store-and-Forword(저장 및 전달): 각 Packet은 router에 도착하여 전체가 수신된 후 다음 라우터로 전달된다.
  1. Routing(경로 설정)
  • 패킷이 목적지까지 도달할 수 있도록 최적의 경로를 결정한다.
  • routing algoritm을 사용하여 경로를 설정하고, 네트워크의 상태를 기반으로 경로를 조정한다
  1. Transmission Delay and Queuing Delay(전송 지연 및 대기열 지연)
  • 패킷이 네트워크를 통해 전달될 때 발생하는 지연
  • 전송 지연(Transmission Delay): 패킷이 링크를 통해 전송되는 데 걸리는 시간
  • 대기열 지연(Queuing Delay): 라우터의 대기열에서 패킷이 전송을 기다리는 시간
  • 패킷 손실(Packet Loss): 네트워크 혼잡으로 인해 패킷이 손실될 수 있다.

네트워크 엣지와 네트워크 코어는 함께 작동하여 사용자가 인터넷을 통해 데이터를 송수신할 수 있도록 한다. 네트워크 엣지는 사용자가 직접 접속하는 부분이며. 네트워크 코어는 이러한 데이터가 효율적이고 신뢰성 있게 전달되도록 한다.

Access Networks: Cable-Based Access

위의 그림은 케이블 기반 접근(Cable-Based Access) 네트워크의 구조와 작동 방식을 보여준다. 이 그림은 주로 주거용 인터넷 서비스에서 케이블 모뎀을 통해 인터넷에 접속하는 방법을 설명하고 있다.

 

요약하면 케이블 기반 접근 네트워크의 주요 구성 요소와 주파수 분할 다중화를 통해 데이터와 TV 신호를 동시에 전송하는 방식을 시각적으로 보여준다. 각 구성 요소는 사용자가 인터넷과 TV 서비스를 동시에 사용할 수 있도록 역할을 한다.

  1. Cable Modem(케이블 모뎀)
    • 사용자의 가정에서 인터넷 신호를 수신하고, 이를 컴퓨터나 router에 전달한다.
  2. Splitter(스플리터)
    • 케이블 TV 신호와 인터넷 신호를 분리하여 각각의 장치로 전달한다.
    • 한쪽은 케이블 모뎀으로, 다른 쪽은 TV로 연결된다.
  3. Cable Headend(케이블 헤드엔드)
    • ISP 측의 주요 시설로, 모든 케이블 신호가 여기서 송출되고 관리된다.
    • 다양한 채널과 데이터를 포함하며, 주로 다수의 사용자에게 방송 신호와 인터넷 서비스를 제공한다.
  4. FDM(Frequency Division Multiplexing, 주파수 분할 다중화)
    • 주파수 분할 다중화는 하나의 케이블에서 여러 채널을 동시에 전송하는 기술이다.
    • 채널:
      1. 각 채널은 다른 주파수 대역을 사용하여 신호를 전송한다.
      2. 비디오 채널데이터 채널로 구분되어 있다.
      3. 비디오 채널은 TV 방송을, 데이터 채널은 인터넷 데이터를 전송한다.
      4. 제어 채널도 존재하는데, 네트워크 제어 및 관리 신호를 전송한다.

위의 그림의 작동 방식은 다음과 같다.

  1. 데이터 전송
    • 사용자의 인터넷 데이터는 Cable Modem을 통해 전송된다.
    • Splitter는 인터넷 데이터와 TV 신호를 분리하여 각각의 장치(Cable Modem, TV 수신기)로 전달한다.
    • 데이터는 Cable Headend로 보내지고, 여기서 ISP가 관리한다.
  2. 대칭성(Asymmetry)
    • 케이블 네트워크는 일반적으로 비대칭이다. 즉, 다운로드 속도와 업로드 속도가 다르다.
    • 다운로드 속도는 최대 1.2 Gbps까지 가능하며, 업로드 속도는 30-100 Mbps 범위이다.

  1. CMTS(Cable Modem Termination System, 케이블 모뎀 종료 시스템)
    • ISP 측에 위치한 장치로, 여러 사용자의 케이블 모뎀과 연결된다.
    • CMTS는 여러 사용자에게 인터넷 서비스를 제공하기 위해 케이블 네트워크의 데이터 트래픽을 관리하고 조정하는 역할을 한다.
  1. HFC(Hybrid Fiber-Coax, 하이브리드 광동축)
    • 광섬유와 동축 케이블의 결합으로 구성된다.
    • 데이터는 먼저 광섬유를 통해 전송된 후, 동축 케이블을 통해 가정으로 전달된다.
    • 이는 데이터 전송 속도를 높이고 신호의 품질을 향상시킨다.
  1. 비대칭 속도(Asymmetric Speed)
    • downstream transmission rate: 인터넷에서 사용자의 장치로 데이터가 다운로드 되는 속도를 의미
    • upstream transmission rate: 사용자의 장치에서 인터넷으로 데이터가 업로드되는 속도를 의미
    • downstream의 속도는 40Mbps에서 1.2Gbps이다.
    • upstream의 속도는 30Mbps에서 100Mbps이다.
    • 이는 사용자가 인터넷을 사용할 때 다운로드하는 데이터가 업로드하는 데이터보다 많기 때문이다.
  1. Share Access Network
    • 여러 가정이 동일한 케이블 네트워크를 공유하여 인터넷에 접속한다.

Access Networks: Digital Subscriber Line(DSL)

위의 그림은 디지털 가입자 회선(DSL) 기반 접근 네트워크의 작동 방식과 기술적 세부 사항을 설명하고 있다. DSL은 기존 전화선을 사용하여 고속 인터넷 서비스를 제공하는 기술이다.

  1. Central Office(중앙 사무소)
    • 전화 네트워크의 중심 허브로, 각 가정이나 사무실의 DSL 라인과 연결된다.
    • DSLAM(DSL Access Multiplexer) 이 위치해 있다.
  2. DSLAM(DSL Access Multiplexer)
    • 중앙 사무소에 위치한 장치로, 여러 사용자의 DSL 연결을 집합하고 인터넷으로 연결한다.
    • 음성 신호와 데이터 신호를 분리하여 각각 telephone network와 ISP로 전달한다.
  3. DSL 모뎀
    • 사용자의 가정이나 사무실에 위치한 장치로, 전화선을 통해 데이터를 송수신한다.
    • 데이터 신호와 음성 신호를 분리하여 각각 컴퓨터와 전화기로 전달한다.
  4. 스플리터(Splitter)
    • 전화 신호와 데이터 신호를 분리하여 각각의 장치로 전달한다.
    • 전화 신호는 전화기로, 데이터 신호는 DSL 모뎀으로 전달된다.

주요 특징으로는 다음과 같다.

  1. 기존 전화선 사용
    • DSL은 기존의 전화선을 사용하여 Central Office DSLAM을 연결하여, 인터넷 서비스를 제공한다.
    • 추가적인 케이블 설치 없이 고속 인터넷을 제공할 수 있다.
  2. 주파수 분할
    • 음성 신호와 데이터 신호는 서로 다른 주파수 대역을 사용하여 전송된다.
    • 음성 통화와 인터넷 사용이 동시에 가능하다.
    • DSL Phone LIne의 Data는 Internet으로 전송된다.
    • DSL Phone Line의 Voide는 Telephone net으로 전송된다.
  3. 전용 라인
    • DSL은 각 사용자가 중앙 사무소와 Dedicated Line(전용 라인)으로 연결된다.
    • 이는 다른 사용자와 대역폭을 공유하지 않기에 안정적인 속도를 제공한다.
  4. 속도
    • downstream transmission rate는 24-52 Mbps
    • upstream transmission rate는 2.5-16 Mbps

Access Networks: Home Networks

위의 그림은 가정용 네트워크의 구성과 작동 방식을 설명한다. 가정용 네트워크는 사용자 가정 내에서 인터넷과 로컬 네트워크를 구축하는 방식이다.

  1. headend 또는 central office로의 연결
    • 가정용 네트워크는 ISP와 연결된다.
    • 이 연결은 cable modem이나 DSL modem을 통해 이루어진다.
  2. Modem(Cable or DSL Modem)
    • 외부 네트워크(인터넷)와 가정 내 네트워크를 연결하는 장치이다.
    • Cable Modem이나 DSL Modem을 사용하여 ISP의 네트워크와 연결된다.
  3. router, firewall, NAT
    • router: 모뎀과 연결되어 가정 내 모든 장치에 인터넷 연결을 제공한다.
    • firewall: 외부로부터의 불법 접근을 차단하여 네트워크를 보호한다.
    • NAT(Network Address Translation): 내부 네트워크의 여러 장치가 공용 IP 주소 하나로 인터넷에 접속할 수 있도록 한다.
  4. Wired Ethernet
    • 이더넷 케이블을 통해 고정된 장치(e.g. desktop computer, smart TV)를 라우터에 연결한다.
    • 일반적으로 1 Gbps 속도로 데이터 전송이 가능하다.
  5. Wi-Fi Wireless Access Point(Wi-Fi 무선 엑세스 포인트)
    • 라우터에 통합된 경우가 많다.
    • 무선 신호를 통해 가정 내의 모든 무선 장치(e.g. 스마트폰, 태블릿, 노트북)에 인터넷 연결을 제공한다.
    • 전송 속도는 54Mbps에서 450 Mbps까지 다양한다.

Wireless Access Networks(무선 접근 네트워크)

Wireless Access Networks는 사용자가 유선 연결 없이도 네트워크에 접속할 수 있게 하는 기술이다.

  1. Wireless Access Networks(무선 접근 네트워크)
    • 무선 접근 네트워크는 공유된 wireless 매체를 통해 end system을 router에 연결한다.
    • Access Point을 통해 연결된다.
  2. Wireless Local Area Networks(WLANs, 무선 지역 네트워크)
    • 일반적으로 건물 내 주변(약 100ft)에서 사용된다.
    • Wi-Fi(802.11b/g/n) 표준을 사용하며, 전송 속도는 11, 54, 450 Mbps로 다양하다.
  1. Wide-area Cellular Access Networks(광역 셀룰러 네트워크)
    • 모바일 네트워크 사업자가 제공하는 서비스로, 10kilometer 이상의 넓은 지역을 커버한다.
    • 전송 속도는 10 Mbps 이상이며, 4G 셀룰러 네트워크가 주로 사용되고 있다.
    • 5G 네트워크는 향후 도입 예정

Access networks: enterprise networks

기업 네트워크(Enterprise Networks)는 회사, 학교, 대규모 조직 등의 내부 네트워크를 구성하며, 유선 및 무선 연결을 혼합하여 다양한 장치들을 연결한다.

  1. Enterprise Networks
    • 대규모 조직, 학교, 회사 등의 내부 네트워크이다.
    • 유선 및 무선 연결 기술을 혼합하여 사용한다.
    • 다양한 스위치와 라우터를 연결하여 네트워크를 구성한다.
  2. Ethernet(이더넷)
    • 주로 유선 연결을 위한 기술이다.
    • 전송 속도: 100 Mbps, 1 Gbps, 10 Gbps
    • 고속 데이터 전송을 지원하며, 주로 고정된 장치들을 연결하는 데 사용된다.
  3. Wi-Fi
    • 무선 연결을 위한 기술이다.
    • wireless access point를 통해 연결된다.
    • 전송 속도: 11 Mbps(802.11b), 54 Mbps(802.11g), 450 Mbps(802.11n)
    • 유연하고 이동이 가능한 장치들을 연결하는 데 사용된다.

Host: sends packets of data

  1. Host
    • 데이터를 송신하는 장치이다.
    • host는 application message를 작은 조각인 packet으로 나눈다.
  2. Packet
    • application message를 작은 조각으로 나눈 것이다.
    • 각 packet은 네트워크를 통해 전송된다.
    • packet의 길이는 L bit이다.
  3. Transmission Rate
    • Link의 전송 속도는 R bps(초당 비트 수) 이다.
    • 이는 Link가 데이터를 전송할 수 있는 속도를 나타낸다.
    • link transmission rate는 링크의 전송 속도를, link capacity는 링크의 용량을 의미하며 링크가 데이터를 얼마나 빠르게 전송할 수 있는지를 나타낸다. link bandwidth는 링크의 대역폭으로 단위 시간 당 전송할 수 있는 데이터의 양을 의미한다. 셋은 같은 의미다.

전송과정

  1. 패킷 분할
    • host는 어플리케이션 메시지를 작은 패킷으로 나눈다.
    • 각 패킷은 L bit의 길이를 가진다.
  2. 패킷 전송
    • 패킷은 Link를 통해 전송된다.
    • 패킷이 Link를 진입하는 데 걸리는 시간은 "Packet Transmission Delay(패킷 전송 지연)" 이라고 한다.
    • Transmission Delay(전송 지연) 은 패킷의 길이(L)와 링크의 전송 속도(R)에 의해 결정된다.
  3. 패킷 전송 지연(Transmission Delay)
    • 패킷 전송 지연은 패킷의 길이(L)을 링크의 전송 속도(R)로 나눈 값이다.
    • 패킷 전송 지연은 "time needed to transmit L-bit packet into link"이다.
    • 패킷 전송 지연은 L(bit) / R(bit / sec)이다.

Links: physical media

  • bit
    • 데이터의 가장 작은 단위이다.
    • 비트는 송신기(transmitter), 수신기(receiver) 사이에서 전송된다.
  • Physical Link(물리적 링크)
    • 송신기와 수신기 사이의 실제 물리적 경로이다.
    • bit는 이 물리적 링크를 통해 전송된다.

물리적 매체의 종류

  1. Guided Media(유도 매체)
    • 신호가 고체 매체를 통해 전파(propagate)된다.
    • Copper(구리), Fiber(광), Coax(동축)
  2. Unguided Media(비유도 매체)
    • 신호가 자유롭게 전파된다.
    • radio
  1. Twisted Pair(TP)
    • 두 개의 절연된 copper wire가 꼬인 형태
    • Category 5: 100 Mbps 또는 1 Gbps의 이더넷을 지원한다.
    • Category 6: 10 Gbps의 이더넷을 지원

  1. Coaxial Cable
    • 두 개의 동심(Concentric) 구리 도체(Conductors)
      • 내부 도체와 외부 도체로 구성된다.
      • 내부 도체는 중심에 위치하며, 외부 도체는 내부 도체를 감싸고 있다.
    • 양방향 전송(Bidirectional Transmission)
    • 브로드밴드(BroadBand)
      • 케이블에서 여러 주파수 채널을 통해 데이터를 전송할 수 있다.
      • 각 채널은 서로 다른 주파수 대역을 사용한다.
      • 채널 당 100 대의 Mbps를 가진다.

  1. Fiber Optic Cable
    • 유리 섬유(Glass Fiber)로 구성되어 있으며, 빛의 pulse를 통해 data를 전송한다.
    • High-Speed Transmission(고속 데이터 전송)
      • 빛의 펄스를 사용하여 데이터를 전송하므로, 매우 높은 전송 속도를 제공한다.
      • 전송 속도는 수십 Gbps에서 수백 Gbps에 이를 수 있다.
    • 낮은 오류율(Low Error Rate)
      • 중계기(repeater)를 멀리 떨어뜨려 설치가 가능
      • 전자기 잡음(electromagnetic noise)에 면역이다.

  1. Wireless Radio
    • wireless radio signal(무선 라디오 신호)
      • wireless radio signal은 electromagnetic spectrum(전자기 스펙트럼)을 통해 전파된다.
      • 물리적인 "선"이 필요 없이 자유롭게 전파된다.
    • Half-Duplex Communication(반이중 통신)
      • 무선 라디오 링크는 일반적으로 반이중(Half-Duplex) 방식으로 작동한다.
      • 이는 송신과 수신이 동시에 이루어지지 않음을 의미한다.
      • 한 번에 한 방향으로만 통신이 가능하다.
    • Propagation EnvironMent Effect(전파 환경의 영향)
      • 반사(Reflection): 신호가 물체에 부딪혀 반사될 수 있다.
      • 장애물에 의한 방해(Obstruction by Objects): 건물이나 나무 등의 장애물이 신호를 약화시킬 수 있다.
      • 간섭(Interference): 다른 전자기 신호에 의해 간섭을 받을 수 있다.
    • Radio Link의 타입
      • Terrestrial Microwave(지상파 마이크로파)
        • 최대 45 Mbps의 채널을 지원
        • 주로 장거리 전송에 사용
      • Wireless LAN(WiFi)
        • 최대 100's Mbps 지원
        • Wi-Fi라고 불리며, 주로 건물 내에서 사용된다.
      • Wide-Area(e.g. cellular)
        • 모바일 네트워크 운영자가 제공하는 서비스
        • 넓은 지역을 커버하며. 이동 중에도 인터넷 접속이 가능하다.
        • 4G cellular: ~10's Mbps
      • Satellite
        • 위성을 통해 데이터를 전송한다.
        • 지구 동기 궤도(Geosynchronous Orbit) 또는 저궤도(Low Earth Orbit) 위성을 사용한다.
        • 최대 45 Mbps의 채널을 지원한다.
        • end-to-end 전송 지연은 약 270 밀리초이다.

Network Core: Packet/Circuit Switching, Internet Structure

The Network Core

네트워크 코어는 Mesh of Interconnected Routers 구조이다.
- 네트워크 코어는 상호 연결된 router들의 mesh 구조로 구성된다.
- 이는 여러 라우터가 서로 연결되어 있어, 데이터 패킷이 다양한 경로를 통해 전달될 수 있음을 의미한다.

패킷 스위칭(Packet Switching)

  1. Packet Switching의 원리
    • 패킷 스위칭은 네트워크 코어에서 사용되는 데이터 전송 방식으로, 데이터가 작은 패킷으로 나누어져 전송된다.
    • 각 패킷은 독립적으로 네트워크를 통해 전달되며, 최종 목적지에서 다시 조립된다.
  2. 패킷 전송
    • 호스트는 application Layor Message를 패킷으로 나누어 전송한다.
    • Packet은 네트워크를 통해 여러 router를 거쳐 목적지까지 전달된다.
  3. 전체 링크 용량(Full Link Capacity) 사용
    • 각 패킷은 전체 링크 용량을 사용하여 전송된다.
    • 이는 각 링크가 최대 전송 속도로 데이터를 전송할 수 있음을 의미한다.

Packet-Switching: Store-And-Forward

Transmission Delay(전송 지연)

  • 정의: 전송 지연은 패킷이 하나의 링크를 통해 전송되는 데 걸리는 시간을 의미한다.
    • 그림에서는 송신 host에서 첫 번째 router에 도달할 때까지의 시간을 의미한다.
  • 공식: L은 패킷의 크기(비트 단위)이고 R은 링크의 전송 속도(bps, bits per second)로 계산된다.
    • Transmission Delay = L / R
    • e.g. 패킷의 크기가 8000bit이고 링크의 전송 속도가 2 Mbps(2,000,000 bps)라면, 전송 지연은 8000/2000000= 0.004 초, 즉 4밀리초이다.
    • e.g. L = 10 Kbits, R = 100 Mbps, transmission delay = 10,000 bits / 100,000,000 bits/second = 0.0001 seconds = 0.1 milliseconds(msec)

Store and Forward(저장 및 전달)

  • 정의: 저장 및 전달은 각 패킷 하나가 완전히이 라우터에 도착하면, 라우터가 패킷을 완전히 수신한 후에 다음 링크로 전송하는 방식이다.
  • 작동 방식:
    1. 패킷이 라우터에 도착하면, 라우터는 패킷을 완전히 수신할 때까지 기다린다.
    2. 전체 패킷이 도착한 후에야 라우터는 패킷을 분석하고, 다음 목적지로 전송한다.
    3. 이 과정은 패킷이 손상되지 않고 올바르게 전송되도록 보장한다.
  • 장점: 이러한 방식은 데이터의 신뢰성을 높이고, 패킷이 손상되거나 손실되지 않도록 한다.

End-To-End Delay

  • 정의: end-to-end delay은 한 패킷이 소스에서 목적지까지 도달하는 데 걸리는 총 시간을 의미한다.
    • 데이터 패킷이 소스(송신 호스트)에서 목적지(수신 호스트)까지 도달하는 데 걸리는 전체 시간을 의미
  • 공식: 간단한 경우, 전파 지연이 없다고 가정하면 end-to-end delay는 소스와 목적지 사이의 각 링크에서 발생하는 전송 지연의 합으로 계산된다.
    • 공식: end-to-end delay = 2L/R
    • L은 패킷의 길이, R은 링크의 전송 속도
    • 이 공식은 중간에 있는 각 링크에서 동일한 크기의 패킷이 동일한 속도로 전송된다고 가정

Packet-Switching: Queueing Delay, Loss

Packet Queuing(패킷 큐잉)

  • 정의: 패킷 큐잉은 패킷이 전송되기 전에 라우터의 출력 링크의 대기열(queue)에 쌓이는 현상을 의미한다.
  • 발생 조건: 링크에 도착하는 데이터의 비트 속도(도착률)가 링크의 전송 속도보다 클 때 발생한다.
    • 도착률(Arrival Rate): 패킷이 router에 도착하는 속도(bps, bits per second)
    • 전송 속도(Transmission Rate): 패킷이 링크를 통해 전송되는 속도(bps)
  • 설명: 일정 시간 동안 패킷 도착률이 전송 속도를 초과하면, 패킷은 즉시 전송될 수 없고 대기열에 저장된다. 대기열에 쌓인 패킷은 전송 링크가 사용 가능해지면 순서대로 전송된다.

Packet Loss(패킷 손실)

  • 정의: 패킷 손실은 router의 memory(buffer)가 가득 차서 더 이상 새로운 패킷을 저장할 수 없을 때 발생하는 현상이다.
  • 발생 조건: router의 memory(buffer)가 꽉 찬 경우, 새로운 패킷을 저장할 공간이 없어 패킷이 drop(버려짐)된다.
    • 버퍼(Buffer): router 내에 packet을 일시적으로 저장하는 메모리 공간
  • 설명: 패킷 도착률이 전송 속도를 지속적으로 초과하면 대기열이 점점 길어지고, 결국 버퍼가 가득 차게 된다. 이 경우, 새로운 패킷은 저장되지 못하고 drop된다. 이는 네트워크에서 패킷 손실을 초래한다.

Two key network-core functions

네트워크 코어의 두 가지 주요 기능은 포워딩(Forwarding)라우팅(routing) 이다. 이 기능들은 packet이 network를 통해 올바르게 전송되고 전달될 수 있도록 하는 핵심 역할을 한다.

Forwarding

  • 정의: forwarding은 router가 packet을 수신하고, 그 packet을 적절한 출력 링크로 이동시키는 local action이다.
  • 작동 방식:
    • packet이 router에 도착하면, router는 packet header에 있는 목적지 주소를 읽는다.
    • router는 목적지 주소와 Local Forwarding Table(내부 라우팅 테이블)을 사용하여 패킷을 다음 hop으로 전송할 output link를 결정한다.
    • packet은 input link에서 적절한 output link로 이동된다.
  • 예시: packet header의 목적지 주소가 '0101'인 경우 라우터는 라우팅 테이블을 참조하여 이 패킷을 output link '2'로 전송한다.

Routing

  • 정의: 라우팅은 소스에서 목적지까지 패킷이 경로따라 이동하는 데 사용되는 global action이다.
  • 작동 방식:
    • routing algorithm을 사용하여 네트워크의 모든 라우터 간의 최적 경로를 결정한다.
    • routing algorithm은 다양한 기준(e.g. 최단 경로, 최소 비용, 최대 대역폭 등)을 사용하여 경로를 선택한다.
    • routing table이 주기적으로 업데이트되어 네트워크 상태 변화에 따라 최적 경로를 반영한다.

forwarding과 routing의 관계

  • forwarding은 개별 패킷을 router 내부에서 처리하는 local action이다.
  • routing은 전체 네트워크 경로를 설정하는 global action이다.
  • routing algorithm을 통해 생성된 routing table을 사용하여 forwarding이 수행된다.

Alternative to packet switching: circuit switching

circuit switching(회선 교환) 은 source와 destination 사이의 "통화(Call)"을 위해 끝에서 끝까지 자원을 할당하고 예약하는 방식이다. 이는 네트워크 내에서 데이터 전송을 위한 또 다른 방식으로, 주로 전통적인 전화 네트워크에서 사용된다.

주요 특징

  1. 자원 할당(Resource Allocation)
    • 회션 교환에서는 소스와 목적지 간의 통화가 설정될 때, 각 링크의 자원이 통화 동안 예약된다.
    • 다이어그램에서는 각 링크의 4개의 회선을 가지고 있으며, 통화가 설정되면 특정 회선이 할당된다.
  2. 전용 자원(Dedicated Resources)
    • 각 통화는 전송 자원을 독점적으로 사용하며, 다른 통화와 자원을 공유하지 않는다.
    • 이는 회선 교환 방식이 보장된 성능을 제공하는 이유이다.
  3. 자원 비공유(No Sharing)
    • 통화에 사용되지 않는 회선 자원은 다른 통화에서 사용할 수 없다. 이는 비효율성을 초래할 수 있다.
    • 예를 들어. 통화가 활성화되지 않으면 해당 회선 자원은 유휴 상태로 남는다.

Circuit switching: FDM and TDM

회선 교환 네트워크의 두 가지 주요 다중화 방식에는 Frequency Division Multiplexing(FDM, 주파수 분할 다중화)Time Division Multiplexing(TDM, 시분할 다중화) 가 있다. 이 두 가지 방식은 자원을 나누어 사용하는 방법이다.

Frequency Division Multiplexing(FDM)

  • 정의: FDM은 광학(optical) 또는 전자기 주파수(electromagnetic frequency)를 좁은 주파수 대역(frequency band)으로 나누어 각각의 통화 또는 데이터 스트림에 할당하는 방식이다.
  • 작동 방식:
    • 각 통화는 고유한 주파수 대역을 할당받아 동시에 여러 통화가 서로 간섭 없이 진행될 수 있다.
    • 예를 들어, 4명의 사용자가 있을 때, 각 사용자는 다른 주파수 대역을 사용하여 데이터를 전송한다.
  • 특징:
    • 각 통화는 자신만의 주파수 대역을 사용하므로, 다른 통화와 대역폭을 공유하지 않는다.
    • 대역폭이 고정되어 있어 예측 가능한 성능을 제공한다.

Time Division Multiplexing(TDM)

  • 정의: TDM은 시간을 slot으로 나누어 각 통화에 주기적으로 할당하는 방식이다.
  • 작동 방식:
    • 각 통화는 주기적인 시간 슬롯을 할당받아 해당 시간 동안 데이터를 전송한다.
    • 예를 들어, 4명의 사용자가 있을 때, 각 사용자는 주기적으로 돌아오는 시간 슬롯을 사용하여 데이터를 전송한다.
  • 특징:
    • 시간 슬롯은 정해진 간격으로 반복되며, 각 슬롯은 사용자가 최대 전송 속도로 데이터를 전송할 수 있도록 한다.

Packet Switching vs Circuit Switching

Packet Switching이 좀더 많은 user를 허용한다.

 

Packet Switching
1 Gbps link에서 각 사용자는 100 Mbps의 대역폭을 필요로 하며, 사용자는 10% 의 시간 동안만 활성 상태이다. 패킷 교환을 통해 N 명의 사용자가 네트워크를 공유할 수 있다.

  • 패킷 교환 : 사용자가 동시에 활성 상태일 확률이 적어 많은 사용자가 네트워크를 공유할 수 있다.
    • 예를 들어, 35명의 사용자가 있을 때 동시에 10명 이상이 활성 상태일 확률은 매우 낮다(less than 0.0004).

Circuit Switching

1 Gbps link에서 각 사용자가 100 Mbps를 사용할 때, 최대 10명의 사용자가 동시에 통신할 수 있다.

  • 회선 교환: 고정된 회선을 할당받아 통신하는 동안 안정적인 대역폭을 보장받지만, 사용하지 않을 때도 자원이 낭비된다.

패킷 교환은 자원의 효율적 사용과 유연성을 제공하지만 혼잡 시 성능 저하가 발생할 수 있다. 반면 회선 교환은 고정된 대역폭과 일관된 지연을 제공하지만 자원의 비효율적 사용과 설정 시간이 필요하다.

패킷 교환(Packet Switching)

  • 특징: 패킷 교환 방식에서는 데이터가 작은 패킷으로 나뉘어 독립적으로 전송된다. 각 패킷은 네트워크를 통해 독립적인 경로를 선택할 수 있다.
  • 장점:
    • 효율성: 네트워크 자원이 필요할 때만 사용되므로 자원 활용이 효율적
    • 유연성: 패킷은 다양한 경로를 통해 목적지에 도달할 수 있어 네트워크 장애에도 견딜 수 있다.
  • 단점:
    • 혼잡: 네트워크 혼잡 시 패킷 지연과 손실이 발생할 수 있다.
    • 지연 변동성: 패킷이 서로 다른 경로를 택할 수 있어 지연 시간이 일정하지 않을 수 있다.

회선 교환(Circuit Switching)

  • 특징: 회선 교환 방식에서는 통신을 위해 소스와 목적지 간에 전용 회선이 설정되고, 해당 회선이 통화 동안 전용으로 사용된다.
  • 장점:
    • 고정된 대역폭: 통신 동안 고정된 대역폭이 할당되어 안정적인 성능을 제공한다.
    • 일관된 지연: 전용 회선을 사용하므로 지연 변동이 적다.
  • 단점:
    • 비효율성: 회선이 사용되지 않을 때도 자원이 낭비된다.
    • 설정 시간: 통화를 시작하지 언에 회선을 설정하는 시간이 필요하다.

패킷 교환의 장점

  • Great For Bursty Data
    • 데이터가 일정하지 않게 전송되는 경우에 적합하다. 때로는 많은 데이터를 보내고, 때로는 전혀 데이터를 보내지 않을 수 있다.
    • 자원 공유(Resource Sharing): 네트워크 자원을 여러 사용자가 공유하므로, 전체 자원 활용도가 높아진다.
    • 간단한 설정(Simpler, No Call Setup): 통신을 시작하기 전에 전용 회선을 설정할 필요가 없어 간단하다.

패킷 교환의 단점

  • Excessive Congestion Possible(혼잡 가능성)
    • 네트워크 혼잡 시 패킷 지연과 손실이 발생할 수 있다.
    • Protocols Needed: 신뢰할 수 있는 데이터 전송과 혼잡 제어를 위해 추가적인 프로토콜이 필요하다.

Q. How to provide circuit-like behavior?

  • Bandwidth Guarantees(대역폭 보장): 전통적으로 오디오 및 비디오 어플리케이션에서 사용된다. 패킷 교환 네트워크에서도 대역폭 보장을 통해 회선 교환과 유사한 성능을 제공할 수 있다.

Q. human analogies of reserved resources(circuit switching) versus on-demand allocation(packet switching)?

  • 회션 교환은 전용 예약된 리소스를 사용하는 것과 비슷하다. 예를 들어, 전용 회의식을 예약하는 것과 같다.
  • 패킷 교환은 필요할 때 리소스를 사용하는 것과 비슷하다. 예를 들어, 고용ㅇ 회의실을 필요할 때 사용하는 것과 같다.

Internet structure: a "network of networks"

  1. 인터넷 구조: network of networks
    • 인터넷은 여러 개의 독립적인 네트워크가 상호 연결된 형태로 구성된다.
    • host는 ISP를 통해 인터넷에 연결된다.
      • e.g. residential, enterprise(company, university, commercial) ISP
  2. Access ISP 간의 상호 연결
    • 각 Access ISP는 상호 연결되어 있어야 한다.
    • 이를 통해 두 호스트가 서로 패킷을 주고받을 수 있다.
  3. complex network
    • 상호 연결된 네트워크의 결과로 매우 복잡한 구조가 형성된다.
    • 인터넷의 발전은 경제적 요인과 국가 정책에 의해 주도되었다.
  4. 단계적 접근 방식
    • 현재 인터넷 구조를 설명하기 위해 단계적 접근 방식을 취한다.

Question: 만일 수 만개의 access ISP가 있다면, 이를 어떻게 연결하는가?

  1. ISP 간에 직접적으로 상호 연결하지 않는다. 이는 O(N^2)의 연결을 가진다.
    • ISP(Internet Service Provider): 사용자 호스트를 인터넷에 연결하는 역할을 한다.
    • 주거용 ISP, 기업용 ISP(회사, 대학, 상업용 ISP 등)

  1. 각각의 ISP를 하나의 global transit ISP에 연결하는 건 어떠한가? Customer, Provider ISP는 economic agreement를 가진다.

  1. 하지만 만일 on global ISP가 business면에서 유용하다면, 다른 경쟁자가 존재할 수 있다.

  1. 그리고 이 global ISP는 연결될 것 이다.
    • IXP(Internet eXchange Point, 인터넷 교환 지점): IXP는 다양한 ISP가 서로 연결되어 트래픽을 교환하는 물리적 위치
      • IXP를 통해 ISP 간의 데이터 전송이 원활하게 이루어진다.
    • peering link: 두 개의 인터넷 네트워크 간의 직접적인 연결을 의미한다.

  1. 그리고 regional network가 access network를 ISP에 연결하기 위해 등장할 수 있다.

  1. 그리고 content provider networks(e.g. Google, Microsoft, Akamai)가 자기만의 network를 운영할 수 있다. 이는 자신들의 content를 end user에 좀 더 가져올 수 있도록 한다.

============================================================================================

  1. 인터넷의 계층 구조
    • Tier-1 ISP: 전 세계적으로 커버리지를 제공하는 대형 상업용 ISP이다. e.g. Level 3, Sprint, AT&T, NTT
    • Reginal ISP: 특정 지역 내에서 서비스를 제공하는 ISP로, 여러 접근 ISP와 연결된다.
    • Access ISP: 일반 사용자와 기업에게 인터넷 연결을 제공하는 ISP이다. e.g. 주거용 ISP, 기업용 ISP
  2. 인터넷 교환 지점(IXP)
    • IXP는 여러 ISP가 서로 연결되어 트래픽을 교환하는 물리적 위치이다.
    • IXP를 통해 ISP 간의 데이터 전송이 원활하게 이루어진다.
  3. 인터넷의 복잡성
    • 인터넷 구조는 다양한 ISP와 IXP의 상호 연결로 인해 매우 복잡하다.
    • 인터넷의 발전은 경제적 요인과 국가 정책에 의해 주도되었다.
  4. 중심부의 대형 네트워크
    • 인터넷의 중심에는 잘 연결된 대형 네트워크가 소수 존재한다.
    • Tier-1 Commercial ISP: national & international coverage를 제공한다.
    • Content Provider Network: 이들은 데이터 센터를 인터넷에 연결하는 사설 네트워크를 운영하여, 종종 Tier-1 및 지역 ISP를 우회한다.(e.g. Google, Facebook)

Tier-1 ISP Network map: Sprint(2019)

한국의 IX 연동 현황

Performance: Loss, Delay, Throughput

How do packet loss and delay occur?

Packet Loss and Delay Occur

  1. Packet Queuing
    • Packet은 route의 Buffer의 대기열에 쌓이게 된다.
    • 이는 Packet이 Output link에 접근할 수 있는 시간이 될 때까지 대기하는 것을 의미한다.
  2. Packet Loss
    • Arrival Rate(패킷 도착률)이 Output Link Capacity(링크의 출력 용량)를 일시적으로 초과하면 Packet Loss가 발생할 수 있다.
    • 패킷이 라우터에 도착하는 속도(도착률)가 링크의 전송 속도보다 높을 때, 버퍼에 패킷이 쌓이게 된다.
    • Router의 Buffer가 가득 차게 되면, 추가로 도착하는 Packet은 버려지거나 손실된다.



위의 그림에서

  • Transmission Delay(패킷 전송 지연): 패킷이 전송 링크를 통해 전송되는 데 걸리는 시간
  • Queueing Delay(패킷 큐잉 지연): 패킷이 버퍼에서 대기하는 시간
  • Packet Loss(패킷 손실): 버퍼가 가득 차서 더 이상 패킷을 저장할 수 없을 때 발생



Packet Delay: Four Sources

패킷 지연의 네 가지 주요 요인

  • Nodal Processing Delay(d_proc)
    • 라우터에서 패킷을 처리하는 데 걸리는 시간. 이는 오류를 검사하고, 패킷의 목적지 주소를 확인하는 과정을 포함한다.
    • 패킷 헤더를 조사하고 패킷을 어디로 보낼지 결정하는 시간
    • 노드 처리 이후에 라우터는 목적지 라우터로 향하는 링크의 큐에 보낸다.
    • 일반적으로 매우 짧으며 밀리초 단위이다.
    • e.g. 놀이공원에서 롤러코스터를 타기위해 어디로, 어떻게 갈지를 결정하는 시간

  • Queueing Delay(d_queue)
    • 패킷이 라우터의 출력 링크로 전송되기 위해 대기하는 시간. 이는 네트워크의 혼잡 수준에 따라 달라진다.
    • 큐에 저장되어 링크로 전송되기를 기다리는 패킷의 수에 따라 결정된다. 큐가 비어 있다면 큐잉 지연은 0이다.
    • 혼잡이 심할수록 대기 시간이 길어진다.
    • e.g. 롤러코스터를 타러 갔는데 앞서 도착한 사람들이 있어 대기하는 시간
  • Transmission Delay(d_trans)
    • 패킷의 모든 비트를 송신 링크에 푸시하는 데 걸리는 시간
    • 패킷의 모든 비트를 링크로 전송하는데 필요한 시간
    • e.g. 롤러코스터에 탑승할 차례가 되어 자리에 앉기까지 걸리는 시간
    • Transmission Delay = L / R
      • L: 패킷의 크기(bits)
      • R: 링크 전송 속도(bps)
      • e.g. packet의 크기가 10,000bit이고 전송 속도가 1,000,000 bits/sec일 경우 전송 지연은 0.01sec
  • Propagation Delay(d_prop)
    • 패킷이 링크를 통해 전파되는 데 걸리는 시간
    • 링크의 처음부터 목적지 라우터까지의 전파에 필요한 시간. (목적지 라우터는 최종 목적지만을 의미하지 않는다.)
    • 비트는 링크의 전파속도로 전파되며, 빛의 속도나 같거나 약간 작다.
    • 전파 지연은 두 라우터 사이의 거리(length of physical link)를 전파속도로 나눈 것이다.
    • Propagation Delay = d / s
    • e.g. 롤러코스터가 출발해서 한 코스를 도는 시간
      • d: length of physical link
      • s: propagation speed(~2*10^8 m/sec)
      • e.g. length of physical link is 2,000,000m 그리고 propagation speed가 2*10^8m/sec일 경우 전파 지연은 0.01sec이다.
  • Transmission Delay vs Propagation Delay
    • 전송 지연은 router가 packet을 내보내는 데 필요한 시간으로, 두 라우터 사이의 거리와 상관없다.
    • 전파 지연은 packet이 한 router에서 다른 router까지 이동하는데 필요한 시간이다. packet 길이나 전송률과 상관이 없다.

Caravan Analogy

  1. 설정
    • Car: 각 자동차는 네트워크에서 전송되는 개별 비트를 나타냄
    • Caravan: 자동차의 집합으로, 네트워크에서 전송되는 Packet을 나타냄
    • Toll Booth: 네트워크의 라우터 또는 스위치를 나타내며, 이 지점을 통과할 때 지연이 발생
  2. 조건 설정
    • 자동차는 100 km/h
    • Toll Booth에서 각 자동차를 처리하는 데 12초가 소요된다.
    • Caravan은 Car가 10대
  3. Q. How long until caravan is lined up before 2nd toll booth?
    • 마지막 Car가 toll booth를 통과할 때 12 * 10 = 120 sec
    • 마지막 Car가 2nd toll booth를 도착하면 100km / (100km/h) = 1h
    • => 62m
  4. 조건 재설정
    • 자동차는 1000km/h
    • Toll Booth에서 각 자동차를 처리하는데 1min이 소요
  5. Q. will cars arrive to 2nd booth before all cars service at first booth?
    • Yes! <- NO아님? ㅋ
    • 속도가 1000km/h이기에 100km / (1000km/h) = 6m, 즉 첫 차가 toll booth를 통과하고 두 번째 toll booth에 도달까지 7분이 소요된다. 이 때 첫 번째 toll booth도 지나지 않은 자동차는 3대이다.

Packet Queueing Delay(revisted)

  1. Packet Queuing Delay
    • R: 링크 대역폭 (bits per second, bps)
    • L: 패킷 길이 (bits)
    • a: 평균 패킷 도착률 (packets per second)
  2. Traffic Intensity(트래픽 강도)
    • 트래픽 강도는 La / R로 계산됩니다.
    • La/R ≈ 0: 평균 큐잉 지연이 작습니다.
      • 트래픽 강도가 낮을 때, 평균 큐잉 지연은 거의 없습니다.
      • 패킷이 거의 대기하지 않고 즉시 전송될 수 있습니다.
    • La/R → 1: 평균 큐잉 지연이 커집니다.
      • 트래픽 강도가 높아질수록, 평균 큐잉 지연이 증가합니다.
      • 패킷이 전송되기 전에 더 오래 대기해야 합니다.
    • La/R > 1: 네트워크에 도착하는 작업이 서비스될 수 있는 양을 초과하므로 평균 지연이 무한대가 됩니다.
      • 트래픽 강도가 1을 초과하면, 네트워크가 과부하 상태가 되어 패킷이 손실되거나 무한정 대기하게 됩니다.

"Real" Internet Delays and Routes

"실제" Internet Delay와 Loss는 어떻게 보이는가?

 

TTL(Time To Live): 네트워크에서 패킷이 라우터를 통과할 수 있는 최대 횟수를 나타내는 필드이다. TTL은 주로 IP 패킷 헤더에 포함되어 있으며, 라우터를 통과할 때마다 이 값이 감소한다. TTL 값이 0에 도달하면 패킷은 폐기되며, 이를 통해 네트워크에서 무한 루프를 방지할 수 있다.



ICMP (Internet Control Message Protocol): 네트워크 장치들 간에 제어 메시지를 교환하기 위한 프로토콜이다. 이는 IP 프로토콜의 일부로, 네트워크 상태를 진단하고 문제를 해결하는 데 사용된다. ICMP는 주로 오류 메시지와 네트워크 상태 정보를 전달하는 역할을 한다.



TraceRoute Program

  • 소스에서 목적지로 가는 경로에 따라 라우터마다 지연 시간을 측정하는 도구이다.
  • 소스에서 라우터로 가는 경로를 추적하면서 각 라우터를 통과하는 데 걸리는 시간을 측정한다.
  • delay time = Nodal Processing Delay + Queueing Delay + Transmission Delay + Propagation Delay
  • 작동과정
    1. 각 라우터마다 패킷 전송
      • i 번째 라우터까지의 지연 시간 측정:
        • Traceroute는 TTL 값을 i로 설정하여 i 번째 라우터까지 가는 패킷을 보낸다.
        • i 번째 라우터는 TTL 값이 0이 되면 패킷을 폐기하고, ICMP "시간 초과" 메시지를 소스에 반환한다.
    2. 세 개의 패킷 전송
      • Traceroute는 각 라우터에 대해 세 개의 패킷을 보낸다.
      • 이는 더 정확한 지연 시간을 측정하기 위함이며, 각 패킷에 대해 개별적으로 지연 시간을 측정한다.
    3. 지연 시간 측정
      • 송신자는 패킷이 전송된 시간과 ICMP 메시지가 반환된 시간 사이의 간격을 측정한다.
      • 이렇게 해서 각 라우터까지의 왕복 시간을 계산한다.

Real Internet Delays and Routes

위의 그림은 gaia.cs.umass.edu 에서 www.eurecom.fr 까지의 route 과정을 traceroute를 활용해서 나타낸 것이다.

"1 cs-gw (128.119.240.254) 1ms 1ms 2ms"에서 3개의 packet을 보내기에 3개의 결과가 나온다.

두 사이트 사이에는 19개의 router가 있는 것이다.

Packet Loss

  1. 패킷 손실의 원인
    • 큐(버퍼) 용량의 한계: 네트워크 장치, 특히 라우터의 버퍼에는 제한된 용량이 있다.
    • 큐가 가득 찰 때: 패킷이 도착했을 때 버퍼가 가득 차 있으면, 새로운 패킷은 버퍼에 저장되지 못하고 손실된다.
  2. 패킷 손실 처리
    • 손실된 패킷은 다음의 방법으로 처리될 수 있다:
      • 이전 노드에 의해 재전송: 패킷을 보낸 이전 라우터가 손실된 패킷을 다시 보낼 수 있다.
      • 출발지 시스템에 의해 재전송: 패킷의 출발지 시스템이 손실된 패킷을 다시 보낼 수 있다.
      • 전송되지 않음: 일부 프로토콜에서는 손실된 패킷을 재전송하지 않고 무시할 수도 있다.



ThroughtPut(처리량)

송신자에서 수신자로 비트가 전송되는 속도(bit/time unit)를 나타내는 네트워크 성능의 중요한 측정 지표이다.



1. **처리량(Throughput)**: 송신자에서 수신자로 비트가 전송되는 속도. 2. **순간 처리량(Instantaneous Throughput)**: 특정 시점에서의 전송 속도. 3. **평균 처리량(Average Throughput)**: 일정 기간 동안의 평균 전송 속도.

처리량의 시각적 설명

  • 파이프 모델: 비트를 물처럼 취급하여 파이프를 통해 흐르는 방식으로 설명.
    • 서버가 비트를 파이프에 보내고, 파이프는 비트를 수용할 수 있는 최대 속도로 비트를 전달.
  • 링크 용량: Rs와 Rc는 각각의 링크가 비트를 전송할 수 있는 최대 속도를 나타냄.
    • 이 두 링크를 통해 비트가 전달될 때의 최대 처리량은 이 링크들 중 가장 작은 값에 의해 제한.




============================================================================================




  1. 병목 링크(Bottleneck Link)
    • 병목 링크란 네트워크 경로에서 가장 낮은 처리 용량을 가진 링크를 의미.
    • 병목 링크의 용량이 전체 경로의 처리량을 제한.
  1. 예제 시나리오
    • Rs < Rc : 이 경우, 전체 경로의 평균 처리량은 Rs 로 제한
    • Rs > Rc : 이 경우, 전체 경로의 평균 처리량은 Rc 로 제한
    • 결론: 전체 경로의 평균 처리량은 항상 경로에서 가장 낮은 용량을 가진 링크에 의해 제한.



Throughput: network scenario

백본(Backbone) 은 컴퓨터 네트워크의 주요 데이터 경로를 의미하며, 고속 데이터 전송을 위해 네트워크의 다양한 부분을 연결하는 중심적인 경로이다. Backbone은 다양한 네트워크를 연결하고 데이터 트래픽을 처리하는 데 중요한 역할을 한다.

  1. 네트워크 시나리오
    • 네트워크에는 10개의 연결이 존재하며, 이들 연결은 모두 하나의 Backbone Bottleneck 링크(용량 R bps)를 공유한다.
    • 각 연결은 서버에서 클라이언트로 데이터를 전송한다.
    • Backbone 링크는 네트워크 경로에서 가장 낮은 용량을 가진 링크로서, 전체 네트워크의 처리량을 제한한다.
  2. 각 연결의 처리량 계산
    • 각 연결의 처리량은 다음과 같이 계산된다:
      • Rc: 클라이언트로 가는 링크의 용량
      • Rs: 서버로 가는 링크의 용량
      • R: Backbone 링크의 용량
    • 각 연결의 end to end처리량은 min(Rc,Rs, R/10) 으로 계산된다.
      • Backbone 링크가 10개의 연결에 의해 공유되므로, 각 연결이 얻을 수 있는 최대 처리량은 Backbone 링크 용량의 1/10 이다.



Security

Bad guys: malware

  1. 악성 소프트웨어(Malware)의 유형
    • 바이러스(Virus): 자신을 복제하여 확산되는 악성 소프트웨어이다. 주로 이메일 첨부 파일이나 다운로드한 파일을 통해 실행
    • 웜(Worm): 네트워크를 통해 스스로를 복제하고 확산하는 악성 소프트웨어이다. 사용자의 개입 없이도 전파될 수 있다.
  2. 스파이웨어(Spyware)
    • 사용자의 동의 없이 컴퓨터에서 정보를 수집하는 악성 소프트웨어이다. 키로깅(키보드 입력 기록)이나 웹 사이트 방문 기록을 수집하여 외부로 전송할 수 있다.
  3. 봇넷(Botnet)
    • 악성 소프트웨어에 감염된 다수의 컴퓨터들이 네트워크를 통해 연결되어, 공격자의 명령을 받아 다양한 악성 행위를 수행하는 네트워크이다.
    • 감염된 호스트는 스팸 메일 발송이나 분산 서비스 거부 공격(DDoS)에 사용될 수 있다.



Bad guys: denial of Service

  1. 서비스 거부 공격(DoS)의 정의
    • 목표: 서버나 네트워크 자원을 사용 불가능하게 만드는 것.
    • 방법: 과도한 트래픽을 발생시켜 자원을 고갈시킨다.
  2. 공격 과정
    • 대상 선택: 공격자는 특정 서버나 네트워크를 대상으로 선택한다.
    • 네트워크 침입: 공격자는 네트워크 주변의 여러 호스트를 침입한다. 이는 주로 봇넷(botnet)을 통해 이루어진다.
    • 공격 실행: 침입된 호스트에서 대량의 패킷을 목표 서버로 전송하여 서버를 마비시킨다.



Bad guys: packet interception

  1. 패킷 스니핑(Packet Sniffing)
    • 정의: 네트워크 상에서 전송되는 패킷을 가로채어 분석하는 행위이다.
    • 브로드캐스트 미디어(Broadcast Media): 공유 이더넷이나 무선 네트워크와 같은 브로드캐스트 미디어에서는 패킷이 네트워크 상의 모든 장치에 전송되므로, 스니핑이 더 쉽다.
  2. 스니핑 방법
    • Promiscuous Mode: 네트워크 인터페이스가 모든 패킷을 읽고 기록하도록 설정된다. 이는 원래 목적지 주소와 상관없이 모든 패킷을 수신할 수 있게 한다.



Bad guys: fake identity

  1. IP 스푸핑(IP Spoofing)의 정의
    • 목표: 공격자가 자신의 신원을 숨기거나 다른 사용자로 가장하여 패킷을 전송하는 것.
    • 방법: IP 패킷의 소스 주소를 위조하여 전송.
  2. 스푸핑의 예시
    • 예를 들어, 공격자가 B에서 A로 가는 패킷을 보낼 때, 패킷의 소스 주소를 실제 소스 B 대신 C로 설정하여 보냅니다. 이렇게 하면 A는 패킷이 C에서 온 것으로 인식하게 됩니다.



Protocol layers, Service models

complex of networks

  • 네트워크는 여러 "조각"으로 구성됩니다: host, router, links of various media, application, protocol, hardware, software 등.
  • 네트워크의 구조를 체계적으로 조직하는 것이 필요합니다.



Example: organization of air travel



 

Why layering

  1. 복잡한 시스템 다루기
    • explicit structrue: 복잡한 시스템의 조각들을 식별하고 그 관계를 이해하는 데 도움이 된다.
    • layered reference model: 시스템의 구조를 설명하고 논의할 때 유용한 참조 모델이다.
  2. modularization의 이점: 유지보수(maintenance)와 system의 update에 용이하다.
    • 투명한 변경(transparent change): 특정 계층의 서비스 구현을 변경하더라도 나머지 시스템에는 영향을 미치지 않는다.



Internet Protocol Stack

  1. Application Layer
    • 기능: 네트워크 어플리케이션을 지원하며, 사용자와 직접 상호작용하는 데이터를 처리한다.
    • e.g.: HTTP(웹 브라우징), SMTP(이메일), FTP(파일 전송) 등
  2. Trasnport Layer
    • 기능: 프로세스 간 데이터 전송을 담당한다. 신뢰성 있는 데이터 전송을 보장하고, 데이터 흐름을 제어한다.
    • e.g.: TCP(Transmission Control Protocol), UDP(User Datagram Protocol)
  3. Network Layer
    • 기능: packet을 소스에서 목적지까지 전송한다. routing과 packet forwarding을 담당한다.
    • e.g.: IP(Internet Protocol), routing protocol
  4. Link Layer
    • 기능: 인접 네트워크 노드 간의 데이터 전송을 담당한다. 데이터 프레임을 관리하고, 오류 검출과 수정 기능을 제공한다.
    • e.g. Ethernet, Wi-Fi
  5. Physical Layer
    • 기능: 실제 하드웨어 전송 매체를 통해 비트를 전송한다. 전기적, 기계적, 절차적 특성을 정의한다.
    • e.g. 케이블, 무선 주파수, 전압 레벨



Encapsulation

  1. 캡슐화 과정
    • 출발지(source)에서 목적지(destination)로 데이터가 이동하는 동안, 각 계층은 자신만의 header를 추가한다.
    • header는 각 계층에서 필요한 제어 정보를 포함한다.
  2. source 컴퓨터에서:
    • application 계층: message 생성
    • transport 계층: message에 TCP/UDP 헤더 추가 -> segment 생성
    • network 계층: segment에 IP 헤더 추가 -> packet 생성
    • link 계층: packet에 링크 헤더 추가 -> frame 생성
    • physical 계층: frame을 비트로 변환하여 전송
  3. destination 컴퓨터에서
    • physical 계층: 비트를 frame으로 변환
    • link 계층: frame의 링크 헤더 제거 -> packet 추출
    • network 계층: packet의 IP 헤더 제거 -> segment 추출
    • transport 계층: segment의 TCP/UDP 헤더 제거 -> message 추출
    • application 계층: message 처리




History

Internet history




ISO/OSI reference model

ISO/OSI 모델은 네트워크 통신을 7개의 계층을 나누어 각 계층별로 통신 과정을 설명하는 참조 모델이다.



ISO/OSI 모델은 네트워크 통신의 복잡성을 줄이고, 상호 운용성을 보장하며, 다양한 네트워크 기슬과 장비들이 원활하게 통신할 수 있도록 설계되었다.



아래의 서비스들은 필요하다면 application에서 반드시 실행되어야 한다.

  • Presentation Layer(표현 계층): 데이터의 형식을 변환하고 암호화 및 압축 등의 작업을 수행한다.
    • e.g. JPEG, MPEG, SSL/TLS 등
  • Sesson Layer(세션 계층): 통신 세션을 설정, 유지, 종료하며, 데이터 교환의 동기화와 체크포인트 설정을 담당.
    • e.g. NetBIOS, RPC 등

'학교수업 > 컴퓨터망' 카테고리의 다른 글

Chapter4: Network Layer-Data Plane  (0) 2024.07.04
Chapter3: Transport Layer-2  (0) 2024.07.04
Chapter3: Transport Layer  (0) 2024.07.03
Chapter2: Application Layer-2  (0) 2024.07.03
Chapter2: Application Layer  (0) 2024.07.01

+ Recent posts