: 스토리지의 대용량화

: 스토리지의 고속화

: 스토리지의 고도화 - 여러 기능의 등장으로 인해 물리 디스크의 효율적인 이용이 가능해짐


21. 스토리지

: 데이터를 저장하는 장치를 스토리지

: 스토리지에는 로컬 스토리지와 외부 스토리지가 있다.

: 외부스토리지는 서버에 직접 연결하는 DAS와 네트워크를 통해 연결하는 NAS, SAN으로 나뉜다.

로컬 스토리지

: 서버 내부에 디스크를 설치해서 이용하는 저장 영역

외부 스토리지

: 세가지 형태가 존재한다.

DAS

: 서버에 직접 연결하는 스토리지 장비

: 서버에 RAID 컨트롤러 보드를 꽂아 연결하는 형태와 HBA 보드를 꽂아 연결하는 형태가 있다.

: 전자는 RAID컨트롤러 보드가 RAID구성을 관리하지만, 후자는 스토리지에 내장된 RAID 컨트롤러가 RAID구성을 관리

: 최근에는 DAS를 사용하지 않고 로컬 스토리지를 선택하는 경우가 늘고 있다.

NAS

: NAS는 네트워크를 통해 여러대의 서버가 액세스 할 수 있는 스토리지

: 여러 대의 서버에서 데이터를 공유할 때나, 여러 대의 서버에서 발생하는 백업 및 로그 파일을 한군데에 모으는 용도로 사용

SAN

: 블록 단위의 데이터 스토리지 전용 네트워크

: 고속, 고품질 환경을 요구하는 환경에서 사용

RAID와 핫스페어

: 여러 개의 디스크로 RAID를 구성하여 큰 스토리지 영역으로 사용함, 이를 볼륨이라고 부름

: 핫스페어란 다른 디스크가 망가졌을 때를 위해 대기하는 디스크


22. 외부 스토리지 이용

: 저장 영역을 많이 확보하고 싶다

: 디스크 I/O 성능을 높인다. - 대역폭이 넓어지므로

: 스토리지를 통합해서 집중 관리한다.

: 복수의 서버에서 데이터 공유


23. 스토리지의 고급 기능

씬 프로비저닝

: 물리 스토리지 용량보다 많은 논리 볼륨을 할당할 수 있는 기능

: 가상 서버 환경에서 효과적이다.

자동 계층화

: 서로 다른 성능의 디스크를 조합하여 이용 빈도가 높은 데이터는 고가의 빠른 장비에 저장

: 구현 방법은 제품에 따라 달라지며, 캐싱과 비슷한 원리인듯!

디둡

: 중복 제거 기능

: 백업 시에 중복되는 데이터를 제거하여 저장하므로, 물리 스토리지 용량을 절약할 수 있다.

스냅샷

: 어떤 순간의 파일 시스템의 정지점을 순간적으로 보존해 두는 기능

: 파일을 복사해 두는 것이아니라, 갱신 이력 정보를 관리함으로써, 이전 포인터를 저장하는 것

'독후감 > 인프라 엔지니어의 교과서' 카테고리의 다른 글

4. 네트워크  (0) 2017.12.01
3. 운영체제  (0) 2017.12.01
2. 서버  (0) 2017.12.01
1. 인프라 엔지니어의 업무  (0) 2017.12.01

: 복수의 노드를 유선 또는 무선으로 연결한 집합체이다.

: 네트워크 장비란, LAN케이블과 광섬유 케이블 등을 집약해 통신을 교환하는 장치를 말한다.

: 네트워크 장비도 랙 마운트형 서버처럼 19인치 랙에 넣는 것을 전제로 한 유닛단위의 형태로 되어있다.

: 네트워크 장비에는 라우터, L2스위치, L3스위치, L4스위치, L7스위치 등이 있다.


16. 네트워크 장비 선택

라우터의 역할

: 수신한 패킷을 적절한 경로로 전송하는 네트워크 장비

: LAN끼리의 통신을 한다.

: 라우터가 패킷을 받으면, 라우터는 패킷에 있는 목적지인 IP 주소를 보고 적절한 라우터로 전송한다.

: 라우팅 테이블에 패킷의 IP가 존재하는 경우 라우팅 테이블에 따라서 전송하지만, 아닐 경우에는 기본 게이트웨이로 전송한다.

라우팅 테이블 관리 방법

스태틱 라우팅

 : 라우터에 경로 정보를 수동으로 등록

 : 통신 경로가 제한되는 사내 데이터 센터의 경우 스태틱 라우팅이 최적

다이내믹 라우팅

: 이웃한 라우터와 통신하여 라우터끼리 경로 정보를 자동으로 갱신

: RIP, OSPF, BGP 등의 라우팅 프로토콜 사용

: 외부 라우터와 접속이 빈번할 때 사용

라우터의 선택 포인트

: 상위 회선의 인터페이스와 일치하는 WAN 인터페이스를 가져야함

: WAN에서의 통신대역보다 큰 것은 의미가 없다.

: 스루풋

: 단위 시간당 데이터 전송량

: 통신량이 많으면 스루풋이 높고 빠른 라우터를 도입해야함.

: 보안 기능을 라우터에도 요구할 것인가?

: 특정 TCP/UDP 포트번호나 특정 IP주소를 차단하는 필터링 기능

: 대규모의 경우 라우터와 보안을 분리하는게 좋음.

: 도입비용

: 1Gbps의 인터페이스를 가지는 라우터가 있을 떄, 고가의 라우터가 해당 속도에 가깝게 나온다.

L2와 L3스위치의 역할

L2 스위치

: 업무용 스위칭 허브

: L2 스위치에 프레임이 들어오면, MAC주소를 보고 적절한 포트로 프레임을 전송한다.

: 해당 MAC주소가 없다면, LAN 내 전체에 브로드 캐스트 해서 응답이 있는 포트로 전송한다.

L3 스위치

: 라우터 기능이 추가된 L2 스위치

: 목적지 주소를 보고 적절한 포트로 패킷을 전송한다.

L2와 L3 스위치 선택 요령

인터페이스의 속도와 포트 수

: 필요한 인터페이스 속도와 포트 수를 만족하는지?

지능형 또는 비지능형

: 지능형 스위치는 웹 접속 혹은 텔넷 접속으로 포트 설정을 변경하거나 스위치의 상태 및 통신량을 확인할 수 있다.

스위칭 능력과 스위칭 용량

: 대량의 통신을 빠짐없이 빠르게 전송하는 것

- 스위칭 능력, 스위칭 용량, 와이어 스피드와 논블로킹

하드웨어 처리와 소프트웨어 처리

: 사용하는 기능이 하드웨어 처리인지 소프트웨어 처리인지?

: 소프트웨어 기능을 너무 사용할 경우, CPU사용률이 올라가기 때문에 방화벽같은 경우에는 장비를 따로 쓰는게 낫다.

L4와 L7 스위치(로드 밸런서)를 선택한다.

: 로드밸런서(부하 분산 기능)가 달린 L3 스위치이다.

- L4 : IP와 TCP/UDP 포트를 보고 적절한 서버로 패킷을 전송한다.

- L7 : URL을 보고 적절한 서버로 전송한다.

: 특징은 부하를 분산할 때 서버가 살았는지 죽었는지 감시한다는 점.

: L4 스위치는 서버의 IP 주소와 TCP/UDP 포트의 조합을 일정 간격으로 감시해, TCP/UDP 포트로부터 응답이 없으면 그 포트의 기능이 정지됐다고 판단.

: L7스위치도 특정 URL을 일정 간격으로 감시하고 예정한 응답이 돌아오지 않으면 부하 분산 대상에서 제외한다.

: L4/L7 스위치를 선택할 때 같은 업체 제품으로 하면 명령체계가 통일되므로 다루기 쉽다.


: IA 서버는 다른 업체에서도 같은 운영체제를 사용하므로 업체가 바뀌어도 크게 위화감이 없지만,

: 네트워크 장비는 서로 독자적인 OS를 사용하기 때문에 명령체계가 다르다.


17. 네트워크의 토폴러지

: 네트워크 설계는 조건과 환경에 따라 무수한 조합이 있지만, 자주 사용되는 몇 가지 패턴을 소개한다.

프론트 엔드와 백엔드 2계층 구조

프론트 엔드 계층

: 인터넷에서 가까운 곳에 위치

: 서버에 글로벌 IP를 부여해서 인터넷에서 직접 통신하는 경우와

: L4 스위치를 매개로 인터넷과 통신하는 경우

백엔드 계층

: 인터넷에서 먼 곳에 위치

: 프론트 엔드 계층을 거쳐야만 액세스 할 수 있음

: 외부에서 직접 해킹 공격을 받지 않음

3계층 구조

코어 계층

: 네트워크 하나에 코어계층 한 세트를 설치

: 디스트리뷰션 계층에서 오는 통신을 집약해 인터넷에 연결

디스트리뷰션 계층

: 디스트리뷰션 계층의 통신을 집약해서 코어 계층에 연결하고 액세스 계층 간의 통신을 중계한다.

: 사무실에서는 각 층마다 디스트리뷰션 계층을 한 세트 배치한다.]

액세스 계층

: 서버에서 오는 통신을 집약해서 디스트리뷰션 층에 연결

: 프론트엔드와 백엔드 2게층 구조가 액세스 계층에 놓인다.


네트워크 패브릭 구조

: 기존에는 네트워크 구성이 정해지면 구성제약 속에서 서버와 랙의 물리적 배치를 결정해야만 했다.

: 하지만, 서버의 성능 향상 및 가상화의 보급으로 서버 한대에서 입출력 되는 트래픽이 계속 늘어나면서, 네트워크 장비가 병목을 일으키는 상황이 증가하였다.

: 액세스 계층의 L2 네트워크를 가상화 하여 물리적으로 다른 랙이나 스위치를 논리적으로 한 네트워크로 보이게 하는 기술


18. 네트워크 기본용어 요점 정리

TCP/IP

: 인터넷에서 일반적으로 이용되는 프로토콜

OSI 참조 모델

TCP와 UDP

- TCP 

: 연결 지향형 프로토콜이고 고품질 통신을 실현한다.

: 패킷의 순서를 재배열할 수 있고, 패킷이 유실될 경우 재전송한다.

: 오버헤드가 크고 UDP와 비교하면 느리다

: 신뢰성이 필요한 애플리케이션에서 사용

- UDP

: 비연결형 프로토콜이고 저품질이지만 속도가 빠름

: 음성 전화나 동영상등 정보가 일부 유실돼도 문제없는 애플리케이션에 이용

3웨이 핸드쉐이크 : SYN과 ACK

: TCP연결에서는 3웨이 핸드쉐이크를 거쳐서 TCP 연결을 확립함.

: SYN과 ACK를 서로 주고받음

스위칭과 라우팅

: LAN 안에서 L2 스위치를 통한 통신을 스위칭이라고 한다.

: 라우터 혹은 L3 스위치를 통해서 LAN과 LAN 사이를 걸쳐 통신하는 것을 라우팅이라고 한다.

IPv4와 IPv6

: 앞으로 IPv6의 동향을 지켜보아야 한다.

네트워크 인터페이스를 묶는다

: 주요 운영체제에서는 네트워크 인터페이스를 묶어서 사용할 수 있다.

: 여러 개의 네트워크 인터페이스에 같은 IP 주소나 MAC주소를 부여해서 통신하는 구조

: 내장애성이 올라가고 대역이 늘어나는 효과

: 본딩, 티밍, 링크 어그리게이션, 이더채널, 포트 트랭킹


19. 인터넷 연결

: 인터넷에 연결하기 위해서는 라우터 혹은 L3 스위치가 외부 네트워크 회선에 연결되어야 한다.

: 요금제 - 고정대역 사용 무제한, 종량과금


20. 네트워크 케이블

: 네트워크 배선에 사용되는 케이블이란?

LAN 케이블

: UTP 케이블, 트위스트 페어 케이블, 이더넷 케이블 등...

: 이더넷이 고속화 됨에 따라서 LAN 케이블도 점점 새로운 규격이 등장하고 있다.

: 서버와 네트워크 장비의 연결에는 CAT5e, 네트워크 장비간의 통신에서는 CAT6~CAT7

광파이버 케이블

: 멀티 모드 파이버, 싱글 모드 파이버

: 네트워크 장비 내부에서는 전기 신호로 전달되므로, 광신호와 전기신호를 변환하는 네트워크 장비로 트랜시버가 이용됨.


'독후감 > 인프라 엔지니어의 교과서' 카테고리의 다른 글

5. 스토리지  (0) 2017.12.02
3. 운영체제  (0) 2017.12.01
2. 서버  (0) 2017.12.01
1. 인프라 엔지니어의 업무  (0) 2017.12.01

13. 리눅스

: 오픈소스의 대표적인 운영체제

: 레드햇 계열과 데비안 계열등 다양한 배포판이 존재

14. 윈도 서버

: MS가 제공하는 서버용 운영체제

: 익숙한 GUI 때문에 다른 운영체제보다 문턱이 낮은 측면이 있다.

윈도 서버 선정 이유

: 윈도 서버에서 실행되는 소프트웨어를 사용하고 싶다.

: 닷넷 프레임워크를 사용하고 싶다.

: 액티브 디렉터리 환경을 사용하고 싶다.


15. 유닉스

: 하드웨어에 의존하지 않으며 이식성이 뛰어난 C언어로 작성

: 소스 코드 크기가 비교적 작아서 다양한 플랫폼에 이식됨.

: 엔터프라이즈 서버 운영체제로 이용되는 일이 많음.

대표적인 유닉스 운영체제

: AIX, Solaris, HP-UX


'독후감 > 인프라 엔지니어의 교과서' 카테고리의 다른 글

5. 스토리지  (0) 2017.12.02
4. 네트워크  (0) 2017.12.01
2. 서버  (0) 2017.12.01
1. 인프라 엔지니어의 업무  (0) 2017.12.01

다른 개발자로부터 이해 받길 원하기 보다는 이해 하기를 우선으로 하라!


: 서버란 사용자의 요청을 받고 응답을 반환하는 하드웨어를 말한다.

: 형태의 차이, 등급의 차이, 물리서버가 아닌 형태 등 다양한 선택지가 있다. 


5. 서버의 종류

랙 마운트형과 타워형 서버의 차이

랙 마운트형 서버

: 데이터 센터나 서버 룸에 설치된 랙 안에 들어간다.

: 19인치 랙에 수용하는 것을 전제로 함. (1U는 1.75인치)

타워형 서버

: 사내 서버룸에 설치되거나 사무실 또는 점포등에도 설치


: 소음과 설치 장소, 환경을 고려해야 한다.

엔트리, 미들레인지, 하이엔드 서버

: 서버의 용도에 따라 등급이 달라진다.

엔트리 서버

: 웹 서버나 애프릴케이션 서버에 이용

미들레인지 서버

: DB서버나 기간계 서버에 이용(미션 크리티컬 시스템, 엔터프라이즈 시스템, 백본 시스템 등...) - 기업 경영의 핵심이 되는 재무, 업무, 생상관리 시스템

하이엔드 서버

: DB나 기간계 서버에서 시용

IA서버

: 인텔이나 AMD등 인텔 호환  CPU를 탑재하고 일반 컴퓨터와 같은 아키텍쳐를 기반으로 만들어진 서버

엔터프라이즈 서버

: 기간계에 사용되는 서버



TIP - 서버와 일반 컴퓨터의 차이

: 서버는 일반 컴퓨터와 마찬가지로 메인보드, CPU, 메모리, 디스크 등의 부품으로 구성된다.

: 부품 자체의 품질이 더 높아서 고장이 잘 나지 안흔다.

: 업체의 AS가 충실하다.

: 훨씬 더 많은 추가 메모리와 하드디스크를 장착할 수 있다.

: 일반 컴퓨터는 그래픽, 음향등 멀티 미디어 기능에 충실하다.


6. 서버 선정

서버의 조건

: 필요한 하드웨어 자원의 사용량을 정하고 나서 CPU, 메모리, 디스크, NIC 포트 수 등을 결정한다.

서버 사양 결정 방법

: 실제 환경을 시험적으로 구축해 측정 결과를 보고 판단한다.

: 임시로 결정한 서버 사양의 기기를 현장에 투입해 실제 하드웨어 자원의 이용 상황을 측정한 다음, 서버와 서버의 부품을 늘리거나 줄인다.

: 소거법으로 사양을 좁혀간다.

스케일 아웃과 스케일 업

: 스케일 아웃은 서버의 수를 늘려서 수용량을 늘리는 방법

: 스케일 업은 성능이 부족해지면 서버의 하드웨어적인 성능을 높이는 방법


7. CPU

성능과 발열, 소비 전력

: 예전에는 주파수를 높여서 성능을 증가시켰지만, 최근에는 주파수를 높임으로써 발생하는 소비 전력의 비용이 더 크게 되었다.

: 따라서 최근에는 멀티코어나, 하나의 CPU에서 여러 연산을 동시에 처리함으로써 연산 능력을 향상시키려고 한다.

CPU용어

: 소켓수, 코어수, 스레드 수, 동작 주파수, 캐시, 하이퍼스레딩, 터보부스트

CPU 선정의 포인트

: 성능, 가격, 사용할 소프트웨어의 라이선스 체계, 소비전력


8. 메모리

: 단기 기억 영역

: 용량도 중요하지만, 서버용 메모리에서는 내장애성, 성능, 저전력 등이 중시된다.

성능

: 메모리 자체의 속도와, 데이터 전송폭을 고려한다.

메모리 용어

: 슬롯, ECC메모리, 채널, 랭크...


9.디스크의 종류

: 가정용에서는 일반적으로 SATA 하드 디스크와 SSD가 사용, 업무용에서는 더 다양한 디스크가 존재한다.

SATA 하드 디스크

: 저렴하다, 하루 8시간 가동용도로 사용

SAS 하드 디스크

: 고속으로 동작하고 신뢰성이 높다. 24시간 365일 가동

FC 하드 디스크

: 초고속으로 동작하고 신뢰성이 높다, SAN스토리지 등 엔터프라이즈 용도로 사용

그 밖의 디스크

: 니어라인 하드 디스크, ssd, 엔터프라이즈 플래시 메모리 스토리지

10. RAID

: 성능과 내장애성을 높이기 위한 목적으로 이용

: 병렬로 연결하거나 패리티 체크, 로그 저장 용도로 구현

11. 가상화

: 예전에는 한대의 물리 서버에는 보통 하나의 운영체제만 가동할 수 있었다.

: 반면 가상화 기술을 사용하면, 한 대의 물리 서버에서도 여러 개의 게스트 운영체제를 가동할 수 있다.

: CPU, 메모리, 네트워크, 디스크 등의 하드웨어 자원을 각 게스트 운영체제에 자유롭게 할당한다.

물리서버와 가상서버의 특징

물리서버

: CPU 사용률과 디스크 I/O부하, 디스크 사용 용량이 많은 용도에 적합

: DB서버, 애플리케이션 서버 등이 적합

가상 서버

: CPU사용률과 디스크 I/O, 디스크 사용 용량이 적은 용도에 적합

: 웹서버, 개발 서버, 메모리 DB 등이 적합

물리서버를 가상화할 때의 장점과 단점

장점

: 비용을 줄일 수 있다.

: 게스트 운영체제의 하드웨어 자원을 유동적으로 운영할 수 있다

: 하드웨어에 종속적이지 않다.

단점

: 다른 운영체제가 하드웨어 자원을 많이 사용하면, 다른 게스트의 운영체제의 동작이 불안정하다.

: 관리가 생각보다 쉽지 않다.( 까먹고 자원을 계속 할당해놓을 수도 있음 )

가상화 모델

: 하드웨어 자원 및 게스트 운영체제를 관리하는 프로그램이 필요하다.

: OS위에 게스트 운영체제를 관리하는 프로그램을 두고 가상화 환경을 다룸.

: 중간에 OS를 두기 때문에 오버헤드가 생겨 동작 속도가 느려질 수 있음.

: 호스트 운영체제 대신 하이퍼 바이저를 두고 운영

: 빠른 동작속도를 기대할 수 있음.

: 개인 PC에서는 호스트 운영체제 타입을 채용하는 경우가 많지만, 서버에서는 하이퍼바이저 타입을 채용하는 일이 많음.

가상화 환경의 종류

VMware vSphere

: vmware 사가 제공

Hyper-V

: MS가 제공

Xen

: 캠프리지 대학교의 연구 프로젝트로 시작되어 리눅스 재단에서 공동 프로젝트로 진행하고 있다.
: IaaS형 클라우드로써 AWS와 구글이 지원한다.

KVM

: 레드햇 엔터프라이즈 리눅스에서는 KVM만 지원하고 있음.

가상화 환경을 선택하는 방법

: 윈도우와 리눅스가 섞여 있는 환경에서는 VMware를 사용

: 윈도우가 중심인 환경에서는 Hyper-V

: 리눅스가 중심인 환경이고 초기 도입 비용을 들이고 싶지 않을때는 Xen이나 KVM

: 레드햇은 KVM


12. 클라우드 : IaaS

: 인터넷을 거쳐서 제공되는 컴퓨터 자원을 이용하는 것

: SaaS, PaaS, IaaS로 분류된다.

SaaS : 애플리케이션을 서비스로써 제공한다.

PaaS : 애플리케이션 실행 환경을 서비스로써 제공한다.

IaaS : 시스템 인프라를 서비스로써 제공한다.


IaaS특징

: 사내에 물리서버를 두지 않으므로, 물리 서버를 관리하는 엔지니어가 필요없다.

: 이용 신청을 하면 단기간에 운영체제가 설치된 상태로 바로 사용할 수 있다.

: 이용하고 싶은 만큼 서버를 증강할 수 있다.

: 사용한 만큼 비용이 발생하는 종량과금제이다.

: 감가상각을 할 필요가 없고, 이용료를 그대로 비용처리하면 된다.


클라우드 환경에서의 인프라 이용

: 네트워크 환경 구축 - 물리서버 구매 및 장착 - 운영체제를 설치하고 설정의 과정을 생략가능


클라우드와 서버 운영

클라우드의 약점

: 스케일 업에 약하다.

: 이런 이유로 DB만은 물리서버로 제공하는 클라우드 업체도 있다.

: 물리 서버 장애에 대해서 무력하다.

: 바로 다른 물리 서버에서 인스턴스를 시작하는 대처 방법도 있다.

: 업체의 착오로 데이터 소실의 위험이 존재한다.

: 항상 백업을 해야 한다.


클라우드에 맞지 않는 용도

기밀 정보 저장

: 정보가 인터넷을 거쳐 간다는 점.

: 직접 관리할 수 없는 곳에서 기밀 정보 유출이 발생할 위험이 존재한다.

대용량 파일 전송

: 사내에 서버를 설치할 떄 본다 파일 전송이 느려진다.

대규모 시스템

: 시스템 규모가 커지면, 직접 장비를 보유하는 편이 비용면에서 유리하다.






'독후감 > 인프라 엔지니어의 교과서' 카테고리의 다른 글

5. 스토리지  (0) 2017.12.02
4. 네트워크  (0) 2017.12.01
3. 운영체제  (0) 2017.12.01
1. 인프라 엔지니어의 업무  (0) 2017.12.01

내가 생각하는 인프라 엔지니어의 역할

: 정보화 사회의 고도화된 IT 인프라를 지탱하는 일

: 과거에는 비즈니스의 안정적인 지원이었지만, 현재에 이르러서는 비즈니스의 혁신을 주도한다.



1. 인프라 엔지니어의 업무

: 크게 인프라 설계, 인프라 구축, 인프라 운영 세단계로 분류할 수 있다.

인프라 설계

: 인프라를 만드는 목적을 이해해야 한다.

: 목적을 달성하는데 필요한 기능이나 성능 등을 정리한다.

: 비용과 기간을 예측하여 기획서와 설계서를 작성한다.

: 책임자에게 결제를 올린다.

인프라 구축

: 직접하는 경우도 있고, 오퍼레이터나 외부 업체에 맡길 때도 있다.

: 기기의 운반과 조립, 장착, 설치, 설정, 동작 테스트, 부하테스트 등으로 분류할 수 있다.

: CE(Customer Engineer) : 하드웨어 관련 작업

: SE (System Engineer) : 서버나 스토리지 설정

: NE(Network Engineer) : 네트워크 장비 설정

: 이런식으로 분업화 하기도 한다.

인프라 운영

: 24시간, 365일 내내 가동되어야 함.

: 장애대응, 수용량 관리, 인프라가 원인이 아닌 문제의 파악으로 나눌 수 있다.

장애대응

: 하드웨어 고장, 급격한 액세스 증가에 대한 대책, 부적절한 권한 설정에 의한 액세스가 불가능한 상황의 해소

수용량 관리

: 액세스 수나 데이터 양이 유동적이므로, 적절하게 조정한다.

인프라가 원인이 아닌 문제의 파악

: 프로그램의 버그나 애플리케이션의 설정 실수 일수도 있다.


2. IT 인프라를 구성하는 요소

퍼실리티

: 건물, 시설, 설비등을 의미

: 데이터 센터와 데이터 센터를 구성하는 랙, 에어컨, 발전기, 변압기, 소화 설비등이 포함.

서버, 스토리지

: IT 서비스를 제공하는 서버와 데이터를 대량으로 저장하는 스토리지

네트워크

: 서버와 스토리지를 연결하고 인터넷에 접속하는 네트워크


3. 기술자 관점에서 보는 인프라 엔지니어

: 요청된 과제에 대해 기술적인 관점에서 적절한 답을 제안하고 실천할 수 있어야 함.

: 단기간에 본질적인 해결책을 제시할 수 있는 기술자

: 최신 동향에도 정통해야함.

서버 하드웨어

: IA(Intel Architecture) 서버와 엔터프라이즈 서버 두가지가 존재

서버 운영체제

: 거이 리눅스, 윈도우, 유닉스 세가지로 집약

스토리지

: 스토리지 가상화, 씬 프로비저닝, 중복제거, 스냅샷 등 신기술이 등장.

: 각 기술의 장단점을 파악하고 비용대비 효과 측면에서 적절한 스토리지를 선정

네트워크 설계와 구축

: TCP/IP로 거의 집약

네트워크 장비

: 통신의 교환

: 네트워크 장비는 업체마다 명령 체계가 다르기 때문에 업체별 명령 체계를 학습해야할 필요가 있다.


4. 선정자로서의 인프라 엔지니어

시스템 구성

: 어느 규모로 어떻게 구성할 것인지?

서버 사양 선정

: CPU, 메모리, 디스크, RAID, NIC, PSU의 이중화 필요성, 보수연수, 보수 레벨, 확장성, 물리적 크기 및 중량 등이 있다.

네트워크 구성

: 보증기간, 업체, 스위치를 몇개?, 수용량, 이중화 여부 등등...

데이터 베이스 설계

: RDBMS, 필요 용량 계산, 데이터베이스 스키마와 물리적인 데이터 배치 결정

운영 시스템

: 시스템을 어떻게 감시하고 운영할 것인지?

: 장애의 발생을 시스템 감지 도구로 감지하고, 장애 발생을 감지했을 떄만 사원이 대응한다.

: 1차 대응은 MSP 업체에 위임하고, 해결되지 않을 때 사원에게 문제를 전달하여 단계적으로 대응

: 별도의 조직을 통해 24시간, 365일 감시 운용 시스템을 구축


인프라 엔지니어의 교과서
국내도서
저자 : 사노 유타카 / 김성재역
출판 : 길벗 2014.06.20
상세보기


'독후감 > 인프라 엔지니어의 교과서' 카테고리의 다른 글

5. 스토리지  (0) 2017.12.02
4. 네트워크  (0) 2017.12.01
3. 운영체제  (0) 2017.12.01
2. 서버  (0) 2017.12.01

1. 소켓의 프로토콜과 그에 따른 데이터 전송 특성

* 프로토콜(Protocol)이란 무엇인가?

: 컴퓨터 상호간의 대화에 필요한 통신규약

* 소켓의 생성

* 프로토콜 체계 (Protocol Family)

: 생성되는 소켓이 사용할 프로토콜 부류정보를 프로토콜 체계라고 한다.

: IPv4 인터넷 프로토콜 체계가 이 책에서 주로 설명하는 프로토콜 체계이다. 

* 소켓의 타입(Type)

: 소켓의 데이터 전송 방식을 뜻한다. 프로토콜 체계에도 둘 이상의 전송 방식이 있기 때문에 결정해야 한다.

: 대표적인 타입

1. 연결 지향형 소켓(SOCK_SREAM) : 신뢰성 있는 순차적인 바이트 기반의 연결지향 데이터 전송방식의 소켓

: 중간에 데이터가 소멸되지 않고 목적지로 전송된다.

: 전송 순서대로 데이터가 수신된다

: 전송되는 데이터의 경계가 존재하지 않는다.(여러번에 걸쳐 보낸걸 한번에 받거나, 한번에 보낸걸 여러번에 걸쳐 받을 수 있다.)

: 소켓대 소켓의 연결을 반드시 1대 1이어야 한다.

Tip 소켓에 존재하는 버퍼가 꽉차면 데이터가 소멸되나요?

: 버퍼가 꽉 찰경우 데이터를 전송하는 소켓이 더이상 데이터를 전송하지 않기 때문에 데이터 손실은 특별한 경우가 아니면 발생하지 않는다.

: 뿐만아니라 소켓은 상대 소켓의 상태까지 파악하면서 데이터를 전송하기 때문에 데이터 전송이 제대로 되지 않으면 재전송하기도 한다.

2. 비 연결 지향형 소켓(SOCK_DGRAM) : 신뢰성과 순차적 데이터 전송을 보장하지 않는, 고속의 데이터 전송을 목적으로 하는 소켓

: 전송 순서에 상관없이 가장 빠른 전송을 지향한다.

: 전송된 데이터는 손실의 우려가 있고, 파손의 우려가 있다.

: 전송되는 데이터 경계가 존재한다

: 한번에 전송할 수 있는 데이터의 크기가 제한된다.

* 프로토콜의 최종 선택

: 하나의 프로토콜 체계 안에 데이터의 전송방식이 동일한 프로토콜이 둘 이상 존재하는 경우 사용한다.

: IPPROTO_TCP(연결지향형 TCP 소켓) 이나 IPPROTO_UDP(비 연결지향형 UDP 소켓)을 정한다.

윤성우의 열혈 TCP/IP 소켓 프로그래밍
국내도서
저자 : 윤성우
출판 : 오렌지미디어 2009.12.01
상세보기


1. 네트워크 프로그래밍과 소켓의 이해

* 네트워크 프로그래밍과 소켓에 대한 매우 간단한 이해

: 네트워크로 연결되어 있는 서로 다른 두 컴퓨터가 데이터를 주고 받을 수 있도록 하는 것이 네트워크 프로그램이다.

: 물리적 연결을 기반으로하는 소프트웨어적인 데이터 송수신 방법을 고민해야 한다.

: 이는 운영체제에서 소켓(Socket)을 제공하기 때문에 고민할 필요 없다.

: 소켓은 소프트웨어적인 연결, 두 컴퓨터 연결을 의미하기도 한다.

* 전화 받는 소켓의 구현

: 소켓은 크게 두가지로 나뉜다.

: TCP 소켓은 전화기에 비유할 수 있다. 

: 전화를 거는 소켓과, 받는 소켓을 다르게 완성된다.

: 소켓 생성 과정

- 1. 소켓 생성 socket 함수 호출

- 2. IP주소와 PORT번호 할당 bind 함수 호출

- 3. 연결 요청 가능상태로 변경 listen 함수 호출

- 4. 연결요청에 대한 수락    accept 함수 호출

* Hello World! 서버 프로그램의 구현

: 소켓을 생성하는 순간에는 서버 소켓과 클라이언트 소켓으로 나뉘지 않는다. bind, listen 함수의 호출이 이어지면 서버 소켓이 되는 것이고 connect 함수의 호출로 이어지면 클라이언트 소켓이 되는 것이다.

2. 리눅스 기반 파일 조작하기

: 리눅스에서의 소켓조작은 파일 조작과 동일하게 간주되기 대문에 파일에 대해서 자세히 알 필요가 있다. 리눅스는 소켓을 파일의 일종으로 구분한다.

: 파일 입출력 함수를 네트워크 상에서의 데이터 송수신에 사용할 수 있다.

* 저수준 파일 입출력(Low-level File Access)과 파일 디스크립터(File Descriptor)

: 저수준이란 뜻은 표준에 상관없이 운영체제가 독립적으로 제공하는~ 라는 의미이다.

: 파일 디스크립터란 시스템으로부터 할당받은 파일 또는 소켓에 부여된 정수를 의미한다.

: 파일 디스크립터는 운영체제가 파일 또는 소켓을 편하게 지칭하기 위해 부여한 숫자이다. Windows의 핸들과 비슷한 개념이다.


3. 윈도우 기반으로 구현하기

: 윈도우 소켓은 상당부분 BSD 계열 유닉스 소켓을 참고하여 설계되었다. 따라서 많은 부분이 리눅스 소켓과 유사하다.

* 리눅스와 윈도우 기반으로 동시에 공부해야 하는 이유

: 상당수 프로젝트에서 리눅스 기반으로 서버를 만들지만, 클라이언트는 윈도우에 있는 경우가 많고, 운영체제를 변경해야 하는 경우도 발생하기도 한다.

: 이 둘은 매우 유사하기 때문에 묶어서 공부하는 것이 효과적이다.

* 윈도우 소켓을 위한 헤더와 라이브러리의 설정

: winsock2.h를 포함시킨다, ws2_32.lib 라이브러리를 링크시켜야 한다.

: Clion(IDE) 을 사용하는 경우 이 작업이 필요 없었다.

* 윈속(winsock)의 초기화

: 윈속프로그래밍을 할 때에는 반드시 WSAStartup 함수를 호출해서 프로그램에서 요구하는 윈도우 소켓의 버전을 알리고 해당 버전을 지원하는 라이브러리의 초기화 작업을 진행해야 한다.


: 윈도우와 리눅스의 차이는 크게 없으며, 라이브러리 초기화 및 해제관련 코드와 자료형 정보에서만 조금 차이날 뿐이다.


윤성우의 열혈 TCP/IP 소켓 프로그래밍
국내도서
저자 : 윤성우
출판 : 오렌지미디어 2009.12.01
상세보기


'독후감 > 소켓프로그래밍' 카테고리의 다른 글

2. 소켓의 타입과 프로토콜의 설정  (0) 2017.03.15

1. 라이브러리와 printf!

: 헤더파일에는 함수에 대한 선언만 들어있지 실행가능한 바이너리 코드가 들어있지는 않다.

: 해답은 라이브러리(Library) 안에 있다. 라이브러리란 여러 프로그램에서 자주 사용하는 함수와 데이터들을 실행이 가능한 바이너리 형태로 묶어놓은 파일을 의미한다.

: printf의 경우 C 런타임 라이브러리(C Run-Time Library)에 있다.

* 라이브러리 작성에 대한 동기

: 사용될 소지가 높은 함수들을 라이브러리로 구성하면 편리할 것이다.

* 라이브러리 작성

: 정적라이브러리로 프로젝트를 만들자

- 라이브러리 함수의 입력

: .h(헤더파일)과 .cpp 파일을 만들자

: .lib 파일이 만들어질 것이다.

Tip

실행파일이 생성되는 3가지 단계(전처리->컴파일->링크)에 대한 이해, 특히 링크 과정에서 하는 일이 무엇인지 확실히 이해한다.

헤더 파일 include가 지니는 의미와 헤더파일 안에 들어가는 일반적인 선언들이 무엇인지를 이해한다.

헤더파일을 정의하는 이유와 정의했을 때 얻게 되는 이점을 이해한다.


* Static Library

: 우리가 만든 라이브러리는 링커에 의해 실행파일안에 포함되게 된다.(이 과정을 링크라고 한다.) 

: 처음 만들어질 때부터 하나로 묶이게 되고 이러한 형태의 라이브러리를 가리켜 정적 라이브러리라고 한다.

* 동적라이브러리 DLL(Dynamic Linking Library) 

: 링커는 링크 과정을 통해서 실행 파일을 생성해낸다. 확장자로 .exe를 갖는 실행파일을 만들어 내기도 하지만, .dll을 지니는 라이브러리를 만들어 내기도 한다. 이것이 DLL이라고 불리는 라이브러리다.

* DLL 과 정적 라이브러리의 차이점

: 정적라이브러리와 DLL은 모두 라이브러리라는 점에서는 동일하다. 하지만, 정적 라이브러리는 정적인 특성을 가지고 DLL은 동적인 특성을 가진다. 

: 실행가능한 프로그램에서 라이브러리를 가져다 쓰는 방법에 따른 차이점이다.

- 정적 라이브러리의 특성

: 라이브러리 코드를 완전히 포함해서 .exe파일을 생성하는 형태의 정적 링크를 통하기 때문에 "실행의 독립성"을 가진다.

: 실행파일만 있으면 어디서든지 실행가능하다.

: 메모리 공간을 많이 차지하기 때문에 비효율적이다.


- DLL의 특성

: 프로세스를 여러개 실행시켰을 때 그 차이는 두드러 지게 된다.

: 메인메모리에서 페이지 단위로 DLL이 공유되기 때문에 컨텍스트 스위칭 부분에 있어서 효율이 극대화 된다.

: DLL에서 lib 파일은 링크할 떄 필요하고, dll 파일은 실행할 때 필요하다.

* DLL 제작 : 암묵적 연결

-DLL과 extern 선언

: C언어는 상관 없지만, C++은 컴파일 과정에서 Name Mangling(이름을 엉망으로 만든다는 의미) 작업을 하기 때문에 함수의 이름이 규칙에 따라 이상하게 변경되버린다.

: 이러한 작업을 막기 위해서는 .cpp, .h파일에 extern 명령어를 추가하여야 한다.

* DLL 제작 : 명시적 연결

: 소스코드 내에 DLL 연결 코드가 명시적으로 존재하는 방법이다.

: lib 파일이 필요 없다.

장점 1. : DLL이 필요한 시점에서 로딩하고, 불필요해지면 반환하기 때문에 메모리가 절약된다.

장점 2. : 프로그램 실행 중에 DLL 교체 및 선택이 가능하다.

장점 3. : 프로그램 실행 전에 로드하지 않기 때문에 실행시간을 단축시킬 수 있고, DLL 로딩에 걸리는 시간을 분산시킬 수 있다.

* 한번이상 로드될 수 있는 DLL

: 가상메모리 주소가 서로 다른 프로세스일 경우 두번 로딩되게 된다.

3. 도대체 헤더파일을 몇개나 만들 작정이야!

: 암묵적, 명시적, C 컴파일러, C++컴파일러용 으로 헤더를 만들려면 최소 3개의 헤더가 필요하다.

* 하나의 헤더파일로 모두 지원하기

: #ifdef 명령어


뇌를 자극하는 윈도우즈 시스템 프로그래밍
국내도서
저자 : 윤성우
출판 : 한빛미디어 2007.03.30
상세보기


1. 가상 메모리 (Virtual Memory) 컨트롤

* Reserve, Commit 그리고 Free

: 페이지의 상태의 Reserve는 예약, Commit은 할당, Free는 할당되지 않았음을 의미한다.

: <페이지의 개수 = 가상 메모리의 크기 / 페이지 하나당 크기> 이므로, 페이지 개수는 가상 메모리의 크기에 비례하며, 모든 페이지는 Reserved, Commit, Free 이 세가지 상태 중 하나를 지닌다.

: 여기서 물리 메모리란, 램과 하드디스크를 모두 포함하는 말이다. 즉, 해당 페이지가 물리 메모리에 할당된 상태를 가리켜 Commit 이라고 한다. 

: 할당되지 않은 상태를 Free라고 한다. 

: Windows는 Reserve라는 상태를 하나 더 두어 메모리 사용의 효율성을 높일 기회를 제공한다.

: 아주 큰 배열을 선언했을 때, 모두 Commit으로 둔다면 해당 페이지는 모두 물리 메모리에 할당되어져 버린다. 이 떄 Reserve를 통해 메모리 사용되어져 메모리의 효율성이 높아지게 된다.

: 일부 페이지를 Reserve상태로 둠으로써 다른 메모리 할당 함수에 의해 해당 번지가 할당되지 못하도록 선언할 수 있다. 동시에 메모리 소비는 발생하지 않는다.

* 메모리 할당의 시작점과 단위 확인하기

: 메모리를 할당하기 전에 기본적으로 생각해야 하는 것은 두가지이다. 메모리 할당의 시작 주소, 할당할 메모리의 크기

: 가상 메모리 시스템은 페이지 단위로 관리되기 때문에, 페이지의 중간 위치에서부터 할당을 시작할 수 없으며, 페이지 크기의 배수 단위로 할당을 해야만 한다.

: Windows 는 메모리가 지나치게 조각나는 것을 막기 위해서, 또 관리의 효율성을 위해 조금 더 넓은 범위의 값을 할당의 경계로 정의하고 있다.

: 메모리 할당의 시작 주소가 될 수 있는 기본 단위를 가리켜 Allocation Granularity Boundary 라고 한다. 

: Allocation Granularity Boundary와 페이지의 크기는 GetSystemInfo 를 통해 알 수 있다. 

* VirtualAlloc & VirtualFree 함수

: VirtualAlloc 함수는 페이지 상태를 Reserve와 Commit으로 만드는 역할을 한다. 

: VirtualFree 함수는 VirtualAlloc 함수가 정해놓은 상태를 되돌린다.

* Dynamic Array Design

: 배열의 크기만큼 물리 메모리가 할당되는 것이 아니라, 사용량의 증가에 따라 물리 메모리에 할당되는 동적 배열 디자인이다.

-시나리오

1. 페이즈 사이즈와 Allocation Granularity Boundary 를 얻어온다.

2. 예상되는 최대 크기로 메모리를 예약한다

3. 필요한 만큼 Commit한다. 이 후 필요에 따라 점진적으로 할당한다.

4. 할당했던 메모리를 반환한다.

2. 힙(Heap) 컨트롤

: 힙을 컨트롤하는 것은 가상 메모리를 컨트롤하는 것보다 최소 몇배 이상 유용ㅎ안 일이다.

* 힙(Heap) 컨트롤에 대한 필자의 기억

: 리스트 자료구조의 특성상 리스트 정보는 동적할당되어 힙에 저장된다.

: 이를 반환하려면 두가지 문제가 등장한다.

1. 메모리 유출(삭제되지 않는 위험), 메모리 누수가 누적되면 프로그램이 종료된다

2. 성능, 일일이 돌아다니면서 삭제하기위해서는 리스트의 길이에 따라 성능 저하 요인이 된다.

: Windows에서는 이 둘의 문제를 해결할 수 있다..

* 디폴트 힙(Default Heap) & Windows 시스템에서의 힙

: C언어의 경우 malloc 함수와 free 함수를, C++을 사용할 경우 new와 delete 연산자를 사용해서 힙 영역에 메모리를 할당한다.

: 이 경우 1M바이트 크기의 디폴트 힙 영역에 메모리를 할당하게 된다.

: 디폴트 힙은 프로세스에 기본적으로 할당되는 힙이라 하여 프로세스 힙(Process Heap)이라고도 부른다.    

: Windows 함수를 이용하면 2번째 사진과 같은 힙 메모리 형태를 만들 수 있다.

: 홍길동이 탈퇴한다면, 해당 힙 메모리를 제거함으로써 메모리 유출과 해제에 대한 성능 저하 문제를 해결할 수 있다.

* 디폴트 힙 컨트롤

: 디폴트 힙의 기본 크기는 1M바이트이지만, 링커(Linker) 옵션을 통해서 변경이 가능하다.

: 하지만, 그 이상의 크기를 사용할 때에 Windows가 알아서 그 크기를 늘려주므로 따로 재정의해줄 필요는 없다.

: 물론, 디폴트 힙 크기를 정해줌으로써 프로세스가 실행중에 새로운 메모리를 할당해서 시간이 소요되는 것을 방지할 수 있다.

* 힙(Dynamic Heap) 생성이 가져다 주는 또 다른 이점

1. 메모리 단편화의 최소화에 따른 성능 향상

: 힙을 미리 A,B,C 처럼 할당하여 둔다면, 연속성이 무너지지 않을 것이다.

: 하지만, 디폴트 힙에서 처리한다면, 단편화가 되어 프로그램의 로컬리티의 특성이 낮아질 우려가 크다. 

: 이는 성능에 많은 영향을 끼치므로 힙 생성을 적절하게 사용한다면 성능향상을 기대할 수 있다.

: 페이지 단위로 힙을 불러오기 때문에, 로컬리티 특성이 매우 좋아지며, 섞여 있을 경우 여러 페이지를 모두 불러와야 하기 때문에 로컬리티 특성이 매우 낮아진다.

2. 동기화 문제에서 자유로워짐으로 인한 성능 향상

: 쓰레드 마다 다른 힙을 사용할 경우 동기화를 하지 않아도 되기 때문에 이로 인한 성능향상을 기대할 수 있다.

: 힙자체를 반환해 버릴 수 있다는 장점도 존재한다.

* 힙의 생성과 소멸 그리고 할당

: 리스트 자료구조에 동적 힙의 개념을 도입하면 메모리 유출의 방지와 프로그램 구현의 용이성이라는 두가지 장점을 얻게 된다.

3. MMF(Memory Mapped File)

* MMF의 이해

: MMF는 File을 Memory에 Mapping(연결) 시킨다는 의미를 지니고 있다. 파일의 일부 영역을 가상 메모리 일부에 연결시키는 매커니즘을 가리켜 MMF라고 한다. 

: 위의 그림을 보면, 가상메모리와 파일의 데이터가 연결되어있다. 이는 실제로도 메모리에만 데이터가 저장되는 것이 아니라, 메모리에 연결된 파일에 실제 데이터가 저장된다.

장점 1. 프로그래밍하기 편하다

: 파일안에 저장되어 있는 데이터를 조작하려면 일단 메모리로 읽어 들여야 하기 때문에, 너무 번거롭다. MMF를 사용하면 메모리 상에 저장된 데이터를 조작하는 방식으로 파일 내 데이터를 조작할 수 있어 편리하다.

장점 2. 성능이 향상된다

: 성능이 저하될 것 같지만, 일반적으로는 향상된다.

: 메모리는 중간의 캐쉬 역할만 한다고 생각하여 로컬리티 특성만 충족시킬 경우 아주 높은 성능 향상이 이루어진다. 하지만, 메모리 상의 데이터가 변경되었을 때 바로 반영한다면, 이는 구현의 용이성만 얻게되고 성능 향상은 어렵다.

* MMF의 구현과정

1 단계 : 파일개방

: 반드시 CreateFile 함수 호출을 통해서 파일을 열고 해당 파일의 핸들을 얻어야 한다.

: 핸들은 파일을 읽고 쓰는데 필요하다.

2 단계 : 파일 연결 오브젝트 생성

: 메모리에 연결할 파일 정보를 담고 있는 커널 오브젝트를 생성하는 것이다.

: CreateFileMapping 함수 호출을 통해 만들어진다.

: 파일 연결 오브젝트는 메모리에 매핑시키는데 필요하다.

3 단계 : 가상 메모리에 파일 연결

: 가상메모리에 파일을 연결한다.

: MapViewOfFile 함수를 통해 완성되며, 반환되는 포인터를 가지고 메모리에 접근하여 데이터를 변경하면, 파일에 반영된다.

* Copy-On-Write(COW)

: 데이터를 쓸 때 복사하라.

: 이는 MMF처럼 시스템 함수 수준에서 제공되거나, OS와 같은 고급 소프트웨어 를 구현할 떄 내부적으로 적용하는 최적화(Optimization) 기술이다.

: 일반적으로 쓰레드는 항상 테이블을 복제해서 사용하였다.

: 하지만, 쓰레드가 생성될 때마다 기본 테이블을 참조하며, 특정 테이블을 변경했을 때에만 테이블을 복사한다면 더 효율적일것이다. 이것이 COW이다.


뇌를 자극하는 윈도우즈 시스템 프로그래밍
국내도서
저자 : 윤성우
출판 : 한빛미디어 2007.03.30
상세보기


: 용어의 의미를 올바르게 이해하려면 단어가 지닌 사전적 의미에 선입견을 가지면 안된다. 새로운 기술에 용어를 부여할 때 보통 가장 의미가 유사한 기존 단어를 재활용하기 떄문이다.


1. 네트워크 기초 용어    

- 네트워크(Network) : 전송매체(Transmission Media)로 서로 연결해 데이터를 교환하는 시스템(System) 모음이다.

- 인터페이스(Interface) : 시스템과 전송 매체의 연결 지점에 대한 규격

- 프로토콜(Protocol) : 시스템이 데이터를 교환할 때 따르는 임의의 통신 규칙

- 표준화(Standardization) : 서로 다른 시스템이 상호 연동해 동작하기 위해 필요한 연동 형식의 통일


- 시스템(System)

: 체제라고도 하는데, 내부 규칙에 따라 능동적으로 동작하는 대상이다.

: 컴퓨터 같은 물리적인 대상들 뿐만 아니라 프로세스와 같은 논리적인 대상도 시스템이다.

: 작은 시스템이 여러개 모여 큰 시스템을 구성할 수 있으므로 크기로 시스템을 구분하지 않는다.

- 인터페이스(Interface)

: 시스템과 시스템을 연결하기 위한 표준화된 접근 방법

: 연결되는 서로의 능력과 권한이 같은 경우도 있지만 상하관계에 있을 수도 있다.

ex) 컴퓨터 본체와 키보드를 연결할 때 잭의 크기, 모양을 맞추는 물리적 규격과, 데이터 교환을 위한 논리적 규격을 맞추어야 한다.

- 전송 매체(Transmission Media)

: 인터페이스를 연동하여 데이터를 주고 받으려면 물리적인 전송 수단인 전송매체가 있어야 한다.

: 인터페이스에서 정해진 규칙이 매체를 통해 전송됨으로써 구현되고 동작한다.

: 동축 케이블, 공기, 무선 신호등 다양하다.

- 프로토콜 (Protocol)

: 상호 연동되는 시스템이 전송매체를 통해 데이터를 교환할 때 따르는 특정 규칙

: 주종관계가 아니라 동등한 위치에 있는 시스템 사이의 규칙이라는 측면이 인터페이스와의 차이이다.

: 인터페이스는 두시스템을 연동하기 위한 접촉지점을 의미하는 경우가 많지만,

: 프로토콜은 주고받는 정보의 형식과 절차적 순서에 무게를 둔다

- 네트워크(Network)

: 여러 시스템이 프로토콜을 사용하여 데이터를 주고 받을 때 하나의 단위로 통칭하여 네트워크라 한다.

: 네트워크 끼리는 라우터(Router)라는 중개 장비를 사용해 연결한다.

- 인터넷(Internet)

: ...


TCP/IP 소켓 통신 이후 다시 게시 하겠습니다.


+ Recent posts