Computer Science/Computer Network
[Data Communication] 물리 계층에서의 데이터 전송
[Data Communication] 물리 계층에서의 데이터 전송
2025.04.02디지털 통신은 컴퓨터가 이해할 수 있는 비트를 주고받는 일인데.. 소리나 영상 같은 아날로그 데이터를 전송하려면 데이터를 비트로 변환해야 한다. 이 과정에서 물리 계층이 개입되고, 이 계층은 전기 신호 / 소리 / 빛 등 아날로그 신호를 비트로 표현하는 역할을 수행한다. PCM (Pulse Code Modulation)아날로그 소리를 디지털로 변환하는 디지털 오디오의 표준으로, 샘플링 / 양자화 / 인코딩을 수행한다.소리는 시간에 따라 연속적으로 변하니 연속 신호라고 할 수 있는데, ADC는 소리를 디지털로 변환하는 장치이며, PCM은 그 장치 중 하나라고 생각하면 된다. 샘플링 - 아날로그 신호를 일정 간격으로 끊어서 값을 측정. (1초에 8000번 측정 = 8kHz)양자화 - 샘플링으로 얻은 아날로..
[Data Communication] Layer Packet Signal
[Data Communication] Layer Packet Signal
2025.04.01브라우저를 통해 https://www.naver.com/ 으로 접속할 때 무슨 일이 발생할까? 먼저 운영체제가 로컬 DNS 캐시를 확인하고 히트된 경우 해당 IP주소를 바로 사용한다.히트되지 않은 경우 DNS 서버에 질의를 보내는데, 이 때 무선 랜카드와 무선 공유기를 사용한다. (유선의 경우 이더넷 케이블) 무선 공유기(AP)는 와이파이 신호를 받아 이더넷 패킷으로 변환하고 인터넷 라우터로 전달한다.공유기는 NAT로 내부 IP를 공인 IP로 변환해준다.집 인터넷 라우터는 공유기로부터 받은 요청을 ISP 네트워크로 전달한다. 요청 데이터는 광케이블을 통해 ISP 네트워크로 전송되고, ISP 네트워크에서 라우터가 패킷을 분석하고 인터넷으로 보내는데, 이 때 스위치는 패킷을 빠르게 전송하기 위해 적절..
[Nginx] nginx.conf
[Nginx] nginx.conf
2023.12.28user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; keepalive_timeout 65; gzip on; server { listen 80; server_name 127.0.0.1; client_max_body_size 2M; location / { root /usr/share/nginx/html; i..
[Nginx] Timeout
[Nginx] Timeout
2023.12.24엔진엑스에서의 타임아웃 설정은 크게 클라이언트 / 백엔드 두 가지로 나뉜다. 클라이언트 타임아웃 client_header_timeout 클라이언트가 HTTP 헤더를 서버로 전송하는데 걸리는 최대 시간을 지정한다. 연결이 너무 오래 걸려 서버 리소스를 과도하게 사용하는 연결을 끊어 서버를 보호하고, 의도적으로 헤더를 느리게 전송하는 방식의 공격을 방어한다. 기본 값은 60초이고, nginx.conf의 client_header_timeout 10s; 로 타임아웃 시간을 설정할 수 있다. client_body_timeout HTTP 요청 본문을 서버로 전송하는데 걸리는 최대 시간을 지정한다. header_timeout과 마찬가지로 기본적으로 60초로 설정되고 설정 파일을 통해 수정할 수 있다. 파일 업로드 같..
[Network] 백엔드 아키텍처
[Network] 백엔드 아키텍처
2023.12.21Listener 네트워크를 통해 들어오는 연결 요청을 대기하고 수신하는 컴포넌트이다. 특정 IP주소와 포트에 바인딩된 소켓을 생성해 그 포트로 들어오는 네트워크 요청을 수신한다. 먼저 운영체제에서 제공하는 네트워크 API를 사용해 네트워크 소켓을 생성하고, 생성된 소켓을 특정 IP와 포트에 바인딩해 해당 소켓이 네트워크 요청을 수신할 수 있도록 한다. Acceptor Listener가 감지한 연결을 운영체제의 네트워크 API 중 accept를 사용해 수락한다. 연결이 수락되면 필요한 세션 정보를 초기화하고 클라이언트와의 통신을 준비한다. Reader 네트워크를 통해 전송된 데이터를 읽고 처리하는 컴포넌트로 데이터를 읽고 애플리케이션에서 사용할 수 있는 형태로 변환한다. 실제 네트워크 요청을 처리하는 컴포..
[Nginx] 내부 구조와 리버스 프록시
[Nginx] 내부 구조와 리버스 프록시
2023.12.21엔진엑스는 정적 리소스를 제공하는 웹 서버로도 동작할 수 있고 여러 백엔드 서버로 로드밸런싱을 수행하는 리버스 프록시, 메일 프록시로도 동작할 수 있는 다재다능한 웹 서버이다. 리액트로 프론트엔드 웹 애플리케이션을 만들고 사용자들에게 배포 할 때 엔진엑스 웹 서버를 사용할 수 있다. npm build 명령어로 애플리케이션을 번들링하고 엔진엑스를 정적 리소스를 제공하는 웹 서버로 사용하는데, 이 때 root 지시어를 사용해 번들링된 파일이 위치한 디렉토리를 지정하고 모든 서버 요청을 index.html으로 리다이렉트하도록 설정해 SPA 라우팅을 처리한다. server { listen 80; server_name myapp.com; root /app/react/build; index index.html; l..
[HTTP] HTTP 쿠키와 세션
[HTTP] HTTP 쿠키와 세션
2023.06.12서로 간의 통신을 위한 약속을 프로토콜이라고 한다. 웹에서 프로토콜은 주고 받을 데이터에 대한 형식을 정의한 것으로 생각하면 된다. 데이터를 주고받을 때, 어떤 형식으로 주고받을지 미리 협의 해 놔야 통신이 가능하다. HTTP (Hyper Text Transfer Protocol) 도 프로토콜의 종류 중 하나다. 1. Stateless HTTP는 상태를 유지하지 않는다. 따라서 같은 클라이언트가 같은 요청을 서버에게 2번 보내도 서버는 같은 클라이언트로부터 도착한 요청임을 알 수 없다. 따라서 쿠키와 세션을 사용해 사용자를 구분한다. 쿠키는 클라이언트의 브라우저에서 관리되는 작은 데이터 파일이다. 서버는 HTTP 응답 메세지를 보낼 때 헤더에 Set-Cookie 필드를 생성해 쿠키를 설정한다. 클라이언트..
[HTTP] 헤더 / 쿠키와 캐시
[HTTP] 헤더 / 쿠키와 캐시
2022.08.13헤더에는 HTTP 전송에 필요한 모든 부가정보가 들어가 있다. (메세지 바디 내용, 크기, 인증, 요청 클라이언트, 서버 정보..) 표준 헤더는 수없이 많고, 임의로 헤더를 추가할 수도 있다. 헤더는 크게 4가지로 분류할 수 있다. (실제로는 더 복잡함) 1. General 헤더 : 메세지 전체에 적용되는 정보 2. Request 헤더 : 요청 정보 3. Response 헤더 : 응답 정보 4. Representation 헤더 : 과거 엔티티 헤더에서 이름이 바뀜. 메세지 바디를 통해 표현 데이터 전달 Representation 헤더 Content-Type : 표현 데이터의 형식을 알려준다. (html, xml, json 등등.. 메세지 바디에 들어가는 내용) Content-Encoding : 표현 데이..
[HTTP] 상태코드
[HTTP] 상태코드
2022.08.12클라이언트가 보낸 요청에 대한 처리 상태를 응답 메시지에서 상태코드를 통해 알려준다. 100번대 (Informational) : 요청이 수신되고 처리중 200번대 (Successful) : 요청 정상 처리 300번대 (Redirection) : 요청이 완료되려면 추가 행동이 필요 400번대 (Client Error) : 클라이언트 오류 500번대 (Server Error) : 서버 오류 200번대 200 OK : 요청 성공을 의미함 201 Created : 요청에 성공하고 새로운 리소스가 반환됨 (POST 메서드를 사용한 경우 URI도 함께 반환) 202 Accepted : 요청이 접수됐지만 처리되진 않음 204 : No Content : 요청을 성공적으로 수행했지만 본문에 보낼 데이터가 없음. (임시저..
[HTTP] HTTP 메서드와 활용
[HTTP] HTTP 메서드와 활용
2022.08.12웹에서 HTTP를 통해 통신하는 경우를 생각해보자. 클라이언트는 주소 창에 URI를 입력해 서버에게 요청한다. 이 때 API URI는 어떻게 설계됐을까? (https://aws.amazon.com/ko/what-is/api/ API에 대한 설명은 이쪽을 참고하자.) URI는 리소스 식별에 집중해야 한다. 여기서 리소스는 웹 사이트의 회원이 있다면 그 회원 자체를 의미한다. 회원을 등록하는 작업이 있다면 회원 / 등록 으로 구분해서 생각해야 한다. 즉, 왼쪽 예시보다 오른쪽 예시가 더 괜찮게 설계됐다고 할 수 있다. 이렇게 되면 URI가 중복될 수 있는데, 이럴 때 HTTP 메서드를 사용한다. GET 리소스를 조회할 때 주로 사용한다. 서버에 전달하는 데이터는 쿼리를 통해 전달한다. GET 메서드를 통해 ..
[HTTP] URL / HTTP 기본
[HTTP] URL / HTTP 기본
2022.08.12URI : Uniform Resource Identifier URL : Uniform Resource Locator URN : Uniform Resource Name URL은 위치를, URN은 이름을 나타낸다. URL과 URI는 보통 같이 쓰이고 주소창에 URL URI를 입력해 웹페이지를 이동한다. https://hanamon.kr/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EA%B8%B0%EB%B3%B8-url-uri-urn-%EC%B0%A8%EC%9D%B4%EC%A0%90/ [네트워크/기본] URI, URL 및 URN의 차이점 - 하나몬 수정 보완 중에 있습니다… 🙏 그래도 의견 있으시면 주세요. ⚡️ URI과 그 하위 개념 URL, URN 개념 이해하기 ❗️URI 이란? U..
[HTTP] 클라이언트와 서버 간의 통신 (TCP, UDP, IP, DNS)
[HTTP] 클라이언트와 서버 간의 통신 (TCP, UDP, IP, DNS)
2022.08.10클라이언트와 서버가 복잡한 인터넷 망을 통해 통신할 때 IP(Internet Protocol)가 필요하다. IP는 패킷이라는 통신 단위로 지정한 IP주소로 데이터를 전달할 수 있도록 정해놓은 규칙이다. 내 IP와 목적지의 IP를 전송할 데이터를 묶어 위와 같이 IP 패킷을 만든다. 만들어진 패킷을 인터넷 망에 던져놓으면, 노드들끼리 패킷의 목적지와 연관된 노드를 찾는 작업을 반복하며 패킷을 전송한다. (여기서 노드는 출발지와 목적지를 중계하는 서버인 라우터 정도로 생각하자.) 패킷이 목적지에 도착하면 다시 패킷을 만들어 잘 받았다고 말해준다. IP는 컴퓨터와 컴퓨터간의 통신을 명확히 구현했지만, 몇 가지 문제점이 있다. 나는 패킷을 보내는데 상대방의 컴퓨터는 꺼져있어 받을 수 없다면? 패킷이 가는 중 어..