전체 글 110

[네트워크 스터디] 4 데이터 링크 계층 : 네트워크 기기 간 전송과 이더넷(MAC 주소, 프레임, 스위치, 전이중 통신, 반이중 통신)

이더넷이란? OSI 7계층 모델의 두 번째 계층인 '데이터 링크 계층'의 기술을 활용해 랜에서 데이터를 주고 받을 수 있다. 데이터 링크 계층에서는 네트워크 장비 간에 신호를 주고 받는 규칙을 정하는데, 그 규칙들 중 '이더넷(Ethernet)'이 일반적으로 많이 사용된다. 랜에 적용된 규칙인 이더넷은 허브 같은 장비에 연결된 컴퓨터와 데이터를 주고 받을 때 사용한다. 이전 포스트에서 더미 허브는 보내고자 하는 목적지가 아닌 다른 곳에까지 데이터를 보내 '더미 허브'라는 이름이 붙었다고 설명했다. 이런 경우에 더미 허브라는 특성 상 컴퓨터 여러 대가 동시에 데이터를 보내고 받는다면 데이터들이 서로 부딪힐 가능성이 있다. (물론 목적지가 아닌 곳에서는 데이터를 보지 못하도록 하는 확실한 규칙이 있다.) 어..

👩‍💻/Network 2020.10.13

[네트워크 스터디] 3 물리 계층 : 데이터를 전기 신호로 변환하기 (랜 카드, UTP/ FTP/STP 케이블, 커넥터, 리피터, 허브, 스위치)

물리 계층에서 하는 일 데이터는 전기 신호로 변환되어 네트워크를 통해 전송된다. 이때 전기신호는 아날로그 신호와 디지털 신호가 있다. 아날로그 신호 : 물결 모양(sin 함수)의 전기 신호로, 전화 회선이나 라디오 방송에 사용되는 신호이다. 자연의 모든 소리, 인간이 만든 음악도 아날로그 형식으로 저장이 가능하다. 디지털 신호 : 막대 모양의 전기 신호로, 특정 데이터를 표현하고자 할 때 전압을 올리고, 데이터가 없을 때 전압을 낮춘다. 기준이 되는 전압이 5v라 했을 때, 이 특정 전압 이상이 되어야 데이터가 존재한다고 이해되며, 그 이하의 전압은 데이터가 없다고 간주된다. (단, 전류는 끊어지지 않고 이어져 있다.) 즉, 네트워크를 통해 데이터가 전달되는 과정은 아래와 같다. 1. 데이터 송신 측 컴..

👩‍💻/Network 2020.10.13

[네트워크 스터디] 2 네트워크의 기본 규칙 (OSI 모델, TCP/IP 모델, 캡슐화, 역캡슐화)

네트워크 통신의 기본 규칙인 프로토콜을 이해한다. OSI 모델과 TCP/IP 모델을 이해하고, 캡슐화와 역캡슐화를 이해한다. 우체국으로 편지를 보내는 과정을 생각해보자. 규칙에는 '편지를 쓰는 규칙', '편지를 보내는 규칙', '우체국의 규칙' 등 여러 가지가 있는데 각각은 서로에게 영향을 주지 않는다는 특징이 있다. 프로토콜 : 통신하기 위한 규칙 OSI 모델과 TCP/IP 모델 지금은 생각할 수 없지만, 같은 회사의 컴퓨터끼리만 통신이 가능하던 때가 있었다. A사의 컴퓨터가 B 사의 컴퓨터와는 통신을 할 수 없었던 것이다. 여기에 케이블을 연결하는 커넥터도 회사별로 다르다면 더 곤란했을 것이다. 이런 일들이 있어 공통으로 사용할 수 있는 표준 규격을 정해야만 했다. 이 표준을 정하는 단체는 여러 곳이..

👩‍💻/Network 2020.10.10

[네트워크 스터디] 1 네트워크의 개요 (패킷, LAN, WAN, 아스키코드, 온프레미스, 클라우드)

네트워크 개요 두 대 이상의 컴퓨터가 모인다면, 컴퓨터 네트워크를 이루고, 컴퓨터 간에 필요한 데이터(정보)를 서로 주고 받을 수 있다. 이 네트워크 종류 중 하나인 인터넷은 전 세계의 큰 네트워크부터 작은 네트워크까지를 연결하는 거대한 네트워크를 말한다. 패킷이란 패킷(packet)은 컴퓨터 간에 데이터를 주고 받을 때 네트워크를 통해 전송되는 데이터의 작은 조각을 말한다. 큰 데이터가 있더라도 작게 나누어서 보내는 것이 규칙. 큰 데이터를 그대로 보낸다면, 해당 데이터는 네트워크의 대역폭을 너무 많이 차지(점유)해서 다른 패킷의 흐름을 막을 가능성 있다. 대역폭(bandwidth) : 일반적으로는 네트워크에서 이용 가능한 최대 전송 속도로, 정보를 전송할 수 있는 단위 시간 당 전송량을 말한다. 사진..

👩‍💻/Network 2020.10.10

[python & ruby] 논리 연산자

루비와 파이썬 모두 논리 연산자 적용이 크게 다르지 않다. 루비의 경우 : puts("아이디를 입력해주세요") input = gets.chomp() real_hannah = "11" real_jessy = "ab" if real_hannah == input or real_jessy == input puts("Hello!, user") else puts("who are you?") end 사용자가 11이나 ab 둘 중 어느 것을 입력하더라도 or로 묶었으므로 참이 뜬다. 파이썬의 경우: in_str = input("아이디를 입력해주세요.\n") real_hannah = "11" real_jessy = "ab" if real_hannah == in_str or real_jessy == in_str: prin..

[python & ruby] 입력과 출력

생활코딩으로 학습 중. 1) 루비에서 사용자의 입력을 애플리케이션으로 가지고 오기 puts("입력해주세요") in_str = gets.chomp() puts(in_str.capitalize() + " world!") 입력해주세요를 화면에 출력하고, gets.chomp()를 이용해 사용자의 입력값을 받아와 변수 in_str에 저장. 받아온 변수를 '문자열의 첫 글자를 대문자로 바꿔주는' capitalize()를 적용해 뒤에 새로 입력한 world!와 함께 출력되도록 하기. 결과는 아래처럼 hannah로 입력한 문자열이 Hannah world!로 출력된 것을 알 수 있다. 2) 파이썬에서 사용자의 입력을 애플리케이션으로 가지고 오기 in_str = input("입력해주세요.\n") print(in_str.u..

[python & ruby] 조건문 만들어보기

생활코딩으로 학습 중. 루비에서 조건문을 만들 때는 if와 end가 각각 조건문의 시작과 끝을 알리는 역할을 해준다. if true puts("code1") puts("code2") end puts("code3") if 뒤에 오는 조건은 true/false로 소문자. 출력되는 결과는 조건이 true이므로 아래와 같다. If~else 구문 user = 11 real = 11 if real == user puts("Hello!") else puts("Who are you") end if의 조건이 참이면 첫 번째 코드를 실행, 거짓이면 else 뒤의 코드를 실행. if~elsif~else 구문 input = 33 real_hannah = 11 real_jessy = "ab" if real_hannah == i..

[python & ruby] 문자열을 제어하기

생활코딩으로 학습 중. '한글'이라는 단어를 살펴보면, 문자와 문자의 결합으로 이루어진 문자열이라 부를 수 있다. 하나의 문자는 character, 문자의 합은 문자열이라는 의미에서 string으로 부른다. 아래는 각각 루비에서 1) 문자열의 첫 글자를 대문자로 바꾸어주는 2) 문자열을 전부 대문자로 바꾸어주는 3) 문자열의 글자 수를 세워주는 4) 문자열의 특정 문자열을 다른 문자열로 치환해주는 기능의 코드들. puts('hello world'.capitalize()) puts('hello world'.upcase()) puts('hello world'.length()) puts('Hello world'.sub('world', 'programming')) 파이썬도 비슷하다. 아래는 각각 파이썬에서 1)..

[python & ruby] 수를 계산하기

import math print(math.ceil(2.2)) print(math.floor(2.7)) print(math.pow(2,10)) print(math.pi) 파이썬에서는 간단한 사칙연산이 아닌 계산을 할 때는 import math 코드를 한 줄 추가해준다. 각각 올림, 내림, 제곱, 파이값을 알아내기 위한 방법들. puts(2.2.ceil()) puts(2.7.floor()) puts(2**10) puts(Math::PI) 루비에서는 print 대신에 puts를 더 많이 쓴다. 줄바꿈을 지원해주기 때문에 print보다는 puts를 쓴다고 한다. 제곱을 표현할 때 math.pow(num, num) 대신 num**num 곱셈 기호를 두 번 써준다. 각각 결과값은 같지만 파이썬에서는 1024.0, ..

[python & ruby] 대화형과 파일형으로 파이썬과 루비 실행하기

생활코딩을 통해 학습 중. 대화형 IDLE로 들어가서 파이썬과 루비가 잘 다운되고 실행되는지 확인해보기. print("hello, world!") 이상하게 cmd에서 python 혹은 python3 키워드가 마이크로소프트 스토어로 연결돼서 python app을 다운로드하는 창으로 연결돼서 python shell에서 실습해보고 있다. 루비 역시 Start Command Prompt with Ruby에서 해당 코드가 잘 실행되고 있다. 파일형 메모장에 위 코드를 넣은 파일을 각각 생성. 파일 형식은 모든 파일, 인코딩은 UTF-8로 설정. 파일을 불러와서 실행시켜도 잘 hello, world가 찍히고 있다. python shell에서는 이상하게 sytanx error가 자꾸 뜨더니만... 루비는 일반 cmd..