분류 전체보기

    유니캐스트, 브로드캐스트, 멀티캐스트

    네트워크상의 통신 방식은 유니캐스트와 브로드캐스트, 멀티캐스트로 나눌 수 있다. 유니캐스트 가장 많이 사용되는 방식으로 송신자와 수신자가 1:1로 통신한다. 송신자가 유니캐스트 프레임에 수신자의 맥 어드레스를 담아 로컬 네트워크에 뿌리면 해당 로컬 네트워크의 모든 PC가 자신의 맥 어드레스와 비교해 자신이 수신자인지 확인한다. 수신자가 아니면 해당 프레임을 버리고, 수신자가 맞다면 랜카드가 CPU로 프레임을 올려 보낸다. 수신자만 CPU로 프레임을 올려 보내기 때문에 다른 PC의 성능을 저하하지 않는다. 브로드캐스트 로컬 랜에 속한 모든 네트워크 장비에 보내는 통신이다. 브로드캐스트에서 맥 어드레스는 미리 정해진 FFFF .FFFF . FFFF라는 주소를 사용하며, 맥 어드레스가 달라도 무조건 패킷을 C..

    맥 어드레스(MAC Address)

    맥 어드레스 맥 어드레스는 네트워크 통신에서 통신 주체들을 구분하는 주소다. 이때 맥은 Media Access Control의 약자다. 맥 어드레스는 랜카드 혹은 네트워크 장비의 주소이기 때문에 하드웨어 주소, 물리적 주소라고도 불린다. 맥 어드레스는 열두 자리의 16진수로 이루어져 있으며 앞쪽 여섯 자리는 생산자를, 뒤쪽 여섯 자리는 시리얼 넘버를 나타낸다.

    이더넷(Ethernet)과 토큰링(TokenRing)

    이더넷과 토큰링은 데이터 네트워크의 대표적인 두 가지 형태다. 이더넷 통신하기 전에 현재 네트워크상에서 통신이 일어나고 있는지 확인한 뒤 해당 통신이 끝난 뒤에 통신하는 방식이다. 여러 장비가 동시에 통신하게 되면 충돌이 발생하며, 이 경우 랜덤한 시간을 기다린 후 다시 데이터를 전송한다. 이 때문에 충돌이 너무 많이 발생하면 통신이 불가능하다는 단점이 있다. 충돌을 감지하기 위해 CSMA/CD(Carrier Sense Multiple Access/Collision Detection)라는 프로토콜을 사용한다. 토큰링 토큰을 가진 PC만 통신할 수 있는 방식이다. 데이터를 전송했거나 보낼 데이터가 없다면 다음 차례의 PC에 토큰을 전달한다. 충돌이 발생하지 않는다는 장점이 있지만 보낼 데이터가 있든 없든 ..

    C언어란?

    C언어란 벨 연구소에서 개발한 절차 지향 프로그래밍 언어로 유닉스(UNIX) 운영체제에서 사용하기 위해 개발되었다. 고급 언어이지만 저급 언어의 특징도 갖고 있다. C언어의 장점은 다음과 같다. C언어로 작성된 프로그램은 다양한 하드웨어로 이식하기 좋다. 코드가 단순해서 유지보수가 쉬운 편이다. 저급 언어의 특징을 갖고 있어서 어셈블리어 수준으로 하드웨어를 제어할 수 있다. 코드가 간결해서 완성된 프로그램의 크기가 작고 실행 속도가 빠르다. 단점은 저급 언어의 특징을 지녔다는 점 때문에 다른 고급 언어보다 배우기가 어렵다는 것과, 시스템 자원을 직접 제어할 수 있기 때문에 프로그래밍 할 때 주의해야 한다는 것이다. 참조 코딩의 시작, TCP School

    네트워크 패킷과 프로토콜 데이터 단위

    1. 패킷 패킷(Packet)이란 네트워크를 통해 전송하기 쉽도록 자른 데이터의 전송단위로, 데이터의 형식화된 블록이다. 패킷은 헤더(제어 정보)와 페이로드(사용자 데이터), 트레일러로 이루어지며, 헤더는 주로 패킷의 수신지와 관련된 정보가 포함되고 트레일러에는 에러 정보가 포함된다. 만약 시스템이 패킷을 지원하지 않는다면 바이트와 문자열, 비트를 독립적으로 전송해야 하므로 효율성과 안정성이 떨어진다. 다음은 네트워크에서 데이터를 전송할 때 패킷이 조합되는 과정으로, TCP/IP 모델을 기준으로 설명한 것이다. 먼저 최상위 계층인 응용 계층에서 전송 계층으로 페이로드를 넘긴다. 전송 계층에서는 응용 계층에서 건네받은 페이로드에 헤더를 추가한 뒤 인터넷 계층으로 넘긴다. 인터넷 계층에서는 전송 계층에서 건..

    리팩터링이란?

    리팩터링의 정의는 다음과 같다. 리팩터링(refactoring)은 소프트웨어 공학에서 '결과의 변경 없이 코드의 구조를 재조정함'을 뜻한다. 주로 가독성을 높이고 유지보수를 편하게 한다. 버그를 없애거나 새로운 기능을 추가하는 행위는 아니다. 사용자가 보는 외부 화면은 그대로 두면서 내부 논리나 구조를 바꾸고 개선하는 유지보수 행위이다.(위키백과 참조) 딱히 어려운 내용은 아니라서 굳이 설명을 덧붙일 필요는 없어 보인다.

    모듈화 프로그래밍이란?

    📕모듈화 프로그래밍이란? 소프트웨어 개발에서 모듈이란 독립적인 기능이 있는 단위(unit)를 뜻한다. 여기서 중요한 것은 독립적이어야 한다는 것이다. 모듈은 모듈 자체로서 재사용될 수 있고 컴파일할 수 있어야 한다. 만약 모듈이 독립적이지 않다면 수정 과정에서 다른 모듈에 영향을 끼치게 되며 기능을 나눈 의미가 없어지게 된다. 모듈의 정의에서 알 수 있듯 모듈화 프로그래밍이란 프로그램을 설계할 때 프로그램의 각 기능을 분리하는 것이다. 이렇게 하면 프로그램의 복잡도가 줄어들어 유지 보수 및 코드 재사용이 쉬워진다. 즉 효율성이 향상된다. 모듈화 프로그래밍을 할 때 각 모듈의 크기는 정해진 바가 없지만 대신 몇 가지 지켜야 할 원칙이 있다. 앞서 말했듯 각 모듈은 독립적이어야 하며, 각 모듈은 가능한 한 ..

    가상메모리

    https://inf.run/bXfg 그림으로 쉽게 배우는 운영체제 - 인프런 | 강의 이 강의를 통해 모든 개발자들이 필수로 알아야하는 운영체제의 원리를 알 수 있습니다., - 강의 소개 | 인프런... www.inflearn.com 본 포스팅은 위 링크의 강의를 요약/정리한 것으로, 지식의 공유보다는 개인적으로 공부하고 복습하기 위해 작성한 글입니다. 가상메모리 가상메모리란? 🔗당장 실행해야 하는 부분만 메모리에 넣고 나머지는 보조기억장치(스왑 영역)에 넣어 동작하도록 하는 것이다. 이렇게 함으로써 메모리보다 큰 프로세스나 운영체제를 실행할 수 있다. 🔗프로세스는 메모리 관리자를 통해 메모리에 접근하기 때문에 물리 메모리에 직접 접근할 일이 없다. 메모리 관리자는 프로세스의 요청이 있으면 그에 맞는 ..

    메모리 종류

    https://inf.run/bXfg 그림으로 쉽게 배우는 운영체제 - 인프런 | 강의 이 강의를 통해 모든 개발자들이 필수로 알아야하는 운영체제의 원리를 알 수 있습니다., - 강의 소개 | 인프런... www.inflearn.com 본 포스팅은 위 링크의 강의를 요약/정리한 것으로, 지식의 공유보다는 개인적으로 공부하고 복습하기 위해 작성한 글입니다. 메모리 종류 레지스터 🔗가장 빠른 기억 저장소로 CPU 내에 존재한다. 🔗CPU는 계산을 처리할 때 메인메모리에 있는 값을 레지스터로 가져와 계산한 뒤 계산 결과를 다시 메인메모리에 저장한다. 🔗휘발성 메모리다. 캐시 🔗필요할 것 같은 데이터를 미리 저장하는 곳이다. 메인메모리에 있는 값을 레지스터로 옮기려면 오래 걸리기 때문에 필요할 것 같은 데이터를..

    데드락

    https://inf.run/bXfg 그림으로 쉽게 배우는 운영체제 - 인프런 | 강의 이 강의를 통해 모든 개발자들이 필수로 알아야하는 운영체제의 원리를 알 수 있습니다., - 강의 소개 | 인프런... www.inflearn.com 본 포스팅은 위 링크의 강의를 요약/정리한 것으로, 지식의 공유보다는 개인적으로 공부하고 복습하기 위해 작성한 글입니다. 데드락이란? 데드락 🔗Deadlock, 교착상태 🔗여러 프로세스가 서로 다른 프로세스의 작업이 끝나길 기다리느라 아무도 작업을 못 하는 상태를 뜻한다. 🔗만약 어떤 자원을 여러 프로세스가 공유하지 않는다면 교착상태는 발생하지 않는다. 🔗교착상태가 일어나는 조건은 다음 네 가지다. 네 가지를 모두 충족하지 않는다면 교착상태는 일어나지 않는다. 상호배제: ..