Chapter 1
bandwidth : 특정한 기능을 수행할 수 있는 주파수의 범위
전화 회사에서 제공하는 access network : DSL(Digital Subscriber Line)
upstream : 1Mbps
downstream : 10Mbps -> download양이 더 많음(우린 data 소비자)
비대칭임

전화 회선을 보면 옆집과 공유안함 -> dedicated
cable 회사 : cable network

한 회선 공유 -> shared link
CMTS에서 Multiplexing
downstream : 30Mbps이라서 더 빨라 보이지만 shared이기 때문에 더 느릴 수 있음.
HFC : Hybrid Fiber Coax
Coax 회선 공유함. Fiber는 더 큰 대역폭을 제공하기 때문에 CMTS를 묶는 network에 사용함
학교나 기관은 ISP에 직접 물림(host가 너무 많음)

wireless LAN은 한 건물 안에서만 사용가능
wide area wireless access : celluar(이동 무선 통신에서 셀의 방식으로 통신망을 구성하고 운용하는 일)
공통점 : 무선, shared link
guided media : 물리적인 wire 사용
copper(twisted pair)
fiber(전송 속도 높아서 코어에서 사용, noise영향 적어서 먼거리까지 전송 가능)
coaxial cable: broadband (HFC에서 사용, 양방향)
unguided media : 물리적인 wire 사용 x
radio : 양방향
단점 : reflection, obstruction by objects, interference(노이즈에 민감)
Network Core
packet switching
no call set up : 자원 예약 하지 않고 필요할 때만 사용 -> set up이 없기 때문에 목적지 주소 필요함
host들은 application message를 packet으로 짜름
store and foward : 받으면서 동시에 보내진 못함
queueing delay존재 -> congestion 발생 가능
circuit switching
자원예약되면 share 불가 -> 데이터가 흐르지 않아도 낭비됨
set up : 경로를 결정함(분할을 잘해야 한명이 사용할때 다른사람도 사용가능) - 분할방식(FDM, TDM)
pipe으로 연결한 듯함

routing : 수많은 경로 중 한 경로 배정(라우팅 알고리즘을 이용하여 포워딩 테이블을 만드는 작업)
fowarding : 라우터의 입력 포트에서 출력 포트로 이동시킴
ISP


delay, loss, throughput in networks
packet delay = processing delay(error check, output link 정하기, 시간 거의 일정) + queueing delay(버퍼에서 기다리는 시간, 얘만 가변적) + transmission delay(link에 밀어 넣음, 거의 일정, L/R) + propagation delay(전파 속도, d/s)
L : 패킷 길이(bits)
R : link bandwidth(bps)
d : link 길이
s : 전파 속도
transmission delay : 라우터가 패킷을 내보내는데 필요한 시간
전파 지연 : 한 라우터에서 다음 라우터로 전파되는데 필요한 시간
queueing delay
traffic = data

L * a = 단위 시간당 유입되는 traffic 양1보다 크면 유입되는 속도가 뽑아내는 속도보다 큼
average 조심 -> 1에 가까워질수록 더 가팔라짐
throughput : 단위시간당 src에서 dst까지 배달한 traffic 양
스루풋은 capacity가 더 작은 link에 의해 결정됨 -> bottleneck link
(라우터는 패킷을 다 받을 때까지는 다음으로 전송하지 않음)
Protocols
why layering?
복잡한 문제 다루기위해서
유지보수, update 쉬움
단점
1. 하위 계층과 기능적으로 중복됨 -> 링크와 종단 시스템 모두에서 오류복구 기능 수행
2. 어느 한 계층에서의 기능이 다른 계층에만 존재하는 정보를 필요로 할 수 있음-> 계층 분리 목적 위배
Application layer
network application 지원함
transport 계층에 process to process delivery를 부탁함
transport layer
process to process delivery
network 계층에 host to host delivery를 부탁함
network layer
datagram의 라우팅
link 계층에 hop 전달을 부탁함
link layer
이웃 라우터에 데이터 전송
물리 계층
physical medium에 bit 실음
각 계층은 바로 아래 계층의 서비스를 이용하여 자기 protocol의 목표 달성

Chapter 2 : Application layer
core에는 application 계층 없음
application의 구조
1. client-server
2. p2p
server : 항상 켜져있음
p2p : 내가 서버가 되기도 하고 client가 되기도 함.
self scalability(스스로 확장) : 컴터가 켜지면 해당 컴터가 서버가 될수도 있어서 확장
process : 실행 중인 프로그램
socket : door
host에서 application을 실행하면 process가 생성되고 socket을 끼워넣음
host는 ip 주소있음 -> ip 주소만 있으도 통신 불가능 -> host안에 많은 process가 있기 때문에-> port number 필요
ip 주소(32bits)
ex) 집 주소만 있으면 누구한테 보낼지 모름(한 집에 여러명 살고 있음)
app마다 transport service 다름
data integrity, timing, throughput, security

tcp service
reliable transport
flow control : 너무 빨리 보내면 안됨(receiver가 감당하지 못할 정도로)
congestion control : network이 overload 되지 않도록
connection-oriented : 재전송 해줌
보장하지 않는 것들
1. timing : 0.1초만에 보내겠다~
2. 최소 스루풋
udp service
unreliable transport
why udp?
재전송을 하지 않음(전화할 때 놓친 패킷은 다시와도 쓸모 없음)
HTTP (hypertext transfer protocol)
client : browser
server : Web server
request : URL을 검색함(enter)
user가 tcp connection을 엶
stateless (요청을 기억안함)
*soft state : 유지하다가 지움
non-persistent HTTP
한번에 하나 보냄
image가 5개 있으면 connection을 5번 열고 닫음
persistent HTTP
한번 열면 여러개 보냄
web cache
자주 access되는 data를 빨리 가져옴(속도 빠름) -> isp가 설치 -> access link의 traffic을 줄여줌

총 응답 시간(요청부터 수신까지 걸리는 시간) = LAN 지연 + 접속지연(라우터간 지연) + 인터넷 지연
delay를 구하려면 traffic intensity(트래픽 강도)를 구해야함! -> L*a/R
LAN의 트래픽 강도 : (15요청/초) * (1 Mbits/요청) / 100Mbps = 0.15(15%)
접속 회선 트래픽 강도 : (15요청/초) * (1 Mbits/요청) / 15Mbps = 1
* 많이 사용해도 하나씩 보내니까 왜 Problem일까?
예를 들어 은행 손님 같은 경우도 1분에 1명씩 오지 않고 많이 오는 시간대가 존재하는데 traffic도 마찬가지임
해결법
1. 접속 회선 증설 -> 너무 비쌈
2. 캐시 설치

* 왜 2가 아니라 2.01일까?
캐시에 갔다오는 시간을 합친거 같음
mail service
http client -> pull 방식
smtp : push(받을 사람한테 그냥 push)
DNS
인간 친화적인 주소(www.naver.com)를 4byte 숫자로 매핑시켜줌
인간친화적 주소를 쓴다면 길이가 모두 다르기 때문에 문제가 생긴다-> 4byte는 길이 정해짐 -> 속도 빨라짐
중요 서비스
1. hostname to IP address
2. host aliasing : 복잡한 hostname을 가진 호스트는 하나 이상의 별명을 가질 수 있다.
3. load distribution : naver.com같은 인기 사이트는 여러 서버에 중복되어 있어서 각 서버가 다른 ip 주소를 가짐 -> 각 응답에서 순환식으로 주소를 보냄.
왜 중앙집중 방식이 아닐까?
single point of faliure
traffic volume(트래픽 양)
너무 멀 수 있음
유지관리
-> 확장성이 전혀 없음 -> 분산되도록 설계
DNS server : 분산, 계층적

1. root name server
2. TLD(top level domain) server .com, country domains(uk, fr)...
3. authoritative server : 가장 정확한 ip 주소 매핑을 가짐.
4. local dns name server(default name server) : 계층에 엄격하게 속하진 않음
만약 host가 dns query를 보내면 먼저 proxy로 작동하는 local dns name server로 보내짐
캐시를 가지기 때문에 out of date가능(갱신 안된 정보를 가질수도 있음) -> best effort(보장 x)
TTL(time to leave)를 가지기 때문에 soft state
TLD 서버가 캐싱되어 있기 때문에 root로 거의 안감

p2p 구조
no always on server



CDN(content distribution networks)
video는 major consume -> 어케 scale?
single은 불가능 - 다양성 때문에(다양한 capability)
-> 분산시키자
DASH(Dynamic adaptive streaming over HTTP) : http 기반 스트리밍
비디오는 여러 개의 서로 다른 버전으로 인코딩됨 - > 서로 다른 비트율과 품질을 가짐
사용자는 매니페스트 파일을 요청하여 서버에서 제공되는 다양한 번전에 대해 알게된다.
스트리밍 서비스를 제공할 때 단일 거대 데이터 센터 구축하면 문제점 발생
1. 먼 지점에 있는 경우 화면 정지 현상 겪을 수 있음(비디오소비율보다 낮은 전송용량을 가진다면)
2. 인기있는 비디오는 같은 통신 링크를 통해 여러번 반복적으로 전송됨 ->동일 바이트 전송하는데 중복 비용을 지불함
3. single point of failure
-> CDN은 다수의 지점에 분산된 서버들을 웅영하며, 데이터의 복사본을 이들 분산 서버에 저장한다.
서버 위치를 어케 정할까?
1. Enter deep
서버를 최대한 사용자 가까이에 위치시켜 서버 사이의 링크 및 라우터 개수를 줄이고 지연시간 및 처리율을 높임 -> 유지 관리 비용 높음
2. Bring home
적은 수의 핵심 지점에 큰 규모 서버를 구축, 일반적으로 접속 isp에 연결하는 대신 인터넷 교환지점(internet exchange points, IXPs)에 배치함.
CDN은 pull방식이다. 어떤 비디오는 특정 국가에서만 유명할 수 있기 때문이다.
***Pull coding or client pull is a style of network communication where the initial request for data originates from the client, and then is responded to by the server.
The reverse is known as push technology, where the server pushes data to clients.***

1. 사용자가 웹페이지 방문
2. 사용자가 링크를 클릭하면 사용자의 호스트는 DNS query를 보냄
3. local dns는 해당 쿼리를 책임 dns서버로 연결, ip주소대신에 kingCDN의 호스트 이름을 알려줌.
4. 사용자의 ldns는 두번째 쿼리를 보내고 ip주소를 받음
5. ip주소를 호스트에게 알ㅇ려줌
6. 사용자는 kingCDN의 ip주소를 얻고 나면, 해당 주소로 직접 TCP연결을 설정하고 get요청, 만약 DASH가 사용된다면 서버는 먼저 서로 다른 버전의 비디오에 대한 URL 목록을 포함하는 MANIFEST 파일을 사용자에게 전송하고 사용자는 동적으로 서로 다른 버전의 비디오 조각 단위 데이터를 선택할 수 있다.
TCP : byte stream-oriented
UDP : lost, out of order가능 - tcp는 재전송함
https://bwessay.tistory.com/200
프레임 레이트(Frame rate), 비트 레이트(Bit rate)란 무엇인가?
이전 시간에 코덱에 대해서 살펴보았습니다. 카메라로 촬영한 영상 데이터를 압축을 하고 또 압축을 푸는 과정을 코덱(codec)이라는 것을 배워 보았습니다. 우리는 영상 데이터를 압축하는 과정
bwessay.tistory.com
complexity at edge (core는 기본적인 기능만 함)