[네트워크]
노드와 링크가 서로 연결되어 있거나, 연결되어 있으면서 리소스를 공유하는 집합
노드
서버, 라우터, 스위치(목적지로 가는 적합한 경로를 찾아주는 라우팅 기능) 등 네트워크 장치
링크
유선, 무선
2.1.1 처리량과 지연 시간
네트워크를 구축할 때는 '좋은' 네트워크로 만드는 것이 중요!
좋은 네트워크란?
1) 많은 처리량 처리 가능
2) 지연 시간 짧음
3) 장애 빈도가 적음
4) 좋은 보안을 갖춤
대역폭
주어진 시간동안 네트워크 연결을 통해 흐를 수 있는 최대 비트 수
이 범위 내에서 데이터들이 흐름
처리량
- 링크 내에서 성공적으로 전달된 데이터의 양
- 얼만큼의 트래픽을 처리했는지 나타냄
- 많은 트래픽을 처리했다 = 처리량이 많다
트래픽
특정 시점에 링크 내에 흐르는 데이터의 양
**둘의 차이!**
- 트래픽 = 데이터
- 처리량이 많다 = 처리되는 데이터(=트래픽)이 많다
지연시간
요청이 처리되는 시간, 어떤 메시지가 두 장치 사이를 왕복하는데 걸리는 시간
링크 타입(무선, 유선), 패킷 크기, 라우터의 패킷 처리 시간에 영향을 받음
2.1.2 네트워크 토폴로지와 병목 현상
네트워크 토폴로지
노드와 링크가 어떻게 배치되어 있는지에 대한 방식, 연결 형태
1) 트리 토폴로지(=계층형 토폴로지)
트리 형태로 배치한 네트워크 구성
특징: 노드의 추가, 삭제가 쉬움, 특정 노드에 트래픽이 집중될 떄 하위 노드에 영향을 끼침
Q. 왜 노드의 추가 삭제가 쉬울까?
- 트리 구조(=계층적 구조)는 일반적으로 각 노드가 자식 노드를 가리키는 포인터 를 가지고 있음.
- 새 노드를 추가할 때 기존 노드의 포인터만 변경하면 되므로, 특정 위치에 삽입하는 게 쉬움.
- 삭제할 때도 부모 노드의 포인터를 변경하면 간단하게 노드를 제거할 수 있음.
2) 버스 토폴로지
중앙 통신 회선 하나에 여러개의 노드가 연결되어 공유하는 네트워크, 근거리 통신망(LAN)에서 사용함
설치 비용이 적고 신뢰성 우수, 노드를 추가 및 삭제하기 쉬움, but 스푸핑 위험이 있음!
Q. 왜 근거리 통신망에서 사용하기 좋을까?
- 중앙 회선만 설치하면 여러 노드를 연결할 수 있어서 배선이 적게 필요함.
- 기존 회선에 새로운 노드를 추가하는 것이 간단함.
- 모든 데이터가 하나의 채널을 공유하기 때문에, 소수의 장치가 연결된 환경에서는 효과적임.
스위칭이란?
LAN 상에서 송신부의 패킷을 최적의 경로를 따라 목적지로 전달하는 역할 (라우터, 스위치)
스푸핑이란?
LAN상에서 스위칭 기능을 마비시키거나 속여서 악의적인 특정 노드에 해당 패킷이 오도록 처리하는 것
3) 스타 토폴로지
중앙에 있는 노드에 모두 연결된 네트워크 구성
- 노드를 추가하거나 에러 탐지 쉽고 패킷의 충돌 발생 가능성이 적음
- 어떠한 노드에 장애가 발생해도 쉽게 에러를 발견할 수 있음
- 중앙 노드에 장애가 발생하면 전체 네트워크를 사용할 수 없고 설치 비용이 고가임
Q. 왜 패킷의 충돌 발생 가능성이 적을까?
노드가 개별적으로 중앙 노드에 연결돼 있어 다른 노드와 직접 연결된 것이 아니므로, 서로 패킷을 동시에 전송해도 충돌이 발생하지 않음.
4) 링형 토폴로지
각 노드가 양 옆의 두 노드와 연결하여 전체적으로 고리처럼 하나의 연속된 길을 통해 통신을 하는 망 구성 방식
- 데이터는 노드 -> 노드로 이동함
- 노드 수가 증가되어도 네트워크상의 손실이 거의 x, 충돌 발생 가능성이 x, 노드의 고장 발견을 쉽게 찾을 수 있음
- 네트워크 구성 변경이 어렵고 회선에 장애가 발생하면 전체 네트워크에 영향을 크게 끼치는 단점
Q. 왜 노드 수가 증가돼도 손실이 없을까?
- 링 토폴로지에서는 각 노드가 신호를 받아 증폭한 후 다음 노드로 전달함.
- 즉, 신호가 감쇠될 위험이 적어 노드 수가 증가해도 네트워크 손실이 거의 없음.
Q. 왜 충돌 발생 가능성이 거의 없을까?
토큰이라는 특수한 데이터 패킷 하나가 네트워크를 일정한 방향으로 순환함 (토큰 패싱 방식)
-> 토큰을 가진 노드만 데이터 전송이 가능하므로 여러 노드가 동시에 데이터를 전송하는 일이 없어 충돌이 발생하지 않음
5) 메시 토폴로지
- 그물망처럼 연결돼있음
- 한 단말 장치에 장애가 발생해도 여러 개의 경로가 존재하므로 네트워크를 계속 사용할 수 있고 트래픽도 분산 처리가 가능함
- 노드의 추가가 어렵고 구축 비용과 운용 비용이 고가임
토폴로지가 중요한 이유
-> 바로 병목현상을 찾을 때 중요한 기준이 되기 때문!
병목 현상이란?
전체 시스템의 성능이나 용량이 하나의 구성 요소로 인해 제한을 받는 현상
서비스를 만들었는데 병목 현상이 일어나서 사용자가 서비스를 이용할때 지연 시간이 길게 발생한다고 할때, 네트워크가 어떤 토폴로지를 갖는지, 어떠한 경로로 이루어져 있는지 알아야 올바른 곳에 회선을 추가해서 병목 현상 해결!
2.1.3 네트워크 분류
네트워크는 규모를 기준으로 분류
LAN
근거리 통신망. 같은 건물이나 캠퍼스 같은 좁은 규모
전송 속도가 빠르고 혼잡하지 않음
MAN
대도시 지역 네트워크를 나타내며 도시 같은 넓은 지역에서 운영됨
전송 속도는 평균, LAN보다는 더 많이 혼잡함
WAN
광역 네트워크. 국가, 대륙 같은 더 넓은 지역에서 운영
전송 속도는 낮음, MAN보다 혼잡함
2.1.4 네트워크 성능 분석 명령어
애플리케이션 코드상에는 문제가 없는데 서비스로부터 데이터를 가져오지 못하는 병목현상이 발생할 수 있다.
병목현상의 원인
- 네트워크 대역폭
- 네트워크 토폴로지
- 서버 CPU, 메모리 사용량
- 비효율적인 네트워크 구성
이때 네트워크 관련/무관련 테스트를 통해 네트워크로 인한 문제점인지 확인 후 네트워크 성능 분석해야됨
명령어
1) ping
네트워크 상태를 확인하고 싶은 대상 노드에 패킷을 전송하는 명령어
해당 노드의 패킷 수신 상태, 도달할때까지의 시간을 알아 해당 노드까지 잘연결돼있는지 확인 가능
2) netstat
접속돼 있는 서비스들의 네트워크 상태를 표시하는데 사용
네트워크 접속, 라우팅 테이블, 네트워크 프로토콜 등 리스트 보여줌
3) nslookup
DNS 관련된 내용을 확인하기 위해 쓰는 명령어
4) tracert
윈도우 - tracert, 리눅스 - traceroute
목적지 노드까지 네트워크 경로 확인할때 사용하는 명령어
경로의 구간들 중 어느 구간에서 응답 시간이 느려지는지 확인 가능
구글 사이트에 도달하기까지의 경로 추적하는 그림
2.1.5 네트워크 프로토콜 표준화
네트워크 프로토콜이란?
다른 장치들끼리 데이터 주고받기 위해 설정된 공통된 인터페이스
IEEE라는 표준화 단체가 정함
ex) IEEE802.3은 유선 LAN 프로토콜 -> 이를 통해 만든 기업이 다른 장치라도 서로 데이터 수신 가능
ex) HTTP 프로토콜을 통해 노드들은 웹서비스 기반으로 데이터 수신 가능
2.2 TCP/IP 4계층 모델
인터넷 프로토콜 스위트는 인터넷에서 컴퓨터들이 정보를 주고받는데 쓰이는 프로토콜들의 집합
-> 이를 TCP/IP 4계층 모델 or OSI 7계층 모델로 설명함
각 계층은 프로토콜의 네트워킹 범위에 따라 4개의 계층으로 나뉨
특정 계층이 변경됐을때 다른 계층이 영향 안받음
ex) 전송 계층에서 TCP->UDP 로 변경했다고 해서 웹 브라우저를 다시 설치해야하는건 아님
-> 유연하고 독립적으로 설계
1) 애플리케이션 계층
응용 프로그램이 사용되는 계층
웹서비스, 이메일 등 서비스를 실질적으로 사람들에게 제공하는 게층
ex) FTP, HTTP, SSH, SMTP,DNS 등
2) 전송 계층
송신자와 수신자를 연결하는 통신 서비스를 제공
애플리케이션과 인터넷 계층 사이의 데이터 전달될때 중계 역할을 함
ex) TCP, UDP
TCP
- 패킷 사이의 순서를 보장
- 연결지향 프로토콜을 사용해 연결
- 신뢰성 구축, 수신 여부 확인, '가상회선 패킷 교환 방식' 사용
UDP
- 패킷 사이 순서 보장 x
- 수신 여부 확인 x
- 단순히 데이터만 주는 '데이터그램 패킷 교환 방식' 사용
가상회선 패킷 교환 방식이란?
각 패킷에서는 가상회선 식별자가 포함
모든 패킷을 전송하면 가상 회선 해제되고 전송 순서대로 도착
데이터그램 패킷 교환 방식
패킷이 독립적으로 이동하고 최적의 경로 선택해서 감
하나의 메시지에서 분할된 여러 패킷은 서로 다른 경로로 전송, 도착한 순서가 다를 수 있음
TCP 연결 성립 과정
TCP는 신뢰성을 확보할때 3-way handshake 작업을 진행
1) SYN
클라이언트 -> 서버: 클라이언트의 ISN(새 TCP 연결의 첫 패킷에 할당된 시퀀스 번호)을 담아 SYN을 보냄
2) SYN + ACK
서버 -> 클라이언트: 클라이언트의 SYN을 받고 서버의 ISN을 보냄, 승인번호로 클라이언트의 ISN+1을 보냄
3) ACK
클라이언트-> 서버: 승인번호로 서버의 ISN+1 을 담아 ACK를 보냄
=> 신뢰성이 구축되고 이제 데이터 전송 시작~
TCP는 신뢰성 있는 계층, UDP는 신뢰성 없는 계층
TCP 연결 해제 과정
연결을 해제할때는 4-way handshake 과정이 발생
1) 클라이언트 -> 서버: 연결을 닫으려할때 FIN 세그먼트를 서버에 보냄.
클라이언트 상태: FIN_WAIT_1
2) 서버 -> 클라이언트: ACK 승인 세그먼트를 클라이언트에 보냄.
서버 상태: CLOSE_WAIT
클라이언트 상태: FIN_WAIT_2
3) 서버 -> 클라이언트: FIN 보냄
서버 상태: LAST_ACK
4)클라이언트 -> 서버: ACK 보냄
클라이언트 상태: TIME_WAIT
서버 상태: CLOSED
이후 클라이언트는 대기 후 연결 닫히고 모든 자원의 연결이 해제됨
Q. 클라이언트는 왜 TIME_WAIT 상태에 들어갈까?
1) 지연 패킷이 발생할 경우 대비
2) 두 장치가 연결이 닫혔는지 확인하기 위해
LAST_ACK 상태일때 닫히면 다시 새로운 연결할때 접속 오류남
인터넷 계층
- 장치로부터 받은 네트워크 패킷을 IP주소로 지정된 목적지로 전송하기 위해 사용되는 계층
- 패킷을 수신해야 할 상대의 주소를 지정하여 데이터 전달
- 상대방이 제대로 받았는지 보장안하는 비연결형적 특징
링크 계층
전선, 광섬유, 무선 등 실질적으로 데이터 전달하며 장치 간에 신호 주고받는 '규칙' 정하는 계층
유선 LAN(IEEE802.3)
유선 LAN을 이루는 이더넷은 IEEE802.3이라는 프로토콜을 따르며 전이중화 통신을 씀
전이중화 통신이란?
양쪽 장치가 동시에 송수신할 수 있는 방식
송신로와 수신로로 나눠 데이터를 주고받아 데이터를 보낼때 충돌이 날 일이 없음
반이중화 통신이란?
데이터를 보낸 이후 충돌이 발생한다면 일정 시간 이후 재전송
수신로와 송신로를 각각 두지 않고 한 경로를 기반으로 데이터를 보냄 -> 충돌에 대비해야함
유선LAN을 이루는 케이블
1) 트위스트 페어 케이블
하나의 케이블처럼 보이지만 실제로는 8개의 구리선을 2개씩 꼬아서 묶은 케이블
- UTP 케이블 : 구리선을 실드 처리하지 않고 덮음
- STP 케이블 : 구리선을 실드 처리하고 덮음
2) 광섬유 케이블
- 광섬유로 만든 케이블
- 레이저를 이용해서 통신하므로 구리선과 비교할 수 없을만큼 장거리 및 고속 통신이 가능함
- 한번 들어간 빛이 내부에서 계속적으로 반사되어 반대편 끝까지 가는 원리
무선 LAN
- 무선 LAN 장치는 수신과 송신에 같은 채널을 사용하므로 반이중화 통신을 사용
- 반이중화 통신은 양쪽 장치는 서로 통신할 수 있지만 동시에는 통신할 수 없음. 한번에 한 방향만 통신 가능
- 장치가 신호를 수신하면 전송이 완료될때까지 기다려야됨
- 둘 이상의 장치가 동시에 전송하면 충돌이 발생해 메시지 손실, 왜곡 우려 -> 충돌 방지 시스템 필요
CSMA/CA
반이중화 통신 중 하나로 장치에서 데이터를 보내기 전에 캐리어 감지 등으로 사전에 가능한 한 충돌을 방지하는 방식을 사용
1. 데이터를 송신하기 전에 무선 매체를 살핌
2. 캐리어 감지: 회선이 비어있는지 판단
3. IFS: 랜덤 값을 기반으로 정해진 시간만큼 기다리며, 무선 매체가 사용중이라면 점차 간격을 늘려가며 기다림
4. 이후에 데이터 송신
무선 LAN(WLAN)을 이루는 주파수
1) 와이파이
전자기기들이 무선 LAN 신호에 연결할 수 있게 하는 기술
사용하려면 공유기(AP)가 유선 LAN에 신호 -> 무선 LAN 신호로 바꿔주어 신호가 닿는 범위 내에서 무선 인터넷 사용함
2) BSS
기본 서비스 집합
단순 공유기를 통해 네트워크에 접속하는 것이 x
동일 BSS 내에 있는 AP들과 장치들이 서로 통신이 가능한 구조
하나의 AP만을 기반으로 구축돼 있어 사용자가 다른 곳으로 자유롭게 이동하며 네트워크에 접속하는건 불가능
3) ESS
여러개의 연결된 BSS
BSS보다 더 많은 이동성 지원
사용자가 다른 곳으로 자유롭게 이동하며 네트워크에 계속 접속 가능
이더넷 프레임
데이터 링크 계층은 이더넷 프레임을 통해 전달받은 데이터의 에러를 검출하고 캡슐화함
Preamble: 이더넷 프레임이 시작임을 알림
SFD: 다음 바이트부터 MAC 주소 필드가 시작됨을 알림
DMAC,SMAC: 수신, 송신 MAC 주소를 말함
EtherType: 데이터 계층 위의 계층인 IP 프로토콜을 정의함 ex) IPv4, IPv6
Payload: 전달받은 데이터
CRC: 에러 확인 비트
MAC 주소란?
컴퓨터나 노트북에는 네트워크에 연결하기 위한 장치가 있는데, 이를 구별하기 위한 식별번호
계층 간 데이터 송수신 과정
컴퓨터를 통해 다른 컴퓨터로 데이터를 요청한다면?
애플리케이션 계층 -> 전송 계층: 사용자가 보내는 요청값들이 캡슐화 과정을 거쳐 전달
전송계층 -> 링크 계층: 해당 서버와 통신
서버의 링크 계층 -> 애플리케이션 계층 : 비캡슐화 과정
캡슐화 과정이란?
상위 계층의 헤더와 데이터를 하위 계층의 데이터 부분에 포함시키고 그 계층의 헤더 삽입
애플리케이션 계층의 데이터 -> 전송 계층: 세그먼트/데이터그램화되며 TCP 헤더가 붙여짐
전송 계층 -> 인터넷 계층 : IP헤더가 붙여지며 패킷화 됨
인터넷 계층 -> 링크 계층: 프레임 헤더/트레일러가 붙어 프레임화 됨
비캡슐화 과정이란?
- 하위 -> 상위 계층으로 가며 각 계층의 헤더 부분을 제거하는 과정
- 캡슐화된 데이터를 받게 되면 링크 계층에서부터 타고 올라오며 하나씩 해체됨
- 최종적으로 사용자에게 애플리케이션의 PDU인 메시지로 전달됨
PDU란?
네트워크에서 어떤 계층 -> 계층으로 데이터가 전달될 때 한 덩어리의 단위
제어 관련 정보들이 포함된 '헤더' + 데이터를 의미하는 '페이로드' 로 구성됨
애플리케이션 계층: 메시지
전송계층: 세그먼트(TCP), 데이터그램(UDP)
인터넷 계층: 패킷
링크 계층: 프레임(데이터 링크 계층), 비트(물리 계층)