1장

 인터넷이란?

1. 인터넷의 너트와 볼트를 기술하는 것

- 인터넷을 구성하는 기본적인 하드웨어와 소프트웨어 요소를 기술

2. 분산 애플리케이션에게 서비스를 제공하는 네트워킹 인프라구조 관점에서의 인터넷 기술

 

종단시스템

통신링크와 패킷 스위치의 네트워크로 연결된다.

인터넷에 연결되는 컴퓨터와 다른 장치들을 종단시스템이라 부른다.

 

종단시스템은 웹 브라우저 프로그램, 웹서버 프로그램, 전자메일 리더 프로그램 또는 전자메일 서버 프로그램 같은 애플리케이션을 수행하므로 호스트라 부른다.

호스트와 종단시스템을 혼용한다 ( 즉 호스트 = 종단시스템 )

호스트는 때때로 클라이언트서버로 구분된다.

 

동축케이블 구리선 광케이블 라이도 스펙트럼을 포함한 다양한 물리매체 (각각의 링크들은 다양한 전송률(transmission rate 링크대역폭)을 이용하여 데이터 전송

 

전송률은 초당 비트 수를 의미하는 bps 단위를 사용

 

한 종단 시스템이 다른 종단시스템 보낼 데이터를 가지고 있을 때, 송신 종단시스템은 그 데이터를 세그먼트로 나누고 각 세그먼트에 헤더를 붙인다.

이렇게 만들어진 정보 패키지는 패킷 이라 한다.

패킷이 목적지 종단시스템으로 네트워크로 보내지고 목적지에 도착해서는 원래 데이터로 조립 된다.

 

패킷 스위치 종류 라우터, 링크계층스위치

 

라우터 -> 전송된 정보가 출발지(송신종단시스템)로부터 여러 통신 링크와 라우터들을 거쳐 목적지(수신 종단 시스템)에 이르는 길

 

종단 시스템 패킷 스위치 인터넷의 다른 구성요소는 인터넷에서 정보 송수신을 제어하는 여러 프로토콜(protocol)을 수행한다.

특히 TCP와 IP는 인터넷에서 가장 중요한 프로토콜이다.

IP 프로토콜 -> 라우터와 종단 시스템 사이에서 송수신 되는 패킷 포맷을 기술한다. 이러한 인터넷의 주요 프로토콜을 TCP/IP라고 한다.

 

프로토콜

규약 인터넷 약속

둘 이상의 통신 개체간에 교환되는 메시지 포맷과 순서뿐아니라, 메시지의 송수신과 다른 이벤트에서 취하는 행동을 정의

어떤 일을 수행하려면 둘 이상의 통신개체가 함께 인식하는 프로토콜이 필요하다.

 

전자메일, 웹서핑, 인스턴트 메시지 VoIP(Voice-over-IP), 인터넷 라디오, 비디오 스트리밍, 분산게임, P2P파일공유, 등을 분산 애플리케이션

 

 

클라이언트와 서버프로그램

클라이언트 프로그램은 한 종단 시스템에서 수행되는 서버프로그램에게 서비스를 요청

서비스를 받는 다른 종단시스템에서 수행되는 프로그램을 의미한다.

클라이언트와 서버 인터넷 애플리케이션들은 분산 애플리케이션 형태이다.

 

P2P애플리케이션

종단시스템들은 서로 상호작용하며 클라이언트와 서버 기능 모두를 수행하는 프로그램

 

접속네트워크(Access Network)

종단 시스템을 그 종단 시스템으로부터 다른 먼 거리의 종단시스템까지의 경로상에 있는 첫 번째 라우터인 가장자리 라우터(edge router)를 연결하는 물리링크

- 가정접속 (다이얼업 모뎀 이용)

접속망 : 점대점 다이얼업 라인을 가진 두 대의 모뎀 / 56kbps 접속이 매우 느리다.

즉, 사용자가 웹 서핑을 위해 다이얼업 모뎀을 사용하는 동안에는 전화를 받거나 걸지 못한다. 새로운 광대역 접속 기술은 가정 사용자에게 더 높은 비트 전송률을 제공하면서 인터넷 접속과 동시에 전화 통화를 할 수 있게 해준다. (천리안, 나우누리, 그런 개념?)

일반 유형의 광대역 가정 접속은 DSL, HFC로 나뉜다.

 

DSL / HFC 차이점??

DSL 다이얼업 모뎀 일반전화선 사용

HFC 케이블 텔레비전을 방송하는 데 사용하는 기존 케이블망

 

HFC 특징은 공유 방송 매체

헤드엔드가 보낸 모든 패킷이 모든 링크의 다운스트림 채널을 통해 모든 가정으로 전달, 가정에서 보낸 모든 패킷은 업스트림 채널을 통해 헤드엔드로 전달.

 

DSL 옹호자

DSL은 가정과 ISP 사이의 점대점 연결을 제공하므로 모든 DSL전송률을 공유하지 않고 전부 할당한다는 점을 강조.

케이블 옹호자

잘 구성된 HFC네트워크는 DSL보다 높은 정송률을 제공한다고 주장

 

즉 사용자는 일반 전화를 발신하고 수신하면서, 자신의 컴퓨터를 떠날 수 있고 ISP에 항상 연결되도록 유지한다.

회선 교환과 패킷 교환

네트워크 코어의 구성 기본 방식은 회선교환, 패킷교환

 

회선교환 네트워크

종단 시스템간에 통신을 제공하기 위해 경로상에 필요한 자원(버퍼, 링크 전송률)은 통신 세션동안에 예약된다.

 

패킷교환 네트워크

세션의 메시지는 그 자원을 요청하여 즉 온디맨드방식을 사용하고 그 결과, 통신 링크에 대한 접속을 위해 기다린다. (즉, 큐에서 대기)

 

 

패킷

서킷

자원공유

O

X

simple

O

X

혼잡

O

X

서비스지연

X

O

call setup

X

O

 

송신자와 수신자가 간의 경로에 있는 스위치들이 해당 연결 상태를 유지해야 하는 연결을 전기통신 용어로 회선

대역폭이 송신자 - 수신자 연결을 위해 예약

송신자는 수신자에게 보장된 일정한 전송률로 데이터를 보낼 수 있다.

 

TDM 회선 전송률은 한 슬롯 안의 비트 수에 프레임 전송률을 곱한 것과 같다.

링크가 초당 8,000프레임을 전송하고 각 슬롯이 8비트로 구성 되면 회선 전송률은 64kbps

 

패킷교환

패킷 스위치는 저장 후 전달 전송방식을 이용

저장 후 전달은 스위치가 출력 링크로 패킷의 첫 비트를 전송하기 전에 전체 패킷을 받아야함을 의미.

저장후 전달하는데 필요한 지연이 발생

 

도착하는 패킷이 어떤링크를 통해 전달되어야 하는데 그 링크가 다른 패킷을 전송하고 있다면, 도착하는 패킷출력 버퍼에서 대기해야한다.

저장 후 전다 지연 뿐아니라, 패킷은 출력 버퍼 큐잉지연(queuing delay)을 격는다.

 

버퍼 크기가 유한하므로 새로 도착한 패킷은 전송을 기다리는 다른 패킷으로 꽉 채워진 버퍼를 발견하게 될 수 있다. 이를 패킷 손실(packet loss) 발생 이라 한다.

 

 

패킷 교환 대 회선 교환(통계적 다중화)

패킷 교환을 반대하는 사람은 가변적이고 예측할 수 없는 종단 간의 지연 ( 주로 불규칙적이고 예측할 수 없는 큐잉 지연에서 발생) 때문에 패킷 교환이 실시간 서비스(전화통화, 비디오 회의통화)에는 적당하지 않다고 주장했다.

(1) 패킷 교환이 회선 교환보다 대역폭 공유에서 더 효율적

(2) 패킷 교환이 더 간단하고, 효율적이며, 회선 교환보다 구현 비용 적다.

 

회선 교환이 요구에 관계없이 미리 전송 링크의 사용을 할당하는 반면 패킷 교환은 요구할 때만 링크의 사용을 할당한다는 것

이렇게 요구가 있을 때 마다(미리저장하지 않음) 자원을 공유하는 것을 자원의 통계적 다중화라(Statistical multiplexing)고 한다.

 

계층 1 ISP 특징

계층1 ISP 는 인터넷 백본(Internet backbone) 네트워크라고 한다.

계층2 ISP는 일반적으로 서비스 범위가 지역 혹은 국가를 포함

 

계층2 ISP는 자신이 연결된 계층~1 ISP의 고객(customer)

계층1 ISP는 고객에게 계층2의 제공자(provide)

 

노드 처리 지연(nodal processing delay)

- 패킷 헤더를 조사하고 그 패킷을 어디로 보낼지 결정하는 시간

큐잉 지연(queuing delay)

- 패킷은 큐에서 링크로 전송되기를 기다림

- 지연 길이는 큐에 저장되어 링크로 전송되기를 기다리는 다른(먼저도착한)패킷수에 결정

전송 지연(transmission delay)

- 패킷 길이(L) / 링크 전송률(R)

- 패킷의 모든 비트들을 링크로 밀어 내는(전송)데 필요한 시간이다.

전파 지연(propagation delay)

- 라우터와 라우터간의 거리(D) / 전파속도(S) = 전파지연

- 링크의 처음에서 라우터 B까지의 전파에 필요한 시간이 전파지연

 

지연이 쌓여서 전체 노드 지연 이 된다.

(dnodal = 처리지연 + 큐잉 + 전송지연 + 전파지연 )

 

전송지연과 전파지연 비교

전송 지연은 라우터가 패킷을 내보내는 데 필요한 시간

(패킷 길이와 링크 전송률의 함수이며, 두 라우터 사이의 거리와는 관계 없다)

전파지연은 비트가 한 라우터에서 다음 라우터로 전파되는 데 걸리는 시간

(두 라우터 사이의 거리에 대한 함수며, 패킷 길이나 링크 전송률과 관계 없다)

 

 

처리지연(processing delay)는 보통 무시가능.

라우터의 최대 처리율, 라우터가 패킷을 전달할 수 있는 최대율에는 상당한 영향을 준다.

 

큐잉지연이 크고 언제 미미한가?

트래픽이 큐에 도착하는 비율, 링크의 전송률, 도착하는 트래픽의 특성, 즉 그 트래픽이 주기에 맞춰서 또는 버스트(burst)하게 도착하느냐에 의해 주로 결정

 

비트가 큐에 도착하는 평균율은 La비트/초 이다.

 

트래픽 강도 -> La/R은 큐잉 지연의 정도

La/R >1 이면, 비트가 큐에 도착하는 평균율이 비트가 큐에서 전송되는 비율을 초과

트래픽 공학의 주요 규칙 중 하나는 트래픽 강도가 1보다 크지 않게 시스템을 설계

 

La < 비트의 길이

R < 전송률

La/R에서 나온 결과값이 전용지연

 

패킷손실

패킷이 도착해서 큐가 꽉찬 것을 발견

패킷을 저장할 수 없는 경우에 라우터는 그 패킷을 버린다.(drop)

즉 그 패킷은 잃어버리게 된다(Lost) 큐에서의 오버플로(overflow)는 트래픽 강도가 1보다 클 때

 

종단시스템, 애플리케이션, 그리고 다른 지연

다이얼업 모뎀의 경우 수십 밀리초 정도의 복조/인코딩(modulation encoding)지연

(다른 접속 기술에 대한 복조/인코딩 지연은 심각하고 보통 무시)

 

VoIP(Voice-over-IP) 애플리케이션에 있는 미디어 패킷화(packetization)지연

 

 

컴퓨터 네트워크에서의 처리율

컴퓨터 네트워크에서의 다른 주요한 성능 수단은 종단 간 처리율

어느 한순간에에서의 순간적인 처리율(instantaneous throughput)은 호스트 B가 파일을 수신하는 비율(비트/초)이다.

전송의 평균처리율(average throughtput)은 F/T 비트/초 이다

비트길이(F) , 수신하는데 (T)

 

 

 

 

 

애플리케이션

프레젠테이션

세션

트랜스포트

네트워크

링크

물리

애플리케이션

트랜스포트

네트워크

링크

물리

5개 계층 인터넷 7개 계층의 OSI참조 모델

프로토콜 스택

 

애플리케이션 (무엇을 보낼것인가)

애플리케이션 계층은 네트워크 애플리케이션과 애플리케이션 계층 프로토콜이 있는 곳

HTTP(웹 문서 요청과 전송을 위해 제공)

SMTP(전자메일 전송을 제공)

FTP(en 종단 시스템 간의 파일 전송 제공)

애플리케이션 계층에서는 도메인 네임 서버 (DNS)가 돕는다.

애플리케이션 계층에서의 이 정보 패킷을 메시지라 부른다.

 

 

트랜스포트 계층 ( 어떻게 보낼 것인가?)

인터넷의 트랜스포트 계층은 크라이언트와 서버 간에 애플리케이션 계층 메시지를 전송하는 서비스를 제공

TCP UDP로 나뉘며 애플리케이션 계층 메시지를 전달한다.

TCP는 애플리케이션에게 연결지향형 서비스 제공 목적지로 애플리케이션의 계층 메시지 전달 보장과 흐림제어 (송신자/수신자의 속도 일치) 혼잡제어 기능 제공

UDP 프로토콜은 애플리케이션에게 비연결형 서비스를 제공

신뢰성/흐림제어/혼잡제어를 제공하지 않는 아주 간단한 서비스

트랜스포트 계층 패킷을 세그먼트(sement)라 부른다.

 

네트워크 계층 (어디로 보낼 것인가?)

한 호스트에서 다른 호스트로 데이터그램(datagram)을 라우팅하는 책임을 진다.

목적지 호스트의 트랜스포트 계층으로 세그먼트를 운반하는 서비스 제공

IP데이터그램의 필드를 정의하며 종단 시스템과 라우터가 이 필드에서 어떻게 동작하는지를 정의하는 프로토콜을 갖는다. << 이를 IP프로토콜

출발지와 목적지 사이에서 데이터그램이 이동하는 경로를 결정하는 라우팅 프로토콜

 

 

 

링크계층 ( 어떤 장치(?)를 사용할 것인가?)

출발지와 목적지 간 일련의 패킷 스위치(라우터)를 통해 데이터그램을 라우트 한다.

네트워크 계층은 링크 계층 서비스에 의존해야한다. 특히 각 노드에서 네트워크 계층은 데이터그램을 아래 링크 계층으로 보내고, 링크 계층은 그 데이터그램을 경로상의 다음 노드에 전달

Ex) 이더넷, 점대점 프로토콜

데이터그램이 출발지에서 목적지로 가는 데 여러 링크를 거치므로, 데이터그램은 경로상의 서로 다른 링크에서 다른 링크 계층 프로토콜에 의해 처리 될 수 있다.

링크 계층 패킷을 프레임(frame)라 부른다.

 

물리계층(링크계층에 의해 비트 전송)

프레임 내부의 각 비트를 한 노드에서 다음 노드로 이동하는 것

프로토콜들은 링크에 의존하고 더 나아가 링크의 실제 전송 매체(꼬임상 동선, 단일모드 광케이블)에 의존한다.

 

OSI모델

프레젠테이션 계층의 역할을 통신하는 애플리케이션들이 교환되는 데이터의 의미를 해석하도록 하는 서비스를 제공하는 것.

세션 계층은 데이터 교환의 경계와 동기화를 제공

 

캡슐화?

여기서 메시지>세그먼트 / 세그먼트>데이터그램 / 데이터그램>프레임 가는걸 캡슐화라 함

2장

 

Client / Server 구조에서 항상 켜져 있는 호스트를 Server라 부르는데 이 서버는 Client라는 다른 많은 호스트의 요청을 받는다.

 

실제 통신하는 것은 프로그램이 아니라 프로세스(process)다. 프로세스는 종단 시스템에서 실행하는 프로그램이다.

 

프로세스와 컴퓨터 네트워크 사이의 인터페이스

대부분의 애플리케이션은 두 프로세스가 메시지를 서로에게 보내는 통신 프로세스 쌍으로 구성된다. 프로세스는 소켓(socket)을 통해 네트워크로 메시지를 보내고 받는다.

Socket은 호스트의 애플리케이션 계층과 트랜스포트 계층 간의 인터페이스

개발자는 소켓의 애플리케이션 계층에 대한 모든 통제권을 갖지만 소켓의 트랜스포트 계층에 대한 통제권은 거의 갖지 못한다. 트랜스포트 계층에 대한 애플리케이션 개발자의 통제는 트랜스포트 프로토콜 선택, 최대 버퍼와 최대 세그먼트 크기와 같은 약간의 트랜스포트 계층 매개변수의 설정 뿐이다.

 

API란? 애플리케이션과 네트워크 사이.

 

애플리케이션이 이용가능한 프랜스포트 서비스

소켓이 애플리케이션 프로세스와 트랜스포트 프로토콜 간의 인터페이스라는 것은 상기

트랜스포트 프로토콜은 네트워크를 통해 그 메시지를 수신 소켓 추링ㅂ구 까지 이동시켜 책임을 갖는다.

 

 

신뢰적 데이터 전송, 처리율, 시간, 보안 4가지 차원으로 분류

신뢰적 데이터전송

애플리케이션이 보낸 데이터가 올바르고 완전히 다른 애플리케이션에게 전달되록 보장

트랜스포트 프로토콜이 이 서비스를 제공할 때, 송신 프로세스는 데이터 소켓으로 보내고 그 데이터가 오류 없이 수신 프로세스에 도착할 것이라는 확신을 갖는다.

 

대역폭

네트워크 경로를 따라 두 프로세스간의 통신 세션에서 송신 프로세스가 수신 프로세스로 비트를 전달 할 수 있는 비율을 나타낸다.

어느 명시 된 속도에서 보장된 가용 처리율을 제공한다는 것을 알 수 있다.

처리율 요구사항을 갖는 애플리케이션은 대역폭 민감 애플리케이션(bandwidth-sevsitive application)

 

 

 

 

시간

트랜스포트 계층 프로토콜은 또한 시간 보장(timing guarantee) 제공

데이터 전송에 엄격한 시간제한 조건을 요구

 

보안

트랜스포트 프로토콜은 애플리케이션에게 하나 이상의 보안 서비스를 제공 할 수 있다.

모든 데이터를 암호화 할 수 있고 수신 호스트에서 트랜스포트 프로토콜은 그 데이터를 수신 프로세스에게 전달하기 전에 데이터의 암호를 해독

두 프로세스들 사이에 비밀성 제공

 

인터넷 전송 프로토콜이 제공하는 서비스

애플리케이션

데이터손실

대역폭

시간민감성

파일전송

비손실

가변적

아니요

전자메일

비손실

가변적

아니요

웹 문서

비손실

가변적(수 kbps)

아니요

실시간 오디오/비디오

손실허용

오디오: 수 kbps~1Mbps

비디오: 10kbps~5Mbps

네: 100msec

저장 오디오/비디오

손실허용

오디오: 수 kbps~1Mbps

비디오: 10kbps~5Mbps

네: 수 초

상호작용 게임

손실허용

수 kbps~10kbps

네 : 100msec

인스턴트 메시징

비손실

가변적

네 그리고 아니요

데이터 손실이 비손실 인건 TCP / 손실 허용 인 것은 UDP 이다.

 

 

 

 

 

 

TCP 서비스

연결지향형 서비스와 신뢰적인 데이터 전송 서비스

 

연결지향 서비스?

전송 제어 정보를 교환, 핸듯Pdlzld 과정 클라이언트와 서버에게 패킷이 곧 도달할 것이니 준비하라고 알려주는 역할 핸듯Pdlzld 단계를 지나면 TCP연결이 두 프로세스의 소켓 사이에 존재한다.

서로에게 동시에 메시지를 보낼 수 있기에 전이중(full-duplex)연결

애플리케이션이 메시지 전송을 마치면 연결을 끊어야 한다. 두 프로세스 사이는 매우 느슨하게 연결

 

신뢰적 데이터 전송 서비스?

통신 프로세스는 모든 데이터를 오류 없이 올바른 순서로 전달하기 위하여 TCP의존

TCP는 애플리케이션의 한쪽이 바이트 스트림을 소켓으로 전달하면 그 데이터 스트림을 수신 소켓으로 손실되지 않고 중복되지 않게 전달되도록 한다.

 

TCP는 혼잡제어방식, 즉 통신하는 프로세스의 직접 이득보다 인터넷의 전체성능 향상을 위한 서비스를 포함. TCP 혼잡제어 방식은 네트워크가 혼잡상태에 이르면 프로세스(클라이언트 또는 서버) 속도를 낮춘다.

TCP연결이 네트워크 대역폭을 공평하게 공유할 수 있게끔 제한하려고 시도한다.

 

UDP서비스

UDP는 비연결형 / 핸드셰이킹을 하지 않는다.

비신뢰적인 데이터 전송 서비스 제공 하나의 프로세스 UDP소켓으로 메시지를 보내면, UDP는 그 메시지가 수신 소켓에 도착하는 것을 보장하지 않는다.

수신 소켓에 도착하는 메시지들의 순서가 뒤바뀔 수도 있다.

반면에 UDP는 혼잡제어 방식을 포함하지 않는다. 따라서 UDP의 송신 측은 데이터를 원하는 속도로 하위계층(네트워크계층)으로 보낼 수 있다.

 

애플리케이션

애플리케이션 계층 프로토 콜

하위 트랜스포트 프로토콜

전다메일

SMTP [ RFC 2821 ]

TCP

원격 터미널 접속

Telnet [ RFC 854 ]

TCP

HTTP [ RFC 2616 ]

TCP

원격 파일 서버

FTP [ RFC 959 ]

TCP

스트리밍 멀티미디어

HTTP (예, 유투브), RTP

UDP 혹은 TCP

인터넷 전화

SIP, RTP, 또는 독점적인(예, 스카이프)

일반적으로 UDP

 

 

 

 

 

 

주소화 프로세스

1. 호스트의 이름 혹은 주소

2. 목적지 호스트에 있는 수신 프로세스 명시하는 식별자

인터넷에서 목적지 호스트는 IP주소로 식별된다.

IP주소 길이가 32비트고 이는 호스트를 식별하는 유일한 것이라는 것이다.

목적지 포트번호(port number)가 이목적을 위해 필요하다.

수신 호스트 한 호스트에서 어떤 네트워크 어플리케이션인지 식별

 

애플리케이션 계층 프로토콜

네트워크 프로세스는 소켓으로 메시지를 보냄으로 써 통신한다.

다른 종단 시스템에서 실행 되는 애플리케이션의 프로세스와 서로 메시지를 보내는 방법을 정의한다.

 

웹과 HTTP

웹이 온-디맨드 (On-demand)방식으로 동작한다. 사용자는 그들이 원할 때, 원하는 것을 수신한다.

개인이 웹상에 어떠한 정보를 사용 가능하게 만드는 것이 매우 쉽다는 것이다.

 

HTTP개요

클라이언트 프로그램과 서버 프로그램은 서로 HTTP 메시지를 교환하여 통신.

HTTP는 메시지의구조 및 클라이언트와 서버가 메시지를 어떻게 교환하는지에 대하여 정의

 

http://www.somSchool.edu/somDepartment/picture.gif

여기서 http ~ edu 까지는 host name 이며

나머지 som ~.gif 까지는 path name 이다.

 

HTTP는 TCP를 전송프로토콜 사용.

HTTP 클라이언트는 먼저 서버에게 TCP연결을 시작한다. 연결이 되면 브라우저와 서버 프로세스는 그들의 소켓 인터페이스를 통해 TCP로 접속한다.

 

서버가 클라이언트에게 요청 파일을 보낼 때, 서버는 클라이언트에 관한 어떠한 상태 정보도 저장하지 않는다는 점에 유의

서버는 이전에 한 일을 기억 하지 않으므로 그 객체를 또 보낸다. HTTP 서버는 클라이언트에 대한 정보를 유지하지 않으므로 HTTP를 비상태 프로토콜(stateless protocol)

 

전자방식 - 비지속 연결(non - persistent connection)

후자방식 - 지속 연결(persistent connection)

 

 

 

 

비지연속 연결 HTTP 수행과정

1. HTTP 클라이언트는 HTTP의 기본 포트번호 80 통해 서버로 TCP 연결 시도

( 이때 클라이언트와 서버에 각각 소켓이 있다 )

2. HTTP 클라이언트는 1단계에서 설정된 TCP 연결의 소켓을 통해 서버 HTTP 요청

3. HTTP 서버는 1단계에서 설정 된 연결 소켓을 통하여 요청 메시지를 받는다.

HTTP 응답메시지에 그 객체를 캡슐화 한다.

4. HTTP 서버는 TCP에게 TCP 연결을 끈으라고 한다.

(그러나 실제는 TCP 클라이언트가 응답 메시지를 올바로 받을때까지 연결 끊지않는다)

5. HTTP 클라이언트 응답 메시지를 받는다. TCP 연결이 중단된다. 메시지는 캡슐화 된 객체가 HTML 파일인 것을 나타내고 클라이언트는 응답 메시지로부터 파일을 추출.

HTML 파일을 파싱하고 10개의 JPEG 객체에 대한 참조

6. 참조되는 각 JPEG 객체에 대하여 처음 네 단계를 반복한다.

 

지속 연결 HTTP

비지속 연결은 몇가지 단점

1. 각 요청 객체에 대한 새로운 연결이 설정되고 유지

2. 앞서 언급한 대로 각 객체는 2 RTT를 필요로 한다.

- TCP 연결 설정에 1 RTT, 객체를 요청하고 받는데 1 RTT

 

지속 연결에서 서버는 응답을 보낸 후에 TCP 연결을 그대로 유지 한다.

 

 

 

 

 

 

사용자와 서버 간의 상호 작용 : 쿠키

HTTP 서버는 상태를 유지하지 않는다고 했다.

서버가 사용자 접속을 제한하거나 사용자에 따라 콘텐츠를 제공하기 원하므로 웹 사이트가 사용자를 확인하는 것이 바람직할 때가 있다. 이 목적으로 HTTP는 쿠키(cookie)를 사용 한다. 쿠키들은 사이트가 사용자들을 추적하도록 해준다.

Ex) 1678 사용자가 어느 페이지를 어떤 순서로 몇시에 방문했는지 알수 있고 다시 접속하면 Cookie 1768을 헤더라인에 넣어 요청 메시지를 보낼 것이다.

사용자의 정보를 데이터베이스에 추가하고 서버에게 쿠키 헤더를 전달하여 서버에게 사용자를 확인한다. 사용자에 대해 많은 것을 알 수 있고 이 정보를 제 3자에게 판매 할 수 있다.

 

웹 캐싱

웹 캐시 ( Web cache; 프록시 서버(proxy server) 이라고도 함)는 기점 웹서버 (origin Web server)을 대신하여 HTTP 요구를 충족시키는 네트워크 개체다

웹 캐시는 자체의 저장 디스크를 갖고 있어 최근 호출된 객체의 사본을 저장 및 보존

 

웹 캐시는 Server / Client 모두 존재해야함

브라우저로 응답을 보내거나 요구를 받는 것이 서버며 요구를 보내거나 응답을 받는 것이 클라이언트 이다.

 

웹캐싱이 즐겨 사용되는 이유

1. 웹 캐시는 클라이언트의 요구에 대한 응답 시간을 줄일 수 있다. 특히 클라이언트와 기점 서버 사이의 병목 대역폭이 클라이언트와 캐시 사이의 병목 대역폭에 비해 매우 작을 때 더욱 효과적

2. 웹 캐시는 인터넷으로의 기관 접속 회선상의 웹 트래픽을 실질적으로 줄일수 있다.

3. 웹 캐시를 가진 고밀도 인터넷 ( 기관, 지역, 국가적인 수준) 은 비록 콘텐츠 제공자가 저속도의 접속 회선을 가진 느린 서버에서 자신의 사이트를 운영하더라도 빠른 콘텐츠 분배를 위한 기반구조를 제공.

 

파일전송 FTP

FTP가 한 파일을 전송하는 데 두 TCP연결, 즉 제어 연결(control connection)과 데이터 연결(data connection)을 동시 사용한다는 것. 제어 연결은 두 호스트 간에 제어 정보, 즉 사용자 계정, 비밀번호, 원격 디렉터리를 바꾸는 명령, 파일을 보내고(put) 가져오는 (get) 명령들과 같은 정보를 보내는 데 사용 된다. 데이터 연결은 실제 파일을 보내는 데 사용

FTP는 제어 정보를 아웃밴드(out-of-band)로 표현

 

 

인터넷 전자메일

전자메일은 비동기적인 통신 매체 / 사람들은 상대방 스케쥴과 상관없이 그들이 편할 때 메시지를 보내거나 읽는다.

 

 

SMTP

SMTP는 송신자의 메일 서버로부터 수신자의 메일 서버로 메시지를 전송한다.

SMTP가 메일을 보내는 데 두 메일 서버가 먼 거리에 떨어져 있더라도 중간 메일 서버를 사용하지 않음을 이해하는 것이 중요하다.

TCP 연결은 홍콩과 세인트루이스 서버 사이의 직접 연결이다.

클라이언트 SMTP(송신 메일 서버 호스트에서 수행된다.)의 25번 포트로 TCP 연결을 설정되면 서버와 클라이언트는 애플리케이션 계층 핸드셰이킹을 수행.

SMTP 핸드셰이킹 과정 동안 SMTP 클라이언트는 송신자의 전자메일 주소와 수신자의 전자메일을 주소를 제공

클라이언트는 메시지를 보내고 SMTP는 서버에게 오류없이 메시지를 전달하기 위해 TCP의 신뢰적인 데이터 전송 서비스에 의존한다. 마지막으로 TCP에게 연결을 닫을 것을 명령한다.

 

HTTP와의 비교

두 프로토콜 모두, 한 호스트에서 다른 호스트로 파일을 전송하는 데 이용

SMTP는 한 메일 서버로부터 다른 메일 서버로 파일(전자메일 메시지)전송

HTTP와 SMTP 모두 지속 연결을 사용한다.

 

HTTP는 원칙적으로 Pull Protocol

누군가 서버에 정보를 올리고 사용자가 편의에 의해서 서버로부터 정보를 가져오기 위해 HTTP사용한다.

 

SMTP는 원칙적으로 Push Protocol

송신 메일 서버가 파일을 수신 메일 서버로 보낸다.

 

HTTP는 인밴드(in-band) 제어를 사용하고 FTP는 아웃밴드(out-band) 제어를 사용한다.

 

 

DNS - 인터넷의 디렉터리 서비스

호스트네임(hostname) - 호스트에 대한 하나의 식별자

 

호스트 네임은 기억하기 쉬워 사용자가 좋아한다. 호스트네임은 인터넷에서의 그 호스트 위치에 대한 정보를 거의 제공하지 않는다.

호스트는 흔히 말하는 IP 주소로도 식별댄다.ㅋㅋㅋㅋ

 

DNS가 제공하는 서비스

사람은 좀더 기억하기 쉬운 호스트네임 식별자를 좋아하지만 라우터는 고정 길이의 계층구조를 가진 IP 주소를 좋아한다.

 

 

 

Hostname -> IP 주소로 변환 해주는게 DNS ( Domain Name System )

 

DNS서버들은?

1. 계층 구조로 구현된 분산 데이터베이스

2. 호스트가 분산 데이터베이스로 질의하도록 허락하는 애플리케이션 계층 프로토콜

 

DNS 프로토콜은 UDP상에서 수행되고 포트번호 53 이용!!!

 

DNS가 IP 주소로 변환하는 것 외에 중요한 추가 서비스는??

호스트 에일리어싱 ( host aliasing )

- 복잡한 호스트 네임을 가진 호스트는 하나 이상의 별명을 가질수 있다.

- DNS는 호스트의 IP 주소 뿐만 아니라 제시한 별칭 호스트 네임에 대한 정식 호스트 네임을 얻기 위해 이용

메일 서버 에일리어싱 ( mail server aliasing )

- DNS는 호스트의 IP 주소 뿐만 아니라 제공된 별칭 호스트 네임에 대한 정식호스트 네임을 얻기 위해 메일 애플리케이션에 의해 수행

부하 분산 ( load distribution )

- 인기 있는 사이트는 여러 서버에 중복되어 있어서, 각 서버가 다른 종단 시스템에서 수행되고 다른 IP 주소를 갖는다. 중복 웹 서버의 경우, 여러 IP주소가 하나의 정식 호스트 네임과 연관되어 있다. DNS 데이터베이스는 이 IP 주소 집합을 갖고 있다.

 

DNS 동작 원리 개요

1. 호스트네임을 IP 주소로 변환하는 서비스에 초점 맞춘다.

2. 변환될 호스트네임을 명시하여 DNS 측의 클라이언트 호출

- (많은 유닉스 기반 컴퓨터가 그러하듯 gethostname() 은 변환 실행 어플 호출 함수)

3. 사용자 호스트의 DNS는 네트워크에 질의 메시지를 보낸다.

4. 모든 DNS 질의와 응답 메시지는 포트 53의 UDP 데이터그램 전송댐!

 

하나의 인터넷 네임 서버 생각 할 수 있다.

 

DNS 단점

서버의고장 - 네임 서버가 고장나면 전체 인터넷이 작동 안됨

트래픽 양 - 단일 DNS 서버가 모든 DNS 질의를 처리해야한다.

(수많은 호스트에서 발생 된 모든 HTTP 요청과 전자메일 메시지의 처리 )

먼 거리의 중앙 집중 데이터베이스 - 단일 DNS 서버가 모든 질의 클라이언트로부터 가까울 수 많은 없다.

유지관리 - 단일 네임 서버는 모든 인터넷 호스트에 대한 레코드를 유지해야한다.

 

 

 

 

P2P 애플리케이션

P2P 구조는 항상 켜져 있는 기반구조 서버들에 최소한으로 의존한다는 것

간헐적으로 연결되는 호스트 쌍들(피어라 부름)이 서로 직접 통신

 

파일 분배 P2P에 대한 조사를 시작하기에 좋은 애플리케이션이다

왜냐하면 P2P 구조의 자가 확장성 ( self - scalability ) 잘 보여주기 때문

 

Client - Server 파일 분배

- 서버는 파일 본사본을 각 피어들에게 보내야 한다.

- 서버에게 커다란 부하를 주고 많은 양의 서버 대역폭을 소비한다.

 

P2P파일 분배

- 각 피어는 수신한 파일의 임의의 부분을 다른 피어들에게 재분배할 수 있어서 서버의 분배 프로세스를 도울 수 있다.

 

분배시간(distribution time)

- 모든 N개의 피어들이 파일의 복사본을 얻는데 걸리는 시간.

- 인터넷 코어가 풍부한 대역폭을 갖고 있다는 간단한 가정을 하며.

 

병목 현상

- 네트워크 접속부분에 있다는 것을 의미

- 모든 업로드와 다운로드 접속 대역폭은 이 파일 분배에 모두 사용

 

클라이언트 - 서버 구조의 경우

- 어떤 피어도 파일을 분배하는 데 도움을 주지 않는다.!!!

 

여기서 NF - 전체 클라이언트가 받는 속도

F - 하나의 클라이언트가 받는 속도

 

 

 

 

 

 

 

 

 

 

P2P 구조

- 각 피어들이 서버가 파일을 분배하는 데 도움을 줄 수 있다. 한 피어가 파일 데이터 일부를 수신 할 때, 피어는 자신의 업로드 용량을 그 데이터를 다른 피어들에게 재분배하는 데 이용한다.

- 최소 분배 시간은 적어도 F/us 이다.

- 가장 낮은 다운로드 속도를 가진 피어는 F/dmin

- 최소 분배 시간은 적어도 F/dmin

 

P2P구조는 최소 분배 시간이 클라이언트 - 서버 구조의 분배시간보다 항상 작지는 않다.

따라서 P2P 구조를 가진 애플리케이션을 자가 확장성을 가진다.

이 확장성은 피어들이 비트의 소비자이자 재분배자인 것의 직접적인 결과이다.

 

비트토렌토

- 파일 분배를 위한 인기는 P2P 프로토콜이다.

- 특정 파일의 분배에 참여하는 모든 피어들의 모임을 토렌트(torrent)

- 토렌트에 참여하는 피어들을 서로에게서 파일의 같은 킈의 청크(chunk) 다운로드

- 각 토렌트는 트랙커(tracker) 라고 부르는 기반구조 노드

- 한 피어가 토렌트에 가입을 할 때 트랙커에 자신을 등록하고 주기적으로 자신이 아직 토렌트에 있음을 알린다.

- 이러한 방식으로 트래커는 토렌트에 참여하는 피어들을 추적

 

P2P 커뮤니티에서의 정보 검색

- 많은 P2P 애플리케이션들의 한 가지 주요 요소는 정보 색인 (index)

- 정보를 호스트 위치로 매핑하는 것이다.

- 피어들은 동적으로 색인을 갱신하고 검색한다.

 

중앙집중형 색인( centralized index )

- 색인 서비스는 커다란 서버

- 그 애플리케이션은 자신의 IP 주소와 공유를 위해 제공하는 파일이름을 색인 서버에게 알린다.

- 작동하는 각 피어들로부터 이 정보를 모아서 각 파일 복사본을 IP 주소 집합과 매핑하는 중앙 집중 동적 색인을 생성한다.

- 중앙집중형색인을 가진 P2P 파일 공유시스템은 실제로 P2P와 Client - Server 구조의 혼합형 이다.

 

중앙집중형 색인 단점.

- 고장문제 : 만일 색인 서버가 동작하지 않으면 모든 애플리케이션 역시 동작 하지 않음

- 성능의 병목문제와 기반구조 비용 : 수십만의 P2P 사용자를 가진 큰 P2P 시스템에서 중앙집중형 서버는 매우 큰 색인을 유지해야 하고 초당 수천개의 요구에 대한 응답

- 저작권 침해 : P2P파일 공유 시스템이 사용자에게 복사된 콘텐츠를 무료로 쉽게 얻을수 있다.

질의 플러딩(query flooding)

- 오버레이 네트워크(overlay network)라 불리는 추상적 논리적 네트워크를 형성한다.

- 오버레이 네트워크가 수십만의 참여 피어들을 갖고 있을 수 있지만, 주어진 한 피어는 오버레이 네트워크상에서 적은 수의 다른 노드와 연결

- 간단한 분산된 P2P 방식

 

계층적 오버레이

- 계층적 오버레이 설계(hierarchical overlay design)

- 질의 플러딩처럼 계층적 오버레이 설계는 파일을 추적하고 색인하는 데 지정 서버를 사용하지 않는다.

- 인터넷에 높은 대역폭 연결과 높은 가용성을 가진 피어들은 슈퍼 피어들로 지정되고 커다란 책임을 가진다.

- 피어가 슈퍼 피어가 아니면, 그것은 일반 피어고 슈퍼 피어의 자식으로 할당된다.

- 슈퍼피어는 자식으로 수백 개의 일반 피어들을 가질 수 있다.

- 슈퍼피어들 중 하나와 TCP 연결을 설정

- 새로운 피어는 다음에 슈퍼피어에게 공유를 하고자 하는 모든 파일을 알려준다.

- 슈퍼 피어가 자식들이 공유하는 모든파일 식별자

- 자식의 대응되는 IP주소를 포함하는 색인을 유지하도록 허용

 

스카이프 P2P 인터넷 전화

- PC 대 PC 인터넷 전화 서비스 제공

- PC 대 전화기 전화 서비스

- 전화기 대 PC 전화 서비스

- PC 대 PC 비디오 회의 서비스

- PC 대 PC 인터넷 전화는 그 애플리케이션의 중심에 있는 사용자쌍(피어들)들이 실시간으로 서로 통신을 하기 때문에 근본적으로 P2P 이다.

 

TCP를 이용한 소켓 프로그래밍

- Client는 Server 과 초기 접속을 하는 임무를 갖는다.

- Server가 Client 의 초기 접속에 반응 할 수 있도록 하기위해, 서버는 준비가 되어야함

1. 서버 프로그램은 동면상태에 있어서는 안된다.

2. 서버 프로그램은 임의의 컴퓨터에서 수행되고 있는 클라이언트로부터 초기 접속을 처리하는 일종의 출입문(소켓)을 가져야한다.

 

서버 프로세스가 수행되면 클라이언트 프로세스는 서버에게 TCP 연결을 시작 할 수 있다.

( Client에서 소켓 객체를 생성함으로써 가능 - 생성 할 때, 서버 IP주소 포트번호를 명시)

 


'Study > NetWork' 카테고리의 다른 글

소켓 프로그래밍  (0) 2011.09.29
Posted by 코딩하는 야구쟁이
,