ICMP란?ICMP(Internet Control Message Protocol, 인터넷 제어 메시지 프로토콜)는 네트워크 장치에서 네트워크 통신 문제를 진단하는 데 사용하는 네트워크 계층 프로토콜이다. ICMP가 사용되는 주요 방법은 데이터가 목적지에 잘 도달하는지, 도달 시간이 적절한지를 확인하는 것이다. ICMP의 용도ICMP의 주요 용도는 오류보고이다. 두 장치가 인터넷을 통해 연결되면 ICMP를 사용하여 데이터가 의도한 대상에 도달하지 못한 경우, 수신 장치에서 전송장치로 전달할 수 있는 오류를 생성할 수 있다. 다만 데이터에 대한 정보를 전달하기 위한 프로토콜이지만, 데이터 자체를 관리하지는 않는다.예를 들어 데이터 패킷이 라우터에 비해 너무 큰 경우 라우터에서는 패킷을 삭제하고 ICMP 메시..
프록시(Proxy)란?프록시 서버란 클라이언트 - 서버 사이에 위치하여 통신을 중계하는 역할을 하는 응용 프로그램(서버)을 말한다.프록시(Proxy)는 '대리', '중계' 라는 의미를 갖고 있으며, 여러 가지 이유로 직접 통신할 수 없는 경우에 중간에서 통신을 중계하는 역할을 수행한다. (보안, 성능, 안정성 향상 등의 목적을 갖고 있다.)일반적으로 웹은 클라이언트에서 서버로 요청을 보내고, 서버에서 클라이언트로 응답하는 방식의 통신으로 데이터를 전달한다. 여기에 프록시 서버를 추가해서 요청을 중계하도록 해서, 보안상의 안정성을 높이거나, 성능을 향상시킬 수 있다.정리하자면 아래와 같은 과정을 거쳐서 통신이 이루어진다.클라이언트 -> 프록시 서버 요청프록시 서버 -> 서버 요청서버 -> 프록시 서버 응답..
포트(Port)Port는 운영체제 통신에서의 네트워크 연결이 시작되고 끝나는 논리적인 접속 지점을 말한다. 보통 http://192.168.1.1:8080과 같이 프로토콜/호스트/포트로 구분되어 도메인이 정의된다. 여기서 192.168.1.1와 같은 IP 주소가 컴퓨터 또는 네트워크 장치 등을 식별하는 것이라면, 포트 번호는 해당 컴퓨터 내의 특정 응용 프로그램을 식별한다.데이터를 송수신할 때, DataLink 계층에서 호스트의 NIC(Network Interface Card, LAN 카드)로 MAC 주소를 판별하고,Network 계층에서 IP 주소로 목적지를 판별한다.MAC 주소와 IP 주소로 목적지 호스트까지 도달한 뒤에는 어떤 응용프로그램 또는 프로세스로 접근할지를 알아야 하는데, 이때 쓰이는 것이..
방화벽이란?방화벽(Firewall)은 네트워크 보안 시스템이다. 미리 정의된 보안 규칙에 따라 들어오고 나가는 네트워크 트래픽을 모니터링하고 제어하는 장치 또는 소프트웨어이다. 불법 접근, 악의적 접근, 트래픽 낭비 등을 방지하기 위해 사용된다. 방화벽은 트래픽 필터링, 네트워크 세분화, 감시 및 로깅, 인증, 프라이버시 보호 등의 여러 가지 기능을 한다.이중 인바운드 규칙, 아웃바운드 규칙은 트래픽 필터링 기능에 포함된다. 트래픽 필터링(접근 제어)트래픽 필터링이란 방화벽이 네트워크를 통해 주고받는 데이터 패킷을 검사하고 제어하는 것을 말한다.방화벽이 허용한 트래픽만 네트워크로 들어오거나 나갈 수 있도록 한다.트래픽 필터링 방식 중 패킷 필터링 방식은 데이터 패킷의 헤더 정보를 분석하여 트래픽을 허용/..
CSRFCSRF(Cross Site Request Forgery, 크로스 사이트 요청 위조)는 웹 보안 취약점 중 하나로, 인증된 사용자가 자신의 의지와는 무관하게 웹 애플리케이션에 공격자가 의도한 특정 요청을 보내도록 유도하는 것을 말한다. 제품 구입, 자금 이체, 비밀번호 변경, 기록 삭제 등의 요청을 악의적으로 보내는 것이다. CSRF 공격 예제CSRF 공격을 이해하기 위해 Spring Docs에 좋은 예제가 있어서 가져왔다.https://docs.spring.io/spring-security/reference/features/exploits/csrf.html#csrf(실제로는 여러 가지 보안 제한사항이 있겠지만, 그런 게 없다고 가정하자.) 정상적인 요청 은행 웹 사이트에 로그인 사용자가 다른 계..
위와 같은 에러를 만나본 적이 있을 것이다. 아무런 설정 없이 프론트엔드 서버에서 백엔드 API 서버로 요청을 보냈을 때 발생 할 수 있다. 여기서 "has been blocked by CORS policy"라는 문장이 눈에 띈다. CORS 정책에 의해 blocked 되었고, Access-Control-Allow-Origin header가 없으니까 체크해 보라고 한다.CORS 정책이 무엇이고, 왜 이런 에러가 발생했는지 알아보자. CORS란?CORS(Cross-Origin Resource Sharing, 교차 출처 리소스 공유)는 한마디로 서버와 동일한 도메인이 아닌, 다른 도메인에서 자원에 접근할 수 있도록 허용하는 것을 말한다.기본적으로 웹 브라우저는 SOP(Same-Origin Policy, 동일 ..
부팅(Booting)이란?컴퓨터를 켜서 동작시키는 절차.처음 컴퓨터를 켜면 메모리에는 아무것도 올라와 있지 않다. 컴퓨터가 동작하게 하기 위해 운영체제 커널을 특정 주소의 물리 메모리로 올려서 실행되도록 하는 절차를 말한다.부팅 과정컴퓨터에 전원을 공급ROM에서 BIOS 프로그램을 RAM에 올린다. (1)BIOS는 POST(Power-On Self Test) 실행 BIOS는 Boot Loader를 RAM에 올린다. (2)Boot Loader는 Boot 프로그램을 RAM에 올리고 실행한다. (3) (이제 Boot 프로그램이 Memory에 올라가 있는 상태이다.)Boot 프로그램은 운영체제 커널 이미지를 RAM에 올리고 실행한다.(4)부팅 과정 종료 ROM(Read-Only Memory)과 RAM(Rando..
프로세스(Process) 란? 프로세스는 실행 중인 프로그램을 말한다. 스케쥴링의 대상이 되는 작업, Task, Job 등과 같은 용어이다. 응용 프로그램과 프로세스는 같은 용어가 아니다. 예를 들면 excel 프로그램은 excel.exe라는 실행 파일로 존재한다. 이 파일은 컴퓨터가 이해할 수 있는 0과 1로 된 바이너리로 구성되어 있고, excel.exe를 실행해서 excep 프로그램이 뜨면, 이를 프로세스라고 한다. excel 프로그램을 여러 개 여러 개 띄우면, 여러 개의 프로세스가 실행되는 것이다. 프로세스 스케쥴링 여러 개의 프로세스가 동시에 실행되고 있을 때, 어떤 프로세스를 먼저 실행시킬지에 대한 규칙이 있어야 한다. 이를 프로세스 스케쥴링이라고 한다. 배치 처리 시스템, 시분할 시스템, ..