01. OSI 7 계층
● OSI (Open Systems Interconnection)
- 개방형 시스템 간의 상호 연결을 의미
● OSI 7 계층
- 국제 표준화 기구인 ISO 에서 개발한 모델
- 컴퓨터 네트워크의 프로토콜 디자인과 통신을 계층으로 나누어 설명한 것
- 특정 네트워크 시스템에서 계층을 활용하여 통신이 일어나는 과정을 단계별로, 시각적으로 쉽게 파악 가능
● OSI 7 계층 단계별
- 1 계층 : 물리 계층 (Physical Layer)
-- 하드웨어 전송 기술로 구성됨
-- 하드웨어 장비로는 케이블, 리피터, 허브가 있음
-- 네트워크에서 물리적으로 데이터를 전송하는 역할
- 2 계층 : 데이터 링크 계층 (Data Link Layer)
-- 물리 계층을 통해 데이터를 전송하다가 데이터가 제대로 도착하지 못하고 중도 분실되거나 데이터의 내용이 깨져서 변형되는 등 물리적 오류가 발생할 수 있음
-- 이러한 물리적 오류를 데이터 링크 계층에서 감지하고 제어 가능
-- 포인트 투 포인트 간의 신뢰성 있는 전송을 보장함
- 3 계층 : 네트워크 계층 (Network Layer)
-- 여러 개의 서버 (노드) 를 거칠 때마다 경로를 찾아주는 역할
-- 상위 계층인 전송 계층에게 데이터 전송 시 서비스의 품질을 제공하는 여러 수단을 제공함
-- 핵심 : 라우팅, 패킷 분할, 혼잡 제어
- 4 계층 : 전송 계층 (Transport Layer)
-- 엔드 투 엔드의 사용자들이 신뢰성 있는 데이터를 주고받을 수 있게 함
-- 송신자와 수신자를 연결하는 통신 서비스를 제공하며, 신뢰성 있고 효율적인 데이터를 전송하고 오류 검출 및 복구, 흐름 제어, 중복 검사 등을 수행
-- 연결형 서비스와 비연결형 서비스가 있음
-- 연결형 서비스는 TCP (Transmission Control Protocol) 가 있음 : 신뢰성 있는 연결을 보장
-- 비연결형 서비스는 UDP (User Datagram Protocol) 가 있음 : 스트리밍 서비스처럼 데이터를 빠르게 통신할 때 이용됨
- 5 계층 : 세션 계층 (Session Layer)
-- 양 끝단의 응용 프로세스가 통신을 관리하는 방법을 제공함
-- 송수신 방식에는 동시 동수신, 반 이중, 전 이중 방식 등이 있음
-- 통신하는 사용자들을 동기화하고 오류 복구 명령을 일괄적으로 다룸
-- 세션 연결의 설정과 해제, 메시지 전송 등의 기능을 하고 서비스 인증 및 허가 기능을 처리함
- 6 계층 : 표현 계층 (Presentation Layer)
-- 인코딩이나 함호화 동작이 이 계층에서 이루어짐
-- 데이터를 표현하기 위한 문맥 계층이라 불리고, 압축 및 데이터 변환이 일어남
- 7 계층 : 응용 계층 (Application Layer)
-- 응용 프로세스 간의 기능을 제공함
-- 추상화된 계층
-- ex. 텔넷
● OSI 7 계층 이용 예
- 친구에게 이메일을 보내는 상황을 가정
-- 송신 호스트인 사람은 OSI 7 계층의 최상위 계층인 응용 계층을 통해 데이터 송신이 하위 계층으로 차례대로 전달되도록 요청하고, 이 요청은 최하위 계층인 물리 계층으로 전송됨
-- 그다음, 친구인 수신 호스트의 물리 계층으로 전달되어 역순으로 OSI 7 계층의 상위 계층인 응용 계층으로 전송됨
02. TCP / UDP
● TCP (Transmission Control Protocol)
- 데이터를 확실하고 안전하게 전달하는 것을 목표로 하는 프로토콜
- 데이터를 확실히 전달하기 위해 일대일로 통신함
● TCP 의 통신 절차
- 컨트롤 플래그 (Control Flag)
- 핸드셰이크 (Handshake)
● UDP (User Datagram Protocol)
- 데이터를 빠르게 전달하는 것을 목표로 하는 프로토콜
- UDP 는 사전에 의논하지 않고 일방적으로 데이터를 보냄
- 여러 상대에게 동시에 데이터를 보낼 수 있음
- 크기가 큰 데이터를 나누지 못해 실시간으로 데이터를 전송하는 것이 중요한 통신이나 데이터가 작은 네트워크 관리의 통신에서 사용됨
- 사용 예) 음악이나 동영상 스트리밍, 인터넷 전화 등 실시간으로 데이터가 오고 가는 서비스에 주로 사용
03. 프로토콜
● 프로토콜 (Protocol)
- 컴퓨터, 통신장비 간의 원활한 소통을 위한 약속
- 구문 (Syntax)
-- 프로토콜에서 문법과 같은 역할을 함
-- 데이터를 구성하는 형식 (Format), 부호화 (Coding), 신호 레벨 (Signal Levels), 순서와 같은 정보들을 정의함
- 의미 (Semantic)
-- 각 데이터가 무엇을 의미하는지를 정의함
- 타이밍 (Timing)
-- 통신을 주고받을 때의 속도나 순서를 규정
● TCP/IP
- 인터넷에서 가장 중요한 역할을 하는 프로토콜
- 서킷 통신의 단점을 보완하고자 패킷 통신을 고안함
-- 서킷 통신은 일대일로 연결되는 방식인데, 선이 연결되어 있어야 하고 교환원을 통해서 연결해야 함
-- 패킷 통신은 데이터를 보낼 때 잘게 쪼개서 보내는데, 데이터를 쪼개서 보내면 도착할 때는 순서나 데이터가 달라질 수 있음
-- 이를 보완하기 위해 TCP/IP 가 등장
- IP (Internet Protocol)
-- 보내고자 하는 데이터를 잘라서 순서와 관계없이 빠르게 보내는 역할
- TCP (Transmission Control Protocol)
-- 그 후 전송이 누락되었거나 순서가 맞지 않는 데이터를 다시 요청하는 것
- 이후 설명할 프로토콜들이 모두 TCP 기반으로 만들어졌고, TCP 가 IP 위에서 동작하기 때문에 주로 TCP/IP 라고 부름
● HTTP (HyperText Transfer Protocol)
- 하이퍼텍스트 (HyperText) 는 텍스트를 초월한 문서이며, 이것을 전송하는 프로토콜이 HTTP
- 웹 사이트 대부분이 이 프로토콜을 따르고 있음
- 인터넷 주소의 http:// 는 HTTP 라는 프로토콜을 이용해서 문서를 받겠다는 약속
● FTP (File Transfer Protocol)
- 파일을 전송하기 위해 사용하는 프로토콜
- 대용량 파일을 전송하거나 불특정 다수에게 배포하는 데 용이해서 예전에 게임 회사나 소프트웨어 회사들이 주로 이용
- 구조가 단순한 만큼 보안에 취약하다는 단점 있음
- ex. FileZilla, 알드라이브
● SMTP (Simple Mail Transfer Protocol)
- 많은 이메일 전송 시스템이 TCP 상에서 동작하는 SMTP 를 사용함
- SMTP 는 텍스트밖에 전송되지 않기 때문에 이를 보완하기 위해 MIME 이라는 프로토콜이 등장
04. 포트
● 포트 (Port)
- 네트워크 통신의 종단점으로서 용도별로 앱을 구분 짓는 논리적 통로
- 하나의 IP 주소가 연결된 기기에 통신을 필요로 하는 여러 프로그램이 구동 중이거나 하나의 IP 주소에 공유기로 연결된 여러 기기가 물려 있을 경우 이를 구분하는 개념이 포트
● 포트의 개념 (ex. 웹 브라우저가 웹 페이지를 요청하는 과정)
- 웹 브라우저를 켜고 주소창에 www.naver.com 을 타이핑해서 엔터 키를 누르면 우선 DNS 서버에 해당 DNS 의 IP 주소로 변환하여 해당 IP 주소를 가진 서버 컴퓨터로 찾아감
- 서버 컴퓨터는 웹 서버, 채팅 서버 등 다양한 서버 프로그램을 실행 중일 수 있음
- 서버는 사용자의 접속 목적을 모르기에 어떤 서비스를 원하는지 알 수 없음
-- 이때 이정표 역할을 하는 것이 포트
- 웹 브라우저에서 요청한 주소에는 사실 웹 서버 프로그램을 의미하는 포트 번호인 80 이 생략되어 있음
-- HTTP 프로토콜을 사용할 경우 포트 지정을 따로 하지 않으면 웹 브라우저가 기본값으로 80 번을 포함시켜 주기 때문
- 80 번 포트는 서버로부터 웹 서버로 안내받아 웹 페이지를 받아옴
● 포트 번호의 약속
- 0 ~ 65535 번까지 총 65536 개를 사용 가능
- 미국의 비영리 사설기관 ICANN 의 산하기관인 IANA 에 의해 관리되고 있음
- Well Known Ports : 0 ~ 1023 번 까지의 포트로, 잘 알려진 앱의 사용을 위해 표준과 같이 약속된 포트
-- 포트번호 22 : SSH
-- 포트번호 53 : DNS
-- 포트번호 80 : HTTP
- Registered Ports : 1024 ~ 49151 번 까지의 포트로, 특정 앱 제작사가 IANA 에게 포트 등록을 요청하여 사용하는 포트
-- 포트번호 1433 : MSSQL
-- 포트번호 3306 : MySQL
-- 포트번호 8080 : HTTP 대체 사용
- Dynamic Ports : 49152 ~ 65535 번 까지의 포트로, 특정 용도로 지정하지 않고 동적으로 자유롭게 사용 가능한 포트
● 포트 포워딩 (Port Forwarding)
- 포트를 전달하는 것
- ex. 자취를 하는 친구가 우리 집에 있는 프린터를 쓰고 싶을 때
-- 먼저 공인 IP 를 알아야 함 : 프린터 IP 인 192.168.0.2 를 알려주면 연결할 수 없음
-- 내부 IP : 터미널에서 ipconfig
-- 공인 IP : 네이버 검색창에서 'IP 주소 확인'
-- 공유기를 걸쳐 각기 다른 IP 를 가진 단말기가 연결되면, 공유기 IP 인 31.17.4.5 로 접속해도 어디로 가야 할지 알 수 없음
-- 이를 가능하도록 하는 것이 포트 포워딩
05. URI
● URI (Uniform Resource Identifier)
- 인터넷에 있는 많은 자원들을 구별하기 위한 문자열
- 흔히 웹 주소라고 함
- 웹 사이트에 접근할 때 요구되는 기본 조건
● URL (Uniform Resource Location)
- 통합 자원 위치
- 네트워크상에서 자원이 어디 있는지 알려 주는 문자열
- 기본 형태 : 스키마://호스트/경로
● URN (Uniform Resource Name)
- 통합 자원 이름
06. IP / DNS
● IP (Internet Protocol)
- 인터넷에서 컴퓨터의 위치를 찾아서 데이터를 전송하기 위해 지켜야 하는 규약
● IP 주소
- 데이터를 전송하기 위해 사용되는 컴퓨터의 주소
- ex. 223.130.200.104 (네이버)
● DNS (Domain Name System)
- 도메인 이름과 IP 주소를 서로 변환하는 역할
- ex. www.naver.com
-- www : 호스트 이름
-- naver.com : 도메인
-- IP 주소를 입력하여 홈페이지를 접속하는 대신, www.naver.com 이라는 도메인을 브라우저 주소창에 입력하여 접속 가능
-- 이때 DNS 가 도메인을 IP 주소로 변환하는 역할
● 고정 IP
- 변하지 않는 고정된 IP
- ex. 네이버 사이트는 항상 일정한 주소를 사용해야 사용자들이 접속할 수 있기 때문에 고정 IP 를 사용
● 유동 IP
- 계속 변하는 IP
- IP 를 고정적으로 부여하지 않고 남아있는 IP 중에서 부여되는 IP
- IPv4 의 경우에는 개수의 한계가 있어 개인마다 고정 IP 를 할당하면 IP 가 부족해지므로, 통신 사업체 (SK, KT, LG) 는 특정 범위 내에서 IP 를 할당하며, 사용 중이지 않은 IP 를 할당해 줌
● 공인 IP
- 전 세계에서 유일한 IP
- 외부에 공개되어 있기 때문에 다른 사용자들이 접근 가능
● 사설 IP
- 개인이나 특정 기관에서 임의로 만들어 사용하는 IP 주소
- 가정집이나 회사는 공유기를 사용할 때 하나의 공인 IP 안에 사설 IP 를 부여하여 사용함
● IPv4
- IP 주소를 나타내는 방식
- xxx.xxx.xxx.xxx 형식의 주소 (0 ~ 255 까지의 숫자)
- 32 bit 체제
- 43 억 개 정도의 IP 주소를 나타낼 수 있음
● IPv6
- IP 주소를 나타내는 방식
- 16진수로 표시
- 128 bit 체제
- 2 의 128 승 만큼의 주소를 나타낼 수 있음
- 현재는 IPv4 위주로 사용되고 있지만, IPv6 도 병행 사용되고 있음
● IP 주소 확인 (윈도우)
- cmd + ipconfig
● 나만의 도메인 갖기
- 도메인 판매 사이트에서 구매 가능
- ex. 가비아, 후이즈
07. HTTP
● HTTP (HyperText Transfer Protocol)
- 우리가 보는 웹 페이지가 어떻게 구조화되어 있는지 브라우저로 하여금 알 수 있게 하는 마크업 언어
- 클라이언트와 서버가 리소스를 주고받기 위해 규칙이 있는 메시지를 전달해야 하는데, 이러한 규칙이 HTTP
- HTTP 는 클라이언트와 서버 사이에 이루어지는 요청 / 응답 프로토콜
- 프로토콜 : 컴퓨터, 통신장비들 간의 원활한 소통을 위한 약속 또는 규칙
- 과거 HTTP 는 HTML 같은 텍스트 파일을 전송하는 단순한 통신 규칙이었음
- 하지만 웹이 발전하면서 텍스트 파일뿐만 아니라 이미지, 오디오, 동영상 등 모든 데이터를 전송하는 매우 중요한 통신 프로토콜이 됨
● 버전
- 현재는 HTTP/1.1 버전을 가장 많이 사용
- 최근에는 HTTP/2 버전과 HTTP/3 버전이 같이 사용되고 있음
● 특징
- 클라이언트와 서버 구조
-- 클라이언트와 서버의 역할을 명확하게 구분함
-- 어느 한쪽에 문제가 발생해도 서로에게 영향을 주지 않음
-- 요청 메시지가 발송되어야만 서버에서 응답 메시지를 전송할 수 있음
- 무상태 프로토콜
-- 서버가 클라이언트의 상태를 보존하지 않음
-- 덕분에 서버는 다양하게 활용되며 폭넓은 확장성을 갖게 됨
-- 서버의 CPU 나 메모리에서 리소스의 소비를 절약하는 이점을 가져다 줌
-- 단, 이전 상태 및 정보를 기록해야 하는 경우에는 쿠키와 세션 등을 활용해서 정보를 저장함
- 지속 연결
-- HTTP 초기 버전에서는 요청/응답 통신을 주고받을 때마다 TCP/IP 를 연결하고 종료하는 일을 반복적으로 진행함 (비연결성)
-- 자원을 주고받을 때만 연결하기 때문에 서버에서는 최소한의 자원만 사용하므로 서버 자원을 매우 효율적으로 사용할 수 있음
-- 단, 요청할 때마다 TCP/IP 연결을 새로 맺어야 하므로 불필요한 시간이 발생함
-- HTTP/1.1 이상의 버전은 지속 연결 방식을 고안함
-- 지속 연결은 파이프 라인화 (HTTP Pipelineing) 를 가능하게 함
-- 파이프 라인화가 가능해지면서 응답 메시지를 기다릴 필요 없이 다음 요청 메시지를 보낼 수 있게 됨
● HTTP 사용 : HTTP 요청 메소드
- GET, POST, PUT, DELETE, PATCH 등
● HTTP 사용 : HTTP 메시지
- 서버와 클라이언트가 서로 데이터 정보를 교환할 때 사용하는 형식
● HTTP 사용 : HTTP 상태 코드
- 3 자리 숫자로 나타냄
- 클라이언트가 요청 메시지에 대한 서버의 응답 결과를 직관적으로 알려줌
● HTTP 의 약점
- HTTP 의 구조는 매우 단순해서, 요청이 들어오면 상대를 확인하지 않고 데이터 정보를 제공함
- 위장한 클라이언트가 이를 악용하는 사례 방지 : HTTPS
● HTTPS (HTTP Secure)
- https://
- HTTP 에 암호화, 인증 등의 구조를 추가한 것
- 새로운 프로토콜이 아닌, HTTP 의 데이터 통신 연결부인 소켓을 SSL (Secure Socket Layer) 또는 TLS (Transport Layer Security) 라는 프로토콜로 대체한 것
08. CORS
● CORS (Cross-Origin Resource Sharing)
- 교차 출처 리소스 공유 (CORS) 는 브라우저에서만 가지고 있는 체제
- 클라이언트가 자신의 도메인과 서로 다른 도메인 간의 리소스를 가져오고 싶은 경우, 정해진 규약을 통해 선택한 리소스에 접근 권한을 부여하도록 브라우저에 알려줌
● 개념
- 클라이언트는 자신의 도메인과 다른 도메인의 리소스를 가져오고 싶을 때 HTTP 요청을 실행함
- 하지만 브라우저는 보안을 위해 SOP (Same-Origin Policy, 동일 출처 정책) 제한을 두고 있음
- 이때, CORS 를 구성해 줌으로써 서로 다른 도메인 간에 리소스를 공유할 수 있도록 정보 요청과 응답을 가능하게 함
09. JSON / XML
● JSON (JavaScript Object Notation) / XML (eXtensible Markup Language)
- JSON / XML 은 브라우저와 서버 간 (백엔드와 프런트엔드) 의 자료를 통신할 때 사용하는 표준화된 데이터 포맷
● REST API
- 앱이 거대해지는 것을 막기 위해 고안된 데이터 통신 방법
- 무거운 HTML 또는 이미지 파일을 보내는 것 대신 실제로 필요한 데이터만 보내는 방식
● XML
- 확장 가능한 마크업 언어
- 여기서 사용된 마크업 언어는 HTML 에서도 동일하게 적용됨
- HTML 과 비슷하게 생긴 데이터 포맷이지만, 데이터를 보여주지 않고 전송하는 것이 목적이라는 차이점이 존재함
● JSON
- 자바스크립트의 객체 문법을 사용하는 데이터 포맷
- HTML 의 단점을 해결하기 위해 고안된 데이터 형식
- 키 (Key) 와 값 (Value) 의 쌍으로 이루어져 있음
10. SOAP / REST
● SOAP (Simple Object Access Protocol) / REST (Representational State Transfer)
- 인터넷에서 원하는 자원을 요청하기 위해 필요한 형식
- 웹 페이지를 개발할 때 사용자가 자원을 요청하고 서버에서 응답하는 과정에서 정확한 내용 전달을 위해 SOAP 와 REST 를 사용
● SOAP
- 웹 페이지를 통신할 수 있도록 설계된 최초의 표준 형식
- 서비스가 있는 공간에 접근하여 자원들을 요청하는 형식
- 동작 방식
-- 웹 사이트 제공자가 웹 서비스를 설명하고 사용하는 방법이 적힘 자료인 WSDL 을 먼저 만든 후 UDDI 에 저장함
-- 그 후 UDDI 가 등록된 자원을 공개하고 발견하는 방법을 정의함
-- 사용자가 UDDI 를 발견하여 원하는 자원을 SOAP 메시지로 인코딩하여 요청하면 웹 사이트 제공자는 디코딩하여 사용자 정보를 확인하고 응답을 인코딩하여 전달함
- 메시지 구조
-- 선택적인 헤더 부분과 필수적인 바디 부분으로 구성된 XML 로 되어 있음
-- Envelop 는 모든 SOAP 구조의 상위 개념으로 헤더와 바디 부분을 포함함
-- 헤더 부분은 메시지 경로를 제공하여 처리될 앱 관련 정보를 전달하는 데 사용함
-- 바디 부분은 메시지의 본문 관련 주요한 정보를 포함함
● REST
- 웹의 장점을 최대한 활용하기 위해 고안된 형식
- 자원을 구분하여 해당 상태를 주고받는 것을 의미
- 자원은 URI 로 구분되며 HTTP 메소드를 활용해 상태를 전달하여 응답함
- 형식
-- HTTP 메소드를 활용
POST : 새로운 자원을 생성하는 메소드
GET : 자원을 요청하기 위한 메소드
PUT : 기존의 자원을 수정하기 위한 메소드
DELETE : 자원을 삭제하기 위한 메소드
11. VPN
● VPN (Virtual Private Network)
- 개인 혹은 기업에서 공용 네트워크를 통해 만들어진 가상 네트워크로 통신하는 방법
- 활용
-- 개인 정보 보호
-- 특정 공간과 같은 네트워크 망 구축
-- 제한된 콘텐츠 접근
- VPN 은 현재 접속 중인 인터넷 망을 통해 통신하는 것이 아니라, 할당받은 특정한 사설망을 통하여 통신하는 가상 사설망
- 순기능
-- 위치 변경
-- 네트워크 보안
- 역기능
-- 익명성 악플
-- 제한된 콘텐츠 접근
12. 랜카드 / 허브 / 스위치 / 라우터
● 랜카드 / 허브 / 스위치 / 라우터
- 모두 네트워크를 구축하는 데 사용하는 장비
● 랜카드
- 외부와 데이터를 주고받을 수 있는 PC 의 통신장치
● 허브
- 컴퓨터들을 LAN 에 접속시키는 네트워크 장치
● 스위치
- 콜리전 도메인을 작게 분할하여 데이터 전송 시 충돌 가능성을 낮춰주는 장비
● 라우터
- 각각의 네트워크들을 연결하여 더 큰 네트워크를 형성
참고문헌
● 개발자가 되기 위해 꼭 알아야 하는 IT 용어 : https://product.kyobobook.co.kr/detail/S000061352646