그동안 학습했던 개념들도 있고 면접 준비를 하며 나름대로 정리한 적 있지만, 항상 막연하다는 생각이 들었다. 그 이유는 아무래도 인터넷으로 찾은 내용들이고 대부분은 맞겠지만서도 그때 그때 필요한 내용만 읽는게 많아서 빈 부분이 많아서 일것이다.
그래서 <면접을 위한 CS 전공지식 노트> 책을 따라 쭉 한번 정리해보려고 한다.
책의 목차로는
1. 디자인 패턴과 프로그래밍 패러다임
2. 네트워크
3. 운영체제
4. 데이터베이스
5. 자료 구조
6. 포트폴리오와 면접
이렇게 된다.
순서대로 공부해도 되지만, 가장 필요한 부분 먼저 읽는 것이 좋을 것 같아서 순서를 바꿔본다.
책의 개념들을 정리하지만, 추가로 검색한 부분, 내가 알고 있는 부분도 추가.
네트워크 - 자료구조 - 디자인 패턴과 프로그래밍 패러다임 - 운영체제 - 데이터베이스
순서로 계획했다.
'좋은 ' 네트워크는 많은 처리량을 처리하고 지연 시간이 짧으면서 장애 빈도도 적고 좋은 보안을 갖춘 네트워크를 말한다.
다시 말하면, 데이터 처리를 빠르게 많이 하고 서버와의 응답도 정확하고 빠르고, 데이터가 유출되지 않도록 안전장치를 갖춘 네트워크라는 뜻인 듯 하다.
처리량의 단위는 bps(bits per second)를 쓰는데 영향을 주는 요소로는 트래픽, 네트워크 대역폭, 네트워크 중간의 에러, 하드웨어 스펙이 있다.
처리량을 실제 느낄수 있는 예시는 대학교 수강신청이나 티켓팅이 일 것이다.
내가 원하는 목표(수강신청, 티켓예매)를 위해 좋은 컴퓨터 사양이 구비된 PC방에가서 하기도 하고, 빠른 인터넷망을 사용하기도 한다. 또, 사람들이 동시에 몰릴 것을 대비하여 엄청난 트래픽을 대비하여 서비스 제공자가 서버 증량을 하기도 한다.
비교적 최근?에 내가 겪은 일 중에는 '네고왕'이 어떤 기업과 좋은 딜을 하였고 해당 유튜브 영상이 업로드 된 지 그리 오랜시간이 지나지 않았음에도 홈페이지가 마비되어 접속조차 못했던 적이 있었다. 수많은 사람들이 동시에 몰려들고 새로고침이 반복되어 서버로 요청을 보내고, 서버 속도제한이 생기면서 악순환이 이어지는 바람에 늦게 상품페이지를 보았다. 이미 상품은 품절되어 구매를 포기했던 기억이 있다.
소비자 입장에서 이러한 만족스럽지 않은 경험은 기업의 이미지와 상품에 대한 인식으로 까지 이어진다. 따라서 온라인 서비스를 제공하는 수많은 기업들은 고객만족을 높이기 위하여 최적화된 페이지와 안정적인 서버에 집중할 수 밖에 없다.
네트워크 토폴로지 Network topology [topology : the way the parts of something are organized or connected <Oxford>]
노드와 링크가 배치되어있는 방식과 연결 형태를 말한다. (네트워크의 조직 연결 방식)
- 트리 토폴로지 : 계층형 토폴로지, 트리 형태로 배치한 네트워크. 노드의 추가, 삭제가 용이하고 특정 노드에 트래픽이 집중되면 하위 노드에 영향을 끼칠 수 있다.
- 버스 토폴로지 : 중앙 통신 회선 하나에 여러 개가 연결된 구성이고 근거리통신망LAN에서 사용. 적은 설치 비용, 우수한 신뢰성. 중앙 회선에 노드 추가 삭제가 용이 but 스푸핑이 가능한 문제점!
스푸핑 Spoofing ? 직접적으로 시스템 침입을 시도하지 않고 송신부의 패킷이 특정 노드를 거쳐 수신부로 가도록 하여 잘못된 정보 혹은 연결을 신뢰하게끔 만드는 기법. 피싱과 스니핑과는 다르게 더욱 공격적인 방식이면서 피싱과 연계되거나 백도어를 뚫는 수단으로 활용될 경우 더 큰 2차 피해로 발생될 수도 있음. 문자로 오는 해킹 링크 사이트가 하나의 예시.
ex) DNS Spoofing, ARP Spoofing, IP Spoofing
- 스타 토폴로지 : 중앙 노드에 별처럼 연결된 네트워크 구성. 노드 추가와 에러 탐지가 용이, 패킷 충돌 발생 가능성이 적다. 중앙 노드가 아니면 다른 노드에 끼치는 영향이 적음. 설치 비용이 고가이고, 중앙 노드 장애시 전체 네트워크를 사용할 수 없음.
- 링형 토폴로지 : 다른 두 노드와 연결하여 원형으로 연결된 망 구성 방식. 노드 수가 증가되어도 네트워크상 손실이 적고, 충돌 발생과 노드 고장 발견이 용이. 네트워크 변경이 어렵고 회선 장애 발생시 전체적으로 영향을 끼침
- 메시 토폴로지 : 망형 구조. 하나의 장치에 장애가 발생해도 네트워크를 사용할 수 있고 트래픽 분산 처리가 가능. but 노드 추가와 비용이 고가임.
!! 토폴로지가 중요한 이유는? 병목 현상을 찾는 중요한 기준이 되기 때문이다.
네트워크 분류
LAN(Local) / MAN(Metropolitan) / WAN(Wide)
네트워크 성능 분석 명령어
ping, netstat, nslookup, tracert
- ping (Packet INternet Groper) : 네트워크 상태를 확인 하기 위하여 일정 크기 노드 패킷을 전송하는 명령어. 이를 통해 연결 상태와 수신 도달 시간을 알 수 있음 (Ping 은 게이머라면 친숙한 단어이기도 한데, 핑이 높으면 다중 접속 온라인 게임을 원활히 즐기기 어렵기도 함)
- netstat : 접속되어 있는 서비스들의 네트워크 상태를 표시하는데 사용. 서비스 포트가 열린지 확인할 때 사용.
- nslookup : 특정 도메인에 매핑된 IP를 확인하기 위해 사용.
- tracert : 목적지 노드까지 네트워크 경로를 확인할 때 사용. 어느 구간에서 문제가 있는지 확인할 수 있음.
- 이 외에도 네트워크를 분석하는 여러 방식이 있음.
주홍철, <면접을 위한 CS 전공지식 노트> 길벗
'개발 > 정리' 카테고리의 다른 글
[Flutter가지고놀기] Flutter가 좋은 이유! (0) | 2023.05.31 |
---|---|
React Native 개발환경 설정 (for macOS m1) (0) | 2022.12.21 |
CS 공부 - 네트워크의 기기, IP주소 (0) | 2022.09.30 |
CS 공부 - TCP/IP 4계층 모델 - 2 (1) | 2022.09.27 |
CS 공부 - TCP/IP 4계층 모델 - 1 (0) | 2022.09.26 |