CS

    HTTP

    HTTP/1.0 기본적으로 한 연결당 하나의 요청을 처리하도록 설계 -> 서버로부터 파일을 가져올 때마다 TCP의 3-way handshake를 계속 수행 -> RTT(패킷이 목적지에 도달하고 나서 다시 출발직로 돌아오기까지 걸리는 시간) 증가 문제 RTT 증가를 해결하기 위해 이미지 스플리팅, 코드 압축, 이미지 Base64 인코딩 사용 HTTP/1.1 매번 TCP를 연결하는 것이 아니라 한번 TCP를 초기화를 한 이후에 keep-alive라는 옵션으로 여러 개의 파일을 송수신할 수 있게 변경 (1.0에도 keep-alive가 있었지만 표준화 되어있지 않았음) TCP의 3-way handshake가 한번 발생한 다음부터 발생하지 않지만 다수의 리소스를 처리하려면 요청할 리소스 개수에 비례해서 대기 시간..

    IP 주소

    ARP(Address Resolution Protocol) IP주소로부터 MAC 주소로 변환. 논리적 주소 -> 물리적 주소 컴퓨터와 컴퓨터 간의 통신을 할 때 IP주소에서 ARP를 통해 MAC 주소를 찾아 MAC 주소를 기반을 통신합니다. RARP - 물리적 주소 -> 논리적 주소 브로드캐스트 - 송신 호스트가 전송한 데이터가 네트워크에 연결된 모든 호스트에 전송되는 방식 유니캐스트 - 고유 주소로 식별된 하나의 네트워크 목적지에 1:1로 데이터를 전송하는 방식 홉바이홉 통신 IP 주소를 통해 통신하는 과정 통신 장치에 있는 '라우팅 테이블'의 IP를 통해 시작 주소부터 시작하여 다음 IP로 계속해서 이동하는 '라우팅' 과정을 거쳐 패킷이 최종 목적지까지 도달하는 통신 라우팅 - IP주소를 찾아가는 과..

    TCP/IP 4계층 모델

    TCP/IP 4계층 애플리케이션 계층 전송계층 인터넷 계층 링크 계층 애플리케이션 계층 FTP, HTTP, SSH, SMTP, DNS 등 응용 프로그램이 사용되는 프로토콜 계층 서비스를 실질적으로 사용자에게 제공하는 계층 FTP - 장치와 장치 간의 파일을 전송하는 데 사용되는 표준 통신 프로토콜 SSH - 보안되지 않는 네트워크에서 네트워크 서비스를 안전하게 운영하기 위한 암호화 네트워크 프로토콜 HTTP - World Wide Web을 위한 데이터 통신의 기초이자 웹 사이트를 이용하는 데 쓰는 프로토콜 SMTP - 전자 메일 전송을 위한 인터넷 표준 통신 프로토콜 DNS - 도메인 이름과 IP 주소를 매핑해주는 서버 전송 계층 송신자와 수신자를 연결하는 통신 서비스를 제공하며 연결 지향 데이터 스트림..

    네트워크의 기초

    네트워크란 노드와 링크가 서로 연결되어 있거나 연결되어 있지 않은 집합체를 의미한다. 노드 - 서버, 라우터, 스위치 등 네트워크 장치를 의미 링크 - 유선 또는 무선을 의미 처리량 - 링크를 통해 전달되는 단위 시간당 데이터량 (단위 : bps, bits per second, 초당 전송 또는 수신되는 비트 수) 사용자들이 많이 접속할 때마다 커지는 트래픽, 네트워크 장치 간의 대역폭, 네트워크 중간에 발생하는 에러, 장치의 하드웨어 스펙에 영향을 받는다. 대역폭 - 주어진 시간 동안 네트워크 연결을 통해 흐를 수 있는 최대 비트수 지연시간 - 요청이 처리되는 시간, 어떤 메시지가 두 장치 사이를 왕복하는 데 걸린 시간 매체 타임(무선, 유선), 패킷 크기, 라우터의 패킷 처리 시간에 영향을 받는다. 네..

    프로그래밍 패러다임

    프로그래밍 패러다임은 프로그래머에게 프로그래밍 관점을 갖게 해주는 역할을 하는 개발 방법론이다. 예를 들어 객체 지향 프로그래밍은 프로그래머들이 프로그램을 상호 작용하는 객체들의 집합으로 볼 수 있게 하는 반면에, 함수형 프로그래밍은 상태 값을 지니지 않는 함수 값들의 연속으로 생각할 수 있게 해준다. 프로그래밍 패러다임 선언형 객체지향형 절차지향형 명령형 함수형 선언형과 함수형 프로그래밍 선연형 프로그래밍 '무엇을' 풀어내는가에 집중하는 패러다임 ("프로그램은 함수로 이루어진 것이다." 라는 명제가 담겨 있다.) 함수형 프로그래밍 작은 '순수 함수'들을 블록처럼 쌓아 로직을 구현하고 '고차 함수'를 통해 재사용성을 높인 프로그래밍 패러다임 순수 함수 - 출력이 입력에만 의존하는 것을 의미 매개 변수에만..

    디자인 패턴

    디자인 패턴이란 프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 '규약' 형태로 만들어 놓은 것을 말한다. 싱글톤 패턴 하나의 클래스에 오직 하나의 인터턴스만 가지는 패턴 데이터베이스 연결 모듈에 많이 사용 단점 TDD(Test Driven Development)를 할 때 걸림돌이 된다. TDD를 할 때 단위 테스트를 주로 하는데 단위 테스트는 서로 독립적이어야 하며 테스트를 어떤 순서로든 실행할 수 있어야 한다. 하지만 싱글톤 패턴은 미리 생성된 하나의 인스턴스를 기반으로 구현하는 패턴이므로 각 테스트마다 '독립적인' 인스턴스를 만들기가 어렵다. 사용하기 쉽고 실용적이지만 모듈 간의 결합을 강하게 만들 수 있다는 단점이 있다. -> 의존성 주입(DI..