목록분류 전체보기 (56)
CS 공부

Blocking I/O blocking I/O 작업은 유저레벨에서 직접 수행할 수 없다. 실제 I/O를 수행하는것은 커널레벨에서만 가능하다. 유저 프로세스(또는 쓰레드)는 커널에게 I/O를 요청해야한다. I/O에서 블로킹 형태의 작업은 유저 프로세스가 커널에게 I/O를 요청하는 함수를 호출하고, 커널이 작업을 완료되면 함수가 작업 결과를 반환한다. I/O 작업이 진행되는동안 유저 프로세스는 자신의 작업을 중단한 채 대기해야한다. I/O작업이 CPU자원을 거의 쓰지 않기 때문에 이런 형태의 I/O는 리소스 낭비가 심하고 비효율적이다. 리눅스 소켓 통신 방식이 블로킹 방식 Non-Blocking I/O Blocking 방식의 비효율성을 극복하고자 만들어진 것이 Non-Blocking 방식이다. Non-Blo..

로드 밸런싱을 사용하는 이유 요즘 시대에는 웹사이트에 많은 사람들이 접속하게 된다, 따라서 많은 사람들이 접속하게 되니 1대의 서버가 트래픽을 감당할 수 있는 시대가 지났다. 트래픽의 서버의 부화가 심할 때의 가장 먼저 하는 일은 DB 서버의 분리이다. 하지만 처음에는 DB서버의 분리만의로도 서버의 부하를 감당할 수 있었으나 이제는 DB서버의 분리만으로도 부하를 감당하기가 힘들어지게 되었다. 웹서버의 부하를 어떻게 해결해 나갈 것인지 대한 고뇌를 하게 되어 찾은 해결방법이 바로 로드밸런싱이다. 로드 밸런싱이란? 로드밸런서는 서버에 가해지는 부하를 분산해주는 장치 또는 기술을 통칭합니다. 클라이언트와 서버풀(Server Pool, 분산 네트워크를 구성하는 서버들의 그룹) 사이에 위치하며, 한 대의 서버로 ..

먼저 알아야 할 것 : 다중화와 역다중화 다중화는 데이터를 보내기 전에 모으는 것 역다중화는 데이터를 받아서 나눠서 애플리케이션에서 필요한 적절한 곳에 보내는 것. 한 컴퓨터에서 다른 컴퓨터로 데이터를 보낸다고 생각해보자. 트랜스포트 계층은 실제로 데이터를 직접 프로세스로 전달하지 않고 중간 통로인 소켓에게 전달하고, 받는다. 트랜스포트 계층은 애플리케이션에서 데이터를 받고 이 데이터를 조각조각 내서 세그먼트로 만들고 각 세그먼트에 헤더정보를 넣는다. 이 세그먼트들을 네트워크 계층으로 캡슐화 되서 전달된다. 이렇게 캡슐화해서 네트워크 계층으로 전달하는 과정을 '다중화' 라고 한다. 이제 네트워크 계층에서 이 데이터들을 받는 쪽 호스트로 보낸다. 여기서 보내는 데이터에는 출발지 포트번호, 목적지 포트번호,..

HTTP - 웹의 애플리케이션 계층 프로토콜 - 서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜이다 따라서 HTTP는 클라이언트 프로그램과 서버 프로그램으로 구현된다. - HTTP는 TCP/IP위에서 작동한다. HTTP는 TCP를 전송 프로토콜로 사용한다. - HTTP는 무상태(Stateless) 프로토콜이다. - Method,Path, Version, Headers, Body로 구성된다. - 80port 사용 - 암호화가 되지 않은 평문 데이터를 전송하는 프로토콜 -> 이 문제로 HTTPS가 등장 무 상태성(Stateless) 서버가 클라이언트에 관한 어떠한 상태정보도 저장하지 않는다는 의미 이벤트 시간대에 서버 scale out(수평확장) 할때 쓰인다. 로그인 했다는 상태를 브라우저 쿠..

대칭키와 공개키에 대한 설명에 앞서 네트워크의 안전한 통신에 요구되는 특성 알아보자 기밀성 송신자와 지정된 수신자만이 전송되는 메시지 내용을 이해할 수 있어야한다. 메시지 무결성 통신하는 내용이 전송도중에 변경되지 않아야한다. 종단점 인증 송신자와 수신자는 통신에 참여하는 상대방이 실제 누구인지 확인하기 위해서 신원을 확인할 수 있어야한다. 운영보안 내부 네트워크(회사, 학교의)가 외부로부터의 공격을 방지하기 위한 운영이 필요하다. 대칭키 암호화 방식 대칭키 암호화 방식은 암복호화에 사용하는 키가 동일한 암호화 방식을 말한다. 대칭키 암호화 방식에서의 키는 송신자와 수신자사이의 비밀이다. 즉 대칭키는 암복호화키가 동일하며 해당 키를 아는 사람만이 문서 복호화해 볼 수 있게 된다. 장점 공개키 암호화 방식..

흐름 제어 사용하는 이유 TCP는 보장된 네트워크인데 이것은 4가지 문제를 일으킨다 packet 손실 packet 순서 변동 네트워크 혼잡 리시버 오버플로우 흐름제어란? 호스트와 호스트 간의 데이터 처리를 효율적으로 하기 위한 기법이다. 수신하는 애플리케이션이 읽는 속도와 송신자가 전송하는 속도를 같게한다. 즉 송신측과 수신측의 데이터 처리 속도 차이를 해결하기 위한 기법 흐름제어는 리시버가 패킷을 지나치게 많이 받지 않도록 조절하는 것이다. 수신측에서 수신된 데이터를 처리해서 윗 계층으로 서비스 하는 속도보다 송신측에서 보내는 데이터 속도가 더 빠르다면, 수신측에서 제한된 저장용량(일반적으로 큐)을 초과하여 이후에 도착하는 데이터의 손실을 가져올 수 있다. Stop and wait 방식 매번 전송한 패..

TCP 3 way handshake(TCP 연결) 과정 [1] 클라이언트 프로세스는 서버 프로세스에게 연결을 요청하는 syn 세그먼트을 보냄 추가로 클라이언트는 최초의 순서번호를 선택하고 SYN 세그먼트에 순서번호 필드에 이 순서번호를 넣는다. 해당 순서번호는 보낸 패킷의 순서를 확인할 때 사용하는데 1부터 사용하는 것이 아니라 무작위의 순서번호를 선택하는 것은 보안 공격을 피하기 위해 순서번호를 적절히 임의로 추출한다. -> Client > Server : TCP SYN세그먼트 -> Client는 SYN/ACK세그먼트을 기다리는 상태가 된다. [2] 서버가 SYN패킷을 받으면 서버는 새로운 소켓을 생성하고 연결 승인 세그먼트 (SYN/ACK 세그먼트)를 전송한다. 세그먼트 헤더에 3개의 아래와 같은 중..

계층화 시킨 이유 - 통신이 일어나는 과정이 단계별로 파악 가능. - 흐름을 한눈에 알아보기 쉽다. - 사람들이 이해하기 쉽다. - 특정한 곳에 이상이 생기면 다른 단계의 장비 및 소프트웨어를 건들이지 않고도 이상이 생긴 단계만 고칠 수 있다. 계층화의 잠재된 결점은 한 계층의 기능이 하위계층과 기능적으로 중복 된다는 것이다. OSI 7 계층이란 물리 계층 주로 전기적, 기계적, 기능적인 특성을 이용해서 통신 케이블로 데이터를 전송 사용되는 통신 단위는 비트이고 단지 데이터를 전달만 할뿐 전송하거나 수신하려는 데이터가 무엇인지, 어떤 에러가 있는지 등에는 전혀 신경 쓰지 않는다. 단지 데이터 전기적인 신호로 변환해서 주고받는 기능만 한다. 대표적인 장비는 통신 케이블, 리피터, 허브등이 있다. 요약 케이..