학교
[컴퓨터 네트워크] Chapter1. Computer Networks and the Internet (Part2) - (2)
[4] Packet queueing delay (revisited)

1) 주요 변수
R : link bandwidth (bps) - 링크 대역폭
L : packet length (bits) - 패킷 길이
a : average packet arrival rate - 평균 패킷 도착률
2) 경우의 수
La/R ~ 0 : avg. queueing delay small (평균 대기열 지연 시간이 작음)
La/R -> 1 : avg.queueing delay large (평균 대기열 지연 시간이 큼)
La/R > 1 : more "work" arriving is more than can be serviced (서비스할 수 있는 것보다 더 많은 작업이 도착함)
무한 대기열의 경우 : 지연 시간이 무한대로 증가할 수 있다.대기열의 크기가 무한대이기 때문에 패킷이 손실될 염려가 없다.
하지만 트래픽 강도가 1보다 크면 시스템이 패킷을 처리할 수 있는 속도보다 더 많은 패킷이 도착하게 되어 대기열이 무한이 길어질 수 있다.
유한 대기열의 경우 : 대기열이 가득 차면 패킷 손실이 발생하게 된다.대기열의 크기가 제한되어 있어서 대기열이 가득 차게 되면 더 이상 새로운 패킷을 수용할 수 없게 된다.
트래픽 강도가 1보다 클 경우 패킷의 도착률이 시스템의 처리 용량을 초과하게 되므로 대기열이 가득 차서 새로운 패킷들이 손실될 수 있다.
-> 따라서 트래픽 강도가 1보다 크지 않도록 시스템을 설계해야 한다.
[5] 'Real' Internet delays and routes

1) traceroute program
: 목적지에 대한 종단 인터넷 경로에 따라 source에서 router까지 지연 측정을 제공한다.
목적지를 향하는 경로에서 라우터 i에 도달할 3개의 패킷을 전송한다. (i는 수명 필드 값)
3개의 패킷을 전송하여 평균 지연 시간을 측정한다
라우터는 보낸 사람에게 패킷을 반환한다.
발신자는 전송과 응답 사이의 시간 간격을 측정한다.
이렇게 반복하다가 마침내 마지막 router까지의 경로를 결정하게 된다.
2) 비유
첫 번째 집
집에서 출발해 첫 번째 집에 갑니다. 이 집에서는 잠시 머물고 다시 돌아와야 합니다.
이 집에서의 대기 시간을 측정합니다.
두 번째 집
이번에는 첫 번째 집을 지나 두 번째 집에 갑니다. 두 번째 집에서는 다시 첫 번째 집으로 돌아가야 합니다.
두 번째 집에서의 대기 시간도 측정합니다.
최종 목적지
마지막으로 최종 목적지(친구의 집)에 갑니다. 이 집에서는 더 이상 돌아갈 필요 없이, 기다린 시간을 측정합니다.
3) 다른 사진으로 이해하기

4) traceroute 예시

각 hop마다 3개의 delay 측정
7, 8 Lines : trans-oceanic link (대륙을 넘어 해양을 가로지르는 데이터 통신 링크)
trans-oceanic link는 지구 반대편의 서버와 통신할 수 있도록 해준다.
10, 11 Lines : delays decrease (패킷이 네트워크를 지나면서 지연 시간이 감소하는 현상)
초기에는 지연 시간이 크고, 네트워크의 내부로 들어갈수록 지연 시간이 줄어들 수 있다.
[6] Packet loss

버퍼의 이전 링크에 대한
유한된 용량이 있다.버퍼의 용량은 한정되어 있으며, 너무 많은 패킷이 도착하면 버퍼가 가득 차게 된다.
전체 대기열에 도착하는
패킷이 삭제된다. (일명 손실된다고 한다.)버퍼가 가득 차면 새로운 패킷이 도착했을 때
기존 패킷이 삭제된다.일반적으로 queue는
FIFO 방식으로 작동하기에, 버퍼가 가득차게 되면 새로운 패킷이 들어올 공간을 만들기 위해 기존의 패킷을 삭제해야 한다.
손실된 패킷은 이전 노드, 소스 엔드 시스템에 의해템
재전송되거나 전혀 전송되지 않을 수 있다.
[7] Throughput (처리량)
: 발신자에서 수신자로 비트가 전송되는 속도(비트/시간 단위)

1) 종류
Instantaneous Throughput (즉시 처리량) : 특정 시점에서의 데이터 전송 속도
Average Throughput (평균 처리량) : 일정 기간 동안의 평균 데이터 전송 속도
전체 시간 동안의 데이터 전송 속도를 평균하여 계산한 값
ex) 1시간 동안의 전체 데이터 전송량을 그 시간으로 나눈 값
2) bottleneck link
: 종단 처리량을 제한하는 종단 경로의 링크
전송 속도 (Rs), 채널 용량(Rc)
정답 :
링크들의 스루풋중 제일 '최소'인 것이 이 전체 시스템의 스루풋전체 시스템에서 최소 스루풋의 링크를 bottleneck link 라고 한다.
<경우1 : Rs < Rc 전송 속도가 채널 용량보다 작을 때>

: 서버가 배출한 비프틑 라우터를 통해 올바르게 흘러갈 것이다.
작은 양이 작은 통로를 지나 큰 통로로 가면 결국 bits/sec에서 bits는 고정이기 때문에 Rs가 전체 스루풋이다.
ex) 전송 속도 Rs가 1Mbps이고, 채널 용량 Rc가 10Mbps의 경우 채널에 여유가 있어 전송이 원활하게 이루어질 가능성이 높다.
<경우2 : Rs > Rc 전송 속도가 채널 용량보다 클 때>

: 라우터는 자신이 수신하는 비트만큼 빠르게 그 비트들을 전달할 수 없을 것이다.
큰 양이 큰 통로를 지나 작은 통로로가면, 작은 통로로 가는 순간에 bottleneck(병목) 현상이 생기게 된다.
ex) 전송 속도 Rs가 15Mbps이고, 채널 용량 Rc가 10Mbps의 경우 채널이 수용할 수 있는 용량을 초과하므로 데이터 손실이나 오류가 발생할 수 있고, 채널의 성능이 저하될 수 있다.
3) network scenario

< Example 1 >
Rs = 1, Rc = 1, R = 5
-> bottleneck link : R (0.5로 가장 작다.)
< Example 2 >
Rs = 1, Rc = 1, R = 100
-> bottleneck link : Rs or Rc (1로 가장 작다)
5. Protocol layers, service models
[1] Protocol "layers" and reference models
1) 네트워크는 복잡하며, 많은 '조각'으로 구성된다.
< 네트워크의 구성 요소 >
hosts (호스트)
routers (라우터)
links of various media (다양한 매체의 링크)
applications (애플리케이션)
protocols (프로토콜)
hardware, software (하드웨어, 소프트웨어)
2) 네트워크의 구조를 정리할 수 있을까요? 아니면 적어도 네트워크에 대한 우리의 논의에 희망이 있을까요?
[2] Example : organization of air travel

: 항공 여행과 같이 많은 서비스를 포함하는 일련의 단계
1) 세 단계의 과정
<첫 번째 과정>
항공권 구매
수하물 체크인
탑승구에서 타기
활주로 이륙
비행기 경로에 따라 이동
<두 번째 과정>
비행기 경로에 따라 이동
<세 번째 과정>
비행기 경로에 따라 이동
활주로 착륙
탑승구에서 내리기
수하물 청구
항공권 컴플레인
2) service layers

: 여러 가지의 layer가 존재한다.
layer : 각 레이어는 자체 내부 레이어 작업을 통해 서비스를 구현한다.
특징 : 아래 레이어에서 제공하는 서비스에 의존한다.
ex) 수하물을 내리려면, 비행기가 착륙해야하는 것처럼 의존한다.
각 레이어에서 제공되는 서비스를 말로 설명하면?

3) 왜 계층화(layering)인가?
복잡한 시스템을 다루는 방법
명시적 구조를 통해 복잡한 시스템의 구성 요소들을 식별하고 관계를 파악할 수 있음
토론을 위한 계층화된 참조 모델 사용
모듈화의 이점
시스템 유지보수와 업데이트가 용이해짐
한 계층의 서비스 구현 변경이 시스템의 나머지 부분에 투명하게 적용됨
예: 게이트 절차의 변경이 시스템의 나머지 부분에 영향을 미치지 않음
추가 질문들
계층화가 해롭다고 여겨질 수 있는가?: Yes, 단점도 존재한다.
Overhead 증가 : 각 계층마다 추가적인 헤더와 메타데이터가 붙어 전송 데이터 크기가 커지면서 네트워크 효율이 감소합니다.
복잡성 증가 : 각 계층이 독립적으로 동작하면서 문제 해결이나 최적화가 어려워지고, 전체 시스템 성능에 부정적인 영향을 미칠 수 있습니다.
낮은 효율성 : 각 계층이 데이터를 비효율적으로 처리할 경우, 불필요한 연산이 발생해 성능 저하로 이어집니다.
다른 복잡한 시스템에서의 계층화는 어떠한가?
[3] Internet protocol stack

1) Application Layer (응용계층)
네트워크 응용 프로그램을 지원하는 계층이다.사용자와 직접 상호작용하는
애플리케이션이 이 계층에서 작동한다.프로토콜 : IMAP, STMP, HTTP
2) Transport Layer (전송 계층)
네트워크에서
프로세스 간 데이터 전송을 담당한다.데이터의 신뢰성과 흐름 제어를 처리하며,데이터의 정확한 전달을 보장한다.프로토콜 : TCP, UDP
3) Network Layer (네트워크 계층)
데이터그램 (패킷)이
소스에서 목적지까지 라우팅되도록 하는 계층이다.네트워크 경로를 결정하고 주소 지정, 라우팅을 처리한다.
프로토콜 : IP, Routig Protocols
4) Link Layer (링크 계층)
물리적인 네트워크 링크에서
인접 네트워크 요소 간의 데이터 전송을 담당한다.데이터 프레임의 형식과 전송 방식을 정의하며,오류 감지와 수정 기능도 포함된다.프로토콜 : Ethernet, 802.11(WiFi), PPP
5) Physical Layer (물리 계층)
데이터의 물리적인 전송을 담당한다.전송 매체를 통해
비트 스트림을 실제로 송수신하는 역할을 한다.실제 전선이나 광섬유 기능을 통해 0과 1의 비트 스트림을 전송한다.
전기적, 광학적 신호를 사용하여 데이터를 물리적으로 전달한다.
요약

[4] ISO/OSI reference model
: 인터넷 프로토콜 스택에 없는 두 가지 레이어가 존재한다.

1) Presentation Layer (표현 계층)
데이터의 형식 및 표현을 관리하는 계층이다.
기능 : 데이터 변환, 데이터 암호화/복호화, 압축/해제압축
프로토콜: JPEG, MPEG, GIF, TLS, SSL
2) Session Layer (세션 계층)
통신하는 두 장치 간의 세션을 설정, 유지, 종료하는 역할을 하는 계층이다.
기능 : 세션 관리, 동기화, 재전송 및 복구
프로토콜: NetBIOS, RPC, PPT
3) 인터넷 스택(TCP/IP)에서 Presentation Layer와 Session Layer가 누락된 이유
: 이러한 기능들이 응용 계층이나 전송 계층으로 통합되어, 별도의 계층을 둘 필요가 없기 때문이다.
: TCP/IP 모델은 실용성과 효율성을 중시하며, 네트워크 통신에서 필수적인 기능만을 계층화해 간소화된 구조를 채택한 것이다.
-> 이러한 서비스는 필요한 경우 application layer에서 구현해야 한다.
[5] Encapsulation / Decapsulation

1) Encapsulation
: 데이터가 네트워크를 통해 전송될 때 각 계층에서 추가적인 정보를 추가하여 전송하는 과정
: 하위 계층 프로토콜이 상위 계층 프로토콜로부터 데이터를 수신한 다음, 해당 데이터를 프레임의 데이터 부분에 배치하는 프로세스
캡슐화 과정에서 각 계층은 위에서부터
서비스 데이터 단위 (SDU)에 제어 정보가 포함된 헤더를 추가하여프로토콜 데이터 단위 (PUD)를 구축한다.과정
데이터 생성: 상위 계층(응용 계층 등)에서 애플리케이션 데이터가 생성된다.. 이 데이터는 서비스 데이터 단위(SDU)라고 한다.
헤더 추가: 데이터가 전송될 준비가 되면, 하위 계층에서는 헤더를 데이터에 추가한다. 이 헤더는 전송 과정에서 필요한 제어 정보와 메타데이터를 포함한다.
응용 계층: 응용 데이터는 전송을 위해 전송 계층으로 전달된다.
전송 계층: 전송 계층에서는 데이터에
TCP 헤더나 UDP 헤더를 추가하여 프로토콜 데이터 단위(PDU)를 만든다.네트워크 계층: 전송 계층에서 생성된 PDU는 네트워크 계층으로 전달되고, 네트워크 계층에서는
IP 헤더를 추가하여 새로운 PDU를 생성한다.링크 계층: 네트워크 계층에서 생성된 PDU는 링크 계층으로 전달되며, 링크 계층에서는
프레임 헤더를 추가하여 최종 PDU를 생성한다.물리 계층: 링크 계층에서 생성된 최종 PDU는 물리 계층에서
비트 스트림으로 변환되어 실제로 전송된다.
정리해서 보기

2) Decapsulation
: 수신 측에서 데이터가 각 계층을 통과하면서 캡슐화된 헤더를 제거하고 원래의 데이터를 복원하는 과정
: 하위 계층에서 받은 프레임이나 패킷의 헤더를 제거하고, 상위 계층에 원래의 데이터를 전달하는 프로세스.
이는 데이터를 각 계층에서 처리한 후, 목적지에서 올바르게 해석되도록 하는 과정
과정
비트 스트림 수신: 물리 계층에서 비트 스트림으로 수신된 데이터는 링크 계층으로 전달된다.
링크 계층 처리: 링크 계층에서는 프레임 헤더를 제거하고, 링크 계층에서의 PDU를 네트워크 계층으로 전달한다.
네트워크 계층 처리: 네트워크 계층에서는 IP 헤더를 제거하고, 네트워크 계층에서의 PDU를 전송 계층으로 전달한다.
전송 계층 처리: 전송 계층에서는 TCP/UDP 헤더를 제거하고, 전송 계층에서의 PDU를 응용 계층으로 전달한다.
응용 계층 처리: 응용 계층에서는 데이터의 최종 부분을 복원하고, 애플리케이션에 필요한 형태로 데이터를 제공한다.
-> 이 둘은 program이 아닌 process이다.
: 이들이 특정 소프트웨어나 코드에 의존하는 단일한 프로그램이 아니라, 네트워크 통신 과정에서 반복적으로 일어나는 일련의 작업이기 때문이다.
그림으로 보는 Encapsulation과 Decapsulation

