20230620(화) 울산 맑은샘 헬스

  • 트레드밀 1시간 10분 
  • 랫 풀 다운 60KG 2SET 50KG 5SET
  • 체스트 플라이 머신 30KG 2SET 20KG 3SET

'건강운동관리' 카테고리의 다른 글

헬스  (0) 2023.06.22
헬스  (0) 2023.06.21
헬스  (0) 2023.06.19
헬스  (0) 2023.06.16
헬스  (0) 2023.06.15

< LAN(로컬 영역 네트워크) >

LAN은 Local Area Network의 약자로, 한정된 지역(예: 집, 사무실, 학교) 내에서 여러 컴퓨터나 기기들이 연결되어 통신할 수 있는 네트워크를 말한다.
LAN은 주로 두 가지 구조로 구성된다.


[버스형]
여러 기기들이 하나의 공유 통신 채널(버스)에 연결되어 있다.
이더넷(Ethernet)이 버스형 LAN에서 주로 사용된다. (이더넷은 충돌이 발생하는 것을 허용하는 대신,충돌 후에 문제를 해결하는 사후 해결 방식을 가지고 있다).


[링형]
기기들이 원형으로 연결되며, 데이터는 링을 따라 한 방향으로만 이동한다.
토큰을 사용하여 한 번에 하나의 기기만 데이터를 전송할 수 있도록 한다. 이로 인해 충돌을 방지한다.

< MAN(중거리 통신망) >

MAN은 Metropolitan Area Network의 약자로, LAN보다 넓은 범위를 커버하는 네트워크로 주로 도시 전체를 아우른다.
MAN은 DQDB(Distributed Queue Dual Bus) 구조를 사용한다. 이는 두 개의 단방향 선로로 구성되며, 분산 데이터 큐를 사용한다. 슬롯 링을 변형하여 충돌 문제를 해결하는 FIFO 기반의 공유 슬롯 방식을 사용한다. ATM과 호환성을 높이기 위해, 53바이트의 프레임을 지원한다.

< WAN(광역 통신망) >

WAN은 Wide Area Network의 약자로, 국가나 대륙을 넘나드는 매우 넓은 지역을 지원하는 네트워크다.
WAN은 점대점(Point-to-Point) 방식으로 연결되며, 데이터를 전송하는 동시에 교환 기능도 수행한다.
연결이 많아질수록 전송 매체 비용이 크게 증가한다.
LAN과 LAN을 서로 라우터로 연결하면, 그것이 WAN이라고 간주 될 수 있다.

 


Reference : 건국 사이버 평생 교육원 컴퓨터 공학 / 컴퓨터 네트워크 과목

※ 저의 블로그에 있는 모든 교재,강의 내용은 스스로 공부하여 정리한 것이며, 이와 관련한 저작권 문제는 직접 허락(출판사/저자)을 받았습니다. 

'Network' 카테고리의 다른 글

서브넷팅(subnetting)  (0) 2023.06.29
인터네트워킹(InterNetworking)  (0) 2023.06.21
데이터 통신 시스템  (0) 2023.06.20
컴퓨터 네트워크란?  (0) 2023.06.20
2.네트워크 구성  (0) 2023.05.12

먼저, 컴퓨터 통신망을 통해 어떤 서비스들을 이용할 수 있는지 몇 가지 예를 들어보자.

파일 전송(File Transfer) - 컴퓨터 사이에 문서, 이미지, 음악 등 다양한 파일 전송
원격 처리(Remote Processing) - 다른 위치에 있는 컴퓨터를 제어하거나, 해당 컴퓨터에서 작업을 수행
원격 회의(Video Conferencing) - 인터넷을 통해 멀리 떨어진 사람들과 영상 통화를 하며 회의
웹 서비스(Web Services) - 인터넷 브라우저를 통해 정보를 검색하거나 온라인 쇼핑 등 다양한 서비스를 이용
이메일(Email) - 텍스트, 이미지, 파일 등을 전자 메시지 형태로 전송
소셜네트워크서비스(Social Network Services, SNS) - 사람들이 온라인 상에서 서로 소통하거나 정보를 공유하는 서비스

< 데이터 통신 시스템이란? >

데이터 통신 시스템이란, 정보를 빠르고 정확하게 원하는 장소로 전송하는 시스템이다. 사람들이 문자를 보내고, 파일을 공유하며, 웹을 서핑하는 것이 바로 이 시스템 덕분이다. 그렇다면, 이 시스템은 어떻게 구성되어 있을까?

[데이터 통신 시스템의 기본 구성요소]

1. 단말장치 (Data Terminal Equipment, DTE)
단말장치란, 사용자와 데이터 통신 시스템 사이의 접속점에 위치한 장치로, 스마트폰이나 컴퓨터, 모니터 등이 여기에 해당한다. 데이터를 입력하거나 데이터를 받아들이는 역할을 한다.

2. 데이터 통신 장비 (Data Communication Equipment, DCE)
데이터 통신 장비는 네트워크 연결을 관리하며, 데이터를 다른 기기로 전송한다. 이에는 모뎀, 라우터, 스위치 등이 포함된다.

3. 전송 매체 (Transmission Medium)
전송 매체는 데이터가 전송되는 경로다. 유선 매체로는 전화선, 동축 케이블, 광섬유 케이블 등이 있으며, 무선 매체로는 라디오 주파수, 위성, 적외선 등이 사용된다.

UTP케이블 사진을 보면, 꼬임선으로 되어있다.  꼬임선으로 되어 있는 이유는 전기적 간섭을 줄이기 위해 서로 꼬여있다.
가격이 비교적 저렴하며,  최근 100Mbps 등의 대용량을 고속으로 전송할 수 있는 케이블을
만들어 짧은 거리에서의 고속 전송에 유리하다. 다른 케이블보다 비교적 신호간섭과 잡음이 크다는 단점이 있다.

 

동축케이블은 중심 도체를 절연체로 감싸고, 다시 외부 도체를 이용하여 감싸는 형태의 케이블이다.

UTP케이블보다 신호간섭과 잡음이 비교적 적다.

 

광섬유 케이블은 유리를 소재로 만든 광섬유를 여러 가닥으로 묶어서 만든 원통형 케이블이다.

장거리전송이 가능하고, 유리 소재로 만들었기에 전자기적인 방해를 받지 않는다. 그렇지만, 케이블 간의 연결에 고도의 기술을 요구하기에, 설치비용이 비싸다는 단점이 있다. 

 


4. 프로토콜 (Protocol)
프로토콜은 데이터 통신을 수행하는 규칙과 절차들의 집합이다. 예를 들어, TCP/IP는 인터넷 통신의 기본 프로토콜로 널리 사용된다.

5. 메시지 (Message)
메시지는 통신을 통해 전송되는 데이터 단위로, 텍스트, 이미지, 영상, 음성 등 여러 형태가 있을 수 있다.

 

< 데이터 통신의 프로세스>

데이터 통신은 일반적으로 다음과 같은 과정을 거친다.

데이터 생성: 단말장치에서 데이터가 생성된다. (예: 사용자가 텍스트 메시지를 작성)
데이터 인코딩: 데이터가 전송 가능한 형태로 변환된다.
데이터 전송: 변환된 데이터가 전송 매체를 통해 다른 장치로 보내진다.
데이터 수신: 목적지의 데이터 통신 장비가 데이터를 수신한다.
데이터 디코딩: 수신된 데이터가 원래의 형태로 변환된다.
데이터 사용: 최종 사용자 또는 어플리케이션에 의해 수신된 데이터가 사용된다.

 

Reference : 건국 사이버 평생 교육원 컴퓨터 공학 / 컴퓨터 네트워크 과목

※ 저의 블로그에 있는 모든 교재,강의 내용은 스스로 공부하여 정리한 것이며, 이와 관련한 저작권 문제는 직접 허락(출판사/저자)을 받았습니다. 

'Network' 카테고리의 다른 글

인터네트워킹(InterNetworking)  (0) 2023.06.21
LAN,MAN,WAN  (0) 2023.06.20
컴퓨터 네트워크란?  (0) 2023.06.20
2.네트워크 구성  (0) 2023.05.12
1. 네트워크 개념  (0) 2023.05.12

< 컴퓨터 네트워크란 ? >

컴퓨터 네트워크는 간단히 말해서 여러 컴퓨터가 서로 연결되어 정보를 주고받을 수 있게 하는 것이다. 이 연결은 근처에 있는 컴퓨터끼리일 수도 있고, 지구 반대편에 있는 컴퓨터끼리일 수도 있다.

<  통신 >

'통신'이란 무엇일까? 넓은 의미로 보면, 두 지점 사이에서 정보를 주고받는 것이다. 예를 들면, 친구에게 편지를 쓰는 것도 통신이다. 하지만 컴퓨터 용어로 '통신'은 주로 전자적인 정보의 전송을 의미한다.

< 데이터 링크 >

 컴퓨터와 컴퓨터 사이를 연결하는 고리와 같다. 유선 케이블이나 광케이블을 사용할 수도 있고, 와이파이처럼 무선으로 연결할 수도 있다.

< 데이터 통신 >

'데이터 통신'은 컴퓨터를 이용하여 데이터를 처리하고 전송하는 기술이다. 이메일을 보내거나 웹 페이지를 열 때, 컴퓨터는 데이터 통신을 통해 필요한 정보를 주고받는 거라고 보면 된다.

< 컴퓨터 네트워크를 만드는 이유 >
자원 공유: 서로 다른 컴퓨터에서 파일이나 프린터 같은 자원을 함께 쓸 수 있다.
안전성 보장: 정보를 안전하게 전송하고 보관할 수 있다.
신뢰도 향상: 데이터가 빠르고 정확하게 전달되도록 한다.
호환성 확대: 서로 다른 기기와도 손쉽게 연결하여 사용할 수 있다.
처리 기능 분산: 여러 컴퓨터가 일을 나눠서 더 효율적으로 처리할 수 있다.

 


< 컴퓨터 네트워크의 중요한 발전 과정 >

SAGE 시스템(1958년): 미국에서 군사 목적으로 개발된 최초의 컴퓨터 통신 시스템. 공중 침입을 감지하는 데 사용되었다.

SABRE 시스템(1961년): 여객기 좌석 예약과 회사 업무를 처리하는데 사용된 상업적인 컴퓨터 통신 시스템.

https://www.youtube.com/watch?v=YIxf6wH0d7Y

출처 : Computer History: IBM SABRE Reservation System, American Airlines (1960 scheduling air fare flights)

CTSS(Compatible Time Sharing System): MIT에서 개발된 이 시스템은 여러 사용자가 동시에 컴퓨터 자원을 공유하는 데 사용되었다.

 

ARPANET : 1969년 이후 가동되어 1990년까지 운영되었으며 인터넷의 전신이 된 컴퓨터 네트워크 시스템.

 

ALOHA(Additive Links Online Hawaii Area) 시스템 : 1968년 하와이 대학에서 실험적으로 시작한 무선 패킷 교환 방식의 통신 시스템이다.

https://www.ques10.com/p/37482/explain-aloha-and-slotted-aloha/

SNA(System Network Architecture)  : 1974년에 IBM에서 발표한 컴퓨터 간 접속 용이하고, 이용 형태의 다양화·복잡화를
대체하기 위한 체계화된 네트워크 구조로 되어있다.

 

 

 

Reference : 건국 사이버 평생 교육원 컴퓨터 네트워크

※ 저의 블로그에 있는 모든 교재,강의 내용은 스스로 공부하여 정리한 것이며, 이와 관련한 저작권 문제는 직접 허락(출판사/저자)을 받았습니다. 

'Network' 카테고리의 다른 글

인터네트워킹(InterNetworking)  (0) 2023.06.21
LAN,MAN,WAN  (0) 2023.06.20
데이터 통신 시스템  (0) 2023.06.20
2.네트워크 구성  (0) 2023.05.12
1. 네트워크 개념  (0) 2023.05.12

 

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

namespace MYTCP
{

    //라이브러리 형태로 작성될 크래스.
    //TCP클라이언트로 접속할 수 있는 클래스를 작성.
    public class Client
    {
        //이벤트
        //연결이되면 연결을 알려주는 이벤트
        public delegate void ConnectedHandler(Socket s);
        public delegate void DisConnectedHandler(string disconnectMsg);
        public delegate void ReceivedHandler(byte[] bytes);
        public event ConnectedHandler OnConnected;
        public event DisConnectedHandler OnDisConnected;
        public event ReceivedHandler OnReceived;

        private Socket socket = null;
        private string ip = "";
        private int port = 43210;
        private Thread thread = null;
        private bool stop = false; //클라이언트가 연결이 종료됬는지.연결이 되있는 상태인지..

        public Client(string ipAddress,int port)
        {
            this.ip = ipAddress;
            this.port = port;
            //ip주소와,port를 할당.
            //127.120.120.255
            //데이터 중복없이 신뢰성있는 양방향 연결 기반의 바이트스트림
            socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        }

        //클라이언트 연결을 시작
        public void Start()
        {
            try
            {
                //IPEndPoint클래스란? 끝점,즉 연결될 곳의 IP주소와 Port를 가지고있는 클래스
                //IP주소->어떠한 컴퓨터(서버)로 접속을 요청할 것인지..
                //PORT ->서버의 어떠한 프로그램에 접속을 요청할 것인지.,
                IPEndPoint remoteEp = new IPEndPoint(IPAddress.Parse(ip), port);
                socket.Connect(remoteEp);//서버에게 연결을 요청하게됨..->Connect 동기적으로 요청.->서버 한대만을,서버프로그램이라면 BeginConnect함수를 사용.
                                         //실패하면
                if (OnConnected != null)
                {
                    //연결이되면 이벤트를 통해서 사용하는 곳에 알려준다. 
                    OnConnected(socket);
                }

                //서버와 송수신 즉 데이터를 주고받아야됨.
                thread = new Thread(ReceiveMassage);
                thread.IsBackground = true;//프로그램이 종료되면
                thread.Start();
            }
            catch (Exception)
            {
                //서버와 연결실패시
                throw;
            }


        }

        //데이터수신 함수
        private void ReceiveMassage()
        {
            //클라이언트 연결이 끊긴게아니라면 계속해서 반복해서 수신하도록..
            while(!stop)
            {
                try
                {
                    //네트워크에서 바이트형태로 데이터를 주고
                    byte[] buffer = new byte[1024];//1024바이트

                    int bytesRead = socket.Receive(buffer,0,buffer.Length,SocketFlags.None);//데이터 수신.

                    if (bytesRead<=0)
                    {
                        throw new SocketException();
                    }

                    //buffer 실질적으로 데이터가 쓰인것을
                    Array.Resize(ref buffer, bytesRead);

                    if(OnReceived!=null)
                    {
                        OnReceived(buffer);
                    }

                }
                catch
                {
                    if(OnDisConnected!=null)
                    {
                        OnDisConnected("Disconnected");
                    }

                    //소켓연결 끊는작업
                    if (socket!=null)
                    {
                        socket.Close();
                    }

                    break;
                }
            }

            //클라이언트 연결이 끊겼거나 또는 예외가 발생했을 때.
            this.Stop();
        }

        public void SendMessage(string message)
        {
            int bytesSend = socket.Send(Encoding.UTF8.GetBytes(message));//UTF8->Bytes
        }

        //직접적으로 로그아웃또는 
        public void Stop()
        {
            stop = true;
            if(socket!=null)
            {
                socket.Close();
                socket.Dispose();
            }
            socket = null;

            //수신하는 쓰레드도 정지
            if(thread!=null)
            {
                thread.Abort();
            }
            thread = null;
        }
    }
    
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace MYTCP
{
    public partial class Form1 : Form
    {
        //클라이언트가 주기적으로 메시지를 보내기위해서
        //Timer
        //소스코드는 앞서저기가 
        bool timerStop = false;
        System.Timers.Timer timer = null;
        public delegate void AsncMethodCaller(Client cnt);
        //
        DateTime receivedSuccessTime = DateTime.Now.AddMilliseconds(10 * 1000);//현재시간+10초


        public Form1()
        {
            InitializeComponent();
        }

        Client client = null;

        private void button1_Click(object sender, EventArgs e)
        {
            Start();
        }

        private void Start()
        {
            if(client == null)
            {
                receivedSuccessTime = DateTime.Now.AddMilliseconds(10 * 1000);
                client = new Client(textBox1.Text, Int32.Parse(textBox2.Text));
                client.OnConnected += TcpConneted;
                client.OnDisConnected += TcpDisConnected;
                client.OnReceived += TcpReceived;
                client.Start();//서버와의 연결이 이뤄지게된다.

                //클라이언트가 주기적으로 메시지를 보내기위해서
                timerStop = false;
                timer = new System.Timers.Timer();
                timer.Interval = 10 * 1000;//테스트
                timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elasped);
                timer.AutoReset = true;
                timer.Start();
            }
        }

        
        //주기적으로 요청
        private void timer_Elasped(object sender,System.Timers.ElapsedEventArgs e)
        {
            if(!timerStop)
            {
                //시간비교차를 이용해서 연결이 송수신을 통해서 정상적인..
                bool validConnection = ValidConnection(receivedSuccessTime, 15);
                if (validConnection&& client!=null)
                {
                    //주기적으로 메시지를 보내고
                    //비동기적으로
                    AsncMethodCaller asncMethodCaller = new AsncMethodCaller(DoPolling);
                    asncMethodCaller.BeginInvoke(client, null, null);
                    //보낸게 일정시간내에 도착을 하면... 연결이 정상이라고 판단을 할수있다.
                }
                else
                {
                    //연결이 비정상적이면
                    Stop();

                    //재연결을 하겠다?
                    Start();
                }

            }
        }

        //메시지를 실질적으로 보내게될 함수,
        private void DoPolling(Client cnt)
        {
            if(client!=null)
            {
                client.SendMessage("polling123");
            }
        }

        //15초내로 
        private bool ValidConnection(DateTime dt,int limitTime)
        {
            //마지막으로 수신한 시간과 현재시간차를 계산.
            int diffSeconds = Convert.ToInt32(DateTime.Now.Subtract(dt).TotalSeconds);//총시간중에 초단위로 시간차를
            if(diffSeconds> limitTime)
            {
                return false;
            }
            else
            {
                //폴링이라던지 기타데이터를 수신하게되면
                return true;
            }
        }

        private void TcpConneted(Socket s)
        {
            this.BeginInvoke(new Action(() =>
            {
                richTextBox1.Text += "[Local]서버접속 성공.\r\n";
            }));
        }

        private void TcpDisConnected(string disconnectMsg)
        {
            this.BeginInvoke(new Action(() =>
            {
                richTextBox1.Text += "[Local]서버접속 해제됨.\r\n";
            }));

            this.TimerStop();
            client = null;
        }

        private void TcpReceived(byte[] bytes)
        {
            receivedSuccessTime = DateTime.Now;//데이터를 수신한 시각
            this.BeginInvoke(new Action(() =>
            {
                richTextBox1.Text += "[Local]수신메시지-" + Encoding.UTF8.GetString(bytes) + ".\r\n";
            }));
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Stop();
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            Stop();
        }

        private void Stop()
        {
            this.TimerStop();
            if (client != null)
            {
                client.Stop();
            }
            client = null;
        }

        private void button3_Click(object sender, EventArgs e)
        {
            if(client!=null)
            {
                client.SendMessage(textBox3.Text);//클라이언트에서 서버로 메시지전송.
            }
        }

        //대문자소문자 섞어서 쓰는데.. 통일
        private void TimerStop()
        {
            timerStop = true;
            if(timer!=null)
            {
                timer.Elapsed-= new System.Timers.ElapsedEventHandler(timer_Elasped);
                timer.Stop();
                timer.Dispose();
                timer = null;
            }
        }
    }
}

 

 

Source : C#.Net 0.5년차~3년차(파트2)

https://www.inflearn.com/course/lecture?courseSlug=%EB%8B%B7%EB%84%B7-%EC%9C%88%ED%8F%BC-2&unitId=77904&tab=curriculum 

 

학습 페이지

 

www.inflearn.com

 

'C#' 카테고리의 다른 글

데이터 바인딩  (0) 2023.06.28
dictionary 설명과 dictionary을 활용한 2문제  (0) 2023.06.21
전기제어 PLC(Programmable Logic Controller)  (0) 2023.06.19
C# 파일과 디렉터리  (0) 2023.06.19
dynamic  (0) 2023.06.18

20230619(월) 울산 맑은샘 헬스

  • 트레드밀 1시간
  • 하늘자전거 5분 전속력
  • 머신 인클라인 벤치프레스 30KG 3SET 20KG 3SET 10KG 3SET

'건강운동관리' 카테고리의 다른 글

헬스  (0) 2023.06.21
헬스  (0) 2023.06.20
헬스  (0) 2023.06.16
헬스  (0) 2023.06.15
헬스  (0) 2023.06.14

+ Recent posts