일단 씻고 나가자
23.07.19 본문
2023. 07. 19 수요일
- 플로이드-워셜 알고리즘? 조건, 구현 방법?
: Floyd-Warshall 알고리즘. 시작 노드가 아닌 모든 노드 간 최단 경로를 구하는 알고리즘이며, 음의 간선이 포함돼 있어도 사용 가능하고 음수 사이클이 있다면 정상 동작하지 않는다.
음수 사이클의 판별 기준은 자기 자신으로 향하는 값이 0이 아니라 음수값이 나온다면 음수 사이클이 존재한다는 의미.
모든 노드 간의 최단 경로가 나오기에 v*v의 메모리가 필요하다.
1. 우선 v*v 배열에서 자기 자신은 0, 제외한 모든 노드는 INF로 초기화 후 시작한다.
2. 인접 노드의 값을 갱신한다.
3. 이후 인접 노드를 ‘거쳐서’ 가는 노드들에 작은 값으로 갱신한다.
- OSI 7 layer에서 데이터 전송의 데이터 단위 기본 개념과 용어?
: 기본적으로 데이터를 포장하고 포장을 제거하는 과정으로 층마다 데이터를 전송한다.
이때 포장(송신)을 캡슐화(Encapsulation), 반대의 과정(수신)을 역 캡슐화(Decapsulation)라고 하며, 원본 데이터에 추가되는 필요한 정보를 header, 실제 데이터를 body라 한다.
- OSI 7 layer의 1~4계층 설명? TCP/UDP 차이? 계층별 데이터 단위 용어?
1. 물리 계층(Physical Layer)
: 실제 데이터를 물리적으로 관리하는 계층으로, 케이블(digital signal) 같은 경우에는 0과 1을, 무선(Analog Signal) 같은 경우에는 파장을 0과 1로 바꾸어 실제 데이터로 치환한다.
2. 데이터 링크 계층(Data Link Layer)
: 물리적 네트워크 사이의 데이터 송수신을 담당하는 계층으로, 고유 MAC 주소를 담는다.
MAC 주소란 LAN 카드마다 유일무이하게 제공되는 번호이다.
1, 2 계층은 하드웨어 단에서 end to end를 담당하는 계층이며, 유사하기에 Ethernet(이더넷) 프로토콜은 두 계층의 역할을 담당하는 프로토콜이다.
3. 네트워크 계층(Network Layer)
: 여러 LAN과 WAN으로 연결된 인터넷 상에서 경로를 결정하는 계층.
대표적인 프로토콜로 IP 프로토콜이 있다.
4. 전송 계층(Transport Layer)
: 데이터 전송 중 오류(유실 및 안 보내짐)가 난 부분을 체크하고 다시 보내주는 역할(체크섬)과, 응용 프로그램의 주소를 일컫는 포트(port)를 담당한다. 대표적으로 TCP, UDP 프로토콜이 있다.
체크섬이란 각 자릿수를 더해서 데이터가 온전한지를 판단하는 방법. 프로토콜마다 계산식이 다르다.
TCP와 UDP는 실제 개발 환경에서 프로토콜을 염두에 두고 개발을 진행하기 때문에 자세히 알아야 할 필요가 있다.
TCP는 연결형 프로토콜으로, 데이터의 순서와 신뢰성을 보장한다.
연결 단계에서 송신측이 먼저 수신 가능한 상황인지 묻고, 대답이 오면 다시 한번 수신한다.
이후 데이터마다 순서를 매겨 1번 데이터를 송신하고 수신 응답이 오면 다시 2번을 보내고 하는 방식으로 이루어진다.
따라서 채팅 앱같이 데이터의 유실이 중요한 사항일 때 사용된다.
UDP는 비연결형 프로토콜로, 전송속도가 빠르다.
UDP는 TCP와 다르게 수신의 응답을 받지 않고 보내려는 데이터를 보내기 때문에, 데이터가 몇 개 유실되어도 크게 영향을 끼치지 않는 스트리밍 사이트(화질) 등에 사용된다.
1, 2 계층을 합한 데이터 단위를 프레임이라 하며, 네트워크 계층에서의 데이터 단위를 패킷(packet)이라 한다. 일반적으로 물리적인 연결은 당연히 전제하고 개발하기에 패킷을 7 layer를 모두 거친 데이터 셋을 패킷이라고 한다.