728x90
300x250

[Microsoft - Windows 7] Internet Explorer 11 설치하기

 


1. Internet Explorer 7에서의 설치

 

윈도우 7의 Internet Explorer 7에서 Internet Explorer 11을 설치하려고 하면 설치가 되지 않는다.

https://www.microsoft.com/ko-kr/download/internet-explorer-11-for-windows-7-details.aspx

 

 

그림 1-1. Windows 7에서 Internet Explorer 7 설치 사이트에 접속되지 않은 경우 - 도도(Dodo)

 

 


2. 다운로드

 

Chrome(크롬)이나 Firefox(파이어폭스) 등으로 인터넷 익스플로러 11(윈도우7)을 설치할 수 있다.

 

https://www.microsoft.com/ko-kr/download/internet-explorer-11-for-windows-7-details.aspx

 

 

그림 2-1. Microsoft의 Internet Explorer 11 설치파일 내려받기 - 도도(Dodo)

 

 

그림 2-2. Microsoft의 Internet Explorer 11 설치파일 내려받기 - 도도(Dodo)

 


3. 설치진행하기

 

설치하는 방법은 크게 간단하다. "설치(I)"를 클릭하면 된다.

"Internet Explorer 사용 조건"을 읽어보면 도움이 될 것으로 보인다.

 

 

그림 3-1. Internet Explorer 11 설치하기 - 도도(Dodo)

 

 

그림 3-2. Internet Explorer 11 설치하기 - 도도(Dodo)

 

 

그림 3-3. Internet Explorer 11 설치하기 - 도도(Dodo)

 

 

그림 3-4. Internet Explorer 11 설치하기 - 도도(Dodo)

 

"나중에 다시 시작(L)"을 클릭하면, 업데이트가 되지 않은 웹 브라우저를 사용할 수 있다.

"다시 시작(R)"을 클릭하면, 업데이트를 진행하게 된다.

 


4. 재부팅 후에 Internet Explorer 11 실행하기

 

다음은 재부팅을 한 후에 Internet Explorer 11을 실행하는 방법에 대해서 소개하겠다.

아래의 아이콘(e)을 보면 로고가 바뀌었다.

정상적으로 설치가 된 것이다.

 

 

그림 4-1. 인터넷 익스플로러 11 실행하기 - 도도(Dodo)

 

그림 4-1에서 "E" 아이콘을 클릭한다.

 

 

 

그림 4-2. 인터넷 익스플로러 11 실행하기 - 도도(Dodo)

 

다음과 같은 화면을 볼 수 있다.

선택 사항을 체크 등을 하고 확인(O)을 누른다.

 

나중에 다시 확인(A)을 클릭하면, 다음 웹 브라우저를 시작할 때 환경설정에 관한 창을 볼 수 있다.


5. 첨부(Attachment)

(Windows 7 64bit)

IE11-Windows6.1-x64-ko-kr.z01

IE11-Windows6.1-x64-ko-kr.z02

IE11-Windows6.1-x64-ko-kr.z03

IE11-Windows6.1-x64-ko-kr.z04

IE11-Windows6.1-x64-ko-kr.z05

IE11-Windows6.1-x64-ko-kr.zip

 

 


6. 맺음글(Conclusion)

 

Microsoft Internet Explorer 11에 대해서 소개하였다.

 


7. 참고자료(Reference)

 

1. Download Internet Explorer 11 for Windows 7 from Official Microsoft Download Center, Last Modified, Accessed by 2018-09-07, https://www.microsoft.com/ko-kr/download/internet-explorer-11-for-windows-7-details.aspx

 

반응형
728x90
300x250
[Windows 7] Installation to Windows 7(윈도우 7 설치하기)

 

Hi, My name is Dodo.

This article has explain to write a Installation to Windows 7.

 

Written for beginners. (초보자를 위해 작성되었다.)

 

 

번호

언어(Language)

단어(Word)

한글 읽기

1

영어(English)->
한글(Korean)

Installation

설치

인스톨레이션

2

영어(English)->
한글(Korean)

to

에, 으로

3

영어(English)->
한글(Korean)

Windows

윈도우

윈도우즈, 윈도우, 윈도

4

영어(English)->
한글(Korean)

Press

누르다

프레스

5

영어(English)->
한글(Korean)

any key

아무 키

에니키

6

영어(English)->
한글(Korean)

boot

부트(컴퓨터 부트를 말함)

부트

7

영어(English)->
한글(Korean)

from

으로

프롬

8

영어(English)->
한글(Korean)

CD

시디(컴퓨터 미디어 매체)

시디

9

영어(English)->
한글(Korean)

or

또는

오알

10

영어(English)->
한글(Korean)

DVD

디비디(컴퓨터 미디어 매체)

디비디

 

 

* 소프트웨어 구분: 상용 소프트웨어

 


1. 설치하기

 

설치에 있어서 매체에는 여러 가지가 있다.

 

번호

설명(Description)

1

네트워크에서 배포(Pxe) - 윈도우 서버에서 배포

2

CD

3

DVD

4

USB

5

하드디스크

6

블루레이디스크(BlueRay) - 25G~30G

 

 

 

그림 1-1. 윈도우 설치, 도도(Dodo)

 

Press any key to boot from CD or DVD....

이 메시지가 나오면 아무키나 누르면 된다.

 

 

그림 1-2. 윈도우 설치, 도도(Dodo)

 

 

그림 1-3. 윈도우 설치, 도도(Dodo)

 

 

그림 1-4. 윈도우 설치, 도도(Dodo)

 

 

그림 1-5. 윈도우 설치, 도도(Dodo)

 

 

그림 1-6. 윈도우 설치, 도도(Dodo)

 

사용자 지정(고급)(C)를 클릭하면 파티션 등을 설정할 수 있다.

업그레이드(U)는 이전에 윈도우가 설치된 경우에 한해서만 가능한다.

 

 

그림 1-7. 윈도우 설치, 도도(Dodo)

 

드라이브 옵션(고급)(A)를 클릭한다.

 

 

 

그림 1-8. 윈도우 설치, 도도(Dodo)

 

새로 만들기(E)를 클릭해서 파티션을 만들 수도 있다.

이 옵션에서 잘 활용하면, 중요한 파일 또는 드라이브는 지우지 않고 윈도우만 재설치도 가능하다.

 

 

그림 1-9. 윈도우 설치, 도도(Dodo)

 

 

 

그림 1-10. 윈도우 설치, 도도(Dodo)

 

 

그림 1-11. 윈도우 설치, 도도(Dodo)

 

시스템 예약이라는 파티션이 생긴다.

이것은 육안에는 보이지 않지만 실제 용량을 사용한다.

부트 파일 등이 담겨져 있다.

 

 

그림 1-12. 윈도우 설치, 도도(Dodo)

 

 

그림 1-13. 윈도우 설치, 도도(Dodo)

 

 

그림 1-14. 윈도우 설치, 도도(Dodo)

 

 

그림 1-15. 윈도우 설치, 도도(Dodo)

 

그림 1-15의 화면이 지나가면 재부팅을 한다.

 

 

그림 1-16. 윈도우 설치, 도도(Dodo)

 

 

그림 1-17. 윈도우 설치, 도도(Dodo)

 

 

그림 1-18. 윈도우 설치, 도도(Dodo)

 

그림 1-18이 완료되면, 재부팅을 하게 된다.

아래의 그림은 재부팅 후에 화면이다.

 

 

그림 1-19. 윈도우 설치, 도도(Dodo)

 

그림 1-20. 윈도우 설치, 도도(Dodo)

 

 

그림 1-21. 윈도우 설치, 도도(Dodo)

 

 

그림 1-22. 윈도우 설치, 도도(Dodo)

 

그림 1-22는 윈도우 설치시 시디키를 입력하는 화면이다. 시디키가 없어도 다음이 가능하다.

윈도우 설치 후에 시디키를 입력해도 무관하다.

 

 

그림 1-23. 윈도우 설치, 도도(Dodo)

 

업데이트에 관한 사항이다. 3가지가 있는데, 적당한 걸 클릭한다.
"권장 설정 사용(R), 중요 업데이트만 설치(I), 나중에 다시 확인(A)" 3가지로 구성된다.

 

 

그림 1-24. 윈도우 설치, 도도(Dodo)

 

 

그림 1-25. 윈도우 설치, 도도(Dodo)

 

네트워크에 관한 것이다. 유형에 맞게 선택하자.

공용 네트워크(P)를 클릭한다고 해서 동작이 안 되는 건 아니다.

 

 

그림 1-26. 윈도우 설치, 도도(Dodo)

 

 

그림 1-27. 윈도우 설치, 도도(Dodo)

 

 

 

그림 1-28. 윈도우 설치, 도도(Dodo)

 

 

 

그림 1-29. 윈도우 설치, 도도(Dodo)

 

 

그림 1-30. 윈도우 설치 완료, 도도(Dodo)

 


2. 설치 후 "컴퓨터 관리"

 

윈도우를 설치하고 나면 뒤에 해야할 일이 있습니다.

제일 먼저 수행해야할 일 중 하나가 "드라이버 설치"라는 게 있습니다.

 

 

그림 2-1. 윈도우 7 컴퓨터 관리 화면, 도도(Dodo)

 


3. 윈도우 7 요구사항

 

PC에서 Windows 7 실행에 필요한 시스템 요구 사항은 다음과 같습니다.

1GHz 이상 32비트(x86) 또는 64비트(x64) 프로세서*
1GB RAM(32비트) 또는 2GB RAM(64비트)
16GB 사용 가능한 하드 디스크 공간(32비트) 또는 20GB(64비트)
WDDM 1.0 이상 드라이버와 DirectX 9 그래픽 디바이스

 


4. 참고자료(Reference)

 

1. https://support.microsoft.com/ko-kr/help/10737/windows-7-system-requirements, Accessed by 2018-07-31

반응형
728x90
300x250

[네트워크(Networks)] C#, C++, Java에서의 소켓 프로그래밍

이번에 소개할 것은 C#, C++, Java에서 소켓 프로그래밍을 사용하는 방법에 대해서 소개한다.


1. 소스코드

C#에서의 소켓 프로그래밍 작성 예시이다.
IPv4 환경에서 확인함.

운영체제: Microsoft Windows 10
소프트웨어: Visual Studio Community 2015

 


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Net.Sockets;

namespace Example
{
    class ServerSide
    {
        public string data = null;

        public void listenSocket()
        {
            byte[] buf;
            Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Any, 8088);

            server.Bind(ipEndPoint);
            server.Listen(10);

            System.Console.WriteLine("연결 요청(Connection Request)");

            // 클라이언트 연결 받음.
            Socket client = server.Accept();

            // 클라이언트의 데이터 - 보내기 / 받기
            buf = new byte[1024];
            client.Receive(buf);

            System.Console.WriteLine(Encoding.Default.GetString(buf));

        }
    }

    class ClientSide
    {
        public void listenSocket()
        {
            //IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName());
            //IPAddress ipAddress = ipHostInfo.AddressList[0];
            // IPEndPoint ipep = new IPEndPoint(ipAddress, 8088);

            IPEndPoint ipep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8088);
            String buf;
            Byte[] data;
           
            Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            client.Connect(ipep);

            Console.WriteLine("소켓 연결(Socket connect)");

            // 데이터 자료 바이트 형으로 받아오기
            data = new byte[1024];
            client.Receive(data);

            // 형 변환 -> getString() 형으로 인코딩
            buf = Encoding.Default.GetString(data);

            Console.WriteLine(buf);

            buf = "소켓 접속 확인 됐습니다.";
            data = Encoding.Default.GetBytes(buf);

            client.Send(data);
            client.Close();

            Console.WriteLine("아무 키나 눌러주세요.");
            Console.ReadLine();

        }
    }
}
 

 NetworkSide.cs

 

 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;

 namespace Example
 {
       class Program
       {
               static void Main(string[] args)
               {
                       ServerSide serverside = new ServerSide() ;
                       serverside.listenSocket();
               }
       }
 } 

Program.cs

[첨부(Attachment)]
network_csharp.7z


2. (Gpp)C++에서의 소켓 프로그래밍 작성 예시입니다. (리눅스에서만 가능)

C언어로 구현된 소켓 프로그래밍을 C++에서도 지원이 가능한 형태로 제작하였다.
IPv4 기반에 맞춰 작성함.

 

 

 

운영체제: 우분투(Ubuntu 16.04)
소프트웨어: Gpp, Gcc

 

 

/*
 *   Network.h
 */

 #include <iostream>
 #include <unistd.h>
 #include <netinet/in.h>
 #include <sys/socket.h>
 #include <sys/types.h>
 #include <arpa/inet.h>

 using namespace std;

 #ifndef SERVER_H_
 #define SERVER_H_

 // 0.
 class INetwork{
       virtual void listenSingleSocket() = 0;
 };

 // 1. 서버사이드(Server-Side)
 class Server : public INetwork{

 protected:

 private:
     int welcomeSocket, newSocket;

 public:
     Server(){
            this->welcomeSocket = 0;
            this->newSocket = 0;
     }

     void listenSingleSocket(){

           char buffer[1024];
           struct sockaddr_in serverAddr;
           struct sockaddr_storage serverStorage;
           socklen_t addr_size;

           welcomeSocket = socket(PF_INET, SOCK_STREAM, 0);

           serverAddr.sin_family = AF_INET;
           serverAddr.sin_port = htons(8000);
           serverAddr.sin_addr.s_addr = inet_addr("127.0.0.1");

           int i = 0;

           while(i < sizeof(serverAddr.sin_zero) ){
                 serverAddr.sin_zero[i] = '\0';
                 i++;
           }

           bind(welcomeSocket, (struct sockaddr *) &serverAddr, sizeof(serverAddr) );

           if ( listen(welcomeSocket, 5) == 0 ){
                  cout << "Listening\n";
           }
           else
          {
                 cout << "Error\n";
          }

           addr_size = sizeof(serverStorage);
           newSocket = accept(welcomeSocket, (struct sockaddr *) &serverStorage, &addr_size);

           buffer[0] = 'H';
           buffer[1] = 'e';
           buffer[2] = 'l';
           buffer[3] = 'l';
           buffer[4] = 'o';

           send(newSocket, buffer, 13, 0);

     }

 };

 class Client : public INetwork{

 private:
         int clientSocket;
         char buffer[1024];
         struct sockaddr_in serverAddr;
         socklen_t addr_size;

 public:
         Client(){
               this->clientSocket = 0;
         }

         void listenSingleSocket(){

              clientSocket = socket(PF_INET, SOCK_STREAM, 0);

               serverAddr.sin_family = AF_INET;
               serverAddr.sin_port = htons(8000);

               serverAddr.sin_addr.s_addr = inet_addr("127.0.0.1");

               int i = 0;
               while (i < sizeof(serverAddr.sin_zero)){
                      serverAddr.sin_zero[i] = '\0';
                       i++;
               }

                addr_size = sizeof(serverAddr);

                connect(clientSocket, (struct sockaddr *) &serverAddr, addr_size);

                // 문자열 전달 받음 - (unsigned) char[1024]
                recv(clientSocket, buffer, 1024, 0);
                cout << "데이터 전송 받은 문자:" << buffer << endl;
          }

};

#endif /* SERVER_H_ */

 Network.h

 #include <iostream>
 #include "Network.h"

 using namespace std;

 int main() {
        /*
        Server *server = new Server();
        server->listenSingleSocket();
        */

       Client *client = new Client();
       client->listenSingleSocket();
       return 0;
 }

 Program.cpp

[첨부(Attachment)]
Network-gpp.zip


3. 자바에서의 소켓 프로그래밍

싱글 쓰레드 타입으로 작성함. IPv4 환경에서 확인하였다.
IPv6는 확인하지 못함.

 

 

 

운영체제: Microsoft Windows 10 
소프트웨어: Eclipse Luna, JDK 1.81

 

 
 package Network;

 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.OutputStream;
 import java.io.OutputStreamWriter;
 import java.io.PrintWriter;
 import java.net.Socket;
 import java.net.UnknownHostException;

 public class ClientSide implements IHost{
 
        private Socket socket;
        private Host host;
 
        public ClientSide(){
            socket = null;
            host = null;
        }
 
        public Host getHost(){
            return host;
        }
 
        public void setHost(Host host){
            this.host = host;
        }
 
        public void listenSocket(){
  
            InputStream in = null;
            OutputStream out = null;
  
            BufferedReader br = null;
            BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
            PrintWriter pw = null;
  
            String myMsg = null;  // 전달 메시지
            String echo = null;  // 받은 메시지
  
            try{
                 socket = new Socket( host.getIP() , host.getPort() );
    
                 in = socket.getInputStream();
                 out = socket.getOutputStream();
   
                 pw = new PrintWriter(new OutputStreamWriter(out));
                 br = new BufferedReader(new InputStreamReader(in));
   
                while((myMsg = input.readLine()) != null){
    
                      if ( myMsg.equals("/q")){
                            break;
                      }
    
                      pw.println(myMsg);
                      pw.flush();
    
                      echo = br.readLine();
                      System.out.println( "서버사이드 받은 메시지:" + echo );
     
                }
   
                pw.close();
                br.close();
                socket.close();
   
        }
        catch(UnknownHostException e){
                System.out.println("미확인 호스트: " + host.getIP() + ":" + host.getPort() );
                System.exit(-1);
        }
        catch(IOException e){
                System.out.println("입출력 안됨.");
                System.exit(1);
        }

    }
 
}

 ClientSide.java

 
 package Network;

 interface IHost{
        void setHost(Host host);
        Host getHost();
 }

 public class Host{
 
        private String ip;
        private int port;
 
        public Host(int port){
              ip = "";
              this.port = port;
        }
 
        public Host(String ip, int port){
                this.ip = ip;
                this.port = port;
        }
 
        public String getIP(){
                return this.ip;
        }
 
        public int getPort(){
                return this.port;
        }
 
 }

 Host.java

 
 package Network;

 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.OutputStream;
 import java.io.OutputStreamWriter;
 import java.io.PrintWriter;
 import java.net.ServerSocket;
 import java.net.Socket;

class ClientWorker implements Runnable{

         private int id;
         private Socket client;
         private String line;
 
         public ClientWorker(Socket client, int id){

              this.client = client;
              this.id = id;
         }
 
         public void run() {
  
             InputStream in = null;
             OutputStream out = null;
  
             PrintWriter pw = null;
             BufferedReader br = null;
  
             String recvStr = "";

             try{
                 in = client.getInputStream();
                 out = client.getOutputStream();
   
                 pw = new PrintWriter(new OutputStreamWriter(out));
                 br = new BufferedReader(new InputStreamReader(in));
   
             }catch(IOException e){
                 System.out.println("읽기 실패(Read Failed)");
                 System.exit(-1);
             }

             try {
   
                  while( (recvStr = br.readLine() ) != null ){
    
                        appendText(recvStr);
                        System.out.print( "쓰레드(Thread)" + id + ":" );
                        System.out.println(line);
                        pw.println(recvStr);
                        pw.flush();
                  }
   
                  client.close();
   
             } catch (IOException e) {
                   System.out.println("읽기 실패(Read Failed");
                   System.exit(-1);
             }
  
       }
 
        // 동기화 추가
        public synchronized void appendText(String strText){
  
              if ( line == null )
              {
                   line = strText;
              }
              else{
                   line = line + strText;
              }
        }
 
 }

 public class ServerSide implements IHost{

         private ServerSocket server;
         private Socket client;
         private Host host;
         private static int clientID;
 
         public ServerSide(){
                server = null;
                client = null;
                host = null;
                clientID = 0;
         }
 
         public Host getHost(){
                return host;
          }
 
          public void setHost(Host host) {
                 this.host = host;
          }
 
          // 싱글(Single)
          public void listenSingleSocket(){

                String line;
   
                InputStream in = null;
                OutputStream out = null;
  
                PrintWriter pw = null;
                BufferedReader br = null;
  
                String recvStr = null;
  
                try{   
                      server = new ServerSocket( host.getPort() ); 
                }
                catch(IOException e){
                      System.out.println("포트 " + host.getPort() + "번은 응답하지 않습니다.");
                      System.exit(-1);
                }
  
                try{
                      client = server.accept();
                }
                catch(IOException e){
                      System.out.println("응답 실패: 포트 " + host.getPort() + "번");
                      System.exit(-1);
                }
  
                try{
                      in = client.getInputStream();
                      out = client.getOutputStream();
   
                      pw = new PrintWriter(new OutputStreamWriter(out));
                      br = new BufferedReader(new InputStreamReader(in));
   
                }catch(IOException e){
                      System.out.println("읽기 실패(Read Failed)");
                      System.exit(-1);
                }

                try {
   
                     while( (recvStr = br.readLine() ) != null ){
     
                            System.out.print( "싱글" );
                            pw.println(recvStr);
                            pw.flush();
                    }
   
                   client.close();
                   server.close();
   
              } catch (IOException e) {
                     System.out.println("읽기 실패(Read Failed");
                     System.exit(-1);
              }
  
         }

        // 멀티(Multi-Threading)
        public void listenMutliSocket(){
   
              ClientWorker w = null;

              try{
                  server = new ServerSocket( host.getPort() ); 
              }
              catch(IOException e){
                  System.out.println("포트 " + host.getPort() + "번은 응답하지 않습니다.");
                  System.exit(-1);
              }
  
              try{
                   while(true){
   
                        w = new ClientWorker( server.accept(), clientID++ );
  
                        Thread t = new Thread(w);
                        t.start();
                   }
   
             }
             catch(IOException e){
                  System.out.println("응답 실패: 포트 " + host.getPort() + "번");
                  System.exit(-1);
             }
  
       }
  
       protected void finalize(){
  
             try{
                  server.close();
             }catch(IOException e){
                  System.out.println("소켓을 종료할 수 없습니다.");
                  System.exit(-1);
             }
  
       }

 }

 ServerSide.java

 package Network;

 public class Example{
 
        public static void main(String[] args){
  
             ServerSide server = new ServerSide();
             Host host = new Host(10001);
             server.setHost(host);
             server.listenMutliSocket();
        }
 }

 Example.java

[예제 - 첨부(Attachment)]
Network.zip


4. IPv4와 IPv6

 

네트워크와 관련된 주제로 IPv4와 IPv6에 대해서 소개한다.

 4-1. IPv4 

 IPv4는 인터넷 프로토콜의 4번째 판이며, 전 세계적으로 사용된 첫 번째 인터넷 프로토콜이다.

 과거에 인터넷에서 사용되는 유일한 프로토콜이였으나 오늘날에는 IPv6이 대중화되었다. IETF RFC 791(1981년 9월)에 기술되어 있다.

 IPv4는 패킷 교환 네트워크 상에서 데이터를 교환하기 위한 프로토콜이다. 데이터가 정확하게 전달될 것을 보장하지 않고,
 중복된 패킷을 전달하거나  패킷의 순서를 잘못 전달할 가능성도 있다. 데이터의 정확하고 순차적인 전달은 그보다 상위 프로토콜인
 TCP에서(그리고 UDP에서도 일부) 보장한다.

 IPv4의 주소체계는 총 12자리이며 네 부분으로 나뉜다. 각 부분은 0~255까지 3자리의 수로 표현된다. IPv4 주소는 32비트로 구성되어 있으며,
 현재 인터넷 사용자의 증가로 인해 주소공간의 고갈에 대한 우려가 높아지고 있다. 이에 따라 대안으로 128비트 주소체계를 갖는 IPv6가 등장하였다.

 중국의 경우 주소공간 고갈을 우려하여 일부에서 독자적으로 IPv9(십진제 인터넷 주소체계)과 숫자도메인(Digital Domain Name System, DDNS)이
 결합된 개념인 IP 주소와 도메인 이름이 동일한 네트워크 체제인 All-Digital-Domain-Address (ADDA)를 사용하기도 한다.

 2011년 2월 4일부터 모든 IPv4 주소가 소진되어 IPv4의 할당이 중지되었다.

 

CLASS 구성 범위
A 클래스 xxx.xxx.xxx.xxx 1.0.0.1 ~ 126.255.255.254 61.211.123.22
B 클래스 xxx.xxx.xxx.xxx 128.0.0.1 ~ 191.255.255.254 181.123.211.33
C 클래스 xxx.xxx.xxx.xxx 192.0.0.1 ~ 223.255.255.254 221.23.222.222
D 클래스 224.0.0.0 ~ 239.255.255.255
E 클래스 240.0.0.0 ~ 254.255.255.254

 그림 4-1-1. 쿼드 점으로 구분 된 IPv4 주소 표현을 이진 값으로 분해.

 이건 조금 해결할 수는 있을 듯하다. 다만 이것도 계산이 더럽다고 볼 수 있다.
 아래는 172에 대해서 해결한 것이다.

10 |  10  |  110  | 0  

  10 = | Flag |
  128번 = 000000
  129번 = 000001

   .........
  172번 = 101100

 

 4-2. IPv6

 인터넷 프로토콜 버전 6 (IPv6)은 네트워크상의 컴퓨터에 대한 식별 및 위치 시스템을 제공하고 인터넷을 통해 트래픽을 라우팅하는
 통신 프로토콜 인 IP (인터넷 프로토콜)의 최신 버전이다.

 
IPv6는 오랫동안 예상되었던 IPv4 주소 고갈 문제를 해결하기 위해 IETF (Internet Engineering Task Force)에서 개발되었다.
 
IPv6은 IPv4를 대체하기 위한 것이다. IPv6는 1998 년 12 월에 초안 표준이되었고, 2017 년 7 월 14 일에 인터넷 표준이 되었다.

 인터넷상의 모든 장치에는 식별 및 위치 정의를 위해 고유 한 IP 주소가 할당된다.
 
1990 년대의 상용화 이후 인터넷의 급속한 성장으로 인해 IPv4 주소 공간보다 장치를 연결하는 데 훨씬 많은 주소가 필요할 것이다.

 
1998 년까지 IETF (Internet Engineering Task Force)는 후임 프로토콜을 공식화했다.
 
IPv6은 128 비트 주소를 사용하며 이론적으로 2128 개 또는 약 3.4 × 1038 개 주소를 허용한다.

 
여러 개의 범위가 특수 용도로 예약되었거나 완전히 사용되지 않도록 실제 숫자가 약간 더 작다.
 
가능한 IPv6 주소의 총 수는 32 비트 주소를 사용하고 약 43 억 개의 주소를 제공하는 IPv4의 7.9 × 1024 배이다.
 
 
이 두 프로토콜은 상호 운용성을 위해 설계되지 않았기 때문에 IPv6 로의 전환이 복잡해졌다.
 
그러나 IPv4와 IPv6 호스트 간의 통신을 허용하기 위해 몇 가지 IPv6 전환 메커니즘이 고안되었다.

 IPv6은 더 큰 주소 지정 공간 외에도 다른 기술적 이점을 제공한다.
 
특히 인터넷을 통한 경로 집계를 용이하게 하는 계층적 주소 할당 방법을 허용하므로 라우팅 테이블의 확장을 제한한다.
 
멀티 캐스트 주소 사용은 확장되고 단순화되며 서비스 제공을위한 추가 최적화를 제공한다.

 장치의 이동성, 보안 및 구성 측면이 프로토콜 설계시 고려되었다.

 IPv6 주소는 그룹이 콜론으로 구분 된 네 개의 16 진수 8 개의 그룹으로 표시된다.
 (예: 2001:0db8:0000:0042:0000:8a2e:0370:7334).이 전체 표기법을 줄이는 방법이 있다.

 

그림 4-2-1. IPv6 주소 표현을 이진 형식으로 분해

 IPv6를 사람 손으로 푼다고 하면, 매우 많은 노가다가 필요하다.
 각 옥탯에 있는 16진수를 일일이 하나 하나씩 해결해야 한다.

4-3. IPv6의 패킷헤더

 



그림 4-3-1. IPv6의 패킷해더

 IPv6의 패킷해더이다. IPv6로 데이터를 송수신하면 이런 형태로 전송이 되는 것을 관찰할 수 있다.
 리눅스에 패킷 분석 툴킷이 있는데 한번 패킷해더를 추적해봐도 좋을 것이다. 

 이 패킷해더를 관찰하는 대표적인 툴킷(Tool-kits)으로 WireShark가 있다.

  
 그림 4-3-2. WireShark 시연 예

 [IPv4 to IPv6에 관한 이야기]

 IPv6를 실제로 사용하려면 많은 조건이 필요하다.
 IPv4에서 IPv6로 변환해줄 수 있는 변환장치 등이 필요하다.
 터널링도 하나의 기법이 될 수 있다.


5. 참고자료(Reference)

 

1. IPv4, Wikipedia, https://ko.wikipedia.org/wiki/IPv4, Accessed by 2018-07-27
2. IPv6, Wikipeida, https://en.wikipedia.org/wiki/IPv6, Accessed by 2018-07-27
3. IPv6 OSPFv3 ESP Packets and Decrypting with Wireshark, https://packetpushers.net/ipv6-ospfv3-esp-packets-and-decrypting-with-wireshark/, Accessed by 2018-07-27

반응형
728x90
300x250

[Windows 7] 정품 키 백업하기

 

DSP, MAK 인증횟수 초과 메시지를 피하는 방법으로 DSP, MAK 라이선스 기준에 맞게 하드웨어 교체 없이 운영체제를 재설치할 때 사용하는 방법입니다.

물론, Microsoft 콜센터에 전화하여 해결하는 방법도 있겠으나, 번거로울 경우를 대비하여 미리 키 백업을 이용하여 정품 사용자의 혜택을 빠르게 진행할 수 있습니다.

 

DSP, MAK This is a way to avoid overwriting the number of authentication times and to reinstall the operating system without hardware replacement to meet DSP, MAK license standards.

Of course, you can call Microsoft call center to solve it, but in case of a hassle, you can use the key backup to get the benefits of genuine users fast.

 


1. Token 백업 파일 소개(Token backup file introduction)


 

 

[첨부 파일 / Attachment]

tokens.7z

 

 

 

이 프로그램을 사용했을 때 윈도우가 파괴된다는 지 등은 없습니다.

There is no such thing as a window being destroyed when using this program.

 


2. 참고자료(Reference)

 

1. http://snoopybox.co.kr/1131

 

반응형
728x90
300x250
[PC활용] 클라우드 디스크 SkyDrive - MS Word 2013에서 사용하기

 

MS Office 2010 이후 버전부터는 SkyDrive가 내장되어 있습니다.

즉, MS의 클라우드 스토리지 기능을 사용할 수 있는 환경이 갖춰짐을 의미합니다.

아래의 화면과 같이 SkyDrive에 로그인만 하면 사용할 수 있는 환경입니다.

 

 

 

반응형
728x90
300x250

[PC활용] 클라우드 디스크 SkyDrive - 동기화 기능.


작업 표시줄에 구름 아이콘이 있는데, 이게 SkyDrive 로그인한 상태입니다.

SkyDrive 폴더 열기를 클릭하시면,

 

 

 

아래와 같은 폴더 창이 뜹니다.

 

 

파일을 그냥 집어넣기만 하면, SkyDrive에 업로드가 됩니다.

 

 

반응형
728x90
300x250

[Windows 7] 터미널 서비스 포트 변경

 

포트를 스캔하면 추정할 수 있지만, 비어있는 포트의 자원을 잘 활용하는 것도 중요한 부분이라고 보입니다.

이번에는 터미널 포트를 변경하여 서비스를 운영하는 방법을 소개하고자 합니다.

 


1. 원격설정을 허용한 후에 사용하기

 

제어판->시스템 -> 고급 시스템 설정->원격 탭에 원격설정에 관한 사항이 있습니다.

이를 허용해줘야만 해당 부분을 진행할 수 있습니다.



2. 방화벽 예외 설정
-> 기본 원격데스크톱 포트번호가 아닌 다른 포트번호를 사용하기 때문에 윈도우 방화벽에서 예외 설정을 해야 합니다.

 

제어판-> 시스템 및 보안 -> Windows 방화벽 -> 고급 설정(왼쪽 메뉴)

 

 

인바운드 규칙에서 새 규칙을 클릭합니다.

 

 

포트를 클릭 후 다음을 클릭합니다.

 

 

TCP를 클릭 후 특정 포트를 설정합니다.

예를 들자면, 원격데스크톱 특정포트를 4000으로 설정합니다.

 

 

정의할 이름을 설정 후 마침을 클릭합니다.

위의 방법을 이용하여 UDP포트도 4000번을 개방합니다.

 


3. 레지스트리 변경

 

 

시작에서 실행을 클릭합니다.

Regedit라고 입력합니다.

 

HKEY_Local_Machine\System\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\Tcp
HKEY_Local_Machine\System\CurrentControlSet\Control\Terminal Server\WinStation\RDP-Tcp

 

위의 경로를 찾습니다.

 

 

 

PortNumber 속성을 수정합니다.

 


4. 원격데스크톱 사용하기(특정포트)

 

 

내 Ip주소 형태:포트번호 이러한 꼴로 사용하면 됩니다.

 

반응형
728x90
300x250
[Windows 7] 멀티 원격데스크톱으로 패치

 

원격데스크톱 연결을 할 때 XP와 7은 서버가 아니기에 접속자 수가 1명으로 제한되어 있다. XP로 2명 이상 다중 접속을 하기위한 방법은 설명을 올려 두었으나 7으로 2인 이상 접속하는 방법을 올리지 않아 지금 올려본다. 인터넷 검색으로는 대부분 Ultimate 또는 버젼 7600에 관련된 내용만 있어 설정이 안되는 경우가 많다. 아래 파일을 받아 실행하여 체크한 후 재부팅과 상관없이 바로 접속이 가능하다.

 

When connecting to a remote desktop, XP and 7 are not servers, so the number of users is limited to one. I have posted instructions on how to make multiple connections with two or more people in XP, but I do not upload a way to connect two or more people at 7, so I upload them now. Internet search is mostly about Ultimate or version 7600, and it is often not set up. It can be accessed immediately regardless of the reboot after checking and executing the following file.

 

이 내용은 파워유저를 위해 만든 것이다. 물론 이 패치를 적용했을 때 문제에 대해서는 책임지지 않는다.

This is intended for power users. Of course, we are not responsible for problems when applying this patch.

동작이 완벽하게 된다는 보장을 하지 않는다.

There is no guarantee that the behavior will be perfect.

 


1. 설정하기(Setting)

 

공통으로 설정해야 할 부분이다. 제어판에서 시스템->속성에 들어간다.

원격 탭을 클릭하면, 아래의 그림과 같은 화면이 뜬다.

 

This is a common setting. In Control Panel, go to System -> Properties.
Click the Remote tab, and the following screen will appear.

 

 

그림 1-1) 원격 설정

 

형광 팬으로 칠한 부분을 선택해야만 Termsvr.dll이 설치가 된다. 즉, 원격데스크톱 서비스가 활성화된다는 것을 의미한다.

이러한 형태를 지원하는 운영체제 버전은 다음과 같다.

Termsvr.dll will be installed only if you select the area painted with the fluorescent fan. This means that Remote Desktop Services is enabled.
The operating system versions that support this type are as follows.

 

 Windows XP

Windows Vista 

 Windows 7

Windows 8 

 Professional(SP2, SP3)

Business

Enterprise

Ultimate 

Professional

Ultimate 

Professional

 

(윈도우 7용) 두가지 타입

 


2. UniversalTermsrvPatch - Made in China

 

 

 

[첨부 / Attachment]

UniversalTermsrvPatch_20090425.zip

 

중국이 만든 거 같은데, ReadMe를 보면 termsrv.dll을 백업하고 사용하라고 경고하고 있다.

C:\windows\system32\termsrv.dll

이 파일을 백업하고 사용하면 된다.

= It seems like China made it, ReadMe warns you to back up and use termsrv.dll.
= C:\windows\system32\termsrv.dll
= You can back up and use this file.

 


3. Concurrent_RDP - Made in China

 

 

[첨부 / Attachment]

Concurrent_RDP_Patcher.zip

 

이거는 파일 한 개의 형태로 된 패치 파일이다.

이전의 Made in China 프로그램하고는 사용하는 면에선 매우 편리하고 잘 만들어져 있다.

= This is a patch file in the form of a file.
= The former Made in China program is very convenient and well-crafted in terms of use.

 

 

반응형

+ Recent posts