CS 89

Dijkstra Algorithm: 다익스트라 알고리즘

다익스트라 알고리즘: 시작 정점에서의 거리가 최소인 정점을 선택해 나가면서 최단 경로를 구하는 방식이다. 탐욕 기법을 사용한 알고리즘으로 MST의 프림 알고리즘과 유사하다. 다익스트라 알고리즘의 pseudo 코드 진행 방식은 다음과 같다. 정점까지의 최소거리를 담는 D 배열을 만든다. 시작 정점의 D값은 0으로 둔다. 나머지 정점의 값들은 무한으로 둔다. 1- 선택: 현재 방문하지 않았고 최소 거리를 가지고 있는 정점을 선택한다. 2- 갱신: 현재 알고있는 정점의 최소 거리(D[value])와 현재 정점(D[현재]) + 현재 정점 ~ 해당 정점 (D[value])값을 더해서 작은 값으로 해당 정점까지의 거리(D[value])를 갱신해준다. 그리고 해당 정점을 방문했다고 체크해준다. // A Java pr..

CS/algorithm 2021.03.24

IP Header

IP 프로토콜은 OSI 참조 모델의 제 3계층인 네트워크 계층에서 정의된 패킷 (또는 IP 데이터그램)을 출발지에서 목적지까지 전달하는 기능을 담당한다. 이를 위해 최선형(Best Effort)서비스를 이용한다. 최선형 서비스는 패킷을 목적지까지 확실하게 전달하는 것을 보장하는 것이 아닌, 전송하는데 최선을 다하는 방식이기 때문에 전송 도중에 패킷이 손상될 수 있고, 패킷들이 순차적으로 도착하지 않을 수가 있다. 따라서 IP 프로토콜 고유의 최선형 서비스 특성의 단점을 극복하기 위해서는 상위 계층의 TCP와 같은 신뢰성 있는 프로토콜의 도움을 받아야 한다. 헤더 내 각 필드의 역할과 기능은 다음과 같다. * 버전(Version): IP가 어떤 버전을 사용하는지를 나타낸다. 현재는 IPv4를 사용하고 있다..

CS/network 2021.03.23

Graph: 그래프

선형 자료구조 1:1의 관계를 표현한다. 한 줄로 줄세울 수 있다. 비선형 자료구조 1:1 아닌 관계 1대다 다대다 ex) 계층적 트리, 그래프 트리는 넓은 의미에서 그래프의 특별한 형태다 Graph? 그래프는 아이템(사물 또는 추상적 개념)들과 이들 사이의 연결 관계를 표현한다. 정점(Vertex): 그래프의 구성 요소로 하나의 연결점 - 트리에서의 node 간선(Edge): 두 정점을 연결하는 선 차수(Degree): 정점에 연결된 간선의 수 그래프는 정점(Vertex)들의 집합과 이들을 연결하는 간선(Edge)들의 집합으로 구성된 자료 구조 * V: 정점의 개수, E: 그래프에 포함된 간선의 개수 * V개의 정점을 가지는 그래프는 최대 V*(V-1)/2 간선이 가능 => 무향그래프일 경우 예) 5개..

CS/data structure 2021.03.20

UDP Header

UDP는 TCP와 마찬가지로 전송 계층에서 동작하며 포트 번호를 기반으로 동작한다. 그러나 UDP는 TCP와는 달리 수신한 데이터에 수신확인 응답을 하지 않고, 데이터 흐름 제어 기능을 수행하지 않는다. 오류 제어 기능을 사용하지 않는다.! 그러나 송수신 절차가 비교적 간단하여 소량의 데이터 전송이나 실시간 데이터 전송 시에는 효과적일 수 있다. 헤더가 TCP보다 간단하다. 출발지 포트 번호(Source Port Number): 출발지 장치가 사용하는 포트 번호로 이 포트 번호는 어떠한 응용 프로그램을 사용하는지에 따라 특정 포트가 정해져 있는 경우도 있고 정해지지 않은 경우도 있다. 포트 번호는 0에서 65,535 범위 내에 있으며 대부분의 경우 처음 정해지는 출발지 포트 번호는 이 범위 내의 임의의 ..

CS/network 2021.03.19

TCP/IP 헤더

TCP는 연결 지향형 서비스를 제공하고 신뢰성 있는 데이터 전송을 보장한다. 이러한 TCP 프로토콜의 특성은 TCP 세그먼트 헤더 내의 각종 필드에 의해 가능한 것이다. * TCP 헤더 내 각 필드의 역할 출발지 포트 번호(Source Port Number): 세그먼트를 전송하는 출발지 호스트의 포트 번호를 정의한 16비트 필드이며, 임의의 번호를 사용한다. 목적지 포트 번호(Destination Port Number): 세금너트를 수신하는 목적지 호스트의 포트 번호를 지정하는 16비트 필트디며 대부분 well known 포트 번호를 사용한다. 순서 번호 (Sequence Number): TCP 세그먼트에 대한 순서 번호를 표시한다. TCP는 신뢰성 있는 데이터 통신을 위해서 각각의 세그먼트에 순서 번호..

CS/network 2021.03.18

TCP/IP

TCP/IP(Transmission Control Protocol / Internetwork Protocol) TCP/IP는 인터넷을 사용하는 모든 통신의 기본적인 프로토콜로서 TCP/IP는 단순히 프로토콜 그 이상의 의미를 갖는 여러 가지 프로토콜의 조합이다. TCP/IP 프로토콜을 기반으로 PAN, LAN, MAN, WAN 구간을 통한 모든 원활한 데이터통신이 가능하게 된다. TCP/IP는 OSI 모델과 달리 4계층(네트워크 접속 계층, 인터넷 계층, 전송 계층, 응용 계층) 모델로 구성된다. * Network Interface Layer (네트워크 접속 계층) OSI 참조 모델의 물리 계층과 데이터링크 계층의 역할을 수행하는 계층으로 프레임의 송수신을 담당하고 있으며 ARP(Address Resol..

CS/network 2021.03.17

OSI 7 Layers (3/3)

5. Session (세션 계층) 종단 간에 통신 세션의 시작과 종료를 정의하며 세션계층을 포함한 상위 계층에서 다루는 데이터를 메세지(message)라 부른다. 세션 계층은 동기 점을 삽입함으로써 메세지를 그룹화하며, 전이중 전송이나 반 이중 전송과 같은 데이터 전송 방향을 결정하고 데이터에 대한 중간 점검 및 복구를 위한 동기 점을 생성한다. 6. Presentation (표현 계층) 데이터를 어떻게 표현하는지를 정의하는 계층이다. 응용계층에서 생성된 데이터는 컴퓨터에서 만들어진 데이터이고 이 데이터를 다른 모든 컴퓨터가 이해할 수 있는 형태로 변환하는 것이 표현 계층의 역할이다. 따라서 송수신 장치 간에 데이터를 변환하는 역할을 수행하며, 암호화를 통해 데이터의 보안성을 높이고 데이터 압축 기능을 ..

CS/network 2021.03.16

OSI 7 Layers (2/3)

3. Network Layer (네트워크 계층) 사용자 데이터를 전달하기 위하여 논리적 통신 채널(peer to peer communitacion channel)을 통해 상위 계층으로부터 받은 데이터를 패킷(또는 데이터그램)이라 불리는 단위로 규격화하여 전송하고 수신하는 기능을 수산한다. 데이터 링크 계층에서 MAC 주소를 기반으로 프레임이라는 데이터를 송수신한다면 네트워크 계층에서는 IP주소를 기반으로 패킷이라는 데이터를 송수신하는데 이 패킷을 송수신하기 위해 사용되는 장치가 라우터, 스위치이다. 스위치는 L2, L3, L4, L7 스위치로 나뉘어지는데 , L2 스위치는 프레임 기반의 데이터를 전송하기 위해 사용되며 L3 스위치는 IP 기반의 패킷을 전송하기 위해 사용된다. L4/L7 스위치는 L2와 ..

CS/network 2021.03.15

OSI 7 Layers (1/3)

OSI 참조 모델은 ISO에서 개방형 시스템 간의 통신을 위해 제안한 것이며 데이터를 전송하는 호스트는 응용 계층에서 시작하여 물리 계층으로 사용자 데이터를 내려보내고, 데이터를 수신하는 호스트는 거꾸로 물리 계층에서 응용 계층으로 데이터를 올려보내는 계층화된 구조를 사용하고 있다. 또한 이러한 표준화된 모델을 사용함으로써 1. 이기종 장치 간에도 데이터를 주고받을 수 있으며 2. 운영체제가 다른 상황에서도 통신에 문제가 발생하지 않는다. 1. Physical Layer (물리 계층) 물리 계층은 사용자 데이터를 물리 매체 상에서 소통이 가능한 통신 신호(전기적 신호)로 변환하여 전송하는 역할을 담당하는 계층이다. 신호 전송을 위한 링크의 설정과 유지, 그리고 전기적, 기능적, 절차적, 물리적 특성들을 ..

CS/network 2021.03.12

JDBC Programming 개발 순서

1. JDBC Driver Load: 데이터베이스 규격, 종류 오라클/mysql인지 이런거 알려주기 2. Connection 획득 (DBMS와의 연결 채널을 수립한다. 네트워크 통신으로 치면 소켓 연결임) 3. SQL 실행을 준비한다. (Statment, PreparedStatement 구문을 준비한다.) 4. Statement 구문을 투척한다. (실행하는 단계): DML, Query 5. 필요하다면 결과물을 수집한다.:ResultSet 6. DBMS와의 연결 끊기 EX) INSERT 예시 Connection conn = null; Statement stmt = null; ResultSet rs= null; try { Class.forName("com.mysql.cj.jdbc.Driver"); conn ..

CS/database 2021.03.12