'전체 글'에 해당되는 글 84건

  1. 2020.07.14 introduction
  2. 2020.07.12 파이썬 기본 문법
  3. 2020.07.10 Computer Algorithm
  4. 2020.07.10 6. Web request senario
  5. 2020.07.10 5. link layer 2계층
  6. 2020.07.10 4. Network layer 3계층
  7. 2020.07.10 3. Transport layer 4계층
  8. 2020.07.10 2. Application layer 5계층
  9. 2020.07.10 1. 컴퓨터 네트워크와 인터넷
2020. 7. 14. 15:37

https://www.youtube.com/watch?v=66c9QBXM2Fs&list=PLRx0vPvlEmdD5FLIdwTM4mKBgyjv4no81&index=4

 

https://ndb796.tistory.com/187

 

git : 소스코드 버전관리 시스템

github : git으로 관리하는 프로젝트를 업로드 할 수 있는 원격저장소

 

로컬저장소 커밋관리(=버전관리)

git init : 로컬저장소(.git디렉토리) 생성

git config --global user.name <name> : 커밋관리를 위한 사용자 정보 등록

git config --global user.email <email> : 커밋관리를 위한 사용자 정보 등록

git add <파일이름> : working directory의 <파일이름>파일을 stage(=staging area)에 올림

git commit -m "메세지" : stage의 파일들을 모두 로컬저장소에 올림, 이때 해당 커밋(=버전)에 대한 설명을 적을 수 있음.

git log : 로컬저장소에서 지금까지 만든 커밋 확인 

git checkout <커밋id> : 로컬저장소의 커밋들중 특정 커밋으로 프로젝트를 되돌림

git reset HEAD <파일이름> : git add를 취소, 뒤에 파일명이 없으면 add한 파일 전체를 취소

git reset --hard HEAD^ :  commit을 취소, staging area, working directory의 작업까지 모두 reset

git reset --mixed HEAD^ : commit을 취소, staging area은 reset, working directory의 작업은 남겨둠

git reset --soft HEAD^ :  commit을 취소, staging area, working directory의 작업은 남겨둠

 

원격저장소 커밋 올리기

git remote add origin <원격저장소 주소> : 로컬저장소에 원격저장소 주소를 알려줌

git push -u origin master : 로컬저장소에 있는 커밋들을 원격저장소에 올림

 

원격저장소 커밋 내려받기

git clone <원격저장소주소> . : 현재위치( . )에 원격저장소의 커밋을 내려받음

git pull origin master : 원격저장소의 새로운 커밋으로 로컬저장소를 갱신

 

 

Posted by yongminLEE
2020. 7. 12. 18:41

* 함수 

- 명명 규칙 : 소문자로만 구성, 스네이크케이스

 

* 클래스

- 명명규칙 : 대문자로 시작, 카멜케이스

 

* 사용자 입력 받기

- input() : 문자열 입력받음

- eval() : 인자를 분석하여 evalute하는 함수, 문자열->숫자 변환가능, 수식계산가능, 함수호출가능...

- num = int(str) // 문자열 -> 정수로 변환하는 함수

 

* for문

for i in range(a)  =>  i : 0~(a-1)

for i in range(a,b) => i : a~(b-1)

 

산술연산

-

*

** : 제곱연산

/  : 실수 나눗셈

// : 정수 나눗셈

% : 나머지연산

 

type(parameter)  : parameter의 타입반환

print( a, end = ' ') // 줄바꿈대신 ' '출력

print(1,2,3, sep=',' , end = '_') // 원소사이에 , 를 삽입하고 마지막에 _ 출력 => 1,2,3_

 

리스트형 자료형의 연산

1. 덧셈연산 : [1,2] + [1,2,3] = [1,2,1,2,3,]

2. 곱셈연산 : [1,2,3] * 2 = [1,2,3,1,2,3]

3. 인덱싱 연산 : list = [1,2,3] print(list[0], list[-1]) // 1 3

4. 슬라이싱 연산 : list[1:3] = [0,0,0,0,0] list[:3] = [0,0,0,0,0] list[2:] = [0,0,0,0] even = list[0:10:2]

 

리스트자료형 함수

len(list) : list의 길이 반환

min(list) : list의 값들 중 가장 작은 값 반환

max(list) : list의 값들 중 가장 큰 값 반환 

list.remove(a): list에서 첫번째 a값을 찾아서 삭제

list.append(a) : list 끝에 a 추가

list.extend(list2) : list끝에 list2 추가

list.clear() : list 내용 전부 삭제

list.insert(i, a) : list[i] 에 a 삽입

list.pop(i) : list[i] 반환및 삭제

list.count(a) : list에 속한 a 갯수 반환

list.index(a) : list의 첫번째 a의 인덱스 반환

 

문자열 자료형

- 작은따옴표 또는 큰따옴표로 묶을 수 있다

- 리스트 자료형과 비슷 : 덧셈연산, 곱셈연산, 인덱싱연산, 슬라이싱연산 (단! 문자열은 인덱싱연산으로 내용 바꿀 수 없다!)

 

문자열 함수

str.count(sub) : str에 sub이 등장하는 횟수 반환

str.lower() : str내용 전부 소문자로 바꾼 문자열 반환

str.upper()

str.lstrip() : str의 왼쪽 공백 모두 제거한 문자열 반환

str.rstrip() : str의 오른쪽 공백 모두 제거한 문자열 반환

str.strip() : 왼쪽 오른쪽 공배 모두 제거한 문자열 반환

str.replace(old,new) : str의 모든 old를 new로 교체한 문자열 반환

str.replace(old,new,2) : str의 두번째 old까지 new로 교체한 문자열 반환

str.split(' ') : str을 ' ' 기준으로 나눠서 리스트에 담아서 반환

str.isdigit() : str이 숫자로만 이루어져 있으면 True, 아니면 False

str.isalpha() : str이 알파벳만으로 이루어져 있으면 True, 아니면 False

str.startswith(prefix) : str이 prefix로 시작하면 True, 아니면 False

str.endswith(suffix) : str이 suffix로 끝나면 True, 아니면 False

 

문자열 탐색함수

str.find(sub) : str의 앞에서부터 sub을 찾아서 sub가 있으면 해당 인덱스값 반환, 없으면 -1 반환

str.rfind(sub) : str의 뒤에서부터 sub를 찾아서 sub가 있으면 해당 인덱스값 반환, 없으면 -1 반환

 

in 연산자

if 'sub' in str // str에 sub 있으면 True, 아니면 False

if a in list // list에 a 있으면 True, 아니면 False

 

not in 연산자

if 'sub' not in str // str에 sub 없으면 True, 있으면 False

if a not in list // list에 a 없으면 True, 있으면 False

 

함수 종류

- 객체 안에 있는 함수 : 해당 객체에 특화된 형태

- 객체 밖에 있는 함수 : 둘이상의 다양한 종류의 값을 대상으로 동작하는 함수

 

bool 자료형

True 

False

 

다른 자료형과 bool 자료형

0 = False

0이 아닌 수 = True

빈리스트 = False

비어있지 않은 리스트 = True

빈 문자열 = False

비어있지 않은 문자열 = True

 

조건문

if ~ elif ~ elif ~ else

 

반복문1

while 조건 :

    조건이 True인 동안 반복실행될 문장

 

반복문2

for 변수 in 반복범위 : 

    범위동안 반복실행될 문장들

 

튜플

- 리스트와 비슷하지만 ( a,b,c... )로 표현

- 튜플은 값을 추가하거나 수정할 수 없다

 

튜플 관련 함수

len()

max()

min()

tuple.count(a)

tuple.index(a)

덧셈연산

곱셈연산

인덱싱연산

슬라이싱연산

 

레인지

- 레인지 객체는 '값의 범위'를 나타낸다

- range(1,10) = range(1,10,1)

- range(1,10,2) : 1부터 2씩 증가하여 9까지

-  거꾸로 범위 지정 : range(10,1,-1) -> 10부터 2까지 -1씩 감소하는 정수

 

형변환

list(str)

list(range)

list(tuple)

tuple(str)

tuple(range)

tuple(list)

str(list)

str(tuple)

 

함수

- 디폴트값 : 디폴트 값을 가지는 매개변수는 뒤에 위치해야한다

- 매개변수 "참조" 관계 : 파이썬에서는 매겨변수를 위해 별도의 메모리 공간을 할당하지 않는다. 따라서 매개변수는 참조 형식으로 함수내부에서 접근된다

 

모듈

- 정의 : 모듈이란 함수나 변수 또는 클래스를 모아 놓은 '파일'

- import 모듈이름

- import 모듈 as 새로운모듈이름

- from 파일이름 import 함수1 (as 새로운함수이름)

- from 파일이름 import 함수1, 함수2 

- from mod1 import *

 

math 모듈

- math.pi

- math.e

- math.log(x) = lnx

- math.sqrt(x) = x^1/2

- math.fabs(x) = |x|

etc

 

패키지

- 패키지(Packages)는 도트(.)를 사용하여 파이썬 모듈을 계층적(디렉터리 구조)으로 관리할 수 있게 해준다. 

- 파이썬 패키지는 디렉터리와 파이썬 모듈로 이루어진다

 

딕셔너리 자료형

- 딕셔너리는 Key와 Value를 한 쌍으로 갖는 자료형

- value는 중복되어도 되지만 key는 중복되어서는 안된다

- 딕셔너리의 데이터는 저장 순서 중요하지 않다

- 딕셔노리를 대상으로 for문 구성이 가능 -> 딕셔너리의 'key'를 가지고 for문 동작

- dic = { 'key1' : value1, 'key2' : value2 }

- 참조 : dic[key1]

- 수정 : dic[key1] += 10

- 추가 : dic[newKey] = newValue

- 삭제 : del dic[key1]

- value1 in dic // True

 

set 자료형

- 집합 자료형은 set 키워드를 사용,  set()의 괄호 안에 리스트를 입력하거나 문자열을 입력

s1 = set([1,2,3]) >>> s1 = {1, 2, 3}

s2 = set("Hello") >>> s2 = {'e', 'H', 'l', 'o'}

- 중복을 허용하지 않는다

- 순서가 없다(Unordered). => set 자료형은 순서가 없기(unordered) 때문에 인덱싱으로 값을 얻을 수 없다. 

- set 자료형에 저장된 값을 인덱싱으로 접근하려면 다음과 같이 리스트나 튜플로 변환한후 해야 한다.

- 교집합 : s1 & s2  ||  s1.intersection(s2)

- 합집합 : s1 + s2 || s1.union(s2)

- 차집합 : s1 - s2 || s1.difference(s2)

- 값 1개 추가 : s1.add(4)

- 값 여러개 추가 : s1.update([4, 5, 6])

- 특정 값 제가 : s1.remove(2)

 

지역변수

- 함수 안에서 선언되는 변수

- 함수내에서 만들어 졌다가 함수를 벗어나면 사라진다

- 함수 밖에서 지역변수 접근 불가능 

 

전역변수

- 함수 밖에서 선언되는 변수

- 함수 내에서 전역변수 접근하려면 global 키워드 사용

 

클래스와 객체

- 클래스 : 특정 객체를 생성하기 위해 변수와 메소드를 정의하는 템플릿 

- 객체 : 속성(변수)과 행동(메소드)을 가지는 표현하려는 대상

- 인스턴스 : 클래스를 통해 실제 생성된 객체

- 인스턴스 변수(속성) : 인스턴스 안에 존재하는 변수

- 인스턴스 메소드 : 인스턴스 안에 존재하는 함수

- 일반 함수와는 달리 파이썬에서 객체의 메서드의 첫 번째 매개변수 self는 객체 자기자신이다.

- 생성자 : 인스턴스 생성시 변수의 초기화를 동시에 진핼하는 함수 => def __init__( ) 

- 파이썬의 모든 데이터는 객체! => 문자열, 정수, 실수 모든 값들은 객체이다

 

특정 예외 여러개 처리

try :

    실행문장

except 예외1 (as 변수1) :  // 변수1에 오류메세지 저장된다

    예외1 발생시 실행문장

except 예외2 (as 변수2) : // 변수2에 오류메세지 저장된다

    예외2 발생시 실행문징

finally :   

    try영역에 진입하면 예외 발생 유무 상관없이 무조건 실행해야 하는 내용

 

모든 예외처리

try :

    실행문장

except :

    어떤 예외가 발생하던 실행되는 문장

Posted by yongminLEE
2020. 7. 10. 20:33

 

 

1. 문제해결과 알고리즘

    - 문제해결과정

    - 알고리즘 분석 

 

2. 데이터 추상화와 자료구조

    - 데이터 추상화

    - 자료구조 : tree, binary tree, stack, queue, heap, union-find, dictionary, ...

 

4. Sorting

    - 정렬 : insertion sort, quick sort, merge sort, heap sort, radix sort

 

6.  Dynamic sets & Searching

    - array doubling & amortized analysis

    - BST

    - Red-Black tree

 

7. Graph and Graph Search

    - Graph

    - Graph traversal : pre-order, in-order, post-order

    - Graph search : DFS, BFS

    - Strongly Connected Components

 

8. Graph optimization problem & greedy algorithm

    - optimization problem

    - graph optimization problem : MST, shortest path

    - MST -> Prim algorithm, Kruskal algorithm

    - shortest path -> dijkstra algorithm

 

9. Transitive Closure & All-pairs shortest paths

    - transitive closure, Floyd-Warshall algorithm

    - All-pairs shortest paths

 

10. Dynamic Programming

    - dynamic programming & recursive algorithm

    - Matrix-chain Multiplication

 

11. String Match

    - string match

    - Brute-Force

    - KMP

    - Boyer-Moore

 

13. NP-Complete Problem

    - Optimization problem vs Decision problem 

    - Class P, Class NP, Class NP-hard problem

    - Class NP-Complete problem

'CS > Algorithm' 카테고리의 다른 글

문자열 매칭 알고리즘  (0) 2020.02.25
Greedy Algorithm  (0) 2020.02.25
Graph, DFS, BFS, Dijkstra  (0) 2020.02.25
Tree, Traversal, Binary Search Tree  (0) 2020.02.25
탐색2 : Hashing  (0) 2020.02.25
Posted by yongminLEE
2020. 7. 10. 17:22

상황 : host A가 www.google.com에 접속하려고 함.

 

1. host A는 LAN에 접속 (no IP)

2. host A는 DHCP request 메세지를 flooding 기법으로 broadcast (UDP)
-> switch는 호스트의 MAC address와 inteface를 learning

3. DHCP 서버는 UDP demux로 request 메세지를 이해

4. DHCP 서버는 DHCP ACK 메시지 전송 ( yiaddr, ip addr of first hop router, DNS server name & id 포함)
-> 2번에서 host의 MAC address와 inteface를 learning했으므로 uni cast 가능

5. host A는 ip 할당 받음 , www.google.com에 접속하기 위해 ip 필요 => LAN에 없으면 DNS query

6. DNS query송신시, 

    source ip            : A's IP

    destination ip      : DNS ip

    source MAC        : A's MAC addr

    destination MAC  : router's MAC addr

query메세지를 전송함으로써 router가 LAN외부로 나가는 메세지임을 확인 => ARP

7. router는 DNS IP를 보고 해당 메세지를 DNS 서버가 있는 곳 routing (RIP, OSPF, BGP) 및 forwarding

8. DNS query를 수신한 DNS 서버는 DNS 계층을 거치면서 www.google.com의 주소를 알아내고 host A에게 알려줌

9. host A는 www.google.com의 ip를 가지고 3-way handshaking으로 tcp connection 설정  

10. host A는 http request로 원하는 객체 요구 및 google 서버는 http response로 host A에게 해당 파일 전송

 

 

'CS > Networks' 카테고리의 다른 글

5. link layer 2계층  (0) 2020.07.10
4. Network layer 3계층  (0) 2020.07.10
3. Transport layer 4계층  (0) 2020.07.10
2. Application layer 5계층  (0) 2020.07.10
1. 컴퓨터 네트워크와 인터넷  (0) 2020.07.10
Posted by yongminLEE
2020. 7. 10. 17:22

1. link layer intro

2. MAC : multiple access protocol

3. LANs

4. MPLS link virtualization

5. Data center network

 

'CS > Networks' 카테고리의 다른 글

6. Web request senario  (0) 2020.07.10
4. Network layer 3계층  (0) 2020.07.10
3. Transport layer 4계층  (0) 2020.07.10
2. Application layer 5계층  (0) 2020.07.10
1. 컴퓨터 네트워크와 인터넷  (0) 2020.07.10
Posted by yongminLEE
2020. 7. 10. 17:21

1. network layer intro 

network layer

송수신 호스트간의 패킷을 전달하는 서비스 제공

주요기능

forwarding : 라우터의 입력링크로 들어온 패킷의 올바른 출력링크 결정

routing : 라우팅 알고리즘으로 출발end-도착 end 까지의 경로 결정

 

network service model

송수신 호스트 간의 패킷 전송 특정 정의

종류

- datagram network (-> connectionless service )

: 패캣과 수신자 ip를 가지고 어떤 경로로 가던지 간에 특정시간에 패킷이 도착할 수 있음을 보장

- virtual circuite nework (-> connection service)

: 경로를 설정하고 패킷을 스트림 형식으로 보내어 순서대로 패킷전달

 

2. virtual circuite network ,datagram network 

virtual circuite network

경로를 설정하고 패킷을 스트림 형식으로 보내어 순서대로 패킷전달

 

VC의 3요소 : path, vc number, forwarding테이블

 

datagram network

목적지 주소를 가지고 각각의 패킷에 대한 경로가 설정되므로, 결로가 라우터 상황에 따라 바뀐다

 

3. Inside Router 

router 구조

input port

output port

routing processor : 라우팅알고리즘으로 forwarding talbe 업데이트

switching fabric

 

종류

swtiching via memory

switching via a bus

switching via interconnection network

 

4. IP : Internet Protocol 

network layer의 주요 프로토콜

routing protocol : end-to-end경로설정, forwarding table 업데이트

IP, internet protocol
: 네트워크 계층의 데이터 전송 프로토콜

ICMP
: 오규가 발생한 ip 패킷에 대해 원인을 송신 호스트에게 전달할 수 있는 기능을 지원하는 프로토콜

 

ip fragmentation/reassembly

- link type 마다 다른 MTU를 가지고 있으므로 large ip 패킷은 여러 small ip packet으로 분할
=> identifier(데이터그램식별), flags(1=다음패킷존재, 0=마지막패킷), offset(순서) 정보를 이용하여 분할
=> 호스트에서 위의 3가지 정보를 이용하여 reassembly

 

IPv4

ipv432비트 주소로 host, router interface(hostrouter간의 connection)의 식별자 역할

ipv4 addressnetwork prefixhost number로 구성
=> nerwork prefix : nerwork 식별
=> host number : host식별

 

classful ip

class A : ip0으로 시작(0~127), prefix8비트. 2^24-1개의 호스트를 가지는 네트워크

class B : ip10으로 시작(128~191). prefix16비트. 2^16-1개의 호스트를 가지는 네트워크

class C : ip110으로 시작(192~223). prefix24비트. 2^8-1개의 호스트를 가지는 네트워크

class D : ip1110으로 시작 (224~239). multicast를 위한 ip

 

classful ip address의 문제점

1. large network ( class A, B)를 위한 network address가 너무 적음 -> A:128, B:64

2. network prefix, host numbertwo-layer 계층구조는 large network에 부적합 -> host를 낭비문제 발생
-> 해결법 : subnetting

3. inflexbible -> 해결법 : CIDR

 

subnet

정의 : ipsubnet part가 같은 디바이스들이 구성하는 네트워크 -> subnet에 속한 디바이스들은 라우터를 거치지 않고 브로드캐스팅 가능

 

subnetting

hostnumbersubnet numberhost number로 나눔으로써 ipnetwork prefix, subnet number, host number3계층으로 구성

 

subnetting 장점

subnet을 자유롭게 구성 가능

네트워크 내부적으로는 subbet을 구분된 network로 인식

외부에서는 subnet 구조를 파악할 수 없음 -> 보안

 

subnet mask

ip addressand연산으로 network prefix + subnet number (= extended network prefix)를 구할수 있다. 이를 이용해 host number도 구할수 있다

 

CIDR, classless interdomain routing

network id의 길이가 고정되어 있지 않고 가변적인 ip주소 -> network id의 길이(network prefix)를 따로 명시

 

address assignment
: ISP가 클라이언트가 요구하는 만큼의 ip address block을 할당 -> 클라이언틑 이를 가지고 host ip에 할당 -> DHCP기법 이용

 

DHCP, dynamic host configuration protocol

hostnetworkjoin하면 network server로부터 host에게 ip address를 동적할당 받는다
=> ip address는 빌리고 반납하는 형식이므로 address는 재사용 가능

 

할당과정

1. DHCP discover : host가 브로드캐스팅으로 dhcp discover msg전송
src : 0.0.0.0
dest : 255.255.255.255
yiaddr : 0.0.0.0

2. DHCP offer : DHCP server가 브로그캐스팅으로 dhcp offer msg 전송하여 ip주소 할당
src : 223.1.2.5 // 서버의 ip주소
dest : 255.255.255.255
yiaddr : 223.1.2.4 // 할당할 주소

3. DHCP request : host는 브로드캐스팅으로 수신받은 해당주소를 사용하겠다는 dhcp request msg 전송
src : 0.0.0.0 // 아직 사용x
dest : 255.255.255.255
yiaddr: 223.1.2.4

4. DHCP ACK : 서버는 브로드캐스팅으로 해당 ip 사용 확인하는 dcp ack msg 전송
src : 223.1.2.5 //서버의 ip
dest : 255.255.255.255
yiaddr : 223.1.2.4

 

DHCP가 포함하고 있는 정보

1. yiaddr

2. address of first-hop router

3. dns server 이름,주소

4. network mask

 

NAT, network address translation

2^32개의 ip주소가 부족해지자 이를 해결하기 위한 임시방편으로 외부에서 통용되는 하나의 public iplocal network에서 통용되는 여러 private ip를 라우터가 NAT translation table을 가지고 변환

 

NAT 특징

local network는 외부에서 통용되는하나의 ip만 사용

local network의 내부는 외부와 분리됨

local network의 디바이스들의 ip를 마음대로 설정가능

외부의 isp가 바뀌어도 local network에는 영향x

외부에서는 local networkip를 볼 수 없음 ->보안

 

구현조건

-NAT routerlocal network안에서 밖으로 나가는 모든 datagram의 출발지 ip와 포트번호를 NAT ip와 포트번호로 변환

-변환정보를 NAT router 내부의 NAT translation table에 저장

-밖에서 들어오는 datagramNAT ip와 포트번호를 NAT routertable을 보고 local networkip와 포트번호로 변환

 

NAT 약점
: 라우터는 3계층까지만 관여하는 장비인데 4계층에 해당하는 ip정보를 핸들링 -> 3계층 장비가 4계층에 침범하는 것은 네트워크의 계층화 원칭 위반

 

NAT 문제점
: 외부의 clientlocal network 내부의 서버에 연결하고 싶은데 내부는 unvisible하므로 연결 불가능
=> 해결방안1 : NAT table을 외부에 공개 -> NAT translation table의 정보가 변경되는데 변경전 정보를 이용하면 연결 불가능
=> 해결방안2 : UPnp 프로토콜 사용 -> 자동으로 public IPprivite ip로 맵핑하는 서비스제공
=> 해결방안3 : relayNAT client와 외부 client에 각각 연결되어 두 연결사이의 패킷 중계

 

ICMP

에러발생시 라우터가 host에게 보고할 수 있도록 ip대신 사용되는 프로토콜

icmp msg : type + code + description

traceroute : 경로추적 과정

TTL 값을 1부터 하나씩 증가시키면서 udp 세그먼트를 목적지로 전송

n번째 datagramn번째 라우터까지 도달하면 n번째 라우터는 (type:11, code:0 -> TTL expired) 메시지 전송

목적지는 (type3,code3->destination unreachable) 메시지 전송 -> traceroute stop

=> 목적지까지 구간의 정보기록가능
=> n 구간의 딜레이 계산가능

 

IPv6

32비트인 ipv4가 부족하므로 128비트 주소인 ipv6 개발

ipv6 format -> 강의자료 p82

ipv4 -> ipv6 translation

모든 라우터가 ipv6를 지원하지 않음

해결방안 : tunneling 기법
=> ipv4안에 ipv6를 넣으면 ipv4라우터가 ipv6운반가능

 

5. routing algorithm 

graph abstraction

네트워크를 graph, routernode, linkedge로 표현

routing algorithm으로 최저비용경로 탐색

 

Link state routing algorithm

-nodeglobal inforamtion(전체 linkstate)을 알고 있는 경우, 한 노드에서 다른 모든 노드로 까지의 경로비용을 계산 할 수있다

-다익스트라 알고리즘 사용 : d(s,z) = min( d(s,y) + w(yz) )

 

distance vector algorithm

-node가 주변노드까지의 비용정보만 알고있는 경우, 나의 정보와 주변노드가 주는 정보를 가지고 비용 계산

-bellman ford algorithm 사용 : dx(y) = min( cost(x,y) + dv(y) )
=> 인접노드로부터 새 정보가 올때마다 나의 table업데이트
=> 계속 반복하여 업데이트하면 실제비용에 수렴

 

link cost change

good new : link cost가 줄어드는 경우 -> 짧은 iteration으로 update 가능

bad news : link cost가 늘어나는 경우 -> update를 위해 많은 iteration 필요 : “count-to-infinity problem”
->
해결법 : poisoned reverse : 방문했었던 노드를 다시 돌아가는 경우 cost를 무한대로 설정

 

link state algorithm vs distance vector

1. message complextiy
LS : O(nE) : n 노드갯수, E edge갯수
VS : 이웃과 주고받는 것이 전부

2. speed of convergence
LS : O(n^2)
DV : 매우다양, count-to-infinity problem 가능

3. robustness
LS : 각각의 노드는 자신만의 table만을 계산
DV : 이웃 노드가 전달한 잘못된 path cost는 네트워크 전체로 전파됨

 

Hierachical Routing

- AS, Autonomous System : 공통의 routing protocol을 사용하는 라우터 집합

- intra-AS routing protocol : AS에서 통용되는 routing protocol

- inter-AS routing protocol : 서로다른 intra-AS routing protocol을 사용하는 AS간의 연동을 위한 routing protocol

- gateway router : 서로다른 AS들을 연결하는 라우터

 

6. Routing in the internet 

intra-AS routing protocol
: AS에서 통용되는 routing protocol
ex) RIP, OSPF

 

inter-AS routing protocol
: 서로다른 intra-AS routing protocol을 사용하는 AS간의 연동을 위한 routing protocol / ex) BGP

 

RIP

-distance vector algorithm 사용

-30초마다 이웃들과 정보교환 (advertisementUDP)

-link failure : 180초동안 advertisement 없으면 해당링크는 버림

 

OSPF

link state algorithm 사용

OSPF advertisementAS전체로 전파

 

BGP

inter-AS routing protocol

eBGP : 이웃 AS들끼리 subnet reachability 정보제공

iBGP : AS 내부의 router들에게 reachability 정보 전파

 

intra-AS vs inter-AS

1. policy

intra-AS : 단일 admin이므로 policy decision 필요x

inter-AS : admin은 트래픽경로 어떻게 설정될지 control

2. performance

intra-AS : 성능이 중요

inter-AS : 성능보다 policy가 더 중요

 

7. Boradcast and Multicast routiong

broadcast routing

패킷을 다른 모든 노드들에게 전달

방법1 : flooding : broadcast packet을 받은 노드는 인접노드에게 복사하여 전송 -> cycle&broadcast storm문제

방법2 : controlled flooding : 내가 이전에 받았었던 패킷이면 broadcast x

방법3 : spanning tree : cycle이 없고 모둔 노드를 포함하는 spanning tree를 만들어 노들의 경로를 따라서 패킷을 forwarding -> kruskal, prim

 

multicast rouiting

특정 다수 node에게 동일한 패킷을 전달하기 위해 multicast tree를 구성하는 routing protocol

 

'CS > Networks' 카테고리의 다른 글

6. Web request senario  (0) 2020.07.10
5. link layer 2계층  (0) 2020.07.10
3. Transport layer 4계층  (0) 2020.07.10
2. Application layer 5계층  (0) 2020.07.10
1. 컴퓨터 네트워크와 인터넷  (0) 2020.07.10
Posted by yongminLEE
2020. 7. 10. 17:13
  1. transport layer service
  2. multiplexing and demultiplexing
  3. connectionless transport : UDP
  4. principle of reliable data transfer
  5. connection-oriented transport : TCP
  6. principle of congestion control
  7. TCP congestoin control

'CS > Networks' 카테고리의 다른 글

6. Web request senario  (0) 2020.07.10
5. link layer 2계층  (0) 2020.07.10
4. Network layer 3계층  (0) 2020.07.10
2. Application layer 5계층  (0) 2020.07.10
1. 컴퓨터 네트워크와 인터넷  (0) 2020.07.10
Posted by yongminLEE
2020. 7. 10. 17:13

1. 네트워크 어플리케이션 원리

네트워크 어플리케이션
: , 전자메일, ...

 

네트워크 어플리케이션 구조
1. client-server 구조 -> web, 파일전송, 전자메일
2. peer-to-peer 구조

 

client-server구조의 server
- 항상 켜져 있는 호스트
- 영구적인 ip주소를 갖는다
- 클라이언트 호스트들의 요청을 받는다
- 많은 요청에 응답하기 위해 수 많은 호스트로 구성된 데이터센터가 서버로 사용

 

client-server구조의 client
- 서버에게 연결요청을 하는 호스트
- 서버와 간헐적으로 연결된다
- 동적 ip를 갖는다
- 클라이언트간에 직접통신은 하지 않는다

 

p2p 구조
- 항상 켜져있는 특정서버는 존재하지 않는다
- 임의의 호스트(peer)는 서로 직접 통신한다
- peer들은 서로 서비스를 요청하고 제공도 한다
- self-scalability : 새로운 peer는 새로운 서비스 요청임과 동시에 새로운 서비스 제공
- 피어들은 간헐적으로 연결되며 ip주소가 변화한다
- p2p구조의 분산구조특성으로 복잡성관리, 성능, 신뢰성등 control 필요

 

flow : 다른 두 프로세스가 통신할 때의 data흐름
- 5요소 : src ip, src port, dest ip, dest port, protocol

 

application layer protocol
: 호스트에서 실행되는 어플리케이션의 프로세스가 다른 호스트의 프로세스와 서로 메시지를 보내는 방법을 정의 => 1교환메세지타입, 2메시지타입문법, 3message semantic, 4언제 어떻게 메시지를 전송하고 응답하는지 결정하는 규칙

네트워크 어플리케이션과 application layer protocol => application layer protocol은 네트워크 어플리케이션의 한 요소

 

2. Web HTTP 

: 사용자가 필요에 따라 문서를 얻는 네트워크어플리케이션

 

웹 구성요소
1. 웹 페이지 : 웹서버에서 얻는 문서,객체로 구성
2. URL : 객체의 주소
3. 웹 브라우저 : 요청한 웹페이지를 보여준다
4. 웹서버 : 클라이언트의 요청에 대한 응답으로 객체를 보낸다
5. HTTP : 어플리케이션 계층 프로토콜 -> 어떻게 웹페이지를 요청하고 전송하는지 정의 -> TCP이용

 

HTTP connection
- non-persistent http : 서버가 클라이언트에게 객체를 전송할 때마다 연결을 생성 및 종료
- persistent http : 하나의 connection을 만들고 여러 객체를 보낸다

 

non persistent http 연결과정

http clienttcp 연결시도. req 메시지 전송

http server는 연결수락, res 메시지 전송

client는 원하는 객체를 req메세지로 요구

serverreq를 받고 client가 원하는 객체를 res 메시지에 담아서 전송

servertcp 연결 끊는다

client는 원하는 res 메시지로 원하는 객체를 받음. 다른 객체를 원할 때마다 새로 tcp 연결요청

=> non persistent httpresponse time
= 2RTT + file transmission
= 1RTT(1~2) + 1RTT(3~4) + file전송
* RTT= 패킷이 서버에 갔다가 돌아오는데 걸리는시간
=> 한계
1. 요청 객체마다 새로운 연결 설정

2. 객체 요청마다 2RTT 소요 -> 비용 크다

 

persistent http 과정

1. http clienttcp 연결시도. req 메시지 전송

2. http server는 연결수락, res 메시지 전송

3. client는 원하는 객체를 req메세지로 요구

4. serverreq를 받고 client가 원하는 객체를 res 메시지에 담아서 전송

5. 이후 객체 요청과 응답을 같은 연결을 통해 보냄

=> 각 객체는 1RTT 소요

 

cookie

: 서버가 history정보를 기록하여 사용자를 추적할 수 있도록 함으로써 사용자의 다음 웹브라우징시 다양한 편의제공

쿠기 4가지 요소

http response message

http request message

user host에서 쿠키파일 유지

back-end database

 

쿠키를 이용한 상태유지
: cookie를 사용시 protocol endpoint에서 state을 유지하며 http messagestate을 운반함으로써 statelesshttpstateful한 서비스 제공
ex) authorization, shopping cart, 추천

 

쿠키장점 : 사용자정보를 저장하여 다양한 기능 제공

쿠키단점 : 보안

 

web cache = proxy server

-정의 : 웹서버를 대신하여 http request를 충족시키는 네트워크 개체

-작동방식

브라우저는 웹캐시와 먼저 tcp 연결하고 웹 캐시에 http request를 보낸다

웹 캐시는 요구된 객체의 copy가 자신에게 있는지 확인하고 저장되어 있으면 해당 객체를 http response 메시지로 클라이언트에게 전송

저장되어 있지 않으면 웹 캐시는 웹 서버와 tcp 연결하고 클라이언트가 요청했었던 객체를 웹 서버에 http request메세지로 요청

웹 캐시가 웹 서버로부터 http response 수신시 객체를 local storage에 저장하고 객체의 copytcp연결한 클라이언트에게 전송

=> 웹캐시는 클라이언트이자 서버

-효과

클라이언트의 request에 대한 응답시간 감소

서버로 접속하는 링크상의 트래픽감소

인터넷 전체 웹 트래픽 감소

속도비교 => 강의정리 ch2 6페이지

 

3. FTP

ftp 정의

: file을 주고 받을 때 사용하는 프로토콜 -> 21번포트

 

FTP connection

ftp 서버의 21번포트로 tcp control connection

클라이언트는 connection을 통해 file transfer command전송

서버가 file transfer command 수신시, 2nd tcp data connectionopen

파일전송이후, serverdata connection을 닫는다

=> ftp2채널 이용 : “out-of-bound” : control connectiondata connection이 다른 밴드에서 이루어짐

 

4. 전자메일

전자메일 구성요소

user agent

mail server

SMTP

mail access protocol : POP3, IMAP

 

user agent : 사용자가 메일을 읽고 작성하게 해주는 프로그램 -> 메일 서버로부터 메시지를 가져오거나 보낸다

 

mail server : 메시지를 유지관리하는 프로그램

구성요소

메일박스 : 메시지 수신시, 수신한 메시지를 유지관리

메시지 큐 : 메시지 송신시, 메시지는 큐에 보관되어 차례대로 송신됨

 

SMTP

인터넷 전자메일을 위한 application layer protocol

역할 : 클라이언트(송신자)메일서버에서 서버(수신자)의 메일서버로 tcp를 이용하여 메시지전송

transfer 과정 : handshaking->transfer->closure

 

SMTP 특징

SMTP25번 포트 사용

direct transfer : 중간 메일서버를 사용하지 않음

command/response interaction

메시지는 7비트 ASCII

SMTPpersistent connection 이용

 

SMTP 메일전송 시나리오

Auser agent를 이용하여 메시지를 작성하고 B의 전자메일 주소로 전송하라고 명령

Auser agnet는 메시지를 mail server에 보내고 메시지는 message queue에 놓인다

Amail serverSMTP 클라이언트는 Bmail serverSMTP servertcp cconnection open

SMTP 클라이언트는 메시지 전송 : push protocol

Bmail servermail box에 메시지가 놓인다

Buser agentmail box의 메시지를 가져온다
=> how? message access protocol : POP3, IMAP

 

mail accesss protocol

mail 수신자가 자신의 메일서버에 있는 메시지를 얻기위해 사용하는 프로토콜

종류

POP3 : 간단한 mail access protocol로 사용자인증, 메시지다운로드 기능만 수행

IMAP : 좀더 다양한 조작 기능 제공

 

POP3

pop33단계

authorization : 사용자인증위해 이름, pw 입력

transaction : 메일다운로드, 삭제표시, 삭제표시취소

update : quit 명령시 삭제표시된 메시지 삭제

 

pop3 특징

“download and delete” 모드에서 user agent가 메일 읽으면 mail server에서 해당 메일 삭제

“download and keep”모드에서 user agent가 메일 읽어도 해당 메시지의 복사본이 mail server에 남겨짐

pop3서버는 pop3의 상태정보 전달x -> stateless

 

IMAP

pop3보다 더 다양한 기능을 지닌 mail access protocol

특징

imap server(mail server)는 메시지를 폴더에서 관리하는 방식 사용, 처음 메시지가 서버에 도착하면 하나의 폴더에 모든 메시지 저장

imap protocol은 사용자로 하여금 메시지를 폴더별로 관리할 수 있게함

imap 세션을 통해 user state 정보 유지 -> stateful

 

HTTP vs SMTP

http : pull protocol : 사용자가 서버로부터 정보를 가져온다
SMTP : push protocol : smtp clientsmtp server에게 메시지 전송

httpsmtp 둘다 ASCII command/response interaction 사용

httpnon-persistent connectoin 또는 persistent connection으로 연결
smtppersistent connection으로 연결

 

5. DNS 

dns 정의

distributed database로써의 dns
: 많은 name server들의 계층구조로 구현

application layer protocol로써의 dns
: 호스트가 distributed databasename server와 질의를 하여 hostnameIp address로 변환할 수 있도록함

 

DNS 기능

hostname to ip address translation

host aliasing

mail server aliasing : 기업의 메일서버와 웹서가 같은 hostname으 갖도록 함

load distribution

 

centrailize DNS 단점

singli point of failure : name server고장시 전체 서비스 다운

traffic volume

distant centrailize database

maintenance

확장성이 없다

 

DNS동작원리->hostname to ip address translation

1. 클라이언트가 www.amazon.com 접속 시도

2. 클라이언트가 local dns server에 접속하여 www.amazon.com ip주소 질의

3. local dns server가 해당 주소 있으면 ip주소 보내고 없으면 root dns servercom dns serverip주소 질의

4. root dns servercom dns serv를 갖는 TLD serverip주소를 local dns server에 보낸다

5. local dns serverTLD server에 접속하여 amazon.com dns servip주소질의

6. TLD 서버가 amazon.comdns server를 가진 authoritative serverip주소 보낸다

7. local dns serv는 해당 authoritative server에 접속하여 www.amazon.com ip주소 질의

8. authoritative 서버는 www.amazon.com ip주소 전송.

9. local dns servername-to-address translation 쌍을 캐시에 보관하고 클라이언트에게 ip 주소 전송

 

DNS 계층

- root dns server
: 최상위 서버, local name serverhostname을 풀지 못하면 다음으로 접속되어 hostname에 해당하는 TLD serverip주소를 보낸다

- TLD server (top level domain server)
: com, org, kr와 같은 상위도메인이나 국가 도메인을 담당하는 서버. authoritative dns server들에 대한 ip주소 제공

- authoritative dns server
: hostnameip주소로 매핑하는 dns레코드를 제공

- local dns server

dns 계층구조에는 속하지 않지만, dns 구조 중심에서 호스트가 송신한 dns querylocal dns serverd에 제일 먼저 전송. local dns serversname-to-address translation 쌍을 캐시에 보관하고 있으며 proxy와 같은 역할 한다.

 

dns name resolution 방식

- iterated query
: local dns serverroot dns server부터 차례대로 박복적으로 질문하고 응답 받으며 hostname에 해당 하는 ip주소 찾아간다

- reculive query
: query를 받은 서버가 다음 server에게 질의를 하며 hostnameip주소를 찾아간다 -> local dns serverload를 줄임

 

dns caching
: 응답을 맏은 모든 server(local, roo, tld, authoritative)는 해당 정보를 로컬메모리에 저장. 캐시엔트리는 TTL지나면 사라진다

 

6. p2p 

p2p 특징

no always-on server

임의의 호스트들이 직접 통신

peer들은 간헐적으로 연결되며 ip가 바뀌기도 한다

peer는 서버이면서 클ㄹ라이언트이다

self-scalability를 가진다

 

'CS > Networks' 카테고리의 다른 글

6. Web request senario  (0) 2020.07.10
5. link layer 2계층  (0) 2020.07.10
4. Network layer 3계층  (0) 2020.07.10
3. Transport layer 4계층  (0) 2020.07.10
1. 컴퓨터 네트워크와 인터넷  (0) 2020.07.10
Posted by yongminLEE
2020. 7. 10. 17:07

1. 인터넷이란

구성요소로 본 인터넷
: 수십 억개의 호스트(end system)을 통신링크와 패킷스위촐 연결하는 네트워크들로 구성된 네트워크

 

프로토콜
: 메시지 송수신의 형식과 순서를 정의하고, 메시지 송수신의 액션을 정의하는 규약

 

서비스로서의 인터넷
: 인터넷은 한 edge system에서 다른 edge system으로 데이터를 전달하는 서비스를 애플리케이션에게 제공하는 인프라구조

 

2. 네트워크 엣지

네트워크 엣지
: 인터넷에 연결된 디바이스

 

엑세스 네트워크
: 데이터 전송 경로상에서 호스트와 첫 번째 라우터가 연결되어 이루는 네트워크

 

physical media
: 비트가 전달될 때 거치는 매체
- guided media : 광섬유 케이블 같은 견고한 매체
- unguided media : 무선 LAN처럼 야괴공간에서 파형으로 전파하는 매체

 

transmission rage R = bits/sec

packet transimission delay D = 비트길이(L)/R

 

3. 네트워크 코어

네트워크 코어
: 라우터와 링크들의 연결망

 

주요기능
1. routing: 목적지까지 최저비용경로를 계산 및 설정
2. forwarding : 패킷이 라우터에 도착하면 목적지에 도착하기 위한 올바른 출력링크 설정

 

packet switching
: 패킷의 목적지주소정보를 보고 올바른 경로로 전달하는 기법

=> store-and-forward
: 라우터는 입력링크로 전체 패킷을 받은 후에 출력링크로 전송할 수 있다.
=> 문제점1 end-end delay : 경로상의 링크 개수만큼 전송 속도 증가 D = L(비트길이)/R * N(링크갯수)
=> 문제점2 queuing delay : 라우터에서 패킷이 나가는 속도보다 들어오는 속도가 더 ᄈᆞ르면 패킷은 버퍼에서 대기해야 하므로 delay 발생
=> 문제점3 packet loss : 라우터의 버퍼가 꽉차 있는 경우 새로 도착한 패킷은 drop

 

circuit switching
: 데이터 통신에 사용될 전용회선을 결정. 이렇게 결정된 회선은 공유되지 않고 해당 통신을 위해서만 할당됨
=> 문제점 : 한 통신을 위해서만 회선이 할당되므로 효율성 떨어짐
=> 해결방안 : 다증화기술
1. FDM : 주파수대역으로 나누어 여러사용자가 사용
2. TDM : 시간단위로 나누어 여러사용자가 사용

 

packet switching vs circuit switching
1. packet switching은 필요시만 링크의 사용을 할당하므로 circuit switching보다 더 많은 사용자가 네트워크 이용할 수 있다
2. packet switching은 혼잡제어, reliable data tansfer를 위해서는 delay and loss protocol 필요

 

4. 패킷교환 네트워크의 delay, loss, throughput

delay 발생원인 : 라우터에 패킷이 들어오는 속도가 나가는 속도보다 빠르면 버퍼에 패킷들이 대기하는 현상 발생

 

delay 유형
1. nodal processing delay : dproc
: 패킷헤더를 조사, 어느 출력링크로 보낼지 계산, 비트 오류 검사등을 하는데 걸리는 시간
2. queuing delay : dqueue
: 패킷이 큐에서 링크로 전송되기를 기다리는 시간
3. transmission delay : dtrans
: 라우터가 패킷의 모든 비트를 밀어내는데 걸리는 시간 dtrans = L(패킷길이)/R(링크의 전송률)
4. propagation delay : dprop
: 링크의 처음부터 다음 라우터까지 전파에 걸리는 시간 dprop = d(피지컬링크길이)/s(전파속도)
=>total d = dproc + dqueue + dtrans + dprop

 

delay example
1. caravan analogy -> ch1 강의자료 p60
2. traceroute : 구간 n(n-1라우터~n라우터)delay = (sender~n라우터 전송시간)-(sender~n-1라우터 전송시간)

loss 발생원인 : 버퍼가 꽉 차 있는 상태에서 새로운 패킷이 들어오는 경우 해당 패킷은 drop
=> 어ᄄᅠᆫ packetdrop할 것인가?

 

throughput(처리율)
: 얼마만큼의 비트를 단위시간동안 전송할 수 있는가
sender link(R1) - router link(R2) - recevier
R1 < R2 인 경우, 문제없이 패킷은 수신측에 도착
R2 < R1 인 경우, delay, loss 발생, bottleneck link = link2, R(total) = min(R1, R2, ..., Rn)

 

5. Protocol layer 

layering 계층화
: 네트워크 프로토콜을 기능별로 모듈화하여 해당 모듈은 특정서비스만을 구현

 

계층화 필요성
1. explicit structure : 네트워크의 명확한 구조 덕분에 시스템간의 관계나 기능 파악 용이
2. modularization : 모듈화는 시스템의 유지보수 및 업데이트를 용이하게 한다

 

protocol stack
: 다양한 계층의 프로토콜 집합
ex) 인터넷 프로토콜 스택(=tcp/ip 5계층), osi 7계층

 

인터넷 프로토콜 스택
- application layer(5계층) : 네트워크 어플리케이션을 지원(메세지) -> http, ftp, smtp, ..
- transport layer(4계층) : 프로세스간 통신 서비스 제공(세그먼트) -> tcp, udp
- network layer(3계층) : 호스트간 통신 서비스 제공(패킷=데이터그램) -> ip프로토콜, 라우팅프로토콜..
- link layer(2계층) : 물리적연결된 노드간 브로드캐스팅 서비스 제공(프레임) -> mac protocol
- physical layer(1계층) : 프레임 내부의 비트를 한 노드에서 다른 노드로 이동시키는 서비스제공

 

osi 7계층
- application
- presentation
- session
- transport
- network
- link
- physical

 

Encapsulation
: 상위계층의 정보를 받아 현재계층의 헤더정보를 추가하는 것
메시지(5계층)->세그먼트(4)->패킷=데이터그램(3)->프레임(2)

 

'CS > Networks' 카테고리의 다른 글

6. Web request senario  (0) 2020.07.10
5. link layer 2계층  (0) 2020.07.10
4. Network layer 3계층  (0) 2020.07.10
3. Transport layer 4계층  (0) 2020.07.10
2. Application layer 5계층  (0) 2020.07.10
Posted by yongminLEE