P2P (Peer to Peer)

- always-on server 가 없다

- end systems 간의 직접 communicate

eg) BitTorrent, VoIP(Skype)

 

 

1. 보통의 Server-Client 간 File Distribution Time

1) File F 를 N 번 업로드 하는데 걸리는 서버의 전송 시간 : NF/Us

2) 클라이언트가 파일 F를 다운로드 받는데 걸리는 최대 시간 F/dmin

파일 F를 N개의 클라이언트에 distribute 하는데 걸리는 시간 : max { NF/Us , F/dmin }

    : 서버가 파일을 업로드 하는 시간 or 클라이언트 중 파일을 다운로드하는데 최대로 걸리는 시간 중 최대 시간

    : 유저가 많아질 수록 N 이 증가하므로 속도가 느려짐

 

2. P2P 에서의 File Distribution Time

1) 서버에서 하나의 카피를 올리는 경우 걸리는 시간 : F/Us

2) 클라이언트가 파일 F를 다운로드 받는데 걸리는 최대 시간 : F/dmin

N명의 클라이언트 모두가 파일을 받을 경우 NF bits

max upload rate : Us + ∑Ui

파일 F를 N개의 클라이언트에 distribute 하는데 걸리는 시간 : max {F/Us, F/dmin, NF/(Us+∑Ui)}

: 유저가 많아질수록 N 과 Ui 모두 증가하므로 속도가 느려지지 않음

 

 

Client-Server vs P2P Distribution Time 비교

 

BitTorrent

- file 을 256Kb chucks로 나눔

- torrent : 파일 chunk를 교환하는 peer 그룹

- tracker : 토렌트에 속하는 peer 가 누구인지 tracking

- churn : peer 가 들어갔다 나갔다 하는 것

- rarest first : chunk를 보유한 peer 가 가장 적은 것 부터 request

- selfish peer : 다운로드만 받고 업로드는 하지 않는 peer

 

※ tit-for-tat

좋은 partner peer 를 남기고 selfish peer 를 버리기 위한 전략

- 가장 많은 chunk 를 제공하는 peer top 4 에게 chunk 를 보내준다

- 10초마다 top 4를 재평가

- 30초마다 랜덤으로 peer 를 선택하고 chunk를 보낸다. (top 4 가 고정되는 것을 방지하기 위해)

 

 

 

※ 이화여대 이미정 교수님의 네트워크 강의 내용 정리

 

반응형

DNS : Domain Name System

hostname 를 ip 주소로 해석

centralize DNS 사용하지 않는 이유

1) 트래픽 집중

2) 먼 거리에 위치한 국가의 데이터베이스 접근 불리

3) 유지보수

4) 에러를 대비한 클러스터링 없음

 

DNS 서버의 위계구조 (hierarchial database)

- Root DNS Servers

- Top-level Domain Servers (TLD)

  : .com, .org, .edu, .net 및 .jp .kr 등의 국가 도메인을 담당 eg) 한국인터넷정보센터가 .kr 을 담당하는 TLD

- Authoritative DNS Servers

  : 각 기관이 가지고 있는 DNS 서버

  : 기관내 connected 된 모든 hostname, IP 매핑정보를 가지고 있음

- Local DNS name Server

  : 위계구조에 포함되진 않음, 매핑정보를 caching 하며 proxy server로도 불림

 

1) client는 root dns server에 com DNS server 질의

2) client는 get amazon.com DNS 서버를 알아내기 위해 .com DNS server에 질의

3) client는 www.amazon.com IP 주소를 알아내기 위해 amazon.com DNS server에 질의

 

 

DNS root name servers 는 세계 총 13군데 위치

우리나라는 가장 가까운 일본 DNS 사용

 

 

DNS 위계 구조 호출 순서

root > TLD > authoritative 순서로 호출

local DNS server에 캐싱하여 상위 레벨 DNS 서버의 부하방지

Local DNS Server 의 Outdated Domain name 정보의 확인을 위해 TTL(Time-To-Live) 레코드 사용

유효기간(TTL) 이 지난 경우 캐시 삭제됨

 

 

DNS records

name, value, type, ttl

 

레코드 타입별 name/value

A (Host) : name(호스트 서버네임) value(IPv4) eg)authoritative DNS 

AAAA : name(호스트 서버네임) value(IPv6) 

NS (Name Server) : name(도메인네임) value(authoritative 서버네임) eg) TLD DNS

CNAME : name(alias) value(canonical name)

 

 

DNS query 순서

1) 

클라이언트(브라우저)에서 /etc/resolv.conf 에 지정되어있는 로컬 NS 서버 (네임서버) 로 www.yahoo.com 에 대한 요청

2)

네임서버는 root DNS 서버 IP 주소를 기록한 hint 파일을 가지고 있으며 이를 참조하여 root DNS 서버에 www.yahoo.com 에 대한 요청 전달.

root DNS 서버는 TDL(최상위네임서버)들의 글루레코드를 가지고 있으며 이를 참조하여 .com 네임서버를 참조하라고 응답.

글루레코드(glue record)란 네임서버명(NS 레코드)과 IP주소(A 레코드)을 의미

3)

.com 네임서버 즉, TDL 서버는 .com 을 TDL (최상위도메인) 로 사용하는 도메인들의 글루레코드를 가지고 있으며 이를 참조하여 www.yahoo.com 의 네임서버를 참조하라고 응답

(authoritative DNS server의 글루레코드(NS + A) 응답)

4) 

yahoo.com의 네임서버는 yahoo.com 도메인에 대한 존(zone)파일을 참조하여 www.yahoo.com의 의 IP주소를 네임서버(로컬 NS)로 돌려준다.

(authoritative DNS server 는 IP주소(A 레코드) 를 클라이언트가 최초 요청을 한 네임 서버(로컬 NS)로 응답)

5) 

최초 요청을 했던 네임 서버(로컬 NS)는 클라이언트에게 IP 주소를 전송

 

 

※ 한양대학교 이석복 교수님의 컴퓨터네트워크 강의 내용 정리

※ https://webdir.tistory.com/161

반응형

IP와 PORT

IP : 호스트

port : 호스트 내의 프로그램

 

application layer 는 transport layer에 종속적이며 transport layer에서 application layer에 다음과 같은 것들을 지원해준다.

1) data integrity

2) timing

3) throughput

4) security

 

HTTP (hypertext transfer protocol)

- WEB's application layer protocol

- TCP 사용

- default 80번 port 사용

- stateless : 클라이언트 요청에 대한 상태저장 없음 (cookie 사용)

* safari, explorer, chrome 은 모두 다른 application 이지만 모두 같은 HTTP (protocol) 을 사용하므로 브라우저와 무관하게 application 사용이 가능하다

 

HTTP 의 두가지 방식

1. non-persistent HTTP

- TCP 커넥션을 HTTP 사용후 close

- 매 http 마다 TCP 커넥션을 새로 맺음

- 응답시간이 persistent 방식보다 더 많이 걸림

* RTT : round trip time

 

2. persistent HTTP

- multiple objects can be sent over single TCP connection between client, server

  클라이언트/서버 간 하나의 TCP 커넥션으로 여러개의 HTTP 송수신을 수행

- 현재 사용하는 HTTP 1.1 버전은 persistent 가 default. (지속커넥션 사용)

* 파이프라인 사용

 

HTTP request message

 

Cookie 동작 순서

 

Web caches(Proxy server)

origin server에 HTTP 요청을 하는 서버대신 proxy 서버에 HTTP 요청

- origin server의 부하를 줄이고

- 비용을 줄임

- 속도가 빠름

 

※ Cache에 저장된 데이터가 최신이 아닐 수 있다.

브라우저로 전달되는 객체들이 최신임을 확인하며 캐싱할 수 있도록 Conditional GET 사용

 

Conditional GET

- HTTP 요청에 If-Modified-Since 헤더 라인 포함.

- 서버에 있는 객체의 마지막 수정된 날짜와 비교.

수정된 객체라면 객체를 보내줌 (200 OK + data)

최신 상태이면 object를 보내지 않음 (304 Not modified)

 

 

 

 

SMTP (Simple Mail Transfer Protocol)

- 메일서버에 송신자가 메일을 보낼때, 송신메일서버가 수신메일서버에 메일을 보낼 때 사용되는 프로토콜

- 수신메일서버에서 수신인이 메일을 읽어갈 땐 POP/IMAP/HTTP 등의 프로토콜을 사용

- persistent connection 사용

- default 25번 포트  사용

- handshaking > transfer > closure 순서로 동작

HTTP : 클라이언트 입장에서 데이터를 가져오므로 pull protocol

SMTP : 클라이언트 입장에서 데이터를 보내므로 push protocol

 

 

 

※ 한양대학교 이석복 교수님 컴퓨터네트워크 강의 내용 정리

※ 이화여대 이미정 교수님 컴퓨터네트워크 강의 내용 정리

 

반응형

Network Structure : 네트워크 구성요소

1. network edge :

- applications and hosts

2. network core :

- routers

3. access networks, physical media :

- communication links 라우터들을 연결시켜주는 링크

 

1. network edge :

1) end systems (hosts) : run application programs

eg) Web, email

2) client/server model : client host requests, receives service from always-on swerver

eg) web browser/server; email client/server

3) peer-peer model : minimal use of dedicated servers

eg) Skype, BitTorrent

 

데이터 통신방식 

1. connection-oriented service

TCP (Transmission Control Protocol)

- reliable : 신뢰할 수 있음

- flow control : 수신자 능력 고려하여 받을 수 있는 만큼 전송

- congestion control : 네트워크 막힘현상시 속도 낮춰서 전송

사용: HTTP, FTP, Telnet, SMTP(email)

 

2. connectionless service

UDP (User Datagram Protocol)

- connectionless

- unreliable data transfer

- no flow control

- no congestion control

사용: Streaming media, DNS

 

 

 

 

2. network core :

라우터간의 연결들의 집합

 

네트워크를 통한 데이터 전송방식

1. circuit switching :

출발지에서 목적지까지 가는 길을 미리 설정

bandwidth 가 1Mpbs이고 1명의 유저당 active 상태에서 100kb/s 사용시 최대 10명의 유저만 사용가능

 

2. packet-switching : 

패킷 순서가 정해져있지 않으며 패킷을 요청시 공유한다. (statistical multiplexing )

패킷 딜레이

1) nodal processing

check bit errors : 패키지 검사

 

2) queueing : 큐 순서 기다리기

※ queue 가 초과하는 경우 packet 이 유실된다. (대부분의 packet 유실은 queue 초과로 일어난다)

 

3) Transmission delay

R = link bandwidth(bps)

L = packet length (bits)

L/R : time to send bits into lnk

 : 큐 순서 도달 후, 시작 bit 부터 끝 bit 까지 link 를 통해 bit가 나가는데 총 걸리는 시간

 

4) Propagation delay : 

d = length of physical link

s = propagation speed in medium (광속)

d/s = propagation delay

 

 

패킷 딜레이를 줄이려면?

1) processing delay : 라우터 성능 업그레이드

2) queueing delay : 사용자 수에 의해 결정되므로 제어 불가

3) transmission delay : 케이블 업그레이드

4) propagation delay : 광속이므로 제어 불가

 

 

 

 

※ 한양대학교 이석복 교수님의 컴퓨터네트워크 강의 내용 정리

반응형

 

OSI (Open Systems Interconnection : 네트워크 통신의 개방 시스템 상호 연결)

여러 정보 통신 업체 장비들은 자신들의 장비끼리만 연결이 되는 등 호환성이 없었다.

이에 ISO 단체에서 1984년에 모든 시스템들의 상호 연결에 있어 표준이 되는 OSI 참조 모델 발표

 

데이터를 전송할 때 7-->1계층으로 내려가면서 각각의 층마다 인식할 수 있는 헤더가 붙고 이를 캡슐화(캡슐레이션)라 함

데이터를 수신할 때 1-->7계층으로 올라가면서 헤더가 벗겨지는데 이를 디캡슐레이션이라 함

 

7. Application
Services that are used with end user applications
사용자 인터페이스 제공
프로토콜 : http, ftp

6. Presentation
Formats the data so that it can be viewed by the user
운영체제의 입출력되는 데이터를 암/복호화, 포맷 변환 등 두 장치가 전송 데이터를 이해할 수 있도록 함
제어코드, 문자 및 확장자
jpeg, mpeg

5. Session
Establishes/ends connections between two hosts
통신 세션 구성 (port연결)
대표적인 프로토콜은 SSH

4. Transport
Responsible for the transport protocol and error handling
발신지 대 목적지간(종단 대 종단(end to end) 전체 메시지를 제어 및 에러 관리
L4(로드밸런싱)
대표적인 프로토콜은 tcp, udp

3. Network
Reads the IP address from the packet
패킷를 목적지까지 안전하고 빠르게 전달하는기능(라우팅)
대표적 프로토콜은 ip

2. Datalink
Reads the MAC address from the data packet
MAC주소를 이용하여 정확한 장치로 정보 전달 (브릿지, 스위치)
노드 대 노드 전달을 감독(1계층의 오류를 찾고 재전송)
3계층에서 정보를 받아 주소와 제어정보를 시작(header)과 끝(tail)에 추가

1. Physical 
Send data to the physical wire
비트 (1, 0 (on off)) 단위의 통신단위사용
데이터는 전달만 할 뿐 메시지 내용은 신경 X
통신 cable, hub(더미허브), 리피터 장비가 이에 해당

Hub, 스위치, 라우터 차이

1. Hub(더미허브)(L1)(bit)

1) 전기적 신호를 증폭시켜 LAN의 전송거리를 연장시키는 역할을 하는 네트워크 장비(리피터 역할)

- UTP케이블의 데이터 최대 전송거리는 100미터 남짓이므로 100미터 지점에 허브를 설치할 경우 더 먼거리까지 데이터 전송이 가능

2) 여러대의 장비를 LAN에 접속할 수 있도록 하나로 연결시켜주는 중심축(허브)역할을 하는 네트워크 장비

- IP를 할당하는 기능은 없으며 단순히 포트만 늘려주는 기능을 함

- 허브에 연결된 컴퓨터 및 네트워크 장비의 MAC 주소를 따로 저장하지 않으므로 한 장비에서 전송된 데이터 프레임을 허브에 연결된 모든 장비에 전송(플러딩)

- 허브는 단순한 분배 중계기에 불과하여 연결되는 컴퓨터 수에 따라 데이터 전송 대역이 분리됨(10Mbps 네트워크 라인에 허브를 물리고 허브에 5대의 컴퓨터를 연결했다면 각 컴퓨터 대역폭은 2Mbps)

3) 데이터 송신이 하나의 포트에서만 가능

- CSMA/CD 프로토콜(Carrier Sense Multiple Access with Collision Detection)사용하여 충돌을 방지

* 더미허브 장비는 요즘은 거의 사용되지 않는 장비

 

2. 스위치(스위치허브)(L2)(frame)

- 데이터 송신이 여러 포트에서 가능

연결된 컴퓨터 및 네트워크 장비의 IP와 MAC주소 모두 테이블로 가지고 있어 프레임 전송시 목적지를 파악하여 해당 목적지에 프레임을 전송. 단, 테이블에 없는 목적지를 가진 패킷이 오면 허브의 동작과 마찬가지로 모든 기계에 포워딩.

 

3. 라우터(L3)(패킷)

- 둘 혹은 그 이상의 네트워크와 네트워크 간 데이터 전송을 위해 최적 경로를 설정하며 데이터를 해당 경로를 따라 한 통신망에서 다른 통신망으로 통신할 수 있도록 도와주는 인터넷 접속 장비

- 데이터에 담긴 수신처의 주소를 읽고 적절한 통신통로를 이용해 다른 통신망으로 데이터를 전송하는 장치

- LAN(Local Area Network)을 연결해주는 장치 외부로부터 내부  보호

 

* 공유기

ISP(Internet Service Provider) 업체에서 제공하는 한 개의 인터넷 IP address(공인IP)로 여러 대의 컴퓨터가 인터넷을 공유할 수 있는 기능을 제공

가정용 소용량 라우터

라우터의 NAT(Network Address Translation) 기능을 가지고 있음

: 공유기 사용시 ISP에서 할당받은 공인IP를 내부 네트워크에서 여러개의 사설 IP 주소로 변환하여 사용

 

* 홈 네트워크 구성의 예

모뎀

  ㄴ 공유기(라우터) 

            ㄴ 컴퓨터1                           

            ㄴ TV 셋탑박스

            ㄴ 허브(스위치허브)

                             ㄴ 컴퓨터2

                             ㄴ 컴퓨터3

                             ㄴ NAS

 

 

TCP/IP 4계층 (인터넷모델)

4. Application : OSI 5,6,7

3. Transport : OSI 4

2. Internet : OSI 3

1. Network Interface : OSI 1,2

 

 

참고:

http://blog.naver.com/PostView.nhn?blogId=demonicws&logNo=40117378644

https://shlee0882.tistory.com/110

https://www.quora.com/What-is-the-difference-between-HTTP-protocol-and-TCP-protocol

https://instrumentationtools.com/7-osi-layers-of-communications/

https://m.blog.naver.com/PostView.nhn?blogId=wlsdml1103&logNo=220936267002&proxyReferer=https%3A%2F%2Fwww.google.com%2F

 

https://minwan1.github.io/2018/10/01/2018-09-03-network-network-divice/

https://m.blog.naver.com/PostView.nhn?blogId=vanshaw&logNo=220709918927&proxyReferer=https%3A%2F%2Fwww.google.com%2F

 

 

반응형

Roy Fielding 의 2000년 논문에 의해 소개. 
웹의 장점을 최대한 활용할 수 있는 네트워크 기반의 아키텍쳐, Representational state transfer (REST)  

3가지요소 (리소스메소드메시지)로 구성

HTTP POST, http://test/user/ 

"id":"developyo", 
"blog":"https://developyo.tistory.com/" 

위 요청은 POST 메소드(create), 생성 대상이 되는 리소스인 http://test/user/ 
생성하고자 하는 사용자 내용은 JSON 을 사용 

[HTTP 메소드]

POST,GET,PUT,DELETE 만 사용 

POST : create, Idempotent X 
GET : select, Idempotent O 
PUT : update, Idempotent O 
DELETE : delete, Idempotent O 

POST, GET, PUT, DELETE 는 CRUD 역할 
Idempotent 한 메소드(GET, PUT, DELETE)는 수행 실패시 한 번 더 호출하면 되지만 Idempotent 하지 않은 메소드(POST(create))는 실패시 트랜잭션 처리에 주의해야한다. 


※ Idempotent 는 여러번 호출되도 같은 실행결과가 나오는 것을 의미한다. 
예를 들어 a++는 호출시마다 값이 증가하므로 Idempotent 하지 않으며, a=1 은 호출시 값이 같으므로 Idempotent 하다. 

[REST의 리소스]

REST는 리소스 지향 아키텍쳐 스타일 답게 모든 것을 리소스(명사)로 표현, 각 세부 리소스에는 id 를 붙임 
즉 사용자라는 리소스 타입을 http://test/user 라고 정의했다면 
developyo 란 id를 갖는 리소스는 http://test/user/developyo 와 같이 표현 

POST/생성 의 예 :

HTTP POST, http://test/user/ 

"id":"developyo", 
"blog":"https://developyo.tistory.com/" 

GET/조회 의 예 :

HTTP GET, http://test/user/developyo 

PUT/수정 의 예 :

HTTP PUT, http://test/user/developyo 

"id":"developyo", 
"blog":"https://developyo2.tistory.com/" 

DELETE/삭제 의 예 :

HTTP DELETE, http://test/user/developyo 

 

[REST의 특징]

1. 유니폼 인터페이스(Uniform interface) : 
특정 언어나 기술에 종속받지 않으며 HTTP와 JSON(혹은 XML)을 사용할 수 있는 모든 플랫폼에서 사용이 가능한 느슨한 결합 형태의 구조 
2. 무상태성(stateless) : 클라이언트 상태를 서버쪽에 유지하지 않는다는 의미 (참고)
3. 캐싱 가능 
4. 자체 표현 구조 : 직관적인 이해가 가능 
5. 클라이언트 서버 구조 

[REST 안티 패턴]

1. GET/POST 터널링 : http://test/user?id=developyo&method=update (GET 터널링의 예)
2. 자체 표현 구조가 아닌 경우 (위 1번과 같은 경우) 
3. response code 사용하지 않음 :
response code 는 항상 200(성공) 으로 응답하며, 실제 성공/실패 리턴코드를 body 에 담아 따로 리턴하는 경우

 

 

참고 : https://bcho.tistory.com/953

참고 : https://blog.npcode.com/2017/04/03/rest%EC%9D%98-representation%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80/

 

반응형

[ IP 클래스 ]

IPv4 ( 32 bit 주소체계 )

IPv6 (128 bit 주소체계)

 

네트워크 / 호스트

네트워크 주소는 대표주소

호스트 주소는 하나의 네트워크 밑의 피씨를 구분하기 위한 주소

0???????.????????.????????.???????? A클래스 (0~127.x.x.x)

10??????.????????.????????.???????? B클래스 (128~191.x.x.x)

11??????.????????.????????.???????? C클래스 (192~255.x.x.x)

 

* 브로드캐스트(같은 네트워크 안의 모든 피씨에 데이터 전송)는 IP 대역에서 가장 끝번호 

 

ex)

192.125.62.0 은 C클래스. 192.125.62.0 는 네트워크 주소

192.125.62.1 는 PC 2번의 호스트 주소

192.125.62.2 는 PC 2번의 호스트 주소

192.125.62.3 는 PC 2번의 호스트 주소

192.125.62.255 는 브로드캐스트 IP

 

 

[ 서브넷 마스크 ]

IP 대역을 나누기 위함.

비트연산 AND 연산(하나라도 0이면 0)으로 0을 만들 수 있는 수로 서브넷 마스크 사용

 

ex)

192.125.62.0 C 클래스를 2개의 네트워크 대역으로 나누고 싶은 경우,

서브넷마스크로 192.125.62.128 을 사용 

 

네트워크 주소 192.125.62.0 -> 11000000.01111101.00111110.00000000

서브넷마스크 192.125.62.128 -> 11111111.11111111.11111111.10000000

네트워크 대역1 (192.125.62.0~192.125.62.127): 11000000.01111101.00111110.00000000 ~ 01111111네트워크 대역2 (192.125.62.127~192.125.62.255): 11000000.01111101.00111110.10000000 ~ 11111111

* 네트워크 대역1 의 브로드캐스트 IP 는 192.125.62.127(11000000.01111101.00111110. 01111111)

* 네트워크 대역2 의 브로드캐스트 IP 는 192.125.62.255(11000000.01111101.00111110. 11111111)

 

ex2)

192.125.62.0 C 클래스를 4개의 네트워크 대역으로 나누고 싶은 경우, 

서브넷마스크로 192.125.62.192(11111111.11111111.11111111.11000000) 을 사용 

 

ex3)

192.125.62.0 C 클래스를 8개의 네트워크 대역으로 나누고 싶은 경우, 

서브넷마스크로 192.125.62.192(11111111.11111111.11111111.11100000) 을 사용 

반응형

+ Recent posts