너무너무 멋져 눈이눈이 부셔

네트워크 분류 본문

천재적인 CS/네트워크

네트워크 분류

강하다이녀석 2023. 11. 29. 15:58

네트워크 분류

- 규모 기준

LAN(Local Area Network) 근거리 통신망. 같은 건물, 사무실 등. 
빠르고 혼잡x
MAN(Metropolitan Area Network) 대도시 지역. 
WAN(Wide Area Network) 국가, 대륙 단위. 전송 속도는 낮으며 혼잡.

 

네트워크 성능 분석 명령어

코드 상 문제는 없는데 사용자가 서비스로부터 데이터를 가져오지 못하는 상황? 병목현상일 가능성 o

병목현상의 원인

1. 네트워크 대역폭

2. 네트워크 토폴로지

3. 서버 CPU, 메모리 사용량

4. 비효율적 네트워크 구성.

-> 네트워크 관련 테스트 & 네트워크와 무관한 테스트를 한 후 네트워크 발생 문제인것을 확인하면 성능 분석을 해봐야 함.

 

성능 분석 명령어

ping [IP주소 or 도메인 주소]

네트워크 상태를 확인하려는 대상 노드를 향해, 일정 크기의 패킷을 전송하는 명령어. 

- 해당 노드의 패킷 수신 상태, 도달하기 까지의 시간 확인 가능. 

- IMCP 프로토콜을 통해 (?????????) 동작, 이 프로토콜을 지원하지 않는 기기, 정책상 차단 되었을 경우 실행x

 

 

 

netstat

접속되어있는 서비스들의 네트워크 상태 표시 

- 네트워크 접속, 라우팅 테이블, 네트워크 프로토콜 등 리스트

 

주로 서비스의 포트가 열려있는지 확인할 떄 씀.

지금 접속하고 있는 사이트 등에 관한 상태 리스트 확인 가능..

 

 

 

nslookup

DNS에 관련된 내용을 확인하기 위해 쓰는 명령어. 특정 도메인에 매핑된 IP 를 확인.

 

 

tracert(리눅스 : traceroute)

목적지 노드까지 네트워크 경로를 확인가능.  구간들 중 어느 구간에서 응답 시간이 느려지는지 등을 확인 가능.

네트워크 참조 모델 :

통신이 이루어지는 과정을 계층으로 표현

1. 택배의 송수신 과정은 반대 과정

2. 정형화된 단계가 있으며, 계층적으로 표현 가능하다

예시

이유

1. 네트워크 구성과 설계과 용이 : 계층의 목적과 역할에 부합한 설계를 하면 용이

2. 계층화 하면 문제 진단과 해결이 용이: 문제가 어디서 발생했는지 확인하기 좋음

 

이 계층들은 특정 계층이 변경되었을 때 다른 계층이 영향받지 않도록 설계.

TCP/IP 4계층 모델(인터넷 프로토콜 스위트)

네트워크 프로토콜에 중점을 뒀다 (?)

네트워크에서 사용되는 통신 프로토콜의 집합.\

계층들은 프로토콜의 네트워킹 범주에 따라 네 개의 추상화 계층으로 구성.

응용 계층에서는 데이터를 스트림으로 전달 -> 전송 계층에서는 스트림을 잘라서 세그먼트로 전달 ->

인터넷 계층에서는 세그먼트를 -> IP 패킷으로 만듦.

 

애플리케이션 계층(OSI 세션+표현+응용 계층과 유사)

응용프로그램이 사용되는 프로토콜 계층.

웹서비스, 이메일 등 서비스를 실질적으로 사람들에게 제공하는 층.

FTP 장치와 장치간의 파일을 전송하는데 사용되는 표준 통신 프로토콜
SSH 보안되지 않은 네트워크에서 네트워크 서비스를 안전하게 운영하기 위한 암호화 네트워크 프로토콜
HTTP World Wide Web을 위한 데이터 통신의 기초, 웹사이트를 이용하는데 쓰는 프로토콜
SMTP  전자 메일 전송을 위한 인터넷 표준 통신 프로토콜
DNS 도메인 이름과 IP 주소를 매핑하는 서버. 

 

 전송 계층 (OSI전송 계층과 유사)

  • 신뢰할 수 있는 통신과 연결형 통신을 가능하게 한다. -> IP한계(신뢰x, 비연결형) 극복
  • 포트 번호를 통해 응용 계층의 애플리케이션 프로세스를 식별하는 역할.

 

애플리케이션-인터넷 계층 사이의 데이터 중계역할

TCP: 빨대로 물마시기, UDP: 식수대에게 물 흘리면서 마시기

TCP

패킷사이 순서 보장. 연결지향 프로토콜을 사용해서 신뢰성을 구축해서 수신여부 확인.
'가상회선 패킷 교환 방식'사용 : 각 패킷에는 가상회선 식별자가 포함되며 모든 패킷을 전송하면 가상 회선이 해제되고 패킷들은 전송된 순서대로 도착. 

(얘들끼리 통로가 만들어지고 나서야 서로 통신이 가능하다.)
→마치 전화같은거 내가 하는 말을 B한테 바로 전달 가능. 중간에 비는 데이터가 없음.(패키지 손실이 없다.)
UDP 오버헤드가 적어서 빠름.(받고, 정렬하고…. 등의 과정이 없어서) 가끔 스트리밍 서비스에서 멈췄다가 진행되고 이런 버퍼링 같은 것들.
패킷 손실이 일어날 수 있음
중간에 비어있는건 안 중요해 그냥 빨리 넘어가

데이터그램 패킷 교환 방식 : 순서 보장x 수신 여부 확인 x 단순 데이터만 전송. 패킷이  독립적으로 이동하며 최적의 경로를 선택하여 감. 하나의 메세지에서 분할된 여러 패킷은 서로 다른 경로로 전송될 수 있음.

-  오버헤드가 적어서 빠름.(받고, 정렬하고…. 등의 과정이 없어서) 가끔 스트리밍 서비스에서 멈췄다가 진행되고 이런 버퍼링 같은 것들.
-  패킷 손실이 일어날 수 있음
-  중간에 비어있는건 안 중요해 그냥 빨리 넘어가

 

-연결형(Connection-Oriented) 프로토콜

송신자와 수신자 사이의 논리적인 연결을 확립하고 데이터를 전송하는 방법으로 패킷들의 순서가 맞지 않을 위험이 적고 오류 발생 시 재전송을 하여 신뢰성 있는 전송이라고 할 수 있다.

 

-비연결형(Connectionless) 프로토콜

송신자와 수신자 사이에 연결을 확립하지 않고 데이터를 전송하는 방법이다. 따라서 오류 확인을 하지 못하므로 신뢰성 없는 전송이라고 할 수 있다. 하지만 연결확립에 걸리는 시간이 없어 전송 속도가 빠르다.

출처: https://ddka.tistory.com/entry/연결형-서비스와-비연결형-서비스 [Do.Log:티스토리]

 

소켓: TCP와 UDP를 사용하기 위한 인터페이스(이걸 할라면 너네 이런 식으로 통신 해야 한다고 미리 만들어놓은 약속)

 

TCP 연결 성립 과정

3웨이 핸드셰이크

1. SYN단계 : 클라이언트는 서버에 클라이언트의 ISN(새로운 TCP 연결의 첫번째 패킷에 할당된 임의의 시퀀스 번화)

2. SYN + ACK 단계 : 서버는 SYN 수신, 서버의 ISN 보냄. + 승인번호로 클라이언트의 ISN +1을 보냄

3. ACK 단계 : 서버의 ISN + 1인 값인 승인 번호를 담아 ACK를 서버에 보냄. 

 

-> 이 과정으로 신뢰성이 구축되고 데이터 전송을 시작. (UDP는 없어서 신뢰성 x) 

 

* 용어 정리

SYN 연결 요청 플래그
ACK 응답 플래그
ISN Initial Sequence Number, 초기 네트워크 연결을 할 때 할당된 32비트 고유 시퀀스 번호.

 

 TCP 연결 해제 과정

 

4-웨이 핸드셰이크

1. 먼저 클라이언트가 연결을 닫으려고 할 때, FIN으로 설정된 세그먼트를 보냄. 클라이언트는 FIN_WAIT_1 상태로 들어가고 서버의 응답을 기다림

2. 서버는 클라에게  ACK라는 승인 세그먼트를 보내고 CLOSE_WAIT 상태에 들어감. 클라가 세그먼트를 받으면, FIN_WAIT_2 상태에 들어감

3. 서버는 일정 시간 이후 클라에게 FIN이라는 세그먼트를 보냄

4. 클라는 TIME_WAIT 상태가 되고, 다시 서버로 ACK  보냄. 

  서버는 CLOSED 상태가 됨.

 이후 클라이언트는 어느정도 시간을 대기한 후, 연결이 닫히고 클라이언트와 서버의 모든 자원 연결이 해제됨. \

 

TIME_WAIT 

소켓이 바로 소멸되지 않고 일정시간 유지되는 상태.

 

WHY TIME_WAIT ?
1. 지연 패킷이 발생할 경우를 대비하기 위함.  :

  • 클라이언트는 아직 서버로부터 받지 못한 데이터가 있을 것을 대비해 기다리는 과정을 거친다.  이를 처리하지 못한다면 데이터 무결성(정확성과 일관성을 유지하고 보증하는 것) 문제 발생
  • (100이 들어와야 하는데 50만 들어옴)

2. 두 장치가 연결이 닫혔는지 확인하기 위함.

LAST_ACK 상태에서 닫히게 되면 새로운 연결을 하려고 할 때 장치는 여전히 LAST_ACK로 되어있어 장치는 접속 오류가 나타남.

 

인터넷 계층 OS 네트워크 계층과 유사

장치로부터 받은 네트워크 패킷을 IP주소로 지정된 목적지로 전송하기위해 사용되는 계층.

- 패킷을 수신해야할 상대의 주소를 지정하여 데이터 전달.

- 상대방이 잘 받았는지 보장을 하지 않는 비연결형적인 특징.

IP - 호스트를 식별하기 위해 사용하는 번호
ARP  
ICMP  

 

링크 계층(네트워크 접근 계층) OSI 데이터 링크 계층과 유사

전선, 광섬유, 무선 등으로 실질적으로 데이터를 전달하며 장치 간 신호를 주고받는 규칙을 정하는 계층.

- 물리 계층 : 무선 LAN , 유선 LAN을 통해 0과 1로 이루어진 데이터를 보내는 계층. -> 없다고 보는게 지배

- 데이터 링크 계층 : '이더넷 프레임'을 통해 에러 확인, 흐름제어, 접근 제어를 담당.

 

유선 LAN(IEEE802.3): 유선 LAN을 이루는 이더넷은 IEEE802.3이라는 프로토콜을 따르며, 전이중화 통신을 사용.\

 

* 이더넷

컴퓨터 네트워크 기술의 하나로, 일반적으로 LAN에서 데이터를 주고 받기 위해 가장 많이 활용되는 기술 규격이다.

허브, 스위치와 같은 장비에 연결된 같은 네트워크 안의 컴퓨터끼리 데이터를 주고 받을 때 사용

https://bentist.tistory.com/33

  

전이중화 통신

양쪽 장치가 동시에 송수신할 수 있는 방식.

-송신로와 수신로로 나눠서 데이터를 주고받음.

-현대 고속 이더넷은 이 방식 사용

CSMA/CD

기존 유선 LAN에서 쓰던 방식.

반이중화 통신 중 하나. 

- 데이터를 보낸 이후, 충돌이 발생하면 일정 시간 이후 재전송.

- 한 경로를 기반으로 데이터 송신.

 

 

유선  LAN 을 이루는 케이블

트위스트 페어 케이블(TP케이블)

여덟개의 구리선을 두개씩 꼬아서 묶은 케이블.

 

광섬유 케이블

레이저를 이용해서 통신.

구리선에 비해 훨씬 장거리 및 고속 통신 가능 (보통 100Gbps 데이터)

 

 

 

----

추가공부

 

OSI 7계층 모델

 

- 국제 표준화 기구 ISO에서 만든 모델

 

 

 

1. 애플리케이션(응용) 계층 ( HTTP, FTP, DNS 등 )

  • 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행
  • 사용자 인터페이스, 전자우편, 데이터베이스 관리 등의 서비스를 제공

2. 프로젠테이션 계층 JPEG, MPEG 등

  • 문자를 컴퓨터가 이해할 수 있는 코드로 변환하거나, 압축, 암호화

3. 세션 계층 API, Socket

  • 세션(통신을 주고 받는 호스트의 응용 프로그램 간 연결 상태-두 프로그램이 통신을 주고받으면 세션이 수립되어있다고 표현)  관리
  • 양쪽 Host 간 연결을 수립/유지/종료시키는 역할
  • 데이터가 통신하기 위한 논리적 연결을 담당한다.
  • TCP/IP 세션을 만들고 없애는 책임을 지니고 있다.

4. 전송계층 TCP, UDP

  • TCP, UDP 프로토콜을 통해 통신을 활성화 한다. 포트를 열어두고, 프로그램들이 전송을 할 수 있도록 제공해준다. 
  • 신뢰성 있고 안정성 있는 전송을 해야 할 때 필요한 계층
  • 데이터 전송 단위는 세그먼트

5. 네트워크 계층 이더넷

  • 메세지를 (다른 네트워크에 속한) 수신지까지 전달하는 계층

6. 데이터 링크 계층  브릿지, 스위치 등

  • 물리 계층을 통해 송, 수신되는 정보의 오류와 흐름을 관리하여 안전한 정보의 전달을 수행할 수 있도록 도와주는 역할을 한다.
  • 네트워크 내 주변 장치 간의 정보를 올바르게 주고 받기 위한 계층
  • MAC 주소를 이용해 통신한다.
  • 데이터 전송 단위는 Frame이다.

7. 물리 계층 (  케이블, 리피터, 허브 )

  • 전기 신호, 빛 신호 등등을 어떻게 비트 신호로 주고받을 지가 물리게층에 있다.
  • 1,0으로 표현되는 비트 신호를 주고 받는 계cmd

 

캡슐화와 역캡슐화

- 메세지는 송신지 입장에서는 가장 높은 계층 -> 낮은 계층으로 이동

- 메세지는 수신지 입장에서는 가장 낮은 계층-> 높은 계층으로 이동

 

캡슐화 : 각 계층별 프로토콜의 목적과 특징에 부합하는 헤더(+트레일러) 추가

  • 상위 계층으로 내려받은 패킷을 페이로드로 삼아, 프로토콜에 걸맞은 헤더(혹은 트레일러)를 덧붙인 후 하위 계층으로 전달
  • 상위 계층의 패킷은 하위 계층에서의 페이로드로 간주

 

역 캡슐화 : 캡슐화 과정에서 붙였던 헤더를 제거하는 과정

 

 

 

 

PDU : 각 계층에서 송수신 되는 메세지 단위

- 현 계층의 PDU는 상위 계층의 데이터 + 현 계층의 헤더(+트레일러)

여기 나오는 패킷과 패킷 교환 네트워크의 패킷은 엄밀히 말하면 다르다.

 

 

면접 질문 리스트

1. TCP와 UDP의 차이

2. 핸드셰이크 설명

3. OSI 7계층 ,. TCP 4계층에 대해서 설명

4. 소켓이란

5. DNS란