네트워크에 대해 정리해보자!
네트워크란 노드와 링크가 서로 연결되어 있으며 리소스를 공유하는 결합
노드 : 서버, 라우터, 스위치 등 네트워크 장치
링크 : 유선, 무선
처리량과 지연시간
- 좋은 네트워크란? : 처리량이 많고 지연시간이 짧고 장애빈도가 적고 좋은 보안을 갖춤
- 처리량 : 링크를 통해 전달되는 단위시간당 데이터량
- 트래픽, 네트워크 장치간 대역폭, 네트워크 중간 발생하는 에러, 하드웨어스펙에 영향 받음
- 지연시간 : 요청이 처리되는 시간 즉 메시지가 두 장치 사이를 왕복하는데 걸린 시간
네트워크 토폴로지와 병목현상
- 네트워크 토폴로지 : 노드와 링크가 어떻게 배치되어 있는지에 대한 연결상태
1. 트리 토폴로지
- 계층형 토폴로지, 트리 형태로 배치한 네트워크 구성
- 노드의 추가 삭제가 쉽고 특정 노드에 트래픽 집중 시 하위 노드에 영향을 끼칠 수 있음
2. 버스 토폴로지
- 중앙 회선 하나에 여러개의 노드가 연결되 공유하는 네트워크 구성, LAN(근거리 통신)에 사용
- 설치 비용이 적고 신뢰성이 우수하며 중앙 통신 회선에 노드를 추가 삭제가 쉬움
- 스푸핑이 가능하다
스푸핑이란? : LAN상에서 송신부의 패킷을 송신과 관련없는 다른 호스트에 가지 않도록 하는 스위칭 기능을 마비시키거나 속여 특정 노드에 해당 패킷이 오도록 처리하는 것
(악의적인 노드에 전달시키는 것)
3. 스타 토폴로지
- 중앙에 있는 노드에 모두 연결된 네트워크 구성
- 노드를 추가하거나 에러 탐지가 쉽고 패킷 충돌 발생 가능성이 적다.
- 어떠한 노드에 장애가 발생해도 쉽게 에러를 발견할 수 있고 장애 노드가 중앙 노드가 아닐 경우 다른 노드에 영향을 끼치는 것이 작다.
- 중앙 노드에 장애가 발생시 전체 네트워크를 사용할 수 없고 설치비용이 고가
4. 링형 토폴로지
- 각각의 노드가 양옆의 두 노드와 연결돼 전체적으로 고리처럼 하나의 연속된 길을 통해 통신하는 망 구성 방식
- 데이터는 노드에서 노드로 이동하고, 각각의 노드는 고리 모양의 길을 통해 패킷 처리
- 노드 수가 증가되어도 네트워크상의 손실이 거의 없고 충돌이 발생되는 가능성이 적고 노드의 고장발견이 쉬움
- 네트워크 구성 변경이 어렵고 회선에 장애 발생시 네트워크 전체에 영향
5. 메시 토폴로지(망형 토폴로지)
- 그물망처럼 연결되어 있는 구조
- 한 단말장치에 장애 발생해도 여러 경로가 존재해 네트워크를 계속 사용 가능
- 트래픽 분산 처리가 가능
- 노드의 추가가 어렵고 구축 비용과 운용비용이 고가
병목현상
- 병목현상을 찾을 때 토폴로지가 중요한 기준이 됨
- 네트워크가 어떤 토폴로지를 갖는지, 어떤 경로로 이루어져 있는지 알아야 병목 현상을 올바르게 해결 가능
네트워크 분류
- 네트워크는 규모를 기반으로 분류가능.
- LAN, MAN, WAN
1. LAN
- 근거리 통신망(같은 거물, 캠퍼스와 같은 좁은 공간)
- 전송속도가 빠르고 혼잡하지 않음
2. MAN
- 대도시 지역 네트워크(도시)
- 전송속도 평균 LAN보다는 혼잡
3. WAN
- 광역 네트워크(국가, 대륙, 더넓은 지역)
- 전송 속도 낮음 , MAN보다 혼잡
TCP/IP 4계층 모델
- 컴퓨터들이 서로 정보를 주고받는데 쓰이는 프로토콜 집합
1. 계층 구조
- TCP/IP 계층 : 애플리케이션 계층-전송 계층- 인터넷계층- 링크계층
- OSI 7계층 : 애플리케이션 - 프레젠테이션 - 세션 - 전송 - 네트워크 - 데이터링크 - 물리
애플리케이션계층 : FTP/HTTP/SSH/SHTP/DNS
전송계층 : TCP/UDP/QUIC
인터넷 계층 : IP/ARP/ICMP
링크 계층 : 이더넷
2. 애플리케이션 계층
- FTP, HTTP, SSH, SMTP, DNS 등 응용 프로그램이 사용되는 프로토콜 계층
- 웹 서비스, 이메일 등 서비스를 실질적으로 사람들에게 제공하는 계층
http : world wide web을 위한 데이터 통신의 기초이자 웹 사이트를 이용하는데 쓰이는 프로토콜
ssh : 보안되지 않은 네트워크에서 네트워크 서비스를 안전하게 운영하기 위한 암호화한 네트워크 프로토콜
ftp : 장치와 장치 간의 파일을 전송하는데 사용되는 표준 통신 프로토콜
3. 전송계층
- 송신자와 수신자를 연결하는 통신 서비스를 제공
- 연결지향데이터 스트림 지원, 신뢰성, 흐름제어를 제공하며 애플리케이션과 인터넷 계층 사이 데이터가 전달될 때 중계 역할
- TCP와 UDP가 있음
3.1 TCP
-
패킷 사이의 순서 보장하고 연결지향 프로토콜을 사용해 연결, 신뢰성을 구축해 수신여부를 확인하고 가상회선 패킷 교환 방식 사용
-
TCP 연결 성립과정 : 신뢰성을 확보할 때 3-way handshake작업 진행
3-웨이 핸드쉐이크 과정 이후 신뢰성이 구축되고 데이터 전송
-
TCP 연결해제 과정 : 4-way handshake 과정 발생
4-way handshake에서 TIME_WAIT를 살펴보자!!
왜 일정 시간 뒤에 TCP연결을 닫을까??
- 지연패킷이 발생할 경우 대비 (패킷이 뒤늦게 도달하고 이를 처리하지 못하면 데이터 무결성 문제 발생)
- 두 장치가 연결이 닫혔는지 확인 하기 위해서
3.2 UDP
- 패킷 사이의 순서 보장하지 않고 수신여부를 확인하지 않으며 단순히 데이터만 주고받는 데이터그램 패킷교환 방식 사용
가상회선 패킷 교환 방식 : 각 패킷에는 가상회선 식별자가 포함되며 모든 패킷을 전송하면 가상회선이 해제되고 패킷들은 전송된 순서대로 도착하는 방식
데이터그램 패킷 교환 방식 : 패킷이 독립적으로 이동하며 최적의 경로를 선택해 갈 때, 하나의 메시지에서 분할된 여러 패킷은 서로 다른 경로로 전송될 수 있고 도착한 순서가 다를 수 있다.
4. 인터넷 계층
- 네트워크 패킷을 IP주소로 지정된 목적지로 전송하기 위해 사용되는 계층
- IP, ICMP, ARP가 있고 패킷을 수신해야할 상대의 주소를 지정해 데이터 전달
- 상대방이 제대로 받았는지 보장하지 않는 비연결형적 특성가짐
5. 링크계층
- 전선, 광섬유, 무선 등으로 실질적으로 데이터를 전달하며 장치 간에 신호를 주고받는 규칙을 정하는 계층
계층간 데이터 송수신과정
HTTP를 통해 웹서버에 있는 데이터르 요청한다면?
- 애플리케이션 계층에서 전송계층으로 요청값들이 캡슐화 과정을 거쳐 전달되고, 다시 링크계층을 통해 해당 서버와 통신하고, 해당서버 링크 계층으로부터 애플리케이션까지 비캡슐화가 진행
캡슐화 과정
- 상위 계층의 헤더와 데이터를 하위계층의 데이터 부분에 포함시키고 해당 계층의 헤더를 삽입하는 과정
데이터 | 애플리케이션 계층(메시지)
TCP(L4) 헤더 + 데이터 | 전송 계층(세그먼트(TCP), 데이터그램(UDP))
IP(L#) 헤더 + TCP(L4) 헤더 + 데이터 | 인터넷 계층(패킷)
프레임 헤더 + IP(L#) 헤더 + TCP(L4) 헤더 + 데이터 + 프레임 트레일러 | 링크계층(프레임, 비트)
네트워크 기기
1. 애플리케이션 계층 처리기기
- L7 스위치(로드밸런서) : 여러 장비를 연결하고 데이터 통신 중재하며 목적지가 연결된 포트로만 전기 신호를 보내 데이터를 전송하는 통신 네트워크 장비
- 로드밸런서 : 서버 부하를 분산하는 기기
- 기능 : 서버 이중화 : 2대 이상의 서버를 기반으로 가상 IP를 제공하고 이를 기반으로 안정적인 서비스 제공
0.0.012010이란 가상 IP에 사용자들이 접근하면 뒷단에 사용가능한 0.0.012011, 0.0.012012 서버를 기반으로 서빙
2. 인터넷 계층 처리 기기
- 라우터 : 여러 네트워크를 연결, 분할, 구분시켜주는 역할
- 다른 네트워크에 존재하는 장치끼리 데이터를 주고받을 때 패키 소모를 최소화 하고 경로를 최적화해 최소 경로로 패킷을 포워딩
PS) NAT?
- 패킷이 라우팅 장치를 통해 전송되는 동안 패킷의 IP주소 정보를 수정해 IP주소를 다른 주소로 매핑하는 방법
IPv4 주소 체계만으로는 많은 주소들을 모두 감당 못한다. 그래서 NAT으로 공인 IP와 사설 IP로 나눠 주소를 처리
ex) 김,이,박은 192.158.0.xxx를 기반으로 각각의 다른 IP를 가지고 있음 이를 사설 IP. NAT 장치를 통해 하나의 공인 IP인 121.165.151.200으로 외부 인터넷에 요청 가능
- 내부 네트워크에서 사용하는 IP주소와 외부에 드러나는 IP 주서를 다르게 유지할 수 있어 내부 네트워크에 대한 어느 정도 보안이 가능
- 여러 명이 동시에 인터넷을 접속하게 돼 실제로 접속하는 호스트 숫자에 따라 접속 속도가 느려 질 수 있다.
HTTP
1. HTTP/1.0
- 한 연결당 하나의 요청 처리 -> 서버로 파일을 가져올때마다 TCP 3way handshake를 열어놔야해 RTT증가
RTT? : 패킷 왕복 시간
RTT 증가 해결방법 : 이미지 스플리팅, 코드압축, 이미지 Base64인코딩
- 이미지 스플리팅 : 많은 이미지가 합쳐 있는 하나의 이미지를 다운받고 이를 기반으로 background-image의 position을 이용해 이미지 표기
- 코드압축 : 코드를 압축해 개행문자, 빈캄을 없애 코드의 크기를 최소화하는 방법
- 이미지 파일을 64진법으로 이루어진 문자열로 인코딩 하는 방법
2. HTTP/1.1
- 매번 TCP 연결을 하는것이 아니라 한번 TCP를 초기화한 이후 keep-alive 옵션으로 여러개의 파을을 송수신 할 수 있도록 변경
단점
- 문서 안에 포함된 다수의 리소스(이미지, css, script)를 처리하려면 요청할 개수에 비례해 대기 시간이 길어짐
- HOL Blocking : 네트워크에서 같은 큐에 있는 패킷이 첫번째 패킷에 의해 지연될때 발생되는 성능 저하 현상
- 무거운 헤더 구조 : 헤더에 쿠키 등 많은 메타 데이터가 있어 압축되지 않아 무거움
3. HTTP/2.0
- 지연시간을 줄이고 응답시간을 더빠르게 하며 멀티플렉싱, 헤더압축, 서버푸시,요청의 우선순위 처리를 지원하는 프로토콜
3.1 멀티플렉싱
- 여러개의 스트림을 사용해 송수신함
- 특정 스트림의 패킷이 손실되도 해당 스트림에만 영향 미치고 나머지 스트림은 멀쩡히 동작
- 단일 연결을 사용해 병렬로 여러 요청을 받을 수 있고 응답 줄 수 있어 HOL BLocking 해결
3.2 헤더 압축
- 허프만 코딩 압축 알고리즘을 사용해 HPACK 압축 형식 가짐
허프만 코딩? : 문자열을 문자 단위로 쪼개 빈도수를 세어 빈도가 높은 정보는 적은 비트수를 사용해 표현하고 빈도가 낮은 정보는 비트수를 많이 사용해 표현해 전체 데이터의 표현에 필요한 비트양을 줄이는 원리
3.3 서버 푸시
- 클라이언트 요청 없이 서버가 바로 리소스를 푸시할 수 있음
- html을 읽으면서 그안에 있는 css파일을 서버에 푸시해 클라이언트에 먼저 줄 수 있음
4. HTTPS
- HTTPS는 애플리케이션 계층과 전송 계층 사이에 신뢰계층인 SSL/TLS 계층을 넣은 신뢰할 수 있는 HTTP요청을 뜻함 이를 통해 통신을 암호화한다.
4.1 SSL/TLS
- 보안을 제공하는 프로토콜 : 서버와 클라이언트가 통신 시 SSL/TLS를 통해 제 3자가 메시지를 도청하거나 변조하지 못하도록 함
- 인터셉터 방지
- 보안 세션을 기반으로 데이터를 암호화하며 보안 세션 생성시 인증 메커니즘, 키 교환 암호화 알고리즘, 해싱 알고리즘 이용
5. HTTP/3.0
- QUIC 계층 위에서 동작 UDP 기반
- 멀티플렉싱과 초기 연결 설정 시 지연시간 감소
출처: 면접을 위한 CS 전공지식 노트