컴공생의 발자취

[스파르타코딩클럽] 데일리미션 - Lv.6 웹개발 용어 정리 3 본문

🤝 활동/스파르타코딩클럽

[스파르타코딩클럽] 데일리미션 - Lv.6 웹개발 용어 정리 3

MNY 2024. 4. 4. 17:38
728x90
반응형
·✅ 중학생도 알아들을 수 있게 쉽게 정리해보세요!

 

스레드(Thread, 쓰레드)

: 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위

 

* 프로세스와 스레드의 차이점?

  • 프로세스 : 운영체제로부터 자원을 할당받은 작업의 단위
    • 프로그램은 코드 덩어리 파일, 그 프로그램을 실행하는 게 프로세스
  • 스레드 : 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위
    • 스레드는 프로세스의 코드에 정의된 절차에 따라 실행되는 특정한 수행 경로

 

멀티스레드(Multi Thread, 멀티쓰레드)

: 둘 이상의 스레드를 동시에 실행

 

* 장점

  1. Context-Switching 할 때 공유하고 있는 메모리만큼의 메모리 자원을 아낄 수 있다.
  2. 스레드는 프로세스 내의 Stack 영역을 제외한 모든 메모리를 공유하기 때문에 통신의 부담이 적어서 응답 시간이 빠르다.

 

* 단점

  1. 스레드 하나가 프로세스 내 자원을 망쳐버린다면 모든 프로세스가 종료될 수 있다.
  2. 자원을 공유하기 때문에 필연적으로 동기화 문제가 발생할 수 밖에 없다.

 

도메인(Domain)

: 인터넷에 연결된 컴퓨터를 사람이 쉽게 기억하고 입력할 수 있도록 문자(영문, 한글 등)로 만든 인터넷주소

 

DNS(Domain Name System)

: 호스트의 도메인네임(www.example.com)을 네트워크주소(192.168.1.0)로 변환하거나, 그 반대의 역할을 수행하는 시스템

 

* 동작 원리

  1. 컴퓨터에서 브라우저를 켜고 www.google.com을 입력한다.
  2. 컴퓨터는 컴퓨터 내부에 등록 되어 있는 DNS 서버로 www.google.com에 해당되는 IP 주소를 물어본다.
  3. DNS 서버는 해당 도메인의 IP 주소를 알려준다.
  4. 컴퓨터는 이를 받아서 IP 주소에 해당하는 컴퓨터에 접속하게 된다.

 

프로토콜(Protocol)

: 통신 프로토콜 또는 통신 규약은 컴퓨터나 통신 장비 사이에서 메시지를 주고 받는 양식과 규칙의 체계

 

* 기본 요소

  • 구문(Syntax) : 전송하고자 하는 데이터의 형식(Format), 부호화(Coding), 신호레벨(Signal Level) 등을 규정
  • 의미(Sematics) : 두 기기 간의 효율적이고 정확한 정보 전송을 위한 협조 사항과 오류 관리를 위한 제어 정보를 규정
  • 시간(Time) : 두 기기 간의 통신 속도, 메시지의 순서 제어 등을 규정

 

* 기능

  • 단편화 ( Fragmentation ) : 송신측에서는 긴 데이터 블록을 손쉽게 전송할 수 있도록 크기가 똑같은 작은 블록으로 나누어 전송
  • 재합성 ( Assembly ) : 수신측에서 쪼개진 작은 데이터 블록을 재합성하여 원래의 메시지로 복원하는 기능
  • 캡슐화 ( Encapsulation )
    • 각 프로토콜에 적합한 데이터 블록을 만들려고 데이터에 정보를 추가하는 것
    • 플래그, 주소, 제어 정보, 오류 검출 부호 등을 부착하는 기능
  • 연결 제어 ( Connection Control ) : 비연결 데이터 전송(데이터그램)과 연결 위주 데이터 전송(가상회선)을 위한 통신로를 개설 · 유지 · 종결하는 기능
  • 흐름 제어 ( Flow Control ) : 데이터 양이나 통신속도 등이 수신 측의 처리 능력을 초과하지 않도록 조정하는 기능
  • 오류 제어 ( Error Control ) : 데이터 전송 중 발생할 수 있는 오류나 착오 등을 검출하고 정정하는 기능
  • 순서 결정 ( Sequencing ) : 연결 위주의 데이터를 전송할 때 송신 측이 보내는 데이터 단위 순서대로 수신측에 전달하는 기능
  •  주소 설정 ( Addressing ) : 발생지, 목적지 등의 주소를 명기하여 데이터를 정확하게 전달하는 기능
  • 동기화 ( Synchronization ) : 두 통신 객체의 상태 ( 시작, 종류, 검사 등 )를 일치시키는 기능
  • 다중화 ( Multiplexing ) : 하나의 통신로를 여러 개로 나누거나 회선 여러 개를 하나의 통신로로 변환시켜 다수의 가입자가 동시에 사할 수 있도록 하는 기능
  • 전송 서비스 ( Transmission Service ) : 통신 객체를 사용하기 쉽도록 별도로 추가 서비스( 패리티 검사, 보안도, 서비스 등급, 우선순위 등)를 제공하는 기능

 

HTTP, HTTPS

* HTTP : 서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜

  • 80번 포트 사용 및 보안 없음
  • HTTP 구조 : 상태를 가지고 있지 않은 Stateless 프로토콜이며 Metho, Path, Version, Headers, Body 등으로 구성

 

* HTTPS : HTTP에 데이터 암호화가 추가된 프로토콜

  • 443번 포트 사용 및 암호화 지원
  • HTTPS 동작 과정
    1. 클라이언트 ( 브라우저 )가 서버로 최초 연결 시도
    2. 서버는 공개키 ( 인증서 )를 브라우저에게 넘겨줌
    3. 브라우저는 인증서의 유효성을 검사하고 세션키를 발급함
    4. 브라우저는 세션키를 보관하며 추가로 서버의 공개키로 세션키를 암호화하여 서버로 전송함
    5. 서버는 개인터로 암호화된 세션키를 복호화하여 세션키를 얻음
    6. 클라이언트와 서버는 동일한 세션키를 공유하므로 데이터를 전달할 때 세션키로 암호화/복호화를 진행함

 

동기 방식(Sync.) vs. 비동기 방식(Async.)

* 동기 방식 ( Synchronous ) : 서버에서 요청을 보냈을 때 응답이 돌아와야 다음 동작 수행 가능
즉, A 작업이 모두 진행 될 때까지 B 작업은 대기해야 한다.

  • 장점 : 설계가 매우 간단하고 직관적
  • 단점 : 결과가 주어질 때까지 아무것도 못하고 대기해야 함

 

* 비동기 방식 ( Asynchronous ) : 요청을 보냈을 때 응답 상태와 상관없이 다음 동작 수행 가능
즉, A 작업이 시작하면 동시에 B 작업이 실행된다. A 작업은 결과값이 나오는 대로 출력된다.

  • 장점 : 결과가 주어지는데 시간이 걸리더라도 그 시간 동안 작업을 할 수 있으므로 자원을 효율적으로 사용
  • 단점 : 동기보다 복잡

 

AJAX(Async JavaScript and XML)

: 자바스크립트를 이용해 서버와 브라우저가 비동기 방식으로 데이터를 교환할 수 있는 통신기능

클라이언트와 서버 간에 XML 데이터를 주고 받는 기술

 

* 장점 

  • 웹페이지 속도 향상
  • 서버의 처리가 완료될 때까지 기다리지 않고 처리 가능
  • 기존 웹에서 불가능했던 UI를 가능하게 해줌

 

* 단점

  • 페이지 이동이 없는 통신으로 보안상의 문제가 있을 수 있음
  • 연속으로 데이터 요청시 서버 부하가 증가
  • 히스토리 관리가 안된다
  • Script로 작성되서 디버깅이 용이하지 않음
728x90
반응형