OSI 7 계층(TCP/IP Layer)
OSI 계층 - 물리/데이터링크/네트워크/전송/세션/표현/응용
TCP/IP - 네트워크 액세스/인터넷/전송/응용 : OSI 7계층을 기반으로 구현한 네트워크 계층이다.
1계층: 물리주소 MAC을 사용. LAN, 패킷망 등에 사용
2계층: 통신 노드 간 IP패킷을 전송하는 기능과 라우팅 기능을 담당. IP, ARP, RARP 등의 프로토콜 사용
3계층: 통신 노드 간 연결을 제어. 신뢰성 있는 데이터 전송을 담당. TCP, UDP 프로토콜 사용.
4계층: TCP/UDP 기반의 응용 프로그램을 구현할 때 사용. FTP, HTTP, SSH 프로토콜 사용.
클라이언트-서버 모델
서비스 요청자인 클라이언트와 서비스 제공자인 서버 간 작업을 분리해주는 분산 애플리케이션 구조이자 네트워크 아키텍쳐.
클라이언트: 서비스를 사용하는 사용자 혹은 사용자의 단말기
서버: 서비스를 제공하는 컴퓨터이며, 다수의 클라를 위해 존재하기 때문에 일반적으로 큰 용량과 성능을 갖는다.
소켓(socket, bind, listen, accept, connect, close)
소켓: 앞으로 사용할 소켓 파일 디스크립터를 반환받고 소켓을 열어줌(다열린거아님)
바인드(서버): 포트넘버와 아이피 등을 해당 소켓에 묶어준다.
리슨(서버): 서버로 들어오는 다른 소켓에 대해 들을 준비를 함
어셉트(서버): 서버로 커넥트를 원하는 소켓이 들어오면 그에 대해 소켓을 서로 연결해 열어준다(진짜 열림)
커넥트(클라): 서버에게 연결을 원한다는 요청을 한다
클로즈: 소켓을 닫고 연결을 종료한다
파일 디스크립터
리눅스/유닉스에서는 일반적인 파일, 디렉토리, 소켓, 디스플레이 등 모든 객체를 파일이라고 지칭한다.
해당 파일들에 대해 프로세스가 접근할 수 있도록 제공하는 인덱스 시스템이 파일 디스크립터다.
파일 디스트립터는 각 객체에 대한 인덱스를 제공한다. 파일 디스크립터는 프로세스 별로 인덱스 테이블을 가진다.
Datagram vs Stream
데이터그램은 비신뢰성을 기반으로 UDP 프로토콜을 사용하는 소켓이다.
빠르고, 데이터가 소실되어도 사용자에게 알리지 않음. 따라서 데이터가 중간에 조금 소실되어도 괜찮은, 복구가 가능한 시스템에서 사용한다. 게임이나 음성 채팅, 동영상 스트리밍 등
(+ 패킷이 통채로 소실되는 경우는 있지만, 한 패킷의 일부가 사라지는 경우는 없다.)
스트림은 신뢰성을 기반으로 TCP 프로토콜을 사용하는 소켓이다.
상호 연결을 진행하며, 중간에 패킷이 소실되면 사용자에게 알려 다시 전달한다. 패킷이 전송한 순서대로 도착한다는 특징이 있다. 데이터그램 소켓보다 느리다. 중간에 사라지는 정보가 없어야 하는 경우에 스트림 소켓을 사용한다. 인증 시스템 등
CGI / WebServer/ MIME Type
Common Gateway Interface: 웹서버에서 응용프로그램을 동작시키기 위한 프로토콜이다. 웹서버는 CGI를 호출하고, 클라이언트 요청에 따라 프로세스를 생성한다. 멀티프로세스 시스템인 만큼 부하가 심한데 이를 극복한게 WAS다.
webserver
- 하드웨어: 소프트웨어가 실제로 동작하고, 웹 페이지의 데이터를 저장하는 컴퓨터. 인터넷에 연결되어 다른 컴퓨터들이 서버에 접속할 수 있도록 한다.
- 소프트웨어: 프로토콜을 통해 넘어온 클라이언트의 요청에 HTML과 같은 웹 페이지로 응답하는 소프트웨어. 호스팅하고 있는 서버에서 사용자가 웹페이지의 컴포넌트 파일들에 어떻게 접근하는지 관리한다.
MIME (Multipurpose Internet Mail Extensions): 이메일과 함께 동봉할 파일을 텍스트 문자로 전환해서 이메일 시스템을 통해 전달하기 위해 개발되었다. 현재는 웹을 통해 여러 형태의 파일을 전달하는데 쓰인다.
밈 전에는 UUEncode 방식을 사용했다. 기존 방식은 텍스트파일을 주고 받는데 전혀 문제가 없었다. 하지만 텍스트 ASCII파일이 아닌 바이너리 파일을 보내는 경우가 생겼고(음악, 영상 등) ASCII만으로는 전송이 불가능해 밈 타입이 나왔다.
바이너리 -> 텍스트 : 인코딩
텍스트 -> 바이너리: 디코딩
밈으로 인코딩한 파일은 콘텐츠타입 정보를 파일의 앞부분에 담게 되며, 콘텐츠 타입은 여러가지 타입이 있다.
콘텐츠 타입이란 웹 서버 HTTP 헤더에 보내지는 자원의 콘텐츠 타입을 담기위해 사용한다.
어떤 데이터를 보내는지 타입을 표현하기 위해 사용한다.
HTTP(요청/응답, 헤더, 메소드, 상태코드, HEAD 메소드)
요청: 웹 브라우저와 같은 인터넷 통신 플랫폼에서 웹 사이트를 로드하는 데 필요한 정보를 요청하는 방법(HTTP버전, URL, 메서드, 요청 헤더, 본문) 등의 정보가 포함됩니다.
응답: HTTP 요청에 대한 응답으로 서버로부터 수신하는 응답. 요청된 내용을 기반으로 정보를 전달.
요청 헤더: 키값 쌍의 형태이며, 클라이언트가 사용하는 브라우저 및 요청되는 데이터와 같은 핵심 정보를 전달
메서드: GET, POST가 있다. 요청이 쿼리된 서버에서 기대하는 작업을 메서드라고 한다.
GET 요청한 응답을 기대
POST 서버에게 정보를 제출하고 있음을 알림
HEAD메소드: GET처럼 요청과 동일한 응답을 요구하지만, 응답 본문을 포함하지 않는다. 포함되어도 무시!
GET은 요청할 때 헤더와 데이터를 서버에게 보내는데 헤드는 헤더만 전송한다.
상태코드: 1** 정보제공 2** 성공 3** 리디렉션 4** 클라오류 5** 서버오류
본문: 전송되는 정보의 본문, 데이터 등 웹 서버에 제출하는 모든 정보
Proxy : 대리 라는 뜻. 빠른 액세스나 보안을 위한 중계서버를 프록시 서버라고 한다.
포워드 프록시: 클라대신 프록시 서버가 목적 서버에 통신해주는 구성. (클라-프록시)-서버
장점: 프록시 서버에 캐시를 저장, 사이트에 접속하는 속도가 빨라진다 / URL필터링으로 외부 웹 사이트로의 액세스를 필터링할 수 있다.
리워드 프록시: 서버쪽에 위치하여 클라의 접근을 최초로 받아 리퀘스트에 해당하는 서버에 배분. 클라-(프록시-서버)
클라의 액세스를 프록시 서버에 집약해서 URL에 따라 서버가 바뀌도록 설정. 웹 서버가 여러개 존재해도 클라에게 은폐할 수 있는 것이 특징
장점: 부담 분산. 정적-동적 콘텐츠를 나누어 메모리 사용량의 효율화를 할 수 있다.
캐시의 저장. 포워드처럼 동일한 데이터를 얻을 때 프록시가 저장한 내용을 반환.
보안 대책, 바이러스 대책: 통신시, 프록시 서버에 접속하므로 프록시 서버 내에 대책을 구현하여 웹 서버로의 부정 액세스, 사용을 방지할 수 있음.
출처
'TIL (Today I Learned)' 카테고리의 다른 글
3/15 (금) TIL - 간단하게 주저리 (0) | 2024.03.15 |
---|---|
[크래프톤 정글] 정글 7주차 후기 (0) | 2024.03.11 |
알고리즘 주차 완료 (1) | 2024.02.05 |
알고리즘 3일차 (2) | 2024.01.13 |
[크래프톤 정글] 정글 1주차 후기 (0) | 2024.01.12 |