공부/네트워크2011. 7. 23. 16:37


Network application
email, web, p2p,network game 등.

end system에서 작동한다.
네트워크를 통해 통신한다.
network-core에는 없어도 된다.

Application architectures
Client-server
Peer-to-peer(p2p)
Hybrid of client-server and P2P

1) Client-server
server ; always-on host(항상 네트워크에 연결되어, 클라이언트의 서비스요청을 처리), server farms(server host가 여러대, 시스템 규모면에서 확장)
client : 서버와 통신, 서로 다른 client와 직접적으로 통신하지 않음.

2) pure p2p architecture
always-on server가 없음, 임의의 end system끼리 직접적으로 통신, 확장성면에서는 좋으나, 관리의 어려움이 있다. self-scalability(peer가 peer에게 file을 요청하는 동시에, 다른 peer들에게 파일을 전송할 수 있다.

Skype는 client-server방식, p2p둘다 사용, client끼리는 직접적으로 통신, 주소 찾을 때에는 서버와 통신.

Processes communicating
host에서 돌아가는 프로그램.
같은 호스트에서는 운영체제의 IPC(inter-process communication)에 의해 통신한다.
IPC - 파이프, 시그널, 메세지큐, shared memory, 세마포어, 파일시스템
다른 host의 process 통신은 socket을 통해 message를 주고받는 방식이다. client process가 요청하고, server client가 그 요청을 처리.
socket은 application layer와 transport layer 사이의 interface.
API(application programming interface)를 이용해서 아래 레이어에게 정보를 준다.

Addressing processes
프로세스끼리 메시지를 주고 받으려면 프로세스를 식별할 수 있는 값이 있어야 한다.
IP address와 port

Application layer protocol
메시지 교환 타입정하기(request인지 response인지)
syntax(message안에 어떤 field가 있고, field를 어떻게 작성해야 하는지)
semantics(field가 가진 정보의 의미)
언제 어떻게 보낼지 규칙
공식적인 프로토콜과 독자적인 프로토콜

application-layer가 필요한 transport-layer의 서비스
Data loss(일정부분을 손실해도 상관없는지, 100% 손실없는 데이터전송을 요구하는지)
Timing (low delay 요구 여부)
Throughput (최소 throughput을 보장하느냐 안하느냐)
bandwidth - 1초에 전송되는 비트수, bps, 속도가 아님. bandwidth가 높다는 것은 수도관에서 수도관이 커지는 것을 상상.
throughput - 실제 네트워크에서의 bandwidth.
보안여부

Internet Transport protocols services
TCP
connection oriented, reliable transport, flow control, congestion control제공, timing, minimum throughput 보장 안하고, security 제공 안함.
UDP
connection setup, reliability, flow control, congestion control, timing, throughput guarantee, security 다 제공 안함.
빨라서 쓴다.

HTTP
Hypertext transfer protocol
TCP 사용
stateless 프로토콜 (서버는 클라이연트의 과거 요청 정보를 유지하지 않는다.)

HTTP connections
Nonpersistent HTTP (한 tcp 연결에 최대 하나의 object(그림파일, html 파일 등)가 전송)
Persistent HTTP (한 tcp 연결에 여러 object가 전송.)

RTT(Round trip time)
한 작은 패킷이 client에서 server로 가서 다시 되돌아 오는 데 걸리는 시간
file transmission time : 2RTT + transmit time (연결요청, 연결승인, object요청, object승인 및 전송)

object당 2RTT 요구.
각 TCP connection overhead 문제.
 
Persistent HTTP
server와 client 연결 계속 유지. 파일보내는데 최소 하나의 RTT만 필요하다.
보통 파이프라인을 사용해서 요청에 대한 응답을 기다리지 않고 요청을 줄지어서 보낸다.

HTTP request message format
Request line(Get, Post, Head), Header line(Host, User-agent 등), Blank line, Entity line

출처 : project67555.appspot.com

Post method : input 값들이 entity body에 들어감.
Get method : input 값들이 URL 부분에 인코딩된다.

HTTP response message
status line(HTTP/1.1, 200, OK), header lines(Connection:close, Date, Server:Apache 등), entity body

출처 : project67555.appspot.com

User-server state : cookies
서버가 user를 식별하여 상태를 알 수 있는 방법.
http header에 쿠키정보 담아 주고 받는다.
쿠키파일은 사용자의 컴퓨터에 저장되며 웹브라우져가 관리한다.
 
Web cache
proxy server
client가 server에게 요청할 때 중간에 proxy server의 캐시에서 client가 요청하는 데이터가 있으면 client에게 보내준다.
server까지 안가도 되니까 빨리 얻을 수 있고, 외부 네트워크의 트래픽(네트워크로 전송된 데이터 량)도 줄일 수 있다. 
항상 최신의 데이터를 유지하고 있어야 한다. cache가 데이터가 수정되었는지 서버에게 메시지를 보내고 수정이 안되었다고 응답이 올 경우, client에게 데이터를 보낸다.

Electronic Mail
SMTP는 메일 전송 프로토콜
메일 서버는 user가 메일 서버의 자기 메일상자에 접속해서 메일을 다운받을 수 있도록 한다.
Pop protocol을 이용해서 메일에 접근하고 다운 받는다.

DNS (Domain name system)
도메인 이름과 IP 주소 매핑
DNS 서버는 계층적으로 분산되어 있다. 집중되어 있으면 위험하다. 트래픽도 많을 거고.
DNS 서버는 캐시를 사용해서 루트 DNS서버까지 가지 않아도 된다.
루트 DNS 서버도 여러군데 분산되어 있다.

Pure p2p 구조
항상 켜져있는 서버가 없다.
peer들끼리 연결해서 통신한다.

서버 방식보다  빨리 client들에게 파일을 전송할 수 있다.
서버는 파일을 한번만 올리면 되고, client들이 업로드에 참여.

서버가 index정보를 가지고 있을 때
클라이언트가 서버에게 peer 정보 리스트를 받고 peer들끼리 파일을 주고 받는다.
서버의 index가 집중되어 있는 경우 위험하다.

Query flooding
fully distributed이다.
overlay network : peer x와 y사이에 tcp 연결을 edge로 하는 가상의 그래프
tcp연결 되어 있는 peer에게 query message를 보내고 그 peer는 자기의 peer들에게 query message를 전달한다. 그래서 원하는 목적지에 도착하면 그 peer는 Queryhit을 메시지 보낸 peer에게 보낸다. 그래서 queryhit은 결국 처음 query message를 보낸 peer에게 전달된다.
traffic이 기하급수적으로 늘어나는 문제.

Hierarchical Overlay
super node끼리 p2p 네트워크 형성
한 super node에 여러개의 peer들.

Peers as relays
나가는 것은 문제가 없는데 들어오는 것은 문제가 되는 NAT에 대한 것.
NAT을 사용하는 서로 다른 수퍼노드에 있는 peer끼리 통신하기 위해 둘 사이에 session을 생성.

Socket programming
TCP는 데이터가 byte stream 형태로 전송
UDP는 데이터가 패킷단위로 쪼개져서 전송.

'공부 > 네트워크' 카테고리의 다른 글

Link layer and LANs  (1) 2011.08.18
Network Layer  (0) 2011.08.15
Transport Layer  (0) 2011.07.28


Posted by skyjumps