클라이언트
네트워크를 통해 서버에 요청을 하고 서비스를 제공받는 주체를 전부 통틀어 일컫는 말.
‘요청’이란 서버한테 정보나 다른 어떤 서비스 요청하는 것을 의미한다.
서버
네트워크를 통해 클라이언트의 요청을 받고 서비스를 제공하는 주체를 전부 통틀어 일컫는 말.
일반적으로 ‘서버’는 중요 시스템이 상주하고 클라이언트의 요청을 처리하는 장치를 의미한다.
- 클라우드 서버
실제로 조작하는 사용자가 원격으로 사용할 수 있는 서버로 Google Cloud, AWS, Microsoft Azure 등이 있다. - 웹 서버
웹 서버는 웹 브라우저에서 요청한 웹 페이지를 제공하는 서버로 Apache, NGINX, GWS가 있다.
웹 서버의 주된 기능은 웹 페이지를 클라이언트에 전달하는 것으로 웹 리소스 제공, 요청과 응답 처리, 웹 애플리케이션 호스팅, 보안 기능등의 역할을 한다. - 데이터베이스 서버
오로지 데이터베이스를 위한 서버. MySQL, PostgreSQL, Oracle DB 등이 있다. - 어플리케이션 서버
웹 서버랑 데이터베이스서버 사이에 있는 미들웨어같은 존재로 인터넷에서는 HTTP(HyperText Transfer Protoco) 를 통해 사용자에게 제공되는 서비스를 수행하는 서버이다.
※ 미들웨어란?
공통 서비스 및 기능을 애플리케이션에 제공하여 개발자와 운영자가 애플리케이션을 더욱 효율적으로 구축하고 배포하도록 돕는 소프트웨어 및 클라우드 서비스를 말한다. - 프록시 서버
클라이언트의 요청을 본 서버 외의 다른 서버가 대신 처리해주는 서버로 보안이나 다량의 접속으로 인한 과부하를 막고 처리 속도를 향상시키기 위해 사용한다.
RESTful
REST(Representational State Transfer) 아키텍처를 지향하는 웹 서비스로 자원의 상태를 대표적으로 표현할 수 있는 어떤 이름으로 전달하는 방식을 의미한다.
※ 예를 들어 ’GET’ 같은 경우에는 자원을 가져온다는 내용이고 ’POST’는 자원을 보내겠다는 내용인 것을 바로 알아차릴 수 있는 것처럼 이름만 가지고 어떤 행동을 하려는지 바로 유추할 수 있도록 구현하는 것을 의미한다는 것이다.
API(Application Programming Interface)란 어떤 서비스를 사용하기 위한 소프트웨어 인터페이스로 함수 단위나 클래스 단위로 구현할 수 있다.
그럼 RESTful API란?
자원의 상태를 대표적으로 표현할 수 있는 어떤 이름으로 전달하는 방식으로 구현한 API로 대표적으로 GET(요청), POST(응답), PUT(수정), DELETE(삭제)와 같은 메소드 들이 있다.
OSI 7계층
국제표준화기구(ISO)에서 정의한 개념으로 네트워크 통신을 7계층으로 나누어 정의하는 개념으로 우리가 일상생활에서 사용하는 네트워크는 여러 단계를 거쳐 메세지를 주고 받는데 그 과정을 규격화하고 세부적으로 정의한 것이다.
OSI 7 계층
- 제 1계층 - 물리계층
- 전기적, 기계적, 절차적, 기능적인 수단을 사용하여 데이터 전송 매체에서 실제 비트 전송을 담당
- 케이블, 스위치, 허브, 전압 레벨 등등 실제 물리적인 장치들이 있다.
- 제 2계층 - 데이터 링크 계층
- 두 개의 인접한 개방 시스템들 간에 신뢰성 있고 효율적인 정보 전송을 할 수 있도록 시스템 간 연결 설정과 유지 및 종료를 담당한다.
- MAC 주소를 사용하여 물리적인 네트워크 간의 데이터를 전송한다.
- 스위치, 브리지, 프레임, MAC 주소 등등이 있다.
- 제 3계층 - 네트워크 계층
- IP 주소를 사용하여 데이터 패킷을 전달하는데 네트워크 상에서 최적의 경로를 설정하여 데이터를 전송한다.
- 라우터, IP 주소, 패킷 등등이 있다.
- 제 4계층 - 전송 계층
- 종단 시스템 간(end-to-end) 통신을 제공하며, 데이터 전송의 신뢰성을 보장해준다.
- TCP, UDP, 포트번호 등등이 있다.
- 제 5계층 - 세션 계층
- 송,수신 측 간의 관련성을 유지하고 대화 제어를 담당한다.
- 양끝단에서 통신을 관리하는 계층으로 통신이 끝날때까지 응용 프로그램 간의 세션을 설정, 관리 및 종료를 해주는 계층이다.
- 제 6계층 - 표현 계층
- 서로 다른 데이터 표현 형태를 갖는 시스템 간의 상호 접속을 위해 필요한 계층이다.
- 암호화, 복호화, 압축 등을 통해 데이터 형식을 응용 프로그램에 맞게 변환해준다.
- 제 7계층 - 응용 계층
- 실질적으로 사용자가 마주하고 상호작용하는 계층으로 사용자가 OSI 환경에 접근할 수 있도록 최종서비스를 제공한다.
- HTTP, FTP, SMTP, DNS 등등이 있다.
TCP/IP 4계층
OSI 7 계층을 TCP/IP 프로토콜 입장에서 나눈 개념.
TCP/IP 가 OSI 7 계층중에서 어느 영역에서 어떻게 활동하는 나눈 것이다.
- 제 1계층 - 네트워크 엑세스 계층: OSI 1~2 계층에 해당
- 제 2계층 - 인터넷 계층: OSI 3계층에 해당
- 제 3계층 - 전송 계층: OSI 4계층에 해당
- 제 4계층 - 응용 계층: OSI 5~7계층에 해당
보안
보안 기술 및 프로그램
- 방화벽(Firewall): 네트워크 트래픽을 필터링하여 불법 접근을 차단하는 네트워크 보안 솔루션
- VPN(가상 사설망): 암호화된 가상의 네트워크망을 통해 원격으로 접속하기 위한 기술
- 키(key)를 통한 접근 제어 방식
- 대칭키: 암호화 / 복호화에 같은 키가 사용됨.
- 비대칭키: 암호화 / 복화화에 사용되는 키가 다름.
- 공개키: 누구나 접근 가능한 키
- 비밀키(개인키): 사용자 외에 접근 불가능한 키
- hash(해시): 본래 정보를 임의의 값으로 바꿔버리는 기술, 단방향 암호화 방법으로 해시를 적용한 주체 외에는 풀 수가 없다.
해킹 기술 및 프로그램
- DDoS(Distributed Denial of Service, 분산 서비스 거부) 공격: 특정 서버나 네트워크가 처리할 수 없을 정도의 트래픽(서비스 요청)을 발생시켜서 과부하를 일으키는 사이버 공격
- malware(멀웨어): 일반적인 사이버 공격으로, 최종 사용자 시스템과 서버에 설치되는 다양한 악성소프트웨어로 가짜백신, 랜섬웨어, 에드웨어, 트로이목마와 같은 종류들이 있다.
- sniffing(스니핑): 코를 킁킁[벌름]거리다, (코를 킁킁·벌름거리며) 냄새를 맡다[들이마시다] 라는 뜻이지만 네트워크 상에서 다른 사람의 정보를 훔쳐보는 것을 말한다.
- snooping(스누핑): 기웃거리다, 염탐하다 는 뜻으로 전송 중인 데이터에 접근하는 것뿐만 아니라 다른 사람의 컴퓨터 화면에 띄운 이메일과 같은 정보를 일상적으로 관찰하거나 다른 사람이 입력하는 내용을 보는 것 등을 포함한다.
- spoofing(스푸핑): (남의 이메일 주소를) 도용하다 는 뜻으로 사이버 범죄자가 신뢰할 수 있는 주체 또는 장치로 가장하여, 해커에게는 이득이지만 사용자에게는 해로운 행위를 하도록 유도하는 행동의 유형을 의미하는 광범위한 용어
반드시 알아야하는 개념!
- 클러스터링: 여러 대의 컴퓨터가 하나의 시스템처럼 동작하는 것으로 하나의 작업만 하기 위한 것이 아닌 여러 컴퓨터를 통해 신뢰성을 확보하기 위한 기술.
- 병렬컴퓨팅: 하나의 큰 문제를 여러 컴퓨터가 나누어 해결하는 방식으로 한가지 문제를 처리하기 위해 여러 컴퓨터가 들러붙어서 해결하는 방식을 의미함.
※둘의 차이점은 클러스터링은 시스템에 초점을 맞추고 시스템을 구성하는 방식이라면
병렬컴퓨팅은 문제에 초점을 맞추고 문제를 해결하는 방식을 말한다. - Protocol(프로토콜): 통신 규약, 형식, 약속을 의미(컴퓨터 내부에서, 또는 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙 체계)
- HTTP(HyperText Transfer Protocol): 서버랑 클라이언트가 웹상에서 정보를 주고 받을 수 있도록 해주는 프로토콜을 의미
- HTTPS(HyperText Transfer Protocol Secure): 기존의 http는 암호화를 하지 않는 프로토콜이라 보안성이 취약한 문제가 극복하기 위해 암호화를 하는 http 프로토콜
- HTML(Hypertext Markup Language) 웹 페이지를 어떻게 보여줄 것인가를 기술하는 마크업 언어
※프로그래밍 언어 아님 <======중요!!!!!!!!!!!! - Browser: 웹 사이트를 보여주기 위한 응용프로그램. 크롬, 웨일즈, 엣지, 사파리 등이 있다.
- UDP(User Datagram Protocol): 비연결형 데이터그램 방식의 프로토콜로 신뢰성을 보장하지 않는다. TCP에 비해 구조가 단순하고 빠르다는 장점이 있다.
- TCP(Transmission Control Protocol): 연결형 가상회선 방식의 프로토콜로 신뢰성을 보장합니다. UDP에 비해 구조가 복잡하고 느리다.
- IP(Internet Protocol): 호스트(네트워크상에서 하나의 노드, 쉽게 말해서 PC하나)의 인터넷 주소를 지정하고 패킷의 분해 조립을 담당하는 프로토콜. IP 주소란 192.000.000.000 와 같은 것들을 말한다.
- Domain(도메인) 네트워크 상에서 호스트를 가르키는 이름으로 www.google.com과 같이 이런 이름을 Domain Name이라고 한다.
- DNS(Domain Name System, 디엔에스) 컴퓨터가 읽기 편한 구조인 IP주소를 도메인 이름으로 바꿔주는 시스템을 의미한다.
- 패킷: 네트워크를 통해 전송되는 형식화된 데이터 덩어리로 전송하는 데이터를 일정한 길이로 자른 것이다.
HTTP 깊게 파고들기
HTTP요청은 패킷으로 쪼개져서 발송된다.
패킷은 TCP헤더로 감싸지고, 또 IP헤더로 감싸져서 발송된다.
TCP헤더에서는 Port를 명시하고 IP헤더에서는 IP주소를 명시한다
IP 주소는 해당 컴퓨터의 주소를 의미한다
Port 번호는 해당 컴퓨터 내부의 주소를 의미한다
우리가 브라우저에 IP주소를 직접 입력하지 않는 이유는, 도메인과 IP가 연결되어서 자동으로 변환되기 때문이다.
우리가 브라우저에 포트번호를 직접 입력하지 않는 이유는 프로토콜에 따라서 잘 알려진 포트는 생략이 가능하기 때문이다.
월요일이라 약간 힘들고 더워서 피곤함이 빨리 몰려오지만 이렇게라도 내용 정리를 해야 머릿속에 한번 더 들어오지 않을까 생각이 든다. 추가적인 수업 내용이 있었는데 정리할 땐 기억이 잘 안난다. 잠 좀 줄이고 더 노력해보자.
'CS' 카테고리의 다른 글
[CS] 웹 지식 복습 및 추가 정리 (1) | 2024.08.12 |
---|---|
[CS] 소프트웨어 문서 (0) | 2024.07.31 |
[CS] 빅데이터 및 인공지능 (0) | 2024.07.30 |
[CS] 소프트웨어 설계 (0) | 2024.07.26 |
[CS] 컴퓨터 구조와 운영체제 (0) | 2024.07.25 |