1.Fundamentals of Network Application

The core of creating a network app

  • 다른 end-system에서 동작
  • 네트워크를 통해 서로 통신하는 프로그램을 작성하는 것

라우터나 링크 계층 스위치와 같이 네트워크 코어 장비에서 실행되는 소프트웨어 걱정 X

2.Application Architectures

Different from Network structure

애플리케이션 개발자에 의해 설계되고 애플리케이션이 다양한 종단 시스템에서 어떻게 조직되어야 하는지 지시

1. Client-Server 구조

Server 

- 항상 켜져있는 host

- 고정 IP주소

- 많은 수 의 host를 갖춘 Data Center가 강력한 가상의 서버를 생성한다

Client

- 클라이언트 끼리 서로 직접적인 통신을 하지 않는다

- 서버가 항상 열려있으므로 패킷을 보내 항상 서버에 연결 가능

- 동적 IP주소를 가질 수 있다

 

2. P2P 구조

- 서버가 항상 켜져있지 않다(항상 켜져있는 기반구조 서버에 최소로 의존 or 의존 X)

- Peer 라는 간헐적으로 연결된 host 쌍이 서로 직접 통신(end-system 끼리 통신)

- 특정 서버를 통하지 않음

- Self-scalability(자가확장성)

  - 파일을 다른 peer에게 분배함으로써 시스템에 서비스 능력을 추가

 

3.Processes communiating(프로세스 간 통신)

Process - 종단 시스템(end-system,host)에서 실행되는 프로그램

  • 같은 종단 시스템에서 프로세스가 실행될 때 프로세스 간에 통신
  • 통신을 위한 규칙은 OS에서 규정
  • 2개의 다른 host에서는 네트워크를 통한 message교환으로 통신

Client Process & Server Process

ex) Web - browser = client process

            - webserver = server process

Client - 두 프로세스 간의 통신 세션에서 통신을 초기화하는 프로세스

Server - 세션을 시작하기 위해 접속을 기다리는 프로세스

 

Interface between Process & Computer Network

Socket

프로세스는 socket을 통해 네트워크로 메세지를 보내고 받음

프로세스가 집이면 socket은 출입구로 비유 한다

프로세스가 다른 호스트의 프로세스로 메세지를 보내고 싶으면 socket 바깥 네트워크로 메세지를 밀어낸다.

Socket은 호스트의 application layer와 transport layer 간의 interface이다

API(Application Programming Interface)라고도 한다.

  

Adressing Process

host에서 다른 host로 packet을 보내기 위해서는 수신 프로세스가 주소를 갖고 있을 필요가 있다.

수신 프로세스를 식별하기 위해 2가지 정보가 명시되어야 한다

  1. Address of host (IP Address(32bit))
  2. Identifier that specify recieve process in destination host(목적지 호스트 내의 수신 프로세스를 명시하는 식별자)

Identifier

-IP address

-Port Number (Mail-25, webserver-80)

 

Application layer Protocol

Application layer protocol은 다른 end system에서 실행되는 애플리케이션의 프로세스가 서로 메세지를 보내는 방법을 정의한다.

  • 교환 메세지 타입(type of messages exchanged) - request, response
  • 메세지 타입의 문법(message syntax) - 메세지 내부의 field와 field 간의 구별 방법
  • 필드의 의미(message semantics)
  • 언제, 어떻게 프로세스가 메세지를 전송하고 메세지에 응답하는지 결정하는 규칙
  • 브라우저 개발자가 HTTP RFC의 규칙을 따른다면 open protocol로 이 규칙을 따른 어떠한 웹 서버로부터 페이지를 가져올 수 있다
  • 독점 프로토콜(proprietary protocols) 을 사용하면 공중 도메인에서 구할 수 없다. ex) Skype

 

Transport Service

송신 측의 application은 socket을 통해 메세지를 보낸다.

socket의 반대편에서 Transport protocol은 네트워크를 통해 그 메세지를 수신 프로세스의 socket으로 이동시킨다

Transport layer protocol이 application들에게 제공할 수 있는 Service는

 

1. Data Integrity

  Packet은 라우터의 버퍼에서 overflow되거나 bit가 잘못되면 Loss 가 생길 수 있다.

  But Loss가 생기지 않도록 보장된 데이터 전송 서비스를 제공한다면 이를 Data integrity가 보장된다고 할 수 있다.

  데이터를 socket으로 보내고 오류 없이 수신 프로세스에 도착한다

  만일 transport layer protocol이 신뢰적 데이터 전송을 제공하지 않았을 때 데이터가 제대로 도착하지 않을 수 있다.

  - 손실 허용 애플리케이션(loss-tolerant application)의 경우에서는 받아들일 수 있다. (실시간 스트리밍)

 

2. Throughput

  두 프로세스 간의 통신 세션에서 송신 프로세스가 수신 프로세스로 비트를 전달할 수 있는 비율

  Troughput Service를 제공한다는 것은 명시된 속도에서 보장된 가용 처리율을 보장한다는 것

  R = r bps(bits/sec) -> 적어도 r bps 보장

  대역폭 민감 애플리케이션(bandwith-sensitive application)에서 요구됨

  but 융통성 있는 애플리케이션(elastic application)에서는 대역폭을 크게 신경 쓰지 않음

 

3. Timing

  시간 보장 - ex) 모든 비트가 수신자의 socket에 N msec 안에 도착하도록

  실시간 애플리케이션에 매력적

 

4. Security

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

 

 

다양한 네트워크 애플리케이션의 요구사항

TCP (Transmission Control Protocol)

 

 

UDP (User Datagram Protocol)

 

 

블로그 이미지

코딩하는쉐프

,

Vector

인공지능 기초 수학 2020. 4. 25. 22:22

Vector 

  • A quantity that has magnitude and direction and that is commonly represented by a directed line segment whose length represents the magnitude and whose orientation in space represents the direction

  • 크기와 방향을 동시에 가지는 물리적 양

 

Length of Vector (Norm)

 

Dot Product

- 두 벡터를 표준 기저 벡터로 나타내었을 때 각 성분끼리의 곱의 합

 

<공식>

- 교환법칙 성립

- 분배법칙 성립

- scalar 곱에 대해 결합법칙 성립

Cosine Rule

 

<공식>

일 때 θ의 값에 의해 직교(orthogonal)이 정의 된다.

 

블로그 이미지

코딩하는쉐프

,

1.Stack (스택)

 

- 한 쪽 끝에서만 자료를 넣고 뺄 수 있는 자료구조

- Last in First out (쌓기)

push - 스택에서 자료를 넣는 연산

pop - 스택에서 자료를 빼는 연산

top - 스택에서 가장 위에 있는 자료를 보는 연산

empty - 스택이 비어있는지를 보는 연산

size - 스택에 저장되어있는 자료의 개수를 알아보는 연산

C++ 에서 STL의 Stack

 

2.Queue (큐)

 

- 한 쪽 끝에서만 자료를 넣고 뺄 수 있는 자료구조

- First in First out (줄서기)

push - 큐에서 자료를 넣는 연산

pop - 큐에서 자료를 빼는 연산

front- 큐에서 가장 앞에 있는 자료를 보는 연산

back- 큐에서 가장 뒤에 있는 자료를 보는 연산

empty - 큐가 비어있는지를 보는 연산

size - 큐에 저장되어있는 자료의 개수를 알아보는 연산

C++ 에서 STL의 Stack

push 후 end += 1

size = end - begin

begin 과 end 가 같으면 empty 

 

3.Deque (double ended queue, 덱)

 

- 양 끝에서 넣고, 뺄 수 있는 자료구조

push_front - 덱의 앞에 자료를 넣는 연산

push_back - 덱의 뒤에 자료를 넣는 연산

pop_front - 덱의 앞에서 자료를 빼는 연산

pop_back - 덱의 뒤에서 자료를 빼는 연산

front - 덱의 가장 앞에 있는 자료를 보는 연산

back - 덱의 가장 뒤에 있는 자료를 보는 연산

'Baekjoon' 카테고리의 다른 글

기초 알고리즘 1강 - 시간복잡도와 한줄 입력  (0) 2020.04.23
블로그 이미지

코딩하는쉐프

,

1. 시간 복잡도

- 작성한 코드가 시간이 얼마나 걸리는지 예상

표기법 O(big O notation)

가장 큰 입력범위 넣었을 때 1억 = 1초(대략)

 

O(1) = 단순 계산 (a+b) 와 같은 연산, 배열에 접근하는 연산

O(lgN) = N개를 절반으로 계속해서 나눔

O(N) = 1중 for loop

O(NlgN) = N개를 절반으로 계속해서 나눈 것을 N번 수행

O(N^2) = 2중 for loop

O(N^3) = 3중 for loop

O(2^N) = 크기가 N인 집합의 부분 집합

O(N!) = 크기가 N인 순열 - 순서가 중요할 때

 

Big O Notation에서 상수는 버린다.

O(3N^2) = O(N^2)

O(1/2N^2) = O(N^2)

두가지 항이 있을 때 변수가 다르면 놔둔다.

O(N^2+M) = O(N^2+M)

 

2. 한줄 입력

scanf("%s", s) or cin>>s

-> space bar을 포함한 한 줄 입력 X

white space를 기준으로 나누기 때문에 한 줄로 입력 불가

 

fgets(s,100,stdin)

->한줄을 전체로 입력 가능, 줄바꿈('\n' 까지 입력 받음)

 

scanf("%[^\n]\n", s)

-> [ ] 안의 요소 제외하고 입력

편리하지만 각 줄의 앞, 뒤에 있는 공백 무시. 

즉 빈줄은 입력이 불가능 공백은 제외하고 문자부터 입력 받음

 

scanf("%2d", &x)

-> %d 사이에 숫자를 넣으면, 그 길이 만큼 입력 받음

 

 

 

'Baekjoon' 카테고리의 다른 글

기초 알고리즘 2강 - Stack, Queue, Deck  (0) 2020.04.23
블로그 이미지

코딩하는쉐프

,

Protocol layer(프로토콜 계층) 은 소프트웨어, 하드웨어 또는 둘의 통합으로 구현할 수 있다.

Protocol layer에는 5가지 layer가 존재한다.

  1. Application layer
  2. Transport layer
  3. Physical layer
  4. Data link layer
  5. Network layer

로 구성되어있는데 위에서부터 아래로 내려가는 Top-down approach를 채택하고 있다. 

protocol layers

Application layer 

- Network Application & Application layer protocol이 있는 곳

- HTTP(웹문서 요청, 전송), SMTP(메일), FTP(end system간의 파일 전송)

- end system과 교환하는 정보 packet을 Message라고 부름

 

Transport layer

- client 와 server 간에 application layer message를 전송

- transport layer Packet 을 Segment 라고 부름

- TCP 

  • 연결지향형 서비스 제공
  • 신뢰성 - 메세지 전달의 보장
  • 흐름제어 - 송신자/수신자의 속도 일치
  • 혼잡제어- 긴 메세지를 짧게 나누고 네트워크 혼잡 시 전송속도를 줄임

- UDP

  • 비연결형 서비스 제공
  • 신회성, 흐름제어, 혼잡제어 제공 X

Network layer

- host에서 host로 datagram(데이터그램)을 routing

- 목적지 host의 transport layer로 segment 운반

- IP protocol

  • IP datagram의 필드를 정의하며 end system과 router가 이 필드에 어떻게 동작하는지 정의
  • only 1 IP protocol
  • 모든 인터넷 요소는 IP protocol 수행해야함

- Routing protocol

  • datagram이 이동하는 경로를 결정

Link layer

- packet switch를 통해 datagram을 route

- 한 node에서 다른 node로 packet을 이동하기 위해 network layer는 link layer service에 의존

- link layer packet 을 Frame 이라고 부름

 

Physical layer

- Frame 내부의 각 bit를 한 노드에서 다음 노드로 이동하는 것

- "on the wire"

 

ISO/OSI reference model

1970년대의 제안으로 위의 5가지 layer 이외에 2개의 layer가 더 존재한다.

Presentation

- 통신하는 application들이 교환되는 data의 의미를 해석하도록 하는 서비스 제공

Session

- syncronization, checkpointing, recovery of data exchange

하지만 이 두 layer은 application layer로 합쳐졌다.

 

Encapsulation(캡슐화)

각 layer의 header를 붙여 top-down approach를 실행한다. 

'컴퓨터네트워크 > 1장' 카테고리의 다른 글

Delay, Loss, Throughput in NETWORKS  (0) 2020.04.22
Network of Networks  (0) 2020.04.22
The network core  (0) 2020.04.22
Physical media - 물리매체  (0) 2020.04.22
Network Structure  (0) 2020.04.22
블로그 이미지

코딩하는쉐프

,

Delay가 생기는 이유?

Packet들이 routet을 지나오면서 router buffer에 queue가 생기기 때문.

  • 처리지연(nodal processing delay) - 파일 헤더를 조사하고 패킷을 어디로 보낼지를 경정하는 시간
  • 큐잉지연(queueing delay) - 큐에서 링크로 packet이 전송될 때 까지 기다리는 시간
  • 전송지연(transmission delay) - 앞서 도착한 packet들이 전송된 다음 전송되기 때문에 L/R
  • 전파지연(propagation delay) - bit가 링크의 처음부터 라우터까지의 전파에 필요한 시간

 

Queueing Delay 

 

  • La/R > 1 이면 비트가 큐에 도착하는 평균율이 비트가 큐에서 전송되는 비율 초과. 큐 무한대, 지연도 무한대.
  • La/R <= 1 이면 트래픽의 특성이 중요. burst하게 도착 할수록 delay발생 n 번째 packet (n-1)L/R초 delay

Packet Loss

위의 경우는 큐가 무한대의 packet을 가질 수 있다고 가정했지만 실제로 큐의 용량은 스위치 설계와 비용에 의존하며 유한한 용량을 가진다.

큐 용량이 유한하기 때문에 트래픽 강도가 1에 접근함에 따라 packet 지연이 무한대가 되진 않는다.

packet이 도착했는데 Queue가 꽉 차 있다면 packet을 버리거나(drop) 잃어버리게 된다(lost).

 

실제로 컴퓨터 네트워크에서의 지연을 보기 위해서는 Traceroute 라는 진단 프로그램을 사용하면 된다. 

 

Throughput - 처리율

 - 종단간의 처리율

  • 순간 처리율(instantaneous throughput) - 어느 한 순간에서의 처리율
  • 평균 처리율(average throughput) - bit 크기 / 수신 시간 F/T

 

 

'컴퓨터네트워크 > 1장' 카테고리의 다른 글

Protocol Layers  (0) 2020.04.22
Network of Networks  (0) 2020.04.22
The network core  (0) 2020.04.22
Physical media - 물리매체  (0) 2020.04.22
Network Structure  (0) 2020.04.22
블로그 이미지

코딩하는쉐프

,