CS 지식32 HTTP 구조 HTTP 메세지 기본 구조 HTTP request 메세지는 크게 3부분으로 구성됩니다. Start line headers bodyHTTP Request 구조 Start line ex) GET /find HTTP/1.1 HTTP Method 해당 request가 의도한 action을 정의하는 부분 (ex GET) GET, POST, PUT, PATCH, DELETE, OPTIONS 등이 있습니다. Request target 해당 request가 전송되는 목표 uri (ex /find) HTTP Version HTTP 버전 (ex 1.1) Headers ex) Accept: */* Accept-Encoding: gzip, deflate Connection: keep-alive Content-Type: app.. CS 지식/네트워크 2023. 3. 6. HTTP와 HTTPS란? HTTP란? HTTP(Hyper Text Transfer Protocol)란 서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜입니다. 80번 포트를 사용합니다. ( 클라이언트는 80번 포트로 요청을 보내고, 서버는 80번 포트에서 대기하고 있습니다. ) 어플리케이션 레벨( 응용 계층 )의 프로토콜로 TCP/IP 위에서 작동 Stateless 프로토콜 Method, Path, Version, Headers, Body로 구성 출처 : https://mangkyu.tistory.com/98 HTTP는 암호화 되지 않은 평문 데이터를 전송하는 프로토콜이기 때문에, 제 3자가 정보를 조회할 수 있습니다. 따라서 HTTPS가 나오게 되었습니다. HTTPS란? HTTPS (Hyper Text Transf.. CS 지식/네트워크 2023. 3. 2. TCP와 UDP TCP( Transmission Control Protocol ) 인터넷 상에서 데이터를 메세지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜 TCP의 특징 연결 지향 방식 높은 신뢰성 보장 (ex) 파일 전송) 3-way handshaking 과정을 통한 연결 설정, 4-way handshaking 과정을 통한 해제 흐름 제어(보내는 측과 받는 측의 데이터 처리 속도 차이를 조절해줌) 및 혼잡 제어(네트워크 내의 패킷 수가 넘치게 증가하지 않도록 방지해) UDP보다 속도가 느립니다. 전이중(Full-Duplex), 점대점(Point to Point) 방식 서버와 클라이언트는 1대1로 연결됩니다. Streaming 서비스에 불리합니다. ( 손실된 경우 재전송 요청을 합니다. ) UDP( User D.. CS 지식/네트워크 2023. 2. 27. OSI 7계층이란? OSI 7계층 OSI 7계층은 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명한 것입니다. 7계층은 아래와 같이 구성되어 있습니다. OSI 7계층을 나눈 이유? 통신이 일어나는 과정이 단계별로 파악할 수 있기 때문입니다. 이를 통하여 오류가 생기면 어디서 오류가 나는지 확인하기 쉬워집니다. 1계층 : 물리 계층 (Physical Layer) 주로 전기, 기계적인 특성을 이용해 통신 케이블로 데이터를 전송하게 됩니다. 통신단위는 BIT이고, 1과 0 즉, 전기적으로 ON/OFF 상태로 생각하시면 됩니다. ex) 통신 케이블, 리피터, 허브 2계층 : 데이터링크 계층 (Data Link Layer) 물리계층을 통해 송수신되는 정보의 오류와 흐름을 관리하여 안전한 정보의 전달을 수행할 수 있도록.. CS 지식/네트워크 2023. 2. 27. Deadlock(데드락) Deadlock(데드락) Deadlock 이란? 프로세스가 자원을 얻지 못해 다음 처리를 하지 못하는 상태로 "교착 상태" 라고도 하며, 시스템적으로 한정된 자원을 여러 곳에서 사용하려고 할 때 발생합니다. Deadlock이 발생할 수 있는 경우 출처 : https://jwprogramming.tistory.com/12 Process1 과 Process2가 리소스1, 2 둘다를 얻어야 한다고 가정. t1에 P1이 리소스 A를 얻고 P2가 리소스2를 얻습니다. t2 때 P1은 리소스2를, P2는 리소스1을 기다리지만, 서로에게 할당되어 있기 때문에 무한정 기다리게 됩니다. ※ 멀티 프로그래밍 환경에서 한정된 자원을 사용하려 서로 경쟁하는 상황에 Deadlock이 발생할 수 있습니다. Deadlock 발생 .. CS 지식/운영체제 2023. 2. 20. 동기 vs 비동기, 블로킹 vs 논블로킹 동기 & 비동기 처리해야 할 작업들을 어떠한 흐름으로 처리 할 것인가에 대한 관점 호출되는 함수의 작업 완료 여부를 신경쓰는지의 여부의 차이입니다. 동기(Synchronous) 요청과 그 결과가 동시에 일어난다는 뜻. 요청과 결과가 한 자리에서 동시에 일어납니다.(시간이 오래 걸리면 대기해야 합니다) A노드와 B노드 사이의 작업 처리 단위( transaction ) 을 동시에 맞추겠다는 뜻. 함수A가 함수B를 호출한 뒤, 함수B의 리턴 값을 계속 확인하면서 신경씁니다. 동기 방식의 예 출처 : https://dev-coco.tistory.com/46 A의 계좌에서 10,000원을 뺄 생각을 하고 있습니다. A의 계좌가 B의 계좌에 10,000원을 송금합니다. B의 계좌는 10,000원을 받았다는 걸 인지.. CS 지식/운영체제 2023. 2. 20. 프로세스(Process) vs 스레드(Thread) 프로세스 vs 스레드 프로세스란? 운영체제로부터 자원을 할당받는 작업의 단위입니다. 어플리케이션 하나가 프로세스입니다. 참조 : https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html 프로세스의 특징 프로세스는 독립된 메모리 영역을 할당받습니다. 다른 프로세스의 자원에 접근하려면 프로세스 간의 통신을 사용해야 합니다. ( ex) 파이프, 파일, 소켓 이용한 통신(IPC)) 스레드란? 할당 받은 자원을 이용하는 실행의 단위이고, 프로세스 내에 여러 개 생길 수 있습니다. 참조 : https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html 스레드의 특징 프로세스에서 Stack만 따로 할당받고, Co.. CS 지식/운영체제 2023. 2. 16. 메모리의 구조 메모리의 구조 프로그램 실행 순서 프로그램 실행 요청이 들어옵니다. ( 사용자 -> OS ) 프로그램의 정보를 읽어 메모리에 로드합니다. (OS -> 보조기억장치(HDD)) 프로그램 코드(Program Code)를 가져다 메모리를 관리하고 명령문을 실행합니다. (CPU -> 주기억장치(RAM)) 동적 메모리가 할당되면 Free Store 영역을 사용합니다. (Heap 사용) 스택 메모리가 할당되면 Free Store 영역을 사용합니다. (Stack 사용) 출처 : https://jinshine.github.io/2018/05/17/%EC%BB%B4%ED%93%A8%ED%84%B0%20%EA%B8%B0%EC%B4%88/%EB%A9%94%EB%AA%A8%EB%A6%AC%EA%B5%AC%EC%A1%B0/ 프로.. CS 지식/운영체제 2023. 2. 16. 컨텍스트 스위칭(Context Switching) 컨텍스트 스위칭 컨텍스트 스위칭이란? 출처 : https://www.crocus.co.kr/1364 위 그림은 컨텍스트 스위칭을 프로세스 P0와 프로세스 P1을 예시로 설명해줍니다. P0를 실행(execute) 하던 중 인터럽트(interrupt)나 시스템 콜(system call)이 일어나게 됩니다. 운영체제에서 P0에 대한 상태를 PCB0에 저장합니다. P1를 이용하기 위해 PCB1에서 P1에 대한 상태를 불러옵니다. 그동안 P0는 대기(idle) 상태입니다. 마찬가지로 P1을 실행하던 중 인터럽트나 시스템 콜이 일어나면 1~4 단계를 반복 해줍니다. 이렇게 프로세스나 스레드가 실행과 대기를 반복하는 것이 컨텍스트 스위칭 입니다. 이를 통해 멀티 프로세싱이나 멀티 스레딩 기능을 동작하게 합니다. 컨텍.. CS 지식/운영체제 2023. 2. 13. MVC vs MVVM MVC vs MVVM 아키텍처 패턴이란? 소프트웨어 시스템의 기본 구조와 그러한 구조 및 시스템을 만드는 분야 각 구조는 소프트웨어 요소, 이들 간의 관계, 요소와 관계의 속성으로 구성 시스템 및 개발 프롲게트의 청사진 역할을 하며 설계 팀이 실행하는 데 필요한 작업을 제시함 MVC 패턴 MVC 패턴은 Model + View + Controller를 합친 용어입니다. Model : 어플리케이션에서 사용되는 데이터와 그 데이터를 처리하는 부분입니다. View : 사용자에게 보여지는 UI 부분입니다. Controller : 사용자의 입력을 받고 처리하는 부분입니다. 순서 사용자들의 입력이 Controller에 들어오게 됩니다. Controller는 사용자의 입력을 확인하고, Model을 업데이트 합니다. C.. CS 지식/개발 상식 2023. 2. 9. 함수형 프로그래밍(Functional Programming) 함수형 프로그래밍 함수형 프로그래밍은 자료 처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임의 하나입니다. 함수형 프로그래밍 언어의 종류에는 대표적으로 Scala(스칼라), Haskell(하스켈), Clojure(클로저) 등이 있습니다. Javascript, Java, Python, Kotlin 등에서도 함수형 프로그래밍 문법을 사용할 수 있습니다. 선언형 프로그래밍 패러다임을 따르고 있습니다. 선언형 프로그래밍은 WHAT(무엇을 할 지) 을 중요시 하고, 명령형 프로그래밍은 HOW(어떻게 할 지) 를 중요시 합니다. 함수형 프로그래밍 장단점 장점 순수 함수를 이용하기 때문에 함수에서 함수로 전달되는 상태만 있을 뿐, 전역 상태 자체가 존재하지 않습니다. -> 외부.. CS 지식/개발 상식 2023. 2. 6. Git 과 Github GIT 과 GITHUB "GIT 과 GITHUB는 커피와 카페 같은 관계이다" -노마드 코더- GIT 이란? 컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템이다. 소프트웨어 개발에서 소스 코드 관리에 주로 사용되지만 어떠한 집합의 파일의 변경사항을 지속적으로 추적하기 위해 사용될 수 있다. GIT의 특징 Git 홈페이지 에서 Git의 특징을 다음과 같이 6가지로 정의한다. Branching and Merging 사용자는 메인 코드에서 가지를 생성하여 독립성을 유지한 채로 개발을 진행할 수 있다. 이는 다양한 코드를 개발 또는 테스트 해 볼 수 있는 환경을 제공해준다. Small and Fast Git은 대부분 로컬에서 진행되는 만큼 매.. CS 지식/개발 상식 2023. 2. 2. 이전 1 2 3 다음 💲 추천 글