본문 바로가기

728x90

컴퓨터 과학(CS)

(7)
[네트워크] 음성채팅이 진행되는 과정 [UDP][엄탱] 음성 채팅은 어떻게 진행되는 것일까요? 음성통신에 대해서 알아보겠지만, 원리는 문자 채팅이든 화상 채팅이든 다 같습니다. 단지, 어떻게 입력을 받고 어떻게 출력하는지에 대한 차이일 뿐이라고 생각합니다. 채팅은 데이터의 통신이고 이것은 네트워크 통신이기 때문에 네트워크 지식도 알아두면 좋습니다. 결론만 먼저 말하자면, 문자 채팅이든 음성 채팅이든 화상 채팅이든 A라는 유저가 채팅을 하면, 데이터가 전기신호로 변경되고 전기 신호는 데이터로 변경되어 서버로 전송되고 서버는 유저 A와 같은 채팅방에 있는 유저 B, 유저 C… 에게 데이터를 보내주게 됩니다. 순서대로 한눈에 보기 쉽게 정리를 해보겠습니다. 유저 A가 채팅을 입력한다. 입력한 데이터는 전기신호로 변경되어 서버로 보내지고 서버에서 다시 데이터로 변경..
[컴퓨터 과학] 컴파일러와 인터프리터 - 고급 언어 번역기 (용어 설명) 컴파일러와 인터프리터 컴파일러와 인터프리터 누구냐 너네들은?? 우리가 프로그래밍 언어를 작성할 때는 보통 가독성이 좋은 고급 언어로 작성을 합니다. 이러한 고급 언어를 기계어로 번역시켜 주는 역할을 하는 것이 바로 컴파일러와 인터프리터입니다. 고급 언어: 사람의 언어와 가까운 언어 - C, C++, C#, Java, JavaScript 등등 (좋고 나쁘고의 의미 아님) 저급 언어: 기계의 언어(기계어)와 가까운 언어 - 어셈블리어 (역시나 좋고 나쁘고의 의미 아님) 기계어: 1과 0으로 이루어진 CPU가 해석할 수 있는 유일한 언어 어셈블리어: 기계어를 가독성 좋게 영어로 번역한 언어 자세한 설명 보러 가기 즉, 컴파일러와 인터프리터는 고급 언어를 기계어로 번역하는 번역기인 셈입니다. 제가 외국인과 소통..
[컴퓨터 과학] HTTP의 진화 #3 [HTTP/1.1과 HTTP/2.0] HTTP/1.1에서의 문제점 HTTP/1.1은 많은 부분 개선이 되었지만, 여전히 문제가 있습니다. 네트워크에서 같은 큐에 있는 패킷이 그 첫 번째 패킷에 의해 지연될 때 발생하는 성능 저하 현상 HOL Blocking 문제, HTTP/1.1 헤더에 쿠키 등 많은 메타데이터가 들어 있고 압축이 되지 않아 무거운 헤더 구조 문제와 같은 문제를 해결해서 나온 버전이 HTTP/2.0입니다. HTTP/1.x와 HTTP/2.0 차이점 HTTP 요청 응답 단위 멀티플렉싱 서버 푸시 헤더 압축 HTTP/2.0은 HTTP/1.x보다 지연 시간을 줄이고 응답 시간을 더 빠르게 할 수 있으며 멀티플렉싱, 헤더 압축, 서버 푸시, 요청의 우선순위 처리를 지원하는 프로토콜입니다. HTTP 요청 응답 단위 HTTP/1.1에서는..
[컴퓨터 과학] HTTP의 진화 #2 [HTTP/1.0과 HTTP/1.1] HTTP란? - 사전 지식 MDN이나 AWS 기술 블로그를 보면 가장 첫 번째 줄에 아래와 같이 HTTP를 말해줍니다. MDN HTTP는 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜입니다. HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트-서버 프로토콜이기도 합니다. AWS HTTP(Hypertext Transfer Protocol)는 클라이언트와 서버 간 통신을 위한 통신 규칙 세트 또는 프로토콜입니다. 즉, HTTP는 클라이언트와 서버 간 통신을 위한 규칙이며 클라이언트와 서버 간에 데이터를 주고받는 응용 계층 프로토콜입니다. 또 여기서 재밌는 사실이 있습니다. 물론 저한테만 재미있을 수 있는 내용입니다.. 참고: MDN 연결은 전송 계층에서 제어되므로 근본적..
[컴퓨터 과학] HTTP의 진화 #1 - [HTTP/0.9와 HTTP/1.0] HTTP란? HTTP는 초기버전(0.9), 1.0, 1.1, 2.0, 3.0 버전으로 진화가 되어왔습니다. HTTP 내용은 총 세 가지 버전으로 진행될 예정입니다. 첫 번째 버전은 0.9에서 1 버전으로 발전되는 내용을 담을 것이며, 두 번째 버전은 1.0에서 1.1로 발전되는 내용을 담을 것이며, 세 번째 버전은 1.1에서 2.0으로 2.0에서 3.0으로 발전되는 내용을 담을 것입니다. HTTP 통신은 월드 와이드 웹의 기반이 되는 프로토콜이며, Request를 하면 반드시 Response로 돌아오는 비연결지향적인 단방향 통신입니다. 하지만, HTTP는 연결은 되지 않고 전송만 하기 때문에 TCP에서 연결과 연결해제를 맡아서 하게 됩니다. 즉, TCP 통신은 연결 → 전송 → 해제와 같은 과정을 거치게..
[컴퓨터 과학 - CS]동기와 비동기 / 블로킹 논블로킹 안녕하십니까! 숯 같은 개발자 엄탱입니다!! 저번 주에는 제가 코로나에 걸려서 한 주간 푹 쉬었습니다 :) 여러분도 걸리셔서 자연 백신 가지세요 하하하 헛소리는 그만하고 바로 시작하겠습니다!! 동기는 블로킹이고 비동기는 논블로킹이다. (X) 동기 & 비동기와 블로킹 & 논블로킹은 서로 다른 개념이다. (O) 급한 분들을 위한 간단 요약 동기 & 비동기 : 리턴 값을 확인 유무로 구분 동기: 리턴 값을 기다리거나, 완료가 안되고 리턴 값을 받더라도 작업 완료 여부를 계속 확인을 합니다. 비동기: 리턴 값을 신경 쓰지 않고 따로 동작합니다. 블로킹 & 논블로킹 : 제어권의 주체를 넘기느냐 안 넘기느냐로 구분 블로킹: 제어권을 넘기고 제어권을 다시 돌려받을 때까지 기다렸다가 돌려받고 동작을 시작합니다. 논블로..
[컴퓨터 과학] 기계어, 어셈블리어, 고급 언어, 저급 언어 (용어 설명) 안녕하세요!!! 숯 같은 개발자 엄탱입니다!! 오랜만에 또 포스팅을 하게 되었습니다. 오늘은 제가 JavaScript의 호이스팅이라는 개념을 포스팅하기 전에 필요한 용어를 공부하다 또 그 안에 필요한 용어를 공부하다 기계어, 어셈블리어, 고급 언어, 저급 언어까지 오게 되었습니다. 오늘도 화이팅 하시고 힘찬 하루 보내세요. 오늘은 그림이 별로 없어 읽기 힘드실 수 있을 것 같아 걱정이 됩니다. 그래도 읽어 주시면 감사하겠습니다. 혹여나 잘 못 된 내용이 있다면 댓글로 남겨주시면 더더욱 감사하겠습니다. 바로 시작하겠습니다. 기계어와 어셈블리어 기계어 기계어는 쉽게 말해 컴퓨터의 언어입니다. 더 자세히 설명하자면 CPU가 별 다른 컴파일 없이 직접 해독하고 실행할 수 있는 0과 1로만 이루어진 비트 단위의 ..

728x90