Computer Science
[Network] 유니캐스트 / 멀티캐스트 / 브로드캐스트
[Network] 유니캐스트 / 멀티캐스트 / 브로드캐스트
2023.03.17유니캐스트(Unicast) 가장 많이 사용하는 통신 방법으로 목적지 주소 하나만 적어서 그 PC 하나에게만 보내는 방식이다. 즉, 1:1 통신이다. 어떤 한 PC가 정보를 전송하기 위한 프레임에 자신의 맥 주소와 목적지의 맥 주소를 첨부하여 전송한다. 같은 네트워크에 있는 모든 시스템들은 그 맥 주소를 받아서 자신의 랜카드의 맥 주소와 비교하여 같다면 프레임을 받아서 처리하고, 같지 않다면 버린다. CPU에 전달하지 않고 바로 버리기 때문에 CPU에 영향을 주지 않아 성능 저하가 발생하지 않는다. 브로드캐스트(Broadcast) 브로드캐스트 도메인안에 있는 모든 PC들에게 한 번에 전송하는 방식으로, 1:N 통신이다. 브로드캐스트는 주소가 미리 정해져있으며, 유니캐스트와 다르게 브로드캐스트는 맥 주소가 ..
[Network] 맥 주소(Mac Address)
[Network] 맥 주소(Mac Address)
2023.03.15맥 주소(Mac Address)?맥 주소는 컴퓨터 간 데이터를 전송하기 위해 있는 물리적 주소이다. 간단히 말해 인터넷을 할 수 있는 이더넷 기반 기기에는 모두 다 하나씩 할당되어 있는 고유한 id이다. 보통 우리가 아는 컴퓨터의 주소는 ip 주소이다 그런데 맥 주소는 또 무엇일까?컴퓨터는 통신할 때 ip 주소 뿐만아니라 맥 주소도 필요하다. 우리가 흔히 아는 ip 주소는 시작점과 끝점에 해당하는 주소를 뜻한다면, 맥 주소는 물리적으로 연결되어 있는 노드와 통신할 때 사용된다. 즉, ip 주소 간의 통신은 각 라우터 홉(hop)에서 일어나는 맥 주소와 맥 주소 통신의 연속적인 과정이다.여기서 홉은 출발지와 목적지 사이에 위치한 경로의 한 부분을 말한다. 간단하게 보면 패킷이 한 라우터에서 다른 라우터로 ..
[Network] UTP 케이블
[Network] UTP 케이블
2023.03.15UTP 케이블? UTP 케이블은 Unshield Twisted Pair 케이블의 줄임말로 절연체로 감싸여 있지 않은 쌍으로 꼬인 케이블을 의미한다. 우리가 흔히 랜선이라고 부르는 케이블이다. 큰 범주로 이더넷 케이블이라고 부르기도 한다. UTP 케이블 뿐만 아니라 STP(Shield Twisted Pair) 케이블도 있다. UTP 케이블 카테고리 UTP 케이블은 전송 가능 대역폭에 따라 카테고리별로 분류한다. 아무리 빠른 네트워크가 들어와도 스펙에 맞지 않는 케이블을 사용한다면 빠른 전송속도를 사용할 수 없다. 카테고리 1: 주로 전화망에 사용하는 용도로 만들어진 케이블. 데이터 전송용으로는 부적합하다. 카테고리 2: 데이터를 최대 4Mbps의 속도로 전송할 수 있는 능력을 가지고 있는 케이블 카테고리 ..
[Network] 이더넷(Ethernet)
[Network] 이더넷(Ethernet)
2023.03.14이더넷(Ethernet)? 컴퓨터 네트워크 기술 중 하나로 사무실, 학교, PC방 등의 LAN(근거리 통신망) 환경에서 많이 활용되고 있는 네트워크 구성 방식이다. 초기의 이더넷은 동축 케이블을 이용하여 버스형으로 네트워크를 구성했었지만 하나의 네트워크 선을 공유하여 사용하였기에 데이터 충돌이 발생했고, 이를 해결하기 위해 CSMA/CD라는 기술이 제안되어 표준으로 채택되었다. 현재는 UTP 케이블 및 광케이블을 사용하는데, 단거리 또는 옥내에서는 UTP 케이블을 사용하고, 먼 거리나 전자파 간섭이 심한 환경에서는 광케이블을 통해 전송한다. 이와 함께 네트워크 구조도 버스형에서 스타형으로 변경되어 모든 케이블이 모이는 네트워크 허브 및 스위칭 허브를 사용하게 되었다. CSMA/CD? CSMA/CD는 LA..
[Unix Programming] ipcs & ipcrm
[Unix Programming] ipcs & ipcrm
2021.12.13ipc 설비의 상태를 출력하는 ipcs와 ipc의 설비를 제거하는 ipcrm 명령어에 대해 알아보자. 먼저 ipcs는 위와 말한 것과 같이 IPC 설비의 현재 상태정보를 출력하는 명령어이다. 위와 같이 상태정보를 확인할 수 있다. 다음으로 ipcrm은 시스템으로부터 IPC 설비를 제거하는 명령어로 작성 형태는 다음과 같다. ipcrm 옵션에 따라 제거할 수 있는 IPC를 정할 수 있다. Message Queue: -q Shared Memory: -m Semaphores: -s
[Unix Programming] Shared Memory
[Unix Programming] Shared Memory
2021.12.13Shared Memory는 여러 process가 동시에 접근할 수 있는 메모리로, 두 개 이상의 process가 물리적 메모리의 일부를 공유한다. 여기서 주의할 점은 아무 process가 접근할 수 있는 것이 아니라, 잘 제어된 함수를 통해 요청한 process만 접근이 가능하다. Shared Memory는 앞에서 봤던 IPC 기법들 중에서 가장 빠르고 효율적이다. Shared Memory 기법의 사용 방법에 대해 간략히 살펴보면, 먼저 shmget 함수를 통해 접근 가능한 메모리 공간 할당을 요청한다. 그다음 shmat 함수를 통해 논리 메모리에 shmget을 통해 얻은 물리 메모리를 mapping 시켜준다. 마지막으로 사용하지 않으면 shmdt 함수를 호출하여 논리 메모리를 통해 물리 메모리에 접근하..
[Unix Programming] Semaphore
[Unix Programming] Semaphore
2021.12.04synchronization 기법 중 하나인 semaphore에 대해 알아본다. Semaphore는 공유된 자원에 대한 접근을 제어 하는 방식으로 1개의 공유되는 자원에 제한된 개수의 process나 thread가 접근할 수 있도록 한다. 다시 말해서, process간의 message 전송 또는 shared memory를 통해 특정 데이터를 공유하게 되는 경우 여러 개의 process가 동시에 접근하면서 문제가 발생할 수 있는데 이 접근을 제어하는 것이 semaphore이다. 이는 mutex와 유사한 기능을 수행하지만, 다음과 같은 차이가 있다. 하나의 process/thread의 접근을 제어하는 mutex와 달리, semaphore는 공유자원에 접근할 수 있는 process/thread의 수를 나타내는..
[Unix Programming] Message Passing
[Unix Programming] Message Passing
2021.12.04Message Passing은 IPC 기법 중 하나로 memory protection을 위해 커널의 도움을 받아 message를 전달한다. 여기서 message는 문자나 byte의 열이라고 생각하면 된다. Message Passing의 방식은 한 process가 msgsnd를 하게되면 사용자의 주소 공간으로부터 message queue에 message가 저장되고, 다른 process가 msgrcv를 하게되면 message queue에 있는 message를 사용자의 주소 공간으로 가져오게된다. 앞에서 본 것과 같이 Message Passing은 커널에 message queue를 만들어서 통신을 한다. message queue는 msgget 함수를 통해 만들어지며 message의 임시 버퍼로 쓰인다. 그럼 ..
[Unix Programming] IPC 기본 개념
[Unix Programming] IPC 기본 개념
2021.12.03IPC 기법에는 여러가지의 종류가 있는데 우선 다음의 기법에 대해 알아보도록 하자. - message passing - shared memory - pipe 우선 위 기법에 대해 알아보기 전, facility key와 get 연산에 대해 먼저 알아야 한다. IPC에는 facility key라는 것이 있는데 이것은 IPC 객체를 유일하게 식별하기 위해 사용되는 수이다. 소켓 통신을 할 때 IP와 Port 번호로 소켓을 유일하게 식별하는 것처럼, IPC 통신에서는 facility key를 사용하여 객체를 식별하는 것이다. facility key 값을 integer 형식의 숫자로 부여해도 되지만 숫자는 중복될 가능성이 높기 때문에 이 위험을 방지하기 위해 ftok이라는 함수를 쓴다. ftok은 파일 이름을 키..
[Unix Programming] Record Locking
[Unix Programming] Record Locking
2021.12.02Record Locking은 두 명 이상의 파일 사용자가 동시에 정보를 업데이트하려고 할 때 발생할 수 있는 오류, 즉 경쟁상태를 방지하기 위해 파일 또는 파일의 일부를 잠그는 것이다. Record Locking read lock - 여러 프로세스들이 같은 구역 동시에 설정 가능(write lock 적용 불가) write lock - 다른 프로세스들의 읽기나 쓰기 록을 불허 record lock을 걸기 위해서 fcntl이란 함수를 사용한다. #include int fcntl(int filedes, int cmd, struct flock *ldata); 여기서 filedes는 file descriptor를 의미하고, cmd는 F_GETLK, F_SETLK, F_SETLKW 을 넣어 설정할 수 있다. str..