network

[네트워크] HTTP 주요 메서드 - GET, POST, PUT, PATCH, DELETE
HTTP 메서드 HTTP 메서드란 클라이언트와 서버 사이에 이루어지는 요청(Request)과 응답(Response) 데이터를 전송하는 방식이다. HTTP 메서드의 종류는 총 9가지인데, 이중 주로 사용하는 메소드 5가지와 기타 메서드 4가지로 구분된다. 주요 메서드 GET: 리소스 조회 POST: 요청 데이터 처리, 주로 등록에 사용 PUT: 리소스를 대체하며 해당 리소스가 없으면 생성 PATCH: 리소스 부분 변경 DELETE: 리소스 삭제 기타 메서드 HEAD: GET과 동일하지만 메시지(body) 부분을 제외하고 상태 줄과 헤더만 반환 OPTIONS: 대상 리소스에 대한 통신 가능 옵션을 설명 (주로 CORS에서 사용) CONNECT: 대상 자원으로 식별되는 서버에 대한 터널을 설정 TRACE: 대..

[네트워크] DNS(도메인 네임 시스템) 구성요소, 동작방식
DNS(Domain Name System) 도메인 이름을 실제 IP 주소로 변환하여 연결해주는 시스템 사용자로 하여금 도메인 이름을 통해 실제 네트워크 상에서 사용하는 IP로 접속할 수 있도록 함 DNS는 상위 기관과 하위 기관과 같은 계층 구조를 가지는 분산 데이터베이스 구조 상위 기관에서 인증된 기관에게 도메인 생성 및 IP 주소로 변경할 수 있는 권한 부여 3가지 구성 요소 도메인 네임 스페이스(Domain Name Space) DNS가 저장/관리하는 계층적 구조 최상위에 루트 DNS 서버가 존재하고 그 하위로 연결된 모든 노드가 연속해서 이어진 계층 구조로 이루어짐 네임 서버(Name Server, =DNS서버): 권한 있는 DNS 서버 문자로 이루어진 도메인 이름을 실제 네트워크 통신 시 사용되..

[네트워크] SOP(Same Origin Policy)와 CORS(Cross-Origin Resource Sharing), CORS 오류 해결 방법
SOP(Same Origin Policy) 같은 출처의 HTTP 요청만을 허락하는 정책 자원을 요청한 출처와 해당 요청에 응답하는 서버의 출처가 다를 경우 해당 자원을 사용하지 못하도록 제한 -> CORS 정책을 지켰을 시에만 예외적으로 허용 SOP 정책이 없을 시 노출된 소스코드를 통해 CSRF(Cross-Site Request Forgery)나 XSS(Cross-Site Scripting)와 같은 방법으로 공격자의 사용자 정보 탈취 위험이 있음 ※ 출처(Origin)란? 위와 같은 URL 구조에서 Protocol + Host + Port에 해당하는 부분을 뜻한다. 브라우저는 Protocol, Host, Port가 모두 같다면 같은 출처, 셋 중 하나라도 다르다면 다른 출처라고 판단한다. CORS(Cr..

[네트워크] 토큰 기반 인증(+JWT), 서버(세션)기반 인증
토큰(Token) 기반 인증 클라이언트가 서버에 접속 시 서버에서 해당 클라이언트에게 인증의 의미로 '토큰'을 부여 -> 인증(Authentication) 클라이언트는 또 다시 서버에 요청을 보낼 때 발급받은 토큰을 요청 헤더에 심어 전송 서버는 헤더 내 토큰을 열어 자신이 제공한 토큰이 맞는지 확인하여 인증 과정 처리 -> 인가(Authorization) 💡용어 정리 - 인증(Authentication): 자신이 누구인지 증명하고 검증하는 과정 (로그인) - 인가(Authorization): 인증 작업 이후에 인증된 사용자에 대한 자원 접근 확인 및 허가 절차 (권한 확인) 장점 토큰 정보를 클라이언트 측에서 저장하기 때문에 stateless(무상태)하며, 서버 확장에 용이 (서버 부담 X) 토큰은 한..

[네트워크] SSL/TLS 핸드쉐이크 - TLS 1.3
SSL과 TLS TLS(Transport Layer Security)는 SSL(Secure Socket Layer)의 상위 버전 표현이라고 할 수 있다. SSL은 SSL 1.0부터 시작해 SSL 2.0, SSL 3.0, TLS 1.0, TLS 1.3까지 버전 업데이트가 되면서 SSL의 명칭이 TLS로 변경된 것이다. 이 포스트에서는 TLS 3.0을 기반으로 설명하며 명칭은 TLS로 통일한다. TLS는 전송계층에서 보안을 제공하는 프로토콜이다. HTTPS 통신 시 주로 사용되며, 클라이언트와 서버가 통신할 때 TLS를 통해 제3자가 메시지를 도청하거나 위조, 변조하지 못하도록 한다. TLS는 다음과 같은 기능 및 역할을 가진다. 암호화: 제3자와 주고받는 데이터를 숨김 인증: 통신의 대상이 신뢰할 수 있는..

[네트워크] HTTP/1.X, HTTP2, HTTP3 버전 차이, 특징
※ HTTP 개요: https://zu-techlog.tistory.com/60 [네트워크] HTTP와 HTTPS 프로토콜 HTTP (Hyper Text Transfer Protocol) 웹 상에서 클라이언트와 서버 간에 요청(request)과 응답(response)으로 정보를 주고 받을 수 있는 프로토콜 TCP와 UDP 사용, 80번 포트 사용 비연결(Connectionless) 클라이언트가 zu-techlog.tistory.com HTTP 버전 - HTTP/1.X, HTTP2, HTTP3 HTTP/1.0 한 연결당 하나의 요청을 처리하도록 설계 서버에게 요청 시 매번 연결과 해제의 과정을 반복해야 했기에 RTT가 오래걸린다는 문제 RTT: 패킷이 목적지에 도달하고 나서 다시 출발지로 돌아오기까지 걸리..

[네트워크] TCP/IP 흐름제어와 혼잡제어
흐름제어 송신측과 수신측의 데이터 처리 속도 차이를 해결하기 위한 기법 송신측의 전송량이 수신측의 처리량보다 클 경우 수신측의 큐가 용량을 넘어 전송된 패킷의 손실이 일어날 수 있기 때문에 송신측의 패킷 전송량을 제어함 수신측이 송신측에게 현재 자신의 상태를 피드백하는 형태 1. Stop and Wait 매번 전송한 패킷에 대해 확인 응답(ACK)을 받아야만 그 다음 패킷을 전송 구조 상 비효율적 2. Sliding Window 수신측에서 설정한 윈도우 크기만큼 송신측에서 확인 응답 없이 패킷을 전송할 수 있게하여 데이터 흐름을 동적으로 조절 송신측은 먼저 윈도우에 포함되는 모든 패킷을 전송하고, 수신측으로부터 확인 응답(ACK)가 오면 윈도우를 옆으로 옮겨가며 다음 패킷들을 전송 동작 방식 송신측에서 ..

[네트워크] HTTP 상태/응답 코드 정리
HTTP Status Code HTTP 상태 코드는 클라이언트가 보낸 요청(request)이 성공적으로 처리되었는지 그 상태를 응답(response)을 통해 알려주기 위해 활용된다. 이러한 응답은 5개의 그룹으로 나뉘어지며, 상태 코드를 표시하는 3자리 수 중 가장 앞자리 수가 바로 응답의 종류를 의미한다. 상태 그룹 역할 1XX Informational Response 조건부 응답 현재 요청까지 처리했다는 전송 프로토콜 수준의 임시적 응답 2XX Success 성공 클라이언트의 요청이 성공적으로 처리 3XX Redirection 경로 재지정 요청 처리를 완료하기 위해 클라이언트의 추가적인 조취 필요 4XX Client Error 클라이언트 오류 요청 내용이 잘못되는 등 클라이언트로 인한 오류 발생 5X..