Computer Science 9

브라우저 개념 및 랜더링 원리

브라우저란 ? 쉽게 말해, 인터넷에서 웹 서버의 모든 정보를 볼 수 있도록 하고 문서 검색을 도와주는 응용 프로그램이다. 브라우저의 종류로는 Google Chrome, Apple Safari, Nava Whale, Microsoft Edge 등이 있다. 사용자가 특정 웹사이트를 접근한다고 가정할 때 다음과 같은 과정을 거칠 수 있다. 사용자가 브라우저를 실행 접속하고 싶은 사이트의 url를 주소창에 입력 브라우저는 입력된 url의 서버에게 사이트 정보를 받아와 이를 화면에 표시 표현된 정보를 사용자가 활용 즉, 사용자가 보고자 하는 페이지를 서버에 요청하고 서버로부터 받은 응답(HTML, CSS, Javascript 등)을 브라우저에 표시하는 것이다. 브라우저의 랜더링 원리 브라우저가 화면에 나타나는 요..

AJAX(Asynchronous Javascript And XML)란 ?

AJAX란? 브라우저가 가지고 있는 XMLHttpRequest 객체를 이용해서 전체 페이지를 새로 로드하지 않고 필요한 일부 페이지의 데이터만을 로드하는 기법 자바스크립트를 사용하여 웹 서버와 클라이언트 간 비동기적으로 XML 데이터를 교환하고 조작하기 위한 웹 기술 하이퍼텍스트 표기 언어(HTML)만으로는 어려운 다양한 작업을 웹 페이지에서 구현해서 이용자가 웹 페이지와 자유롭게 상호 작용할 수 있도록 구현하는 기법 비동기란 ? 특정 코드가 끝날때 까지 코드의 실행을 멈추지 않고 다음 코드를 먼저 실행하는 것을 의미 AJAX의 동작 원리 클라이언트에서 서버로 데이터 요청, 그에 대한 결과를 반환받음 = 서버와 클라이언트의 통신 사용자에 의한 요청 이벤트 발생 요청 이벤트가 발생하면 이벤트 핸들러에 의해..

HTTP와 HTTPS의 개념과 차이

HTTP란? HTTP(Hyper Text Transfer Protocol): 서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜 인터넷에서 하이퍼텍스트를 교환하기 위한 통신 규약이며 브라우저로 데이터를 전송해주는 용도로 많이 사용 기본 포트인 80번 포트에서 서비스 대기 중이며, 클라이언트가 TCP 80 포트를 사용해 연결하면 서버는 요청에 응답함 HTTP는 정보를 "텍스트"로 주고 받음. 따라서 전송 신호를 인터셉트하는 경우 데이터 유출이 발생할 수 있음. 프로토콜이란 ? : 컴퓨터 내부에서 또는 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙 체계를 의미한다. HTTP의 구조 HTTP는 애플리케이션 레벨의 프로토콜로 TCP/IP 위에서 작동함 HTTP는 상태를 가지고 있지 않는 Stat..

MVC 패턴이란? (Modal-View-Controller)

MVC 패턴이란? MVC란 Modal-View-Controller의 약자로, 애플리케이션을 세 가지 역할로 구분한 개발 방법론이다. 이 패턴을 성공적으로 사용하면, 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있게 된다. Modal - 애플리케이션의 정보(데이터) View - 텍스트, 체크박스, 항목 등과 같은 사용자 인터페이스 요소 Controller - 데이터와 비즈니스 로직 사이의 상호동작을 관리 MVC 구조에서의 입력은 모두 Controller에서 발생하게 되며, 관리되게 되는 구조이다. 이벤트가 발생하면 Control에 의해 각 모듈의 정의와 View의 사용 용도가 달..

디자인 패턴이란? (Design Pattern)

디자인 패턴이란? 디자인 패턴은 건축학 및 컴퓨터 과학에서 사용되는 용어로, 설계 문제에 대한 해답을 문서화하기 위해 고안된 형식 방법이다. 컴퓨터 과학에서의 디자인 패턴이란 "프로그램 개발에서 자주 나타나는 과제를 해결하기 위한 방법 중 하나" 과거의 소프트웨어 개발 과정에서 발견된 설계의 노하우를 축적하여 이름을 붙여, 이후에 재사용하기 좋은 형태로 특정의 규약을 묶어서 정리한 것이다. 즉, 개발자들끼리 협업을 잘 할 수 있도록 코드들의 패턴을 정해 코드의 질, 효율성을 높히는 것을 뜻한다. => 효율적인 코드를 만들기 위한 방법론 디자인 패턴의 장단점 장점 개발자 간의 원활한 의사소통 소프트웨어 구조 파악 용이 재사용을 통한 개발 시간 단축 설계 변경 요청에 대한 유연한 대처 불필요한 리소스 낭비 ..

[Git] GitHub 프로젝트 업로드 방법

GitHub란? GitHub에 프로젝트를 올리기 전, Git에 대해 설명해보도록 하겠다. Git이란? Git은 형상 관리 도구 중 하나로, 컴퓨터 파일의 변경 사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산버전 관리 시스템이다. 소프트웨어를 개발하는 기업의 핵심 자산인 소스코드를 효과적으로 관리할 수 있게 해주는 무료 공개 소프트웨어이다. 개발자들 간에 공동 개발, 혹은 지식 공유의 목적으로 Git을 많이 사용하기 때문에 해당 프로젝트를 잘 아는 것이 중요하다. GitHub에 프로젝트 올리기 1. 자신의 Github 사이트에서 레포리토리를 생성한다. 좌측 상단의 + 버튼을 누른 후, "New repository" 클릭 → Repository 이름 입력 → Create r..

전송 계층 프로토콜 : Selective repeat

Selective repeat이란? Selective repeat는 한국말로 번역하면 선택적 반복이라고 한다. Go-Back-N과 달리 말 그대로 손실되거나 timeout이 발생한 패킷만 재전송한다. 따라서 불필요하게 재전송하는 경우를 피할 수 있다. sender는 올바르게 수신된 모든 패킷을 개별적으로 인식하고 필요에 따라 버퍼 패킷을 제공하여 상위 계층에 전달한다. 또한, 중간에 loss된 패킷이 발생하여 잘못된 순서의 패킷을 받았더라도 버퍼에 이를 저장해 둔 후, loss된 패킷만 다시 재전송하도록 하였다. timer는 손실된 패킷을 보호하기 위해 다시 사용하지만 오직 한 패킷만이 time out에 전송되기 때문에 각 패킷은 자신만의 논리 타이머를 가져야 한다. sender에서 보낸 패킷에 대한 a..

전송 계층 프로토콜 : Go-Back-N

Go-Back-N이란? sender는 stop- and- wait처럼 확인 응답을 기다리지 않고 여러 패킷을 전송할 수 있다. 대신, 파이프라인 즉 window size에서 확인 응답이 되지 않은 패킷의 최대 허용 수는 window size = N보다 크지 않아야 한다. rdt_send()가 상위 계층으로부터 호출이 되면 송신자는 첫째로 윈도우가 가득 찼는지, 아직 확인 응답이 되지 않는 패킷이 있는지를 확인한다. 만약 윈도우가 가득 차 있지 않다면 패킷이 생성되고 receiver로 sequence number와 data를 보낸다. receiver가 보낸 sequence number와 data, 즉 packet가 sender에게 도착하면 잘 도착했다는 의미로 패킷 순서에 따른 ack를 보내준다. 이때, ..

rdt 3.0 (stop- and- wait)

rdt 3.0이란? rdt 3.0 이전의 채널은 중간에 사라지는 문제를 해결하지 못하기 때문에 중간에 사라지지만 끊임없이 기다려야 된다는 문제점이 있다. 따라서 이를 해결하기 위해 rdt 3.0에는 일정시간동안 응답하지 않으면 재전송 하는 기능을 추가하였다. 이때 timer를 사용한다. sender가 receiver로 데이터를 보냈을 때 timer가 실행되고 receiver로부터 ACK를 받게 되면 timer는 종료한다. sender에서 보낸 데이터가 loss 되었을 경우, receiver에서 보낸 ACK에 loss가 발생한 경우 timeout이 발생한다. 그 이유는 loss가 발생할 경우, sender는 아무 응답을 받지 못하므로 긴 지연이 발생할 수 있기 때문이다. 또한, 손실이 일어나지 않은 경우에..