ComputerScience28 [Network] 5. 주소창에 www.naver.com을 쳤을 때 생기는일 개요 (글자 드래거? 들을 위한 소소한 목적...) 개념공부에는 안나오지만 배운 내용들을 모두 내포한 질문이다. 사실 인터넷에 치면 기본적인 내용은 확인 할 수 있다. 기술면접의 단골질문 중 하나라 당연한 일이다.. 필자도 한 IT회사에서 이 질문을 받고 신나게 대답을 했다. 하지만 돌아오는 답변은 "그럼 , 네이버 서버에서 클라이언트가 요청하면 서버 하나에서 다 처리해 줄까요? 여러 클라이언트가 요청하면 어떻게 할 거 같아요?" 와 같은 꼬리질문을 하면서 말문이 막혔다. 아마 로드 밸런싱에 관한 내용에 대해서 공부해 봤는지를 알고 싶으셨던게 아닐까 싶은데 왜그랬는지 그 부분은 공부를 안하고 갔던 부분이었다. 따라서 이 포스팅에는 능력이 닿는 한에서 최대한 자세하게 정리해보고자 한다. 1. 간단한 과정 .. 2021. 5. 29. [Network] 4. HTTP 버전 & QUIC 1. 개요 HTTP프로토콜은 TCP/IP 환경에서 동작한다고 알고있다. 하지만 HTTP가 TCP프로토콜에서 동작하는게 맞는 말일까? 위키백과 HTTP(HyperText Transfer Protocol, 문화어: 초본문전송규약, 하이퍼본문전송규약)는 W3 상에서 정보를 주고받을 수 있는 프로토콜이다. 주로 HTML 문서를 주고받는 데에 쓰인다. 주로 TCP를 사용하고 HTTP/3 부터는 UDP를 사용하며, 80번 포트를 사용한다. 그렇다. http프로토콜은 TCP가 필요한 것이 아니라 신뢰성을 보장하는 프로토콜이 필요한 것이었고, TCP보다 효율적으로 전송할 수 있는 UDP가 신뢰성 까지 보장한다면 TCP를 사용할 이유가 없을 것이다. 이 사실을 모른 채 HTTP에 대한 대화를 나누다 http는 tcp에서.. 2021. 5. 28. [Network] 3.로드밸런싱(Load Balancing) 1.로드밸런싱 서버가 수천만명의 사람들의 접속을 감당하지 못하면 어떻게 해야할까? 이를 해결 하는 방식에는 2가지가 있다. 1. 장비를 업그레이드 하는 Scale-up방식 2. 장비를 여러개 두는 Scale-out방식 2번의 경우 장비를 여러개 두게 된다면 장비마다 다른 IP를 가지게 되어 어떤 서버에 누가 얼마나 들어가는지 설정하지 못하기 때문에 각 서버에 부하를 적절하게 분산해야한다. 개발자의 의도대로 각 서버가 부하를 적절하게 나누는 것을 로드밸런싱(load balancing)이라고 한다. 이때 로드밸런싱을 담당하는 장비를 로드밸런서(load balancer)라고 한다. 2. 로드밸런서의 종류 로드밸런서는 OSI 7계층을 기준으로 부하를 분산하는 방법에 따 라 종류가 나뉜다. 계층 방법 프로토콜 L.. 2021. 5. 27. [프로그래밍언어] 절차지향 vs 객체지향 vs 함수형 프로그래밍 1. 개요 절차지향, 객체지향, 함수형 프로그래밍등 코디의 기초라고 할 수 있는 것들을 잘 알고 있을까? 각각의 차이점을 말하라고 한다면 잘 말 할 수 있을까? 라고 물어보면 그렇지않나? 라는 자신감 없는 대답이 나올 것 같다. 따라서 이번 포스팅을 통하여 정리해 보고자 한다. 2. 프로그래밍 패러다임 프로그래밍 패러다임 - 프로그래머에게 프로그래밍 관점을 갖게하고 코드를 어떻게 작성할지 결정하는 역할을 한다. 새로운 프로그래밍 패러다임을 통해서 새로운 방식으로 생각하는 법을 배우게 되고, 이를 바탕으로 코드를 작성하게 된다. 최근의 프로그래밍 패러다임 명령형 프로그래밍 : 무엇(What) 할건지를 나타내기 보다 어떻게(How)을 할 건지 설명하는 방식 절차지향 프로그래밍 : 수행되어야 할 순차적인 처리.. 2021. 5. 26. [OS] 6. 가상메모리 1. 가상메모리 다중 프로그래밍을 실현하기 위해서는 다수의 프로세스들이 메모리 위에 올라와 있어야 한다. 하지만 메모리의 용량은 한정되어있고, 다중프로그래밍을 하려면 메모리 용량이 부족하기 마련이다. 가상메모리는 이런상황을 대비해 프로세스 전체가 메모리 내에 올라오지 않더라도 실행이 가능하도록 하는 기법이다. 이 기법의 장점 중 하나는 사용자 프로그램이 물리 메모리보다 커져도 된다는 점이다. 가상메모리는 사용자 관점의 논리 메모리와 물리 메모리의를 분리시켜 주 메모리를 균일한 크기의 저장공간으로 구성된 엄청나게 큰 배열로 추상화 시켜준다. 이번 포스팅에는 가상메모리를 구현하는 요구페이징에 대해서 알아보는 시간을 갖겠다. - 가상메모리의 필요성 잘 발생하지 않는(거의 실행하지 않는) 오류 상황을 처리하는 .. 2021. 5. 24. [OS] 5. 동기화(세마포, 뮤텍스) ※본 포스팅은 공부목적(https://develaniper-devpage.tistory.com/77)에 따라 해당 블로그와 깃허브를 참조하여 제작된 포스팅 입니다. 1. 동기화 1) 경쟁상황( race condition ) 여러개의 프로세스가 동일한 자료를 접근하여 조작하고, 그 실행 결과가 접근이 발생한 특정 순서에 의존하는 상황을 말한다. 이런 경우에 동일한 자료에 대한 접근을 제한하여 접근 순서에 관계없이 항상 일관적인 결과를 도출 할 수 있도록 해야한다. 이렇게 같은 자원에 대해서 한번에 한 프로세스 혹은 쓰레드만 작업을 허용하는 것을 동기화라고 한다. 2) 임계구역(Critical Section) 공유자원이 접근하는 코드를 말한다. 각 프로세스 또는 쓰레드가 공유자원에 값을 변경하는 코드의 영역.. 2021. 5. 22. [Network] 2.HTTP, HTTPS 1. HTTP(HyperText Transfer Protocol) HTTP는 분산 하이퍼 미디어 환경에서 빠르고 간편하게 데이터를 전송하는 프로토콜로 서로 다른 체계의 시스템 사이에서 통신을 주고 받는 가장 기초적인 프로토콜이다. HTTP 메소드를 이용해 클라이언트가 서버에 데이터를 전송하고, 서버가 클라이언트로 데이터를 회신 할 수 있다. 대표적으로 클라이언트가 정보를 요청할 때는 GET, 서버에 메시지를 전달할 때(회신할때)는 POST메서드를 사용하여 통신한다. 1) 특징 HTTP의 통신은 다음과 같이 이루어 진다. HTTP 통신은 다음과 같은 특성을 띈다. 통신방법 HTTP는 기본적으로 TCP를 이용하여 통신을 진행한다. 서버와 클라이언트에 의해 해석된다. TCP/IP를 이용하는 응용프로토콜이다. .. 2021. 5. 21. [OS] 4. 메인 메모리 ※본 포스팅은 공부목적(https://develaniper-devpage.tistory.com/77)에 따라 해당 블로그와 깃허브를 참조하여 제작된 포스팅 입니다. 1. 스와핑(Swapping) 프로세스 실행 중 임시로 메인메모리에 있던 프로세스를 보조메모리로 보냈다가 다시 되돌리는 경우가 있다. 예를 들어 RoundRobin 스케줄링의 경우 CPU할당 시간이 끝나면 주 메모리 관리기가 이 프로세스를 보조 메모리로 보내고 다른 프로세스를 메모리로 불러 들일 수 있다. 즉, 스왑 시킬 수 있다. 대략적인 개념은 위와같이 CPU 버스트 시간을 모두 사용한 프로세스를 메인메모리에서 내려 보조메모리에 저장하고 다음 프로세스를 올리는 작업을 말한다. 보조메모리에 접근하는 것 자체가 많은 시간이 필요하기 때문에 메.. 2021. 5. 20. 이전 1 2 3 4 다음