2.1 네트워크의 기초
throughput: 링크를 통해 전달되는 단위 시간당 데이터 양. 단위 bps.
latency: 요청이 처리되는 시간. 어떤 메시지가 두 장치 사이를 왕복하는데 걸린 시간.
네트워크 토폴로지(network topology): 노드와 링크가 어떻게 배치되어 있는 지에 대한 방식이자 연결 형태
- 트리 토폴로지
- 버스 토폴로지
- 스타 토폴로지
- 링형 토폴로지
- 메시 토폴로지
병목현상: 전체 시스템의 성능이나 용량이 하나의 구성 요소로 인해 제한을 받는 현상.
- 주요 원인: 네트워크 대역폭, 네트워크 토폴로지, 서버 CPU와 메모리 사용량, 비효율적인 네트워크 구성
ping: 네트워크 상태를 확인하려는 대상 노드를 향해 일정 크기의 패킷을 전송하는 명령어. TCP/IP 프로토콜 중 ICMP 프로토콜을 통해 동작.
netstat: 접속되어 있는 서비스들의 네트워크 상태를 표시하는데 사용
nslookup: 특정 도메인에 매핑된 IP를 확인하기 위해 사용
2.2 TCP/IP 4계층 모델
TCP/IP 계층 | OSI 7계층 |
애플리케이션 계층 | 애플리케이션 계층 |
전송 계층 | 프레젠테이션 계층 |
인터넷 계층 | 세션 계층 |
링크 계층 | 전송 계층 |
네트워크 계층 | |
데이터 링크 계층 | |
물리 계층 |
애플리케이션 계층: FTP, HTTP, SSH, SMTP, DNS 등 응용 프로그램이 사용되는 프로토콜 계층. 웹 서비스, 이메일 등 서비스를 실질적으로 사람들에게 제공하는 층.
- FTP: 장치와 장치 간의 파일을 전송하는데 사용되는 표준 통신 프로토콜
- SSH: 보안되지 않은 네트워크에서 네트워크 서비스를 안전하게 운영하기 위한 암호화 네트워크 프로토콜
- HTTP: World Wide Web을 위한 데이터 통신의 기초이자 웹 사이트를 이용하는데 쓰는 프로토콜
- SMTP: 전자 메일 전송을 위한 인터넷 표준 통신 프로토콜
- DNS: 도메인 이름과 IP 주소를 매핑해주는 서버
전송 계층: 송신자와 수신자를 연결하는 통신 서비스를 제공하며 연결 지향 데이터 스트림 지원, 신뢰성, 흐름 제어를 제공, 그리고 애플리케이션과 인터넷 계층 사이의 데이터가 전될될 때 중계 역할을 함.
인터넷 계층: 장치로부터 받은 네트워크 패킷을 IP 주소로 지정된 목적지로 전송하기 위해 사용되는 계층. IP, ARP, ICMP 등이 있으며 패킷을 수신해야 할 상대의 주소를 지정하여 데이터를 전달. 상대방이 제대로 받았는 지에 대해 보장하지 않는 비연결형적인 특징.
링크 계층: 전선, 광섬유, 무선 등으로 실질적으로 데이터를 전달하여 장치 간에 신호를 주고받는 규칙을 정하는 계층.
2.3 네트워크 기기
애플리케이션 계층: L7 스위치
인터넷 계층: 라우터, L3 스위치
데이터 링크 계층: 브리지, L2 스위치
물리 계층: NIC, 리피터, A
스위치: 여러 장비를 연결하고 데이터 통신을 중재하며 목적지가 연결된 포트로만 전기 신호를 보내 데이터를 전송하는 통신 네트워크 장비
- L7 스위치: 로드 밸런서. 서버의 부하를 분산하는 기기. URL, 서버, 캐시, 쿠키들을 기반으로 트래픽을 분산.
- L4 스위치: 인터넷 계층을 처리, IP와 포트를 기반으로 트래픽을 분산.
라우터: 여러 개의 네트워크를 연결, 분할, 구분시켜주는 역할. 다른 네트워크에 존재하는 장치끼리 서로 데이터를 주고 받을 때 패킷 요소를 최소화하고 경로를 최적화하여 최소 경로로 패킷을 포워딩하는 라우팅을 하는 장비.
L3 스위치: L2 스위치 + 라우터
L2 스위치: 장치들의 MAC 주소를 MAC 주소 테이블을 통해 관리하며, 연결된 장치로부터 패킷이 왔을 때 패킷 전송을 담당.
브리지: 두 개의 근거리 통신망을 상호작용할 수 있도록 하는 통신망 연결 장치. 포트와 포트 사이의 다리 역할을 하며 장치에서 받아온 MAC 주소를 MAC 주소 테이블로 관리.
NIC: LAN 카드라고 하는 NIC(Network Interface Card)는 2대 이상의 컴퓨터 네트워크를 구성하는데 사용하며, 네트워크와 빠른 속도로 데이터를 송수신 할 수 있도록 컴퓨터 내에 설치하는 확장 카드. 각 LAN 카드에는 고유의 식별번호인 MAC 주소가 있음.
리피터: 약해진 신호 정도를 증폭하여 전달하는 장치.
AP: 패킷을 복사하는 기기.
2.4 IP 주소
ARP: Address Resolution Protocol. IP 주소로부터 MAC 주소를 구하는 IP와 MAC 주소의 다리 역할을 하는 프로토콜. ARP를 통해 가상 주소인 IP 주소를 실제 주소인 MAC 주소로 변환. RARP를 통해 실제 주소인 MAC 주소를 가상 주소인 IP 주소로 변환.
hop-by-hop: IP 주소를 통해 통신하는 과정.
라우팅 테이블: 라우터에 들어가 있는 목적지 정보들과 그 목적지로 가기 위한 방법이 들어있는 리스트. 게이트 웨이, 모든 목적지에 대해 해당 목적지에 도달하기 위해 거쳐야 할 다음 라우터의 정보.
게이트웨이: 서로 다른 통신망, 프로토콜을 사용하는 네트워크 간의 통신을 가능하게 하는 관문 역할을 하는 컴퓨터나 소프트웨어를 두루 일컫는 용어.
IP 주소 체계: IPv4, IPv6
- 클래스 기반 할당 방식: CIDR. 초기 방식. A, B, C, D, E, 다섯 개의 클래스로 구분하는 방식. 사용하는 주소보다 버리는 주소가 많은 단점. 이를 극복하기 위해 DHCP, IPv6, NAT 등장.
- DHCP(Dynamic Host Configuration Protocol): IP 주소 및 기타 통신 매개변수를 자동으로 할당하기 위한 네트워크 관리 프로토콜. 이를 통해 네트워크 장치의 IP 주소를 수동으로 설정할 필요없이 인터넷에 접속할 때마다 자동으로 IP 주소 할당.
-NAT(Network Address Translation): 패킷이 라우팅 장치를 통해 전송되는 동안 패킷의 IP 주소 정보를 수정하여 IP 주소를 다른 주소로 매핑하는 방법 -> 주로 여러 대의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위함. 예를 들어 인터넷 회선 하나를 개통하고 인터넷 공유기를 달아서 여러 PC를 연결하여 사용.
2.5 HTTP
HTTP/1.0 vs HTTP/1.1
-> keep-alive의 표준화: 매번 TCP 연결을 하는 것이 아니라 한번 TCP 초기화를 한 이후에 여러 개의 파일을 송수신 할 수 있음.
-> HOL Blocking: Head of Line Blocking. 네트워크에서 같은 큐에 있는 패킷이 그 첫 번째 패킷에 의해 지연될 때 발생하는 성능 저하 현상.
-> 무거운 헤더 구조: 쿠키 등 많은 메타데이터가 들어있고 압축이 되지 않아 무거움.
HTTP/1.x vs HTTP/2
-> 멀티 플렉싱: 여러 개의 스트림을 사용하여 송수신. 특정 스트림의 패킷이 손실되었다고 해도 해당 스트림에만 영향을 미치고 나머지 스트림은 멀쩡하게 동작 => HOL Blocking 극복.
-> 헤더 압축: 허프만 코딩 알고리즘을 사용
※ 허프만 코딩(Huffman Coding): 문자열을 문자 단위로 쪼개 빈도수를 세어 빈도가 높은 정보는 적은 비트 수를 사용하여 표현하고, 빈도가 낮은 정보는 비트 수를 많이 사용하여 전체 데이터의 표현에 필요한 비트 양을 줄이는 원리.
-> 서버 푸시: HTTP/1.1에서는 클라이언트가 서버에 요청을 해야 파일을 다운받을 수 있었지만, HTTP/2는 클라이언트 요청 없이 서버가 바로 리소스 푸시 가능.
HTTPS: 애플리케이션 계층과 전송 계층 사이에 신뢰 계층인 SSL/TLS 계층을 넣은 신뢰할 수 있는 HTTP 요청. HTTP/2는 HTTPS 위에서 동작.
SSL/TLS: 전송 계층에서 보안을 제공하는 프로토콜. 보안 세션을 기반으로 데이터를 암호화. 보안 세션이 만들어질 때 인증 매커니즘, 키 교환 암호화 알고리즘, 해싱 알고리즘 사용.
HTTPS 구축 방법: CA에서 구매한 인증키를 기반으로 구축, HTTPS를 제공하는 로드밸런서 이용, HTTPS를 제공하는 CDN 이용.
※ CA(Certificate Authorities): 신뢰성이 엄격하게 공인된 기업들만 참여할 수 있음.
HTTP/3: UDP 기반이기 때문에 3-way handshake 과정이 없음.
'면접을 위한 CS 전공지식 노트' 카테고리의 다른 글
면접을 위한 CS 전공지식 노트: 5장 자료구조 (0) | 2022.06.24 |
---|---|
면접을 위한 CS 전공지식 노트: 4장 데이터베이스 (0) | 2022.06.23 |
면접을 위한 CS 전공지식 노트: 3장 운영체제 (0) | 2022.06.22 |
면접을 위한 CS 전공지식 노트: 1장 디자인 패턴과 프로그래밍 패러다임 (0) | 2022.06.21 |