1. 네트워크의 개념
- 네트워크는 통신 분야의 개념으로 노드(네트워크 장치)와 링크(선로)로 구성되는 전송 매체다.
1) 처리량과 지연 시간
- 처리량 : 단위 시간당 전달되는 데이터양으로 bps 단위를 사용함
- 대역폭 : 특정 기능을 수행할 수 있는 주파수의 범위
- 지연시간 : 요청이 처리되는 왕복 시간
2) 토폴로지
- 네트워크의 노드와 링크가 배치되어 있는 방식
(1) 트리
- 계층형 토폴로지라고도 함
- 노드의 추가와 삭제가 쉬움
(2) 버스
- 중앙 회선 하나에 여러 노드가 연결되어 있는 구조
- 주로 LAN(근거리 통신망)에 사용됨
- 노드의 추가와 삭제가 쉬우며, 설치 비용이 적고 신뢰성이 우수함
- 스푸핑의 위험이 있음. 스푸핑은 악의적인 노드에 패킷이 오도록 하는 공격을 뜻함
(3) 성형
- 노드들이 모두 중앙에 연결되어 있는 구조
- 노드의 추가와 삭제가 쉬우며, 중앙이 아닌 노드의 에러에 대한 대처가 쉬움
- 설치 비용이 높고 중앙 노드에 장애가 발생하면 전체 네트워크가 마비됨
(4) 링형
- 각각의 노드가 양 옆의 노드와 연결되어 있는 구조
- 충돌이 발생할 가능성이 적고 노드의 에러를 쉽게 발견할 수 있음
- 노드의 추가와 삭제가 어렵고 장애가 발생하면 전체 네트워크에 심한 영향을 끼침
(5) 망형
- 각 노드가 모든 노드와 연결되어 있는 구조
- 장애와 트래픽에 강함
- 노드의 추가와 삭제가 어렵고 구축 비용이 높음
3) 병목 현상
- 전체 시스템이 하나의 시스템으로 인해 제한을 받는 현상
- 병목 현상의 원인으로는 대역폭, 토폴로지, CPU, 메모리 사용량등이 있음
4) 네트워크의 종류
- LAN(Local Area Network) : 근거리 통신망으로 전송 속도도 빠르고 혼잡하지 않음
- MAN(Metropolitan Area Network) : 대도시 규모 통신망으로 전송 속도와 혼잡도가 보통임
- WAN(Wide Area Network) : 전세계 규모 통신망으로 전송 속도도 느리고 혼잡도도 높음
5) 네트워크 관련 명령어
- ping : 대상 노드에 패킷을 보내서 네트워크의 연결 상태와 패킷의 도달 시간을 확인할 수 있으며, ICMP 프로토콜 기반으로 동작함
- netstat : 서비스들의 네트워크 상태를 확인할 수 있다.
- nslookup : DNS 관련 정보를 확인할 수 있다. 특정 도메인에 매핑된 IP를 확인할 수 있다.
- tracert(윈도우), traceroute(리눅스) : 목적지 노드까지의 네트워크 경로를 확인할 수 있다.
- tcpdump : 노드로 오고가는 패킷을 확인할 수 있다.
6) 네트워크 프로토콜
- 네트워크상에서 쓰는 프로토콜은 통신에 대한 규약을 뜻한다.
- 서로 다른 장소에서도 특정 프로토콜을 통해 데이터를 주고 받을 수 있다.
2. TCP/IP 계층 모델
- 네트워킹 범위에 따라 계층으로 분리한 모델로, 네트워크 프로토콜들의 집합이다.
- OSI 7 Layer에 대한 내용은 이전 포스팅에서 다룬 바가 있으므로 TCP/IP 4 계층에 대해 설명할 것이다.
https://kimcoder.tistory.com/367
1) TCP/IP 4 계층 구조
(1) 애플리케이션 계층
- 응용 프로그램과 직접 관계하는 계층
- 사용자의 입출력 부분
(2) 전송 계층
- 종단간의 통신을 다루는 최하위 계층
- 주로 TCP, UDP 프로토콜을 이용
※ TCP : 3-way handshake 방식을 통한 가상연결 방식을 사용하여 패킷의 loss 없이 순서를 보장해주는 신뢰성을 보장함
※ UDP : 패킷의 수신 여부와 순서를 신경쓰지 않고 데이터만 전달함. 속도가 빠르기 때문에 실시간 통신에 사용됨
- 오류검출 및 복구, 흐름제어, 중복검사 수행
- Port를 열어서 응용프로그램들이 전송을 할 수 있게 함
(보충 개념) TCP의 3-way handshake와 4-way handshake
- 3-way handshake는 [클라이언트의 요청 -> 서버의 응답 -> 클라이언트의 확인 응답] 과정을 거친다.
- 4-way handshake는 주로 연결을 해지할 때 수행되는 절차로, [클라이언트의 연결 해지 요청 -> 서버의 응답 -> 잠시 뒤에 서버의 연결 해지 준비가 끝나면 클라이언트로 플래그 전송 -> 클라이언트의 응답] 과정을 거친다.
(3) 인터넷 계층
- 목적지로 IP 패킷을 전송하는 기능 및 라우팅을 담당하는 계층
- 비연결적인 특징을 가짐
(4) 네트워크 접근 계층
- 유선랜과 무선랜을 통해 데이터를 전달해주고 에러 확인, 흐름 제어, 접근 제어를 수행하는 계층
(보충 개념) 유선랜 - IEEE802.3, Ethernet
- 전이중화 통신과 CSMA/CD 방식을 사용한다. 대표적인 케이블로는 주로 트위스트 페어 케이블과 광섬유 케이블이 있다.
※ 전이중화 통신 : 양쪽 장치가 서로 동시에 통신할 수 있는 통신 방식
※ CSMA/CD : 데이터를 보낸 이후에 충돌이 발생한다면 일정 시간 이후에 재전송함
(보충 개념) 무선랜 - IEEE802.11
- 반이중화 통신과 CSMA/CA 방식을 사용한다. 공기에 주파수를 쏘아 통신하며, 주로 5GHz 대역을 사용한다.
※ 반이중화 통신 : 양쪽 장치가 서로 통신은 할 수 있지만, 동시에는 통신할 수 없는 통신 방식이다. 두 장치가 동시에 전송하면 충돌이 발생할 수 있다.
※ CSMA/CA : 데이터를 보내기 전에 회선이 비어 있는지를 판단하고, 회선이 비어 있다면 데이터를 전송함
2) 계층 간 데이터 전달
(1) 캡슐화와 비캡슐화
캡슐화는 상위 계층에서 하위 계층으로 이동하면서 헤더를 붙여나가는 과정을 의미하고, 비캡슐화는 하위 계층에서 상위 계층으로 이동하면서 헤더를 떼어나가는 과정을 의미한다.
(2) 계층 간 데이터 전달 과정
먼저, 송신측은 애플리케이션 계층부터 네트워크 접근 계층까지 내려가면서 캡슐화를 진행한다.
-> 송신측과 수신측의 네트워크 접근 계층 간에 통신을 한다.
-> 수신측은 네트워크 접근 계층부터 애플리케이션 계층까지 올라가면서 비캡슐화를 진행한다.
(3) PDU
- 각 계층의 데이터 통신 단위를 PDU(Protocol Data Unit)라고 하며, PDU는 제어 정보들이 포함된 헤더와 데이터를 의미하는 페이로드로 구성되어 있다.
- 각 계층의 PDU는 다음과 같다.
- 애플리케이션 계층 : 메시지
- 전송 계층 : 세그먼트(TCP), 데이터그램(UDP)
- 인터넷 계층 : 패킷
- 네트워크 접근 계층 : 프레임과 비트
3. 네트워크 기기
- 통신 계층별로 사용되는 네트워크 기기는 다르며, 상위 계층을 처리하는 기기는 하위 계층을 처리할 수 없지만 그 반대는 불가능하다.
1) 애플리케이션 계층 기기 - L7 스위치
- 스위치는 여러 장비를 연결하며, 목적지로 가는 포트로 데이터를 전송해주는 장비다.
- L7 스위치는 서버의 부하를 분산하는 로드밸런서 역할을 한다. 덕분에 시스템은 더 많은 트래픽을 처리할 수 있고, 서버 이중화 기능을 통해 서비스를 안정적으로 운용할 수 있다.
- 바이러스나 불필요한 데이터들을 걸러내는 필터링 기능과 트래픽 모니터링(헬스 체크) 기능을 지원한다.
(보충 개념) L4 스위치
- L4 스위치도 로드밸런서 역할을 한다. 그러나 스트리밍 관련 서비스에서는 사용할 수 없고, 메시지가 아닌 IP와 포트를 기준으로 트래픽을 분산한다.
- 헬스 체크 기능을 지원한다.
2) 인터넷 계층 기기
(1) 라우터
- 최적의 경로를 결정해서 패킷을 포워딩해주는 장비
(2) L3 스위치
- 하드웨어 기반의 라우팅을 담당하는 장치
- 링크 계층에서 동작하는 L2 스위치의 기능도 갖고 있음
3) 데이터 링크 계층 기기
(1) L2 스위치
- MAC 주소를 읽어 패킷을 전송하는 장치
- MAC 주소 테이블을 통해 관리함
(2) 브리지
- 두 개의 LAN을 연결해주는 장치로, 통신망을 확장할 때 쓰임
- MAC 주소 테이블을 통해 관리함
4) 물리 계층 기기
(1) NIC(Network Interface Card)
- 컴퓨터를 네트워크에 연결시키기 위한 장치
- LAN 카드라고도 불리며, MAC 주소로 LAN 카드를 식별함
(2) 리피터
- 신호를 증폭시켜서 전달하는 장치
(3) AP(Access Point)
- 패킷을 복사하는 장치
- 유선랜에 흐르는 신호를 무선랜 신호로 변환해주기 때문에 공유기라고도 불림
4. IP 통신
1) ARP와 RARP
- ARP는 IP 주소를 MAC 주소로 바꿔주는 프로토콜이고, RARP는 MAC 주소를 IP 주소로 바꿔주는 프로토콜이다.
- 노드를 거쳐 패킷을 보내려면 해당 노드의 MAC 주소를 알아야하기 때문에 종단간의 통신에 ARP와 RARP는 반드시 필요하다.
- 특정 IP 주소에 해당하는 MAC 주소를 가지는 장치를 찾기 위해 ARP 요청을 모든 장치에 보내고(브로드캐스트), 해당 IP 주소에 맞는 장치는 MAC 주소를 반환(유니캐스트)하는 식으로 동작한다.
2) 홉간의 통신
- 패킷이 여러 개의 라우터를 거쳐가는 것을 의미한다.
- 라우팅 테이블 : 목적지 라우터로 가는 경로 정보가 들어있는 테이블
- 게이트웨이 : 서로 다른 네트워크 간의 통신을 가능하게 해주는 관문역할을 하는 장치로, 라우팅 테이블에서 확인할 수 있다.
3) IP 주소 체계
- IPv4는 32비트, IPv6은 128비트로 이루어져 있다.
※ IPv6 예시 : 2001:0bd8:3c4d:0015:0000:0000:1a2f:1a2d
- 클래스 기반 할당 방식(CIDR) : 클래스를 A, B, C, D, E로 나누어 IP를 할당하는 방식이다. IP 주소를 크게 네트워크 주소와 호스트 주소로 나누게 되는데 클래스별로 범위가 다르다. 이 방식의 단점은 낭비되는 주소가 많다는 것이다.
- DHCP : IP 주소를 수동으로 설정하지 않고도 자동으로 IP 주소를 할당해주는 프로토콜
- NAT : 공인 IP와 사설 IP로 나눠서 많은 주소를 처리하는 방법으로 포트포워딩에 활용된다. 공인 IP는 외부와 통신하는 주소이고, 사설 IP는 하나의 공인 IP을 사용하는 각 호스트를 식별하는 주소다. 보통 공유기에는 NAT 기능이 탑재되어 있다. 그리고 호스트의 IP 주소가 외부에 노출되지 않는다는 보안상의 장점이 있다.
4) ICMP
- IP 패킷의 오류 메시지를 제어하는 프로토콜
5. HTTP
- HTTP : HyperText Trasnfer Protocol
1) HTTP/1.0
- 한 연결당 하나의 요청만 처리한다.
- 수많은 핸드셰이크가 발생하여 RTT(패킷 왕복 시간)가 증가한다.
- RTT의 증가에 따른 과부하를 극복하기 위해 사용한 기법들은 다음과 같다.
- Image Splitting : 많은 이미지들을 합친 하나의 이미지를 이용하는 방법
- 코드 압축 : 공백이나 줄바꿈을 없애고 코드의 크기를 최소화하는 방법
- 이미지 파일 인코딩 : 이미지 파일을 문자열로 인코딩하는 방법
2) HTTP/1.1
- 연결을 유지하는 옵션이 표준화되어 요청마다 매번 연결을 하지 않아도 되도록 발전한 버전
- HOL Blocking : 큐의 앞 패킷이 지연될 때 뒤 패킷들도 같이 지연되는 현상
- 많은 메타데이터들이 압축이 되지 않아 헤더가 무거웠다.
3) HTTP/2
- TCP 기반으로 돌아가는 버전
- HTTP/1.x 버전보다 지연 시간과 응답 시간이 줄었다.
- 지원되는 기법들은 다음과 같다.
- 멀티플렉싱 : 하나의 연결 안에 여러 개의 스트림을 사용하여 데이터를 송수신하는 기법으로, HOL Blocking 현상을 해결
- 헤더 압축 : 허프만 코딩 압축 알고리즘을 사용하여 헤더의 비트 양을 압축하는 기법이다. 허프만 코딩은 빈도가 낮은 정보는 많은 비트 수를 사용해서 표현하고, 빈도가 높은 정보는 적은 비트 수를 사용해서 표현하는 방법이다.
- 서버 푸시 : 클라이언트의 요청 없이 서버가 자원을 푸시해주는 방법이다. 예를 들어, html을 푸시할 때 그 안에 포함된 css나 js 파일을 알아서 같이 푸시해준다.
4) HTTP/3
- UDP와 QUIC 기반으로 돌아가는 버전
- 핸드셰이킹 과정이 없기 때문에 초기 연결에 대한 지연 시간은 감소한다.
- 첫 연결 설정에 1-RTT만 소모된다.
- FEC(전진 오류 수정) : 수신측이 패킷 에러를 발견하고 에러검출 및 에러수정을 하는 방식
6. HTTPS
- HTTP에 SSL/TLS 계층을 포함한 프로토콜로, 암호화가 제공되는 HTTP라고 이해하면 된다.
1) SSL/TSL
- SSL(Security Socket Layer) 또는 TLS(Transport Layer Security Protocol)은 전송 계층에서 보안을 제공하는 프로토콜로, 핸드셰이킹을 통해 보안 세션을 만들어 상태 정보를 관리한다.
※ 세션 : 서버의 자원을 이용할 수 있는 기간
※ 0-RTT : 이미 방문했던 사이트에 다시 방문할 때는 보안 세션에 필요한 통신을 하지 않아도 되는 것
- 클라이언트에서 사이퍼 슈트를 서버에 전달하면 서버는 암호화 알고리즘 리스트를 제공할 수 있는지 확인하고, 제공할 수 있다면 인증 과정을 거쳐 암호화된 통신을 수행한다.
사이버 슈트는 다음 3가지 정보가 나열된 규약이다.
- 프로토콜 - ex) TLS
- AEAD 사이퍼 모드 : 데이터 암호화 알고리즘 - ex) AES_128_GCM
- 해싱 알고리즘 : 데이터를 더 작은 길이를 가진 데이터로 변경하는 알고리즘 - ex) SHA256
- 인증 메커니즘은 CA(Certificate Authorities)에서 발급한 인증서를 통해 이루어진다. 자신의 서비스가 CA 인증서를 발급받으려면 자신의 사이트 정보와 공개키를 CA에 제출하고 비공개키 기반의 인증서를 발급 받아야 한다.
- 키 교환 암호화 알고리즘으로는 키 값을 혼합하는 디피-헬만 알고리즘을 사용한다.
※ 디피-헬만 알고리즘 참고 : https://www.crocus.co.kr/1233
2) SEO(Search Engine Optimization)
- HTTPS는 많은 사용자들이 서비스 페이지를 볼 수 있도록 검색엔진을 최적화할 때도 도움이 된다. canonical 설정, <meta> 태그 설정, 사이트맵 관리가 검색엔진 최적화의 대표적인 방법이다.
※ 사이트맵 : 사이트에 있는 페이지, 동영상 및 기타 파일과 그 관계에 관한 정보를 검색엔진에게 제공하기 위한 파일
3) HTTPS 구축 방법
- CA에서 구매한 인증키로 구축
- 서버 앞단에 HTTPS를 제공하는 CDN이나 로드밸런서를 세팅
7. 기타 용어 정리
1) 통신 프로토콜
FTP : File Transfer Protocol
SMTP : Simple Mail Transfer Protocol
DHCP : Dynamic Host Configuration Protocol
HTTP : HyperText Trasnfer Protocol
2) 네트워크 용어들
- CDN : 가까운 지역에서 콘텐츠를 제공하는 네트워크
- DNS : 도메인 이름과 IP 주소를 매핑해주는 서버
- WWW : World Wide Web
- SYN, ACK, ISN : 각각 Synchronisztion, Acknowledgement, Initial Sequence Number을 의미함
- AP : Access Point의 약어로 공유기라고도 불리며, 유선랜에 흐르는 신호를 무선랜 신호로 변환해줌
- Wifi : 단말기가 무선랜 신호에 연결할 수 있게 하는 기술로, 공유기가 필요함
- BSS :무선랜의 가장 기본적인 구성 단위로, 동일 BSS 내의 공유기들과 장치들의 집합이다. 하나 이상의 연결된 BSS 그룹을 ESS(Extended Service Set)이라고 한다.
- 클라우드 컴퓨팅 : 컴퓨터 자원을 빌려서 언제 어디서나 중앙 컴퓨터에 접근할 수 있도록 하는 컴퓨팅
- 애드 혹 네트워크 : 유선망 없이 모바일 호스트만으로 구성한 네트워크
3) 보안 용어들
- CORS(Cross Origin Resource Sharing) : 다른 오리진(프로토콜+호스트+포트번호)에서 리소스를 가져오지 못하게 하는 HTTP 헤더 기반 매커니즘
- SSH(Secure Shell) : 원격 호스트에 접속할 때 사용되는 보안 프로토콜
- SSL(Secure Socket Layer) : 보안 소켓 계층
- IPsec : IP 패킷 단위의 보안 프로토콜
- 스니핑 : 남의 정보를 도청하는 행위
- 백도어 : 정상적인 인증 과정을 거치지 않고 접근하는 행위
- 하이재킹 : 가로채기
- 크로스사이트 스크립팅(XSS) : 웹페이지에 악의적인 스크립트를 삽입하는 공격
- 메모리 버퍼 오버플로우 : 할당된 메모리의 범위를 넘어선 위치에 접근하는 공격
- 개인키 암호화 : 동일한 키로 데이터를 암호화하고 복호화하는 기법 / 간단하지만 관리할 키가 많음
- 공개키 암호화 : 공개키로 암호화하고 비밀키로 복호화하는 기법 / 복잡하지만 관리할 키가 적음
- 해싱 : 다양한 크기의 데이터를 고정된 크기의 데이터로 변환하는 것
- DoS : 다수의 공격자가 대량의 요청을 한 곳의 서버에 집중적으로 보내는 공격으로 스머핑, 디도스 등이 해당한다.
- TearDrop : 패킷의 offset 값을 조작해서 오류로 인한 과부하를 발생시키는 공격
- Land : 송신 IP 주소와 수신 IP 주소를 같게 설정하여 자신에 대해 무한히 응답하게 하는 공격
- APT : 지능형 지속 위협 / 지속적으로 악성코드를 침투시키는 공격
- 트로이 목마 : 정상 프로그램으로 위장하고 있다가 해당 프로그램이 실행되었을 때 공격
- 랜섬웨어 : 내부 파일을 암호화해서 사용자가 열지 못하게 하는 공격
- NAC(Network Access Control) : 네트워크에 접속하는 내부 PC의 MAC 주소를 IP 관리 시스템에 등록해서 일관된 관리 기능을 제공하는 보안 솔루션
- VPN : 가상 사설 통신망 / 단말의 실제 IP 주소를 가상 IP 주소로 대체
- OTP(One Time Password) : 일회용 비밀번호로 인증하는 기술
'IT 상식 > CS' 카테고리의 다른 글
[CS] 자료구조 요약 (0) | 2022.11.26 |
---|---|
[CS] 데이터베이스 요약 (0) | 2022.11.20 |
[CS] 운영체제 요약 (0) | 2022.11.10 |
[CS] 디자인 패턴과 프로그래밍 체계 요약 (0) | 2022.11.01 |
[CS] 면접 기타 예상 질문 (0) | 2021.06.11 |
댓글