EC%BB%B4%ED%93%A8%ED%84%B0%EB%84%A4%ED%8A

Download Report

Transcript EC%BB%B4%ED%93%A8%ED%84%B0%EB%84%A4%ED%8A

1. 네트워크 3가지 모델
- 클라이언트 / 서버
client/server
서버
- 항상 켜져있는 호스트
- 고정 IP 주소라는 잘 알려진 주소를
갖는다
- 호스트들의 클러스터가 강력한 가상
서버를 구축하는데 사용된다
클라이언트
- 호스트가 가끔 혹은 항상 켜져 있을수
있다
- 모든 요청에 응답하는 것이 불가능하
다
- 서버가 고정 IP주소라는 잘 알려진 주
소를 갖는다는 것이다
- 서로 직접적으로 통신하지 않는다
1. 네트워크 3가지 모델
- P2P
peer-peer
p2p
- 항상 켜져 있는 기반구조 서버에
최소로 의존한다
- 특정 서버를 통하지 않고 피어가 통신
한다
- 간헐적으로 연결된 호스트 쌍이 서로
직접 통신하도록 한다
- 널리 확장하고 서비스 할수 있다
그러나 높은 분산과 개방성때문에
보안에 대한 문제가 있을수 있다
1. 네트워크 3가지 모델
- 하이브리드 한 모델
스카이프
- 인터넷 전화 p2p 애플리케이션
- 중간 서버 : 사용자들의 IP 주소를
추적하는데 사용된다
-사용자간 메시지는 사용자 호스트 사
이에 중간 서버를 통하지 않고 직접 전
달 된다
인스턴트 메시징
- 2명의 사용자가 체팅하는 p2p 이다
- 중간 서버 : 클라이언트가 존재한다
-
2. 소켓에 대한 개념
host or
server
host or
server
controlled by
app developer
process
process
socket
socket
TCP with
buffers,
variables
controlled
by OS
Internet
TCP with
buffers,
variables
소켓
- 프로세스는 소켓을 통해 네트워크로
메시지를 보내고 받는다
- 소켓의 비유 (문)
⊙프로세스가 메시지를 다른 호스트의
프로세스로 보내고 싶을때, 그것은
출입구(소켓) 바깥 네트워크로 메시지
를 밀어낸다
⊙ 네트워크를 거쳐 목적지 프로세스의
출입구로 메시지를 보내기 위해 송신
프로세스의 출입구 뒤편에 전송 구조가
있다고 가정하고, 메시지가 목적지 호
스트에 도착하면 메시지는 수신 프로세
스의 출입구를 거치고 수신 프로세스는
메시지를 처리한다
API – 트랜스포트 프로토콜의 선택
– 최대 버퍼와 최대 세그먼트의
크기와 같은 약간의 트랜스포트
매개변수 설정
3. 트랜스포트 계층
application
transport
network
link
physical
트랜스 포트 계층
- 클라이언트와 서버간에 애플리케이션
계층 메시지를 전송하는 서비스 제공
- TCP - 신뢰성
- UDP - 비신뢰성
4.다양한 네트워크 애플리케이션의 요구사항
데이터 손실
대역폭
시간 민감성
파일 전송
전자 메일
웹 문서
실시간 오디오/비디오
비손실
비손실
비손실
손실 허용
no
no
no
yes, 100’s msec
저장 오디오/비디오
상호작용 게임
인스턴트 메시징
손실 허용
손실 허용
비 손실
가변적
가변적
가변적
audio: 5kbps-1Mbps
video:10kbps-5Mbps
same
수 kbps~10kbps
가변적
애플리케이션
yes, few secs
yes, 100’s msec
yes and no
5. TCP/UDP 서비스
□ TCP
□ UDP
- 연결지향형 서비스
- 비신뢰적인 데이터 전송 서비스를 제공한다
: 클라이언트와 서버가 서로 전송
- 제공하지 않는것
제어 정보를 교환하도록 한다
: 비연결형이므로 통신을 하기전에
- 신뢰적인 데이터 전송
핸드셰이킹을 하지 않는다
: 오류없이 올바른 순서로
: 신뢰성이 없다
전달하고 받는다
: 플로우 컨트롤
- 플로우 컨트롤
: 혼잡 제어 방식
: 두 프로세스가 서로에게 동시에
: 실시간
메시지를 보낼수 있다
: 최소 대역폭 요구
- 혼잡 제어 방식
: 보안
: 네트워크가 혼잡상태에 이르면
프로세스 속도를 낮춘다
- 제공하지 않는것
: 실시간, 최소 대역폭 요구,
신뢰적 전송 서비스 불필요, 보안
6. HTTP 비지속 / 지속모드 차이점
◆ 비지속
- 각 요구/응답 쌍이 분리된
TCP연결
TCP 연결을 통해 보내 져야 하는 것 초기화
- RTT?? 작은 패킷이 클라이언트로부터
RTT
서버까지 가고,
파일
다시 클라이언트로 되돌아 오는데
요청화
걸리는 시간
RTT
- 응답시간
파일
: 브라우저가 브라우저와
웹 서버 사이에서 TCP 연결을 시도한다 수신
: 클라이언트가 작은 TCP 메시지를
서버에게 보내고,서버는 작은 메시지로
응답하고 마지막으로 클라이언트가
다시 서버에게 응답한다
: 파일 전송 시간 - total = 2RTT+transmit time
파일
전송
시간
time
time
Suppose user enters URL
www.someSchool.edu/someDepartment/home.index
1a. HTTP client initiates TCP
connection to HTTP server
(process) at
www.someSchool.edu on port 80
2. HTTP client sends HTTP
request message (containing
URL) into TCP connection
socket. Message indicates that
client wants object
someDepartment/home.index
5. HTTP client receives response
message containing html file,
displays html. Parsing html file,
finds 10 referenced jpeg
objects
6. Steps 1-5 repeated for each of
10 jpeg objects
1b. HTTP server at host
www.someSchool.edu waiting
for TCP connection at port 80.
“accepts” connection, notifying
client
3. HTTP server receives request
message, forms response
message containing requested
object, and sends message
into its socket
4. HTTP server closes TCP
connection.
6. HTTP 모드 차이점
- 비지속/지속
-
◆ 비지속의 단점
- 각 요청 객체에 대한 새로운 연결이 설정되고 유지 되어야 한다
- TCP 변수들이 클라이언트와 서버 양쪽에 유지되어야 한다
- TCP 연결 설정에 1 RTT, 객체를 요청하고 받는데 1RTT
◆ 지속
- 서버는 응답을 보낸 후에 TCP 연결을 그대로 유지한다
- 같은 클라이언트와 서버간의 이후 요청과 응답은 같은 연결을 통해 보
내진다
- 객체에 대한 요구는 진행중엔 요구에 대한 응답을 기다리지 않고 연속
해서 만들어 질 수 있다
- 서버가 연속된 요구를 수신할때, 서버는 객체를 연속해서 보낸다
7. 쿠키
- 많은 주요 사이트들은 쿠키를 사용한다
- 4가지 요소
: HTTP 응답 메시지 쿠키 헤더 라인
: HTTP 요청 메시지 쿠키 헤더 라인
: 사용자의 브라우저에 사용자 종단 시스템과 관리를
지속시키는 쿠키 파일
: 웹사이트의 백엔드 데이터베이스를 갖고 있다
- 예)
: 수잔은 항상 PC로 인터넷을 접속한다
: 특별한 이베이 사이트를 처음으로 방문한다
: HTTP에 요청이 들어왔을때 그 서버는 유일한 식별번호로
인덱스되는 백엔드 DB안에 엔트리를 만든다
- 가져올수 있는 것
: 식별번호, 쇼핑카트, 제품추천, 사용사 세션 시간 사용자 식별
- 보안
: 사용자 사생활에 대한 침해로 보임
: 계정 정보를 결합하여 제 3자에 판매 가능
Cookies: keeping “state” (cont.)
client
ebay 8734
cookie file
ebay 8734
amazon 1678
server
usual http request msg
usual http response
Set-cookie: 1678
usual http request msg
cookie: 1678
one week later:
usual http response msg
Amazon server
creates ID
1678 for user create
entry
cookiespecific
action
access
access
ebay 8734
amazon 1678
usual http request msg
cookie: 1678
usual http response msg
2: Application Layer
backend
database
cookiespectific
action
12
8. 프락시 서버를 캐싱서버로 사용하는 이유
- 웹 캐시는 클라이언트의 요구에 대한 응답 시간을 줄일 수 있다
- 웹 캐시는 인터넷으로의 기관 접속 회선상의 웹 트래픽을
실질적으로 줄일 수 있다
- 웹 캐시를 가진 고밀도 인터넷은 비록 콘텐츠 제공자가 저속도의
접속 회원을 가진 느린 서버에서 자신의 사이트를 운영하더라도 빠
른 콘텐츠 분배를 위한 기반구조를 제공한다
9. 인터넷 프로토콜 스택
어플리케이션: supporting network
applications
– FTP, SMTP, HTTP
트랜스포트: process-process data transfer
– TCP, UDP
네트워크: routing of datagrams from
source to destination
– IP, routing protocols
링크: data transfer between neighboring
network elements
– PPP, Ethernet
application
transport
network
link
physical
물리: bits “on the wire”
Introduction
1-14
10. 서킷 패킷 네트워크 차이점
패킷
서킷
서비스지연
ㅇ
O
자원공유
ㅇ
X
SIMPLE
ㅇ
X
Call setup
X
O
혼잡
ㅇ
X
1. 패킷 딜레이 종류 4가지
transmission
- 노드처리지연 A
- 큐잉지연
- 전송지연
B
- 전파지연
nodal
processing
propagation
queueing
1. 노드처리 지연
- 패킷의 비트 수준 오류를 조사하는데 필요한 시간과 같은 다
른 요소를 포함
- 이 노드 처리후에 라우터는 그 패킷을 다음 라우터의 링크 앞
큐에 보낸다
2. 큐잉 지연
- 패킷은 큐에서 링크로 전송되기를 기다린다
3. 전송 지연
R=link bandwidth (bps)
L=packet length (bits)
time to send bits into link = L/R
4. 전파 지연
d = length of physical link
s = propagation speed in medium (~2x108 m/sec)
propagation delay = d/s
Caravan analogy
100 km
ten-car
caravan
toll
booth
100 km
toll
booth
• 요금계산소끼리의 거리
100km
• 요금계산소에서 요금계산하
는 시간 12초
• 차-비트; 차10대무리-패킷
• Q: 대열이 한 요금계산소앞에
저장되는 시간부터 다음 요금
계산서 앞에 저장되는 시간?
• 요금계산소가 전체 자동차
를 밀어내는데 걸리는시간
= 12*10 = 120 sec
• 한 자동차가 한 요금계산
소에서 다음 계산소로 이
동하는 시간
100km/(100km/hr)= 1 hr
• A: 62 minutes
Introduction
1-18
12. DNS 종류 2가지
13. 비트토랜토
- 파일분배를 위한 인기있는 p2p 프로토콜
- 트랙커라고 부르는 기반구조에 노드를 가지고 있고 토렌트에
참여하는 피어들을 추적한다
- 피어들은 서로에게서 파일의 같은 크기의 청크를 다운한다
청크의 크기는 256kb, 피어가 처음으로 토렌트에 가입하면 그 피어에
는 청크가 없지만 시간이 지남에 따라 점점 많은 청크들을쌓는다
피어가 청크를 다운할때 피어는 또한 청크를 다른 피어들에게 업로드
한다.
- 한 피어가 전체 파일을 얻으면,
토렌토는 떠날수 있거나,
혹은 토렌트에
obtain list
남아서 다른 피어들로 청크를 of peers
계속해서 업로드할수 있다
trading
또한 어떤 피어는 일부의
chunks
청크들만을 가진채로
토렌토를 떠날수 있으며,
재가입할수 있다
peer
14. p2p 정보검색
◆ 중앙 집중형
- 파일을 찾는더 직접적인 접근 방법중 냅스터 제공방식이다
- 사용자가 p2p를 가동할때 p2p는 자신의 ip주소와 공유를 위
해 제공하는 파일의 이름을 색인 서버에게 알린다
- 색인서버는 작동하는 각 피어들로부터 이 정보를 모아서 각
파일 복사본을 ip 주소 집합과 매핑하는 중앙 집중 동적 색인을
생성한다
- 문제점
: 고장문제
성능의 병목문제와 기반구조 비용
저작권 침해
centralized
directory server
Bob
1
peers
1
3
1
2
1
Alice
14. p2p 정보검색
◆ 질의 플러딩
- 스펙트럼에 있는 것은 완전히 분산된 방식
- 각 피어는 공유하고자 하는 파일들에 대한 색인을 한다
- 오버레이 네트워크
Query
QueryHit
Query
QueryHit
15. 자바를 이용한 클라이언트/서버 애플리케이션
Server (running on hostid)
Client
create socket,
port=x, for
incoming request:
welcomeSocket =
ServerSocket()
TCP
wait for incoming
connection request connection
connectionSocket =
welcomeSocket.accept()
read request from
connectionSocket
write reply to
connectionSocket
close
connectionSocket
setup
create socket,
connect to hostid, port=x
clientSocket =
Socket()
send request using
clientSocket
read reply from
clientSocket
close
clientSocket
15. 자바를 이용한 클라이언트/서버 애플리케이션
◆ 스트림
- 프로세스로 들고나는 일련의 문자들
- 입력스트림 : 표준 입력(키보드) 또는 인터넷으로부터 데이터가
흐르는 소켓과 같은 프로세스를 위해 입력 소스에 붙여진다
- 출력스트림 : 표준 출력(모니터) 또는 데이터가 인터넷으로 흐르는
소켓과 같은 프로세스를 위해 출력 소스에 붙여진다
input
stream
monitor
inFromUser
keyboard
Process
inFromServer
outToServer
client TCP
socket
output
stream
input
stream
clientSocket
TCP
socket
to netw ork
f rom netw ork
15. 자바를 이용한 클라이언트/서버 애플리케이션
- 클라이언트는 표준 입력으로부터 한줄을 읽고 그 줄을 소켓을 통해 서버로 보낸다
-
서버는 연결 소켓으로부터 한 줄을 읽는다
서버는 그 줄을 대문자로 변환한다
서버는 수정된 줄을 연결 소켓을 통해 클라이언트에게 보낸다
클라이언트는 소켓에서 수정된 줄을 읽고 표준 출력으로 그 줄을 프린트한다
Example: Java client (TCP)
import java.io.*;
import java.net.*;
class TCPClient {
public static void main(String argv[]) throws Exception
{
String sentence;
String modifiedSentence;
Create
input stream
Create
client socket,
connect to server
Create
output stream
attached to socket
BufferedReader inFromUser =
new BufferedReader(new InputStreamReader(System.in));
Socket clientSocket = new Socket("hostname", 6789);
DataOutputStream outToServer =
new DataOutputStream(clientSocket.getOutputStream());
2: Application Layer
26
Example: Java client (TCP), cont.
Create
input stream
attached to socket
BufferedReader inFromServer =
new BufferedReader(new
InputStreamReader(clientSocket.getInputStream()));
sentence = inFromUser.readLine();
Send line
to server
outToServer.writeBytes(sentence + '\n');
Read line
from server
modifiedSentence = inFromServer.readLine();
System.out.println("FROM SERVER: " + modifiedSentence);
clientSocket.close();
}
}
2: Application Layer
27
Example: Java server (TCP)
import java.io.*;
import java.net.*;
class TCPServer {
Create
welcoming socket
at port 6789
Wait, on welcoming
socket for contact
by client
Create input
stream, attached
to socket
public static void main(String argv[]) throws Exception
{
String clientSentence;
String capitalizedSentence;
ServerSocket welcomeSocket = new ServerSocket(6789);
while(true) {
Socket connectionSocket = welcomeSocket.accept();
BufferedReader inFromClient =
new BufferedReader(new
InputStreamReader(connectionSocket.getInputStream()));
2: Application Layer
28
Example: Java server (TCP), cont
Create output
stream, attached
to socket
DataOutputStream outToClient =
new DataOutputStream(connectionSocket.getOutputStream());
Read in line
from socket
clientSentence = inFromClient.readLine();
capitalizedSentence = clientSentence.toUpperCase() + '\n';
Write out line
to socket
outToClient.writeBytes(capitalizedSentence);
}
}
}
End of while loop,
loop back and wait for
another client connection
2: Application Layer
29
1. 네트워크 3가지 모델
- P2P