LAN(Local Area ~), MAN(Metropolitan ~), WAN(Wide ~)
2.1.4 네트워크 성능 분석 명령어
병목 현상의 주된 원인
Bandwidth
Topology
서버 CPU, 메모리 사용량
ping : 대상 노드로 패킷을 전송
ICMP 프로토콜을 지원하지 않는 대상으로는 불가능
netstat : 접속된 서비스들의 네트워크 상태를 표시
프로토콜, 로컬, 외부 주소, 포트, 상태 포함
nslookup : 특정 도메인의 IP 확인
tracert, traceroute : 특정 노드까지 네트워크 경로 확인
2.1.5 네트워크 프로토콜 표준화
IEEE802.3 : 유선 랜 프로토콜
2.2 TCP/IP 4계층 모델
Internet protocol suite : 프로토콜의 집합
TCP/IP 4계층 모델, OSI 7계층 모델로 설명함
2.2.1 계층 구조
TCP/IP(Transmission Control Protocol/Internet Protocol)
각 계층은 서로 영향을 받지 않도록 설계됨
Application Layer
실질적인 서비스를 제공하는 계층
FTP(장치간 파일 전송), HTTP, SSH(원격 접속용 보안), SMTP, DNS(도메인, ip 매핑)
Transport Layer
송신자, 수신자를 연결하는 통신 서비스 제공(TCP, UDP, QUIC)
TCP
가상회선 패킷 교환 방식 사용
가상회선 : 송신자, 수신자 사이에 임의로 정한 하나의 경로
각 패킷에 가상회선 식별자가 포함되어 모든 패킷은 가상회선으로만 전송됨
패킷 사이 순서 보장
3-way Handshake
TCB(TCP Control Block) : connection state, sequece 번호 등의 연결에 필요한 정보를 가진 구조체
client에서 SYN(client ISN) 보냄
client : SYN_SENT
server : LISTEN
server에서 SYN 받고 SYN(server ISN)+ACK(client ISN +1) 보냄
client : SYN_SENT
server : SYN_RECEIVED
client에서 SYN+ACK 받고 ACK(server ISN +1) 보냄
client : ESTABLISHED
server : ACK 받은 후 ESTABLISHED
4-way Handshake
client에서 FIN 보냄
client : FIN_WAIT_1
server : ESTABLISHED
server에서 FIN 받고 앱 닫을 준비하고 ACK 보냄
client : FIN_WAIT_1
server : CLOSE_WAIT
server에서 앱 닫을 준비가 된 후 FIN 보냄
client : ACK 받으면 FIN_WAIT_2
server : LAST_ACK
client에서 FIN 받고 ACK 보냄
client : TIME_WAIT, 일정 시간(MSL) 동안 세션을 남겨놓고 잉여 패킷을 기다린 다음 CLOSED
server : ACK 받으면 CLOSED
- TIME_WAIT 존재 이유
- 지연 패킷
- passive close의 FIN에 대한 ACK를 보내고 passive close가 닫혔는지 확인 후 종료하기 위함(TIME_WAIT이 없으면 FIN을 받자마자 CLOSED가 되기 때문에 ACK를 passive close로 보내지 못함)
- Ubuntu는 1분, Windows는 4분
UDP
데이터그램 패킷 교환 방식 사용
각 패킷들이 독립적으로 이동함
패킷 사이 순서 보장되지 않음
Internet Layer
패킷을 IP 주소로 지정된 노드까지 라우팅하는 계층
IP, ARP, ICMP
Network Interface Layer(Link Layer)
데이터를 전기 신호로 변환, 전송하고 Ethernet 등의 프로토콜을 통해 제어하는 계층
OSI에선 물리 계층(전기 신호 전송), 데이터 링크 계층(에러 확인, 흐름, 접근 제어 등)으로 구분함
Ethernet
IEEE802.3 : 유선 LAN에서 사용하는 프로토콜, 전이중화 통신 사용
전이중화 통신 : 송신, 수신로를 나눠 동시에 송수신 가능
CSMA/CD : 이전에 사용하던 반이중화 통신(충돌이 발생하면 일정 시간 후 재전송)
이더넷 프레임
Preamble : 프레임의 시작을 알림(0, 1 반복)
SFD(Start Frame Delimiter) : 다음 바이트부터 DA가 시작됨을 알림(10101011)
DA(Destination Address) : 목적지의 MAC 주소
SA(Source Address) : 출발지의 MAC 주소
EtherType/Length : 0x600 이하일 경우 IEEE802.3의 Length, 이상일 경우 DIX 2.0의 Type으로 해석
Data/Payload : 46 B 보다 작을 경우 Padding으로 채워짐
FCS(CRC) : DA+SA+Length+Data의 영역을 계산하여 에러 판별
송신측에서 추가, 수신측에서 확인하여 에러 프레임은 버림
무선 랜
IEEE802.11
송 수신이 같은 채널로 이루어지기 때문에 반이중화 통신 사용
CSMA/CA : 캐리어 감지, IFS(Inter FrameSpace)로 기다렸다가 무선 매체 사용
BSS(Basic Service Set) : 하나의 AP를 이용
ESS(Extended Service Set) : 하나 이상의 연결된 BSS 그룹, 다른 장소로 이동하며 네트워크 사용 가능
계층 간 데이터 송수신 과정
Message : Application layer에서 생성된 PDU
Segment : TCP(L4) header가 붙은 PDU
UDP일 경우 Datagram
Packet : IP(L3) header가 붙은 PDU
Frame : Frame header + trailer가 붙은 PDU
Bit : 물리 계층에서 사용되는 PDU
2.3 네트워크 기기
2.3.1 네트워크 기기의 처리 범위
Application Layer : L7 스위치
Internet Layer : L3 스위치, 라우터
Data Link Layer : L2 스위치, 브릿지
Physical Layer : NIC, 리피터, AP
2.3.2 Application 계층을 처리하는 기기
L7 스위치(로드밸런서)
목적지와 연결된 포트로만 신호를 보내는 네트워크 장비
URL, 서버, 캐시, 쿠키 등을 기반으로 요청을 여러 서버로 나눠 부하를 분산함
가상 IP를 사용해 서버 이중화 가능
필터링, 모니터링 가능
Health check을 통해 장애가 발생한 서버 확인
Health check : TCP, HTTP 등의 다양한 방법으로 요청을 보내어 요청이 정상적으로 이루어지는지 확인
L4 스위치와의 차이
L4 스위치 : Tranport 계층을 처리
IP, port를 기반으로 트래픽 분산
Message를 기반으로 인식하지 못함
스트리밍 관련 서비스에서는 사용할 수 없음
AWS에서는 NLB
L7 스위치 : Application 계층을 처리
IP, port, URL, HTTP header, 쿠키 등을 기반으로 트래픽 분산
AWS에서는 ALB
2.3.3 Internet 계층을 처리하는 기기
라우터(L3 스위치)
라우팅 : 다른 네트워크끼리 통신할 때 패킷 소모를 최소화하고 최적의 경로로 패킷을 포워딩하는 작업
L2 스위치 + 라우팅
2.3.4 Data Link 계층을 처리하는 기기
L2 스위치
MAC 주소 테이블을 통해 장치들의 MAC 주소 관리
패킷 전송 담당
패킷의 MAC 주소를 읽어 스위칭함
IP 주소 기반의 라우팅은 불가능
목적지가 스위치의 MAC 주소 테이블에 없다면 전체 포트에 전달
브릿지
MAC 주소 테이블을 사용해 LAN 끼리의 연결 가능
2.3.5 Physical 계층을 처리하는 기기
NIC(Network Interface Card) : MAC 주소를 가짐
Repeater : 전기 신호 증폭
광케이블로 인해 현재는 사용 안함
AP(Access Point) : 유선랜과 무선랜을 연결시켜줌
2.4 IP 주소
2.4.1 ARP
ARP(Address Resolution Protocol) : IP로부터 MAC을 구하는 프로토콜
RARP : MAC→IP 변환
A에서 ARP Request broadcast를 보냄 → 해당 IP를 가진 B에서 ARP Reply unicast를 보냄(스위치 ARP table에 B가 있을 경우 스위치에서 보냄)
Java에서는 다양한 gc 알고리즘을 통해 heap 영역의 메모리가 관리된다.
따라서 사용자가 메모리 release 과정을 신경쓸 필요가 없다.
하지만 C++의 경우, new 키워드 또는 malloc 함수를 통해 heap에 할당한 메모리는 직접 해제해야 한다.
이 내용을 포함하여...
문제
정점 n(\(2 \le n \le 1000\)), 간선 k(\(1 \le k \le 100000\))개와 목표 정점 w가 주어진다.
아래 조건을 만족하며 w를 건설하기 위한 최소 시간을 구해야 한다.
각 정점을 건설할 때의 시간은 d[n]로 주어진다.
간선은 s ...
문제
기존 정점 n(\(0 \le n \le 50\)), 추가하는 정점 m(\(1 \le m \le 100\)), 선분의 길이 l(\(100 \le l \le 1000\))이 주어질 때, 아래 조건에 맞춰 정점 간의 거리의 최댓값의 하한을 구해야 한다.
\(n+m \lt l...
문제
원소의 크기가 [1, 2000]에 속하는 정수이고, 길이가 \(N(1 \le N \le 250)\)인 수열 A가 주어진다.
위 수열을 두 개의 부분 수열 C, D로 나눌 때, 아래의 조건을 만족하는 C의 원소의 합 - D의 원소의 합의 차이의 최솟값과, 그 경우의 수를 구...
Leave a comment