컴퓨터네트워크 04주차 Application Layer_03/Transport Layer_01
2022. 12. 27. 21:44ㆍCS/컴퓨터네트워크
주 교재 : Computer Networking : A Top-Down Approach
4주차 Application Layer_03 / Transport Layer_01
- P2P applications
- video streaming and content distribution networks
- socket programming with UDP and TCP
- Transport-layer services
- Multiplexing and demultiplexing
- Connectionless transport : UDP
1. P2P applications
#Peer-to-peer(P2P) Architecture
- 서버가 없다.
- end system 끼리 직접 소통
- ex : P2P file sharing (토렌트), streaming (KanKan), VoIP (Skype)
#File distribution time: client-server
Server
- F = File
- N = 보낼 개수
- U_s = 업로드 시간
Client
- F = File
- d_min = 다운로드 시간
한 서버에서 모든 요청에 대한 파일 전송을 처리하기 때문에 속도가 느림
#File distribution time: P2P
Server
- 1개의 파일만 복사해서 보내면 업로드하면 됨.
Client
- file copy를 받음.
- F = File
- d_min = 다운로드 시간
Clients
- NF bits를 다운로드 받아야 한다.
Client-server vs. P2P
#P2P file distribution: BitTorrent
- 파일을 256kb의 chunks로 나눈다.
- 토렌트의 peer는 file chunks를 주고 받는다.
- ex : 파일이 1 GB라고 가정했을 때, 1GB를 다 가지고 있는 사람과 0.5GB를 가지고 있는 사람 중 빨리 받을 수 있는 사람에게 파일을 받는다.
- Tracker : 토렌트에 참여하는 peer를 찾아서 거리 계산을 해준다.
- Churn : Peer는 토렌트에 들어왔다가 나갔다가 할 수 있다.
그래서 peer가 적은 chunks를 먼저 받아야 한다. - chunks를 요청할 때, 많은 peer 중에 빨리 교환할 수 있는 사람을 골라서 교환한다.
Sending chunks : tit-for-tat
- 교환량이 많은 top4를 10초마다 재평가해서 고른다.
- 30초마다 무작위로 다른 peer를 선택한다. => 새로 참여하는 사람에게도 기회를 줘야하기 때문
- 업로드 정도가 높으면 더 빠르게 다운로드를 받을 수 있음
2. video streaming and content distribution networks
#Video Streaming and CDNs: context
- Stream video traffic : 인터넷 대역폭의 대부분을 사용한다. 너무 큼.
- solution : application level infra를 분산시킨다.
#Multimedia: Video
- Video = Frame 집합
Frame = Pixel 집합
Pixel = RGB값 집합 - 이미지를 인코딩하는 데 사용되는 비트를 줄이기 위해 이미지 내부 및 이미지 간에 중복성을 사용한다.
spatial = 같은 색깔을 보내는 것 대신에, 색깔 값과 반복되는 값의 숫자를 보낸다.
temporal = 두 frame의 차이를 계산해서 보낸다.
#Streaming Stored Video
Challenges
- server-to-client 대역폭은 시간에 따라 바뀔 수 있다.
이로 인해 네트워크 지연(delay)가 발생한다. - 사용자의 상호작용이 다양해서 계속 재생하는데 제약이 따른다.
playout buffering
#Streaming multimedia: DASH
- DASH : Dynamic, Adaptive Streaming over HTTP = 잘 될 때 미리 받기
- Client는
- 언제 chunks를 요청할지 (buffer가 비었는지, 넘치는지)
- 요청할 인코딩 속도 (더 많은 대역폭을 사용할 수 있을 때 높은 퀄리티)
- 어디서 chunk를 요청할지 (client에 가깝거나, 사용 가능한 대역폭이 높은 URL server에 요청 가능)
결정한다. - Streaming video = encoding + DASH + playout buffering
#Content Distribution Networks (CDNs)
- CDN : CDN node에 content의 복사본을 저장한다.
- 구독자들은 CDN에 content를 요청한다.
3. socket programming with UDP and TCP
#Socket programming
- 5계층(Application Layer)와 4계층(Transport Layer) 사이에 있다.
- UDP = 속도
- TCP = 신뢰성
#Socket programming with UDP
UDP : client와 server사이에 연결이 없다.
- 데이터를 전송하기 전에 handshaking이 없다.
- 목적지의 IP 주소와 port 번호만 알면 된다.
- 데이터 Loss가 발생하거나 받는(received) 순서가 바뀔 수 있다.
Loss가 발생해도 그냥 간다.
순서가 다른 이유는 가는 길이 다르기 때문이다.
#Socket programming with TCP
- Client는 반드시 server와 contact 해야한다.
- server process가 반드시 먼저 실행되어야 한다. - Client는 다음과 같은 방법으로 server에 contact 한다.
- TCP socket을 만들고, server process의 IP주소와 port 번호를 특정한다.
- client가 socket을 만들 때, client TCP가 server TCP로 가는 연결을 만든다.
- client와 contact 됐을 때, server TCP는 특정 client와 통신하기 위해서 server process를 위한 새로운 socket을 만든다.
Transport Layer_01
1. Transport-layer services
#Transport Services and Protocols
- 다른 host에서 동작하는 application process 간에 논리적 통신(logical communication)을 제공한다.
- Transport protocol는 end system에서 동작한다.
- 보내는 쪽 : application massage를 segment로 쪼개서 network layer로 보낸다.
- 받는 쪽 : segment를 message로 다시 합쳐서 application layer로 보낸다.
#Transport vs. Network layer Services and Protocols
- network layer : Host 간에 논리적 통신
- transport layer : process 간에 논리적 통신
#Internet Transport-layer Protocols
- 신뢰성, 순서대로 전달 (TCP)
- 신뢰성이 없고, 순서 없이 전달 (UDP)
- 보내기만 잘 하면 됨 - 둘 다 제공 안하는 것
- delay guarantees
- bandwidth guarantees
- security
2. Multiplexing/demultiplexing
- multiplexing at sender
- header를 붙이면서 내려가는 것 - demultiplexing at receiver
- header를 떼면서 올라가는 것
#How Demultiplexing Works
- host가 IP datagrams를 받으면,
- 각각의 datagram은 source IP 주소와, destination IP 주소를 갖는다.
- 각각의 datagram은 하나의 transport 계층의 segment를 갖는다.
- 각각의 segment는 source, destination port 번호를 갖는다. - host는 IP주소와 port 번호를 이용해서 segment를 적절한 socket으로 보낸다.
#Connectionless Demultiplexing
UDP socket으로 보낼 datagram을 만들 때는
- 목적지 IP 주소
- 목적지 port 번호
가 특정돼야 한다.
#Connection-oriented Demultiplexing
TCP socket은 4가지 정보로 식별된다.
- source IP 주소
- source Port 번호
- destination IP 주소
- destination Port 번호
3. Connectionless transport : UDP
#UDP: User Datagram Protocol [RFC 768]
- no frills internet transport protocol
- UDP segment는
- lost
- 순서 없이 전달됨 - connectionless
- UDP sender와 receiver 사이에 handshaking이 없다.
- 각각의 UDP segment는 독립적으로 다뤄진다. - UDP 활용
- streaming multimedia apps (loss tolerant, rate sensitive)
- DNS
- SNMP (Simple Network Management Protocol) - 신뢰성을 보장하는 UDP 전송
- HTTP/3
#UDP Segment Header
- checksum을 쓰는 이유
- 받는 쪽으로 데이터가 정확히 간다는 보장이 없기 때문에 데이터 유효성 검사를 하기 위해서 사용한다.
- checksum 값을 보내고, 받는 쪽에서 checksum을 계산 했을 때 그 값이 같으면 유효한 데이터.
#UDP Checksum
sender
- segment contents(header field를 포함한)을 16 bit 정수로 취급
- checksum : segment content의 합(1의 보수)
- sender는 checksum 값을 UDP checksum field에 담아서 보낸다.
receiver
- segment는 받은 checksum을 계산한다.
- 계산된 checksum 값과 받은 checksum 값이 같은지 검사한다.
'CS > 컴퓨터네트워크' 카테고리의 다른 글
컴퓨터네트워크 06주차 Network Layer 01 (0) | 2022.12.29 |
---|---|
컴퓨터네트워크 05주차 Transport Layer 02 (0) | 2022.12.28 |
컴퓨터네트워크 03주차 Application Layer_02 (0) | 2022.12.26 |
컴퓨터 네트워크 02주차 Introduction/Application layer (0) | 2022.12.23 |
컴퓨터 네트워크 01주차 Introduction (1) | 2022.12.22 |