01. 웹 페이지를 열람할 수 있는 구조
- 인터넷: 인프라 기술과 관련된 프로토콜을 사용한 거대한 서비스 네트워크
- 웹 서버와 웹 클라이언트로 정보를 열람하거나 조작하는 구조가 일반적
- 웹을 구성하는 인프라 기술(World Wide Web)
- 네트워크 모델: TCP/IP, HTTPS, DNS 등 인프라 기술 사용
- 웹의 구성: 웹서버, 웹 클라이언트, HTML/javascript/PHP/Java 등 언어, 데이터베이스, XML, Rest API 등 구성
- 인프라 기술: 기본 프로토콜과 서비스 프로토콜
- 웹의 기본 구조
- 초기: 정보를 열람하는 서비스
- 웹은 HTML 형식의 문서를 웹 서버에 저장
- 웹 브라우저인 웹 클라이언트가 인터넷을 통해 웹 서버에 액세스하여 화면에 출력
- 웹 서버: Apache, IIS, NGINX
- 웹 브라우저: 구글 크롬, 마이크로소프트 엣지, 사파리 등
02. URL/URI
- 네트워크나 서버 등을 식별하는 역할, 필수적인 요소
- URL(Uniform Resource Locator): 인터넷상의 서버나 데이터(리소스) 등을 특정하는 방법을 규정
- 인터넷상의 위치(네트워크 어느 서버의 특정 파일)를 특정
- 이용하는 프로토콜이나 임의의 값을 가지는 변수 등을 지정 가능
- 네트워크가 서버 지정: 도메인 이용
- URL: 그 리소스의 보관 위치를 나타냄
- URI, URN: 각각의 리소스 위치와 이름을 기술하는 방법
- 프로토콜에는 HTTP, HTTPS, FILE, DATA 등이 예약어로 등록
- 스키마: 장소에 액세스하는 프로토콜을 지정
- 권한: //로 시작하고 장소를 다음 요소로 지정
- 사용자 정보: 사용자 ID 및 계정
- 호스트 정보: 서버의 도메인 이름
- 포트 정보: 액세스할 포트 정보
- 경로: 서버의 파일 경로를 /로 구분하여 지정
- 퀴리: ? 이후의 문자열을 변수 또는 명령으로 지정, 액티브(쿼리 내용에 따라 변화)와 패시브 두 종류의 파라미터가 존재
- 프래그먼트: 서버의 응답이나 부호로써 웹 브라우저가 처리하는 정보 (앵커)
03. HTTP/HTTPS
- HTTP의 보안 강화 == HTTPS
- 웹 브라우저가 웹 서버에 요청을 보냄
- 요청 정보는 URL로 기술
- 요청받은 서버는 해당하는 HTML 파일을 반환하면서 응담
- 이 때 사용되는 프로토콜이 HTTP와 HTTPS
- HTTP
- 하위 프로토콜로 TCP를 사용하여 세션을 설정
- 스테이트리스:
- 웹 브라우저 및 웹 서버의 요청과 응답은 전후 통신에 관계없이 독립적으로 처리
- 각각의 통신이 독립적이고 의존성 없음
- 웹 서버가 불특정 다수의 웹 브라우저의 요청을 처리하는 동안 접속 별로 상태를 유지하기 어렵기 때문
- 반면 같은 HTML 파일을 여러 번 전송하는 것은 낭비
- 이러한 문제를 캐시를 통해 해결
- 캐시: 한번 접속한 웹 페이지의 데이터를 일시적으로 PC에 저장하는 기능
- 쿠키 (Cookie):
웹 서버가 사용자의 브라우저에 저장하는 작은 데이터 조각으로, 사용자의 상태 정보를 저장하고 서버와의 상호작용을 개인화합니다. - 캐시 (Cache):
자주 사용하는 리소스(HTML, CSS, JavaScript 파일, 이미지 등)를 로컬 디스크에 저장하여 서버 요청 없이 빠르게 로드할 수 있도록 돕는 저장 공간입니다. - 쿠키:
브라우저가 제공하는 저장소에 텍스트 파일 형태로 저장됩니다.- 저장 경로: 브라우저에 따라 다름 (예: Chrome의 Local Storage)
- 캐시:
브라우저 또는 운영 체제가 할당한 디스크 공간에 저장됩니다.- 저장 대상: HTML, CSS, JS, 이미지 등의 정적 파일
04. DNS(Domain Name System)
- 도메인 이름과 IP 주소의 대응표를 관리하는 체계
- 여러 서버에 데이터베이스를 분산하여 서로 통신하면서 관리
- IP주소: 유일한 목적지를 특정할 수 있는 식별자
- 도메인 이름: 인간이 다루기 쉬운 이름으로 인터넷을 이용하기 위한 것
- 도메인 이름과 IP 주소 관리 방법
- 대응표 데이터베이스를 여러 DNS 서버에 분산시켜 관리
- 도메인 이름과 IP 주소가 영역이라는 단위
- 서버 간에 서로 통신하여 데이터베이스 내용을 교환
- 영역 정보를 유지하는 서버: 권한 DNS 서버(네임 서버)
- 리졸버 프로그램:
- LAN 내 DNS 서버가 도메인 이름을 알고 있음 --> IP 주소를 직접 알려줌
- 모름 --> 알고 있을 것 같은 DNS 서버로 문의
- DNS 서버에 포함, 또는 컴퓨터나 기기 쪽에서 문의만 처리하는 스텁 리졸버
- 대응표 데이터베이스를 여러 DNS 서버에 분산시켜 관리
05. ICMP(Internet Control Message Protocol)
- 목적지와 연결을 설정하기 전 정보 교환이나 패킷이 잘 도착했는지 확인하는 기능을 규정한 프로토콜
- 경로상 장애 등을 통지
- 처리 실패나 장애가 발생했을 때 오류 메세지를 통지하는 것
- 목적지에서 응답하는지 여부를 포함해서 데이터를 주고 받을 때 필요한 전처리, 후처리, 관리 정보도 교환
- LAN 뿐만 아니라 라우터를 넘어서 인터넷으로도 전송
- ICMP 패킷의 구조
- IP 패킷의 페이로드에 ICMP 패킷의 헤더와 페이로드(데이터)가 들어감
- ICMP 패킷의 헤더: 타입, 코드, 체크섬을 지정하는 필드 존재
- 헤더의 필드와 페이로드의 크기도 타입과 코드에 따라 가변길이가 됨
- 타입: 패킷의 종류(TCP, UDP, ICMP)
- 코드 내용은 타입에 따라 달라짐
06. 텔넷
- 단말기에서 서버에 원격으로 로그인하는 프로토콜
- 텔넷(telnet): 단말기가 되는 컴퓨터에서 서버로 원격 로그인을 할 때 사용하는 프로토콜
- 3 계층 이상의 네트워크 장치를 설정할 때도 텔넷을 사용할 수 있음
- 서버에서 텔넷 서버 프로그램이 실행되고 있어야함
- 단말기에서는 텔넷 클라이언트 애플리케이션이 필요
- 백그라운드 프로세스: 리눅스, macOS (항상 실행)
- 문제점
- 연결할 서버 이름(호스트 이름) 또는 IP 주소를 지정
- 포트가 열려있으면 연결을 수락하고 로그인 프롬프트를 화면에 표시
- 펠넷에는 패킷을 암호화하는 기능이 없기 때뭉에 로그인 후 작업하는 명령 정보는 평문으로 네트워크로 흘러감
- 텔넷 대신 암호화 통신이 가능한 SSH를 사용
07. SSH(Secure SHell)
- 암호화 통신을 위해 공개 키 암호화 방식 사용
- 공개키와 개인키로 키가 2개인 암호 방식
- 공개키: 네트워크 상에 공개
- 개인키: 공개하지 않음
- 따라서 공개키로 암호화한 암호문은 개인키로만 복호화 가능
- 암호화 원리 두가지: SSH1, SSH2
- SSH1
- 클라이언트가 서버에서 받은 공개키로 암호화한 공개키를 생성
- 그 암호화 데이터를 서버로 보냄
- 서버는 클라이언트에서 받은 데이터를 자신의 개인키로 복호화하여 공통키를 생성하고 이후의 통신을 공통키로 암호화
- SSH2
- 디피-헬만 키 교환 방식 사용
- 양측이 개인키와 공개키를 생성
- 공개키를 교환한 후 개인키와 공개키로 특수한 계산을 수행해서 얻은 계산 결과를 통신용 공통키로 사용
- HTTPS의 암호화 통신도 이 방법을 사용
- 디피-헬만 키 교환 방식 사용
- SSH1
08. FTP(File Transfer Protocol)
- 파일을 수송신하는데 사용하는 프로토콜
- 클라이언트가 FTP에 로그인하면 서버에 있는 파일을 내려받거나 클라이언트의 파일을 업로드할 수 있음
- 로그인할 때 암호화 되지 않음
- SCP나 SFTP처럼 암호화 통신이 가능한 프로토콜과 이를 지원하는 서버 또는 클라이언트 프로그램으로 대체
- 액티브 모드: TCP20을 데이터 포트로 사용하는 모드
- 패시브 모드: 임의의 포트를 네고시에이션하는 모드
- 중단 관리 방법: 컨트롤 포트와 데이터 포트로 나눔
09. NTP(Network Time Protocol)
- 컴퓨터나 서버: 내부에 시계를 가지고 있어 그 시간으로 파일의 타임스탬프를 기록하거나 로그 파일의 시간 정보로 사용
- NTP 서버: 클라이언트가 문의하면 현재 시간을 응답
- 클라이언트는 해당 시간 데이터로 내부 시계를 설정
- NTP 서버가 응답하는 시간은 GPS의 시간 정보나 각 국가에서 관리하는 표준 시계 정보 등을 이용
- NTP 서버의 문의량은 방대하므로
- 국가나 대학이 관리하는 표준 관리 시간에 가까운 서버 아래 계층적으로 배치
- Stratum 0: 참조 클락
- Stratum 1: 계층 구조 상위에 있는 서버
- 상위 구조 아래에 서버 분기가 연결되어 있음
- 계층이 깊어지면 시간 오차가 누적되어 가지만, 상위 계층 이하는 그 오차를 예측해서 보정
10. Ajax, REST API
- 동기 통신: 웹 서버는 웹 브라우저의 요청에 대해 HTML 평식의 웹 페이지 데이터를 응답으로 반환하고, 웹 브라우저는 데이터가 준비될 때 까지 다른 처리를 하지 않는 것
- 비동기 통신: 모든 응답이 완료 되기 전에 다른 처리를 하거나 추가 요청을 하는 것
- 이를 실현하기 위해 응답으로 주고 받는 데이터양을 줄여야함
- Ajax(Asynchronous JavaScript + XML): XML 형식으로 필요한 데이터만 주고받으며 비동기 통신을 할 수 있게 한 것
- REST API
- 애플리케이션 간 처리나 호출 방법 등을 정한 규약
- 보통 HTTP(s)를 사용
- JSON, PHP 등으로 처리 내용이나 처리 데이터를 주고 받음
- 예: 웹 브라우저가 웹 서버와 연결되어 있는 데이터베이스나 업무 시스템, 백엔드 시스템 등 기능을 호출할 때 사용, 웹 브라우저 이외의 애플리케이션이 직접 업무 시스템에 요청하거나 문의
- 클라우드 서비스는 대부분 REST API 이용하여 서로 연계하면서 하나의 서비스를 구축
'CS 상식 - 네트워크' 카테고리의 다른 글
[CS 상식 - 네트워크] 스터디 5 (마지막) (1) | 2025.02.03 |
---|---|
[CS 상식 - 네트워크] 스터디 정리 4 (4) | 2025.01.24 |
[CS 상식 - 네트워크] 스터디 정리 2 (4) | 2025.01.23 |
[CS 상식 - 네트워크] 스터디 정리 1 (5) | 2025.01.23 |
[CS 상식 - 네트워크] VLAN과 SDN (0) | 2025.01.17 |