네트워크
컴퓨터나 기타 기기들이 리소스를 공유하거나 데이터를 주고 받기 위해 유선 혹은 무선으로 연결된 통신체계
기능
- 애플리케이션 목적에 맞는 통신방법
- 신뢰할 수 있는 데이터 전송 방법
- 네트워크 간의 최적의 통신 경로
- 목적지로 데이터 전송
- 노드 사이의 데이터 전송
네트워크 프로토콜
네트워크 통신을 하기 위해서 통신에 참여하는 주체들이 따라야하는 형식, 절차, 규약 등
인터넷 프로토콜 스위트(internet protocol suite)
인터넷에서 컴퓨터들이 정보를 주고받는데 사용되는 프로토콜의 집합
이를 TCP/IP 4계층 모델로 설명하거나 OSI 7계층 모델로 설명
OSI 7계층
특징
- 각 레이어에 맞게 프로토콜이 세분화되어 구현됨
- 각 레이어의 프로토콜은 하위 레이어의 프로토콜이 제공하는 기능을 사용해 동작
(network layer는 data link layer에 구현된 프로토콜을 사용해서 자신의 프로토콜을 구현)
7계층 - 애플리케이션 계층(응용 계층)
최상위 계층으로 사용자들이 사용하는 애플리케이션 목적에 맞는 통신 방법을 제공하는 계층
사용자가 응용 프로그램 통해 네트워크 서비스에 접근할 수 있도록 사용자 인터페이스를 제공
응용 계층에서 동작하는 대표적인 프로토콜
HTTP(서버 접속), DNS(도메인) SMTP(이메일), FTP(파일 전송) 등
6계층 - 프레젠테이션 계층(표현 계층)
애플리케이션 간의 통신에서 데이터 표현의 차이를 해결하기 위해 서로 다른 형식으로 변환해주거나, 공통 형식을 제공하는 등 데이터의 표현방식을 결정
효율적인 전송을 위한 데이터 압축 / 데이터 보안을 위한 데이터 암호화 및 복호화 기능을 제공 / 인코딩 및 디코딩
표현 계층에서 동작하는 대표적인 프로토콜
JPEG, MPEG 등
표현 계층에서 데이터를 변환하는 이유
데이터의 형식을 변환하는 이유는 통신하는 두 기기가 특성이 같다는 보장이 없음
기기의 종류에 관계없이 이해할 수 있는 공통 표준 형식으로 데이터를 변환하여 수신자에게 보내고 수신자는 자신에게 맞는 형태로 해당 데이터를 다시 변환
5계층 - 세션 계층
애플리케이션 간의 통신에서 세션을 관리하며 포트를 기반으로 통신을 연결
네트워크 장치간의 통신 방식을 결정할 수 있으며, 세션을 연결하고 해제하며 전송 중단시 동기화 기능을 통해 데이터를 복구할 수 있음
동기화 기능 : 데이터 전송시 오류가 발생했을 경우 제일 최근에 데이터 전송이 성공한 시점인 동기점부터 다시 데이터를 재전송하여 작업을 이어갈 수 있도록 하는 기능
통신방식
- 전이중 방식(Full duplex) : 양방향 통신 방식으로 송신선과 수신선이 각각 존재하여 양쪽이 동시에 통신할 수 있는 방식 / 현대의 고속 이더넷은 이 방식을 사용
- 반이중 방식(Half duplex) : 양방향 통신 방식이지만 회선 하나로 송신과 수신을 번갈아가면서 하는 방식
- 단방향 방식(Simplex) : 한쪽에서만 데이터를 전송하는 방식
세션 계층에서 동작하는 대표적인 프로토콜
SSH, TLS, RPC 등
4계층 - 전송 계층
애플리케이션 간의 통신 및 데이터 전송을 담당하는 계층으로 포트번호를 기반으로 송신자와 수신자 간의 신뢰성있고 효율적인 데이터를 전송하기 위해 흐름제어, 오류제어 등의 기능을 제공
어디에 구현되어 있을까?
정답 : 운영체제의 커널(소프트웨어적으로 구현)
형식 : 포트번호 + 원본 데이터
전송 계층에서 동작하는 대표적인 프로토콜
TCP(안정적이고 신뢰할 수 있는 데이터 전송 보장), UDP(필수 기능만 제공) 등
3계층 - 네트워크 계층
실제 네트워크 간 라우팅을 담당하는 계층 / IP 주소 등을 통해 데이터를 목적지까지 가장 안전하고 빠르게 전달하는 역할을 하며 라우터를 통해 경로를 선택해 경로에 따라 패킷을 전달
상대방이 제대로 받았는지에 대해서는 보장하지 않는 비연결형적인 특징을 가짐(낮은 신뢰성 -> 상위 계층에서 패킷 분실시 오류 복구)
어디에 구현되어 있을까?
정답 : 운영체제의 커널(소프트웨어적으로 구현)
형식 : IP 주소 + 포트번호 + 원본 데이터
네트워크 계층에서 동작하는 대표적인 프로토콜
IP, ARP 등
2계층 - 데이터 링크 계층
직접 연결된 노드 간의 통신을 담당하는 계층으로 장비의 고유 주소인 MAC 주소를 이용해 노드 간의 데이터를 전송함
IP 주소를 가지고 MAC 주소를 찾거나(ARP), MAC 주소를 가지고 IP 주소를 찾아줌(RARP)
이더넷 프레임을 통해 에러확인, 흐름제어, 접근제어 등의 기능을 수행
프레임
- 헤더 : 프레임의 시작 부분에 위치하며 송신자와 수신자의 MAC 주소를 포함
- 트레일러 : 프레임의 끝에 위치하며 오류 감지를 위한 CRC(Cyclic Redundancy Check)와 같은 오류 검사 비트를 포함
어디에 구현되어 있을까?
정답 : LAN 카드(하드웨어적으로 구현됨)
형식 : 헤더 + IP 주소 + 포트번호 + 원본 데이터 + 트레일러
데이터링크 계층에서 동작하는 대표적인 프로토콜
ARP(IP -> MAC), RARP(MAC -> IP) 등
1계층 - 물리 계층
최하위 계층으로 하드웨어같은 물리적인 매체를 통해 bits 단위로 데이터를 전송
데이터 링크 계층으로부터 프레임을 받아 0과 1로 이루어져 있는 전기적 신호로 데이터를 변환하여 구리나 광섬유 또는 무선 통신 매체를 통해 전송
어디에 구현되어 있을까?
정답 : PHY 칩(하드웨어적으로 구현됨)
흐름
- 0과 1의 나열을 아날로그 신호로 바꾸어 전선으로 흘려 보냄(encoding)
- 아날로그 신호가 들어오면 0과 1의 나열로 해석(decoding)
- 물리적으로 연결된 두 대의 컴퓨터가 0과 1의 나열을 주고받을수 있게 해주는 모듈(module)
단순히 데이터 전달의 역할만을 수행하며 오류제어 등의 기능은 수행하지 않음
용어
캡슐화(Encapsulation)
페이로드에 단계별로 헤더를 붙여 하나의 페이로드를 만드는 것이 캡슐화이며, 네트워크 계층별 통신
역캡슐화(Decapsulation)
캡슐화의 반대 작업을 통해 헤더와 페이로드를 분리
스위치(Switch)
컴퓨터 네트워크에서 데이터를 전달하는 장비
3 way-handshake(양방향 통신)
- 송신자가 SYN 비트를 1로 설정해서 패킷에 송신 (수신자 연결 가능해?)
- 수진자가 SYN, ACK 비트를 1로 설정해 패킷 송신 (가능하고 송신자 너도 연결 가능해?)
- 송신자가 ACK비트를 1로 설정해 패킷 송신 (가능하고 데이터(패킷) 보낼게)
4 way-handshake(통신 끊기)
- 데이터를 전부 송신한 송신자가 FIN 송신 (데이터 다 보냈어)
- 수신자가 ACK 송신 (데이터 잘 받았어)
- 수신자에서 남은 패킷을 송신자에게 송신(송신자는 일정 시간 대기) (남은 데이터 보내줄게)
- 수신자가 FIN 송신 (남은 데이터 다 보냈어)
- 송신자가 ACK 송신 (데이터 잘 받았어)
TCP/IP 스택(TCP/IP 4계층)
TCP/IP 스택(4계층)은 실제 인터넷 통신시 기반이 되는 모델
애플리케이션, 전송, 인터넷, 링크 4계층으로 이루어져있으며 링크 계층을 데이터링크와 물리 계층으로 나누어 5계층으로 구분
4계층 - 애플리케이션 계층
OSI 7계층에서 5,6,7 계층에 해당
3계층 - 전송계층
OSI 7계층에서 4계층인 전송 계층에 해당
2계층 - 인터넷 계층
OSI 7계층에서 3계층인 네트워크 계층에 해당
1계층 - 링크 계층(네트워크 접근 계층)
OSI 7계층에서 1, 2계층인 물리, 데이터 링크 계층에 해당
1, 2 계층을 나누어 5계층으로 구분
클라이언트 - 서버 모델
데이터를 요청하고 받는 역할를 '클라이언트(Client)'
네트워크에서 데이터를 주는 역할를 '서버(Server)'
네트워크로 연결된 컴퓨터 중 서비스를 제공하는 쪽을 서버라 부르고 그 서비스를 요청하고 받는 쪽(사용하는 쪽)을 고객, 즉 클라이언트라고 부름
서버 클라이언트 구조
- 한 대의 서버에 다수의 클라이언트가 접속하여 서비스를 이용할 수 있는 방식
- 다수의 사용자들이 공동으로 사용하는 데이터를 중앙 컴퓨터에 저장하고 관리
- 수많은 클라이언트의 동시적인 요구를 효율적으로 처리할 수 있음
- 인터넷의 기반이 됐고, 대표적인 서비스로 월드 와이드 웹(WWW)가 있음
장점
- 역할 분담 : 클라이언트와 서버의 역할이 분명하게 나뉘어져 작업을 효율적으로 분배할 수 있고, 이로 인해 개발과 관리가 간편
- 중앙 집중화 : 데이터와 리소스의 중앙 집중화로 일관성 유지, 관리가 간편하며 보안성이 향상
- 확장성 : 서버를 확장하여 수요에 맞게 리소스를 추가하거나 업그레이드할 수 있고, 이로써 시스템이 대규모 트래픽을 처리하는 데도 유연하게 대응할 수 있음
- 자원 공유 : 공통의 데이터와 자원을 중앙에서 관리하므로 중복 데이터의 생성과 관리가 최소화
- 보안 강화 : 중앙 집중화된 서버로 접근을 제어하고 보안 강화를 수행할 수 있음
단점
- 단일 장애점 : 서버에 장애가 발생하면 모든 클라이언트가 영향을 받을 수 있고, 이를 위해 서버를 백업하거나 이중화해야 함
(서버의 이중화 : 주 서버와 백업 서버를 설정해 주 서버에 장애가 발생하면 백업 서버가 자동으로 작동해 서비스 중단을 최소화 하는 방식) - 네트워크 부하 : 클라이언트가 서버에 지속적으로 요청을 보내므로 네트워크 부하가 발생할 수 있음
- 성능 문제 : 서버의 성능이 떨어지거나 대용량 데이터를 다루는 경우 성능 문제가 발생할 수 있음
- 비용 : 서버의 운영과 유지 보수에 필요한 비용이 상당할 수 있고, 또한 클라이언트에도 필요한 하드웨어나 소프트웨어 비용이 발생할 수 있음
- 서버 관리의 어려움 : 서버의 관리와 유지보수가 필요하며, 서버의 다양한 설정과 보안 설정을 관리해야 함
애플리케이션이 결정하는 서버와 클라이언트
- 서버와 클라이언트는 컴퓨터의 역할에 따라 구분되는데, 이 컴퓨터 역할은 애플리케이션이 결정함
- 애플리케이션은 운영체제(OS) 위에 설치되어 운영체제의 도움을 받아 실행되는 응용 소프트웨어를 의미함
애플리케이션과 플랫폼
- 애플리케이션이 실행될 수 있는 환경인 플랫폼(Platform)은 여러 개임
- 서로 다른 플랫폼에서 실행 가능한 크로스 플랫폼(Cross-Platform) 애플리케이션을 만들 수 있는 도구들이 개발되는 중임
(일렉트론 프레임워크, 리액트 네이티브 라이브러리 등..)
[참고]
'크래프톤 정글 - TIL' 카테고리의 다른 글
크래프톤 정글 5기 TIL - Day 45 (0) | 2024.05.03 |
---|---|
크래프톤 정글 5기 TIL - Day 44 (0) | 2024.05.03 |
크래프톤 정글 5기 TIL - Day 42(키워드 정리) (1) | 2024.05.01 |
크래프톤 정글 5기 TIL - Day 39 ~ 41 (0) | 2024.04.29 |
크래프톤 정글 5기 TIL - Day 35 ~ 38(CS:APP) (0) | 2024.04.23 |