본문 바로가기

네트워크

(8)
SSL SSL L7의 암호화 프로토콜 암호화 해시화 디지털 인증서 를 사용한다. 암호화 공통키 암호화 방식과 공개키 암호화 방식을 혼합해서 사용한다. 서버는 공개키와 비밀키를 만든다. 서버는 공개키를 배포하고 비밀키는 보관한다. 브라우저는 공통키의 재료를 공개키로 암호화해서 서버로 보낸다. 서버는 공통키의 재료를 복호화한다. 서버와 브라우저는 공통키의 재료로부터 공통키를 생성한다. 이후 브라우저는 데이터를 공통키로 암호화해서 서버로 전송한다. 해시화 송신자는 데이터와 데이터의 해시값을 전송한다. 수신자는 데이터로부터 해시값을 계산하고, 송신자가 보낸 해시값과 자신이 만든 해시값을 비교한다. 다르다면 변조되었다고 판단한다. SSL에서는 단방향 해시 함수가 아닌 MAC(Message Authentiction Cod..
4 way handshake 4-Way Handshake TCP 연결 종료 과정 클라이언트, 서버 어느쪽에서든 먼저 시작할 수 있다. FIN 패킷: 클라이언트는 서버에게 데이터 전송을 완료했음을 알리는 FIN(Finish) 패킷을 보낸다. "나는 더 이상 보낼 데이터가 없으므로 연결을 종료하려고 합니다"라는 의미이다. ACK 패킷: 서버는 클라이언트에게서 FIN 패킷을 받으면 ACK(Acknowledge) 패킷을 클라이언트에게 보내, FIN 패킷을 받았음을 확인한다. 서버는 여전히 데이터를 클라이언트에게 보낼 수 있다. FIN 패킷: 서버가 모든 데이터를 클라이언트에게 전송한 후에는, 자신의 FIN 패킷을 클라이언트에게 보낸다. ACK 패킷: 클라이언트는 서버에게서 받은 FIN 패킷에 대해 ACK 패킷을 보내, 서버의 FIN 패킷을..
DNS Lookup DNS Lookup 호스트 네임을 IP주소로 변환하는 과정 1.Local Cache Check 브라우저, OS에 캐시가 있다. 2.Recursive Query 로컬 캐시에 IP주소가 없다면, 사용자의 컴퓨터는 설정된 DNS 서버 (주로 ISP)에게 쿼리를 보낸다. DNS 서버는 쿼리를 받고 캐시에서 도메인 IP 주소를 찾는다. 3.Root DNS Server 2의 DNS 서버에 IP주소가 없다면, Root DNS 서버에 쿼리를 보낸다. Root DNS 서버는 전 세계에 13개가 있으며, 이 서버들은 TLD(Top-Level Domain, .com, .net, .org) 서버의 위치를 알고 있다. 4.TLD DNS Server Root DNS 서버는 쿼리를 받아서 TLD 서버의 주소를 DNS 서버에 반환한..
AWS VPC, Region과 Zone VPC 논리적으로 격리된 가상 네트워크 ‘네트워크’ 와 유사한 개념 Subnet VPC의 IP 주소 범위이다. 하나의 서브넷은 하나의 Availability Zone에만 있을 수 있다. VPC와 Subnet의 IP주소 할당 AWS에서는 VPC (Virtual Private Cloud)와 Subnet을 설정할 때 CIDR 표기법을 사용하여 IP 주소 범위를 지정한다. VPC를 생성할 때, 전체 CIDR 블록을 정의한다. 10.0.0.0/16 이라는 CIDR 블록을 VPC에 할당한다. 이 VPC는 65,536개(2^16)의 IP 주소를 가질 수 있다. VPC 내에서 Subnet을 생성할 때, 각 Subnet에 대한 CIDR 블록을 정의한다. 각 Subnet의 CIDR 블록은 VPC의 CIDR 블록 내에 있다..
Restful API 등장 배경 2000년에 Roy Fielding의 박사 학위 논문에서 처음 제안되었습니다. 그는 이 논문에서 웹을 운영하는 기본 원칙을 명시하고, 이를 REST (Representational State Transfer)라고 명명했습니다. 이 원칙들은 HTTP와 같은 기존 프로토콜을 사용하여 웹 서비스를 설계하는 방법을 제시하였습니다. 그 후 웹의 발전과 함께 RESTful API는 점점 더 인기를 얻기 시작했습니다. 이는 RESTful API가 웹의 자원을 효과적으로 사용하며, 간단하고 직관적인 인터페이스를 제공하기 때문입니다. 또한, RESTful API는 상태를 저장하지 않는 설계로 인해 확장성이 뛰어나, 대규모 시스템에서도 효과적으로 동작합니다. 따라서 RESTful API는 2000년대 초반부터 ..
SSH SSH Secure Shell 네트워크의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 하는 보안 프로토콜입니다. SSH는 암호화된 연결을 사용하여 데이터를 전송하므로 전송 중인 데이터가 액세스되거나 가로채지 않도록 보호합니다. SSH는 OSI 7계층 모델에서 애플리케이션 계층에 있습니다. SSH는 공개 키 암호화를 사용합니다 비공개 키로 암호화된 데이터는 공개 키로만 복호화할 수 있고, 반대로 공개 키로 암호화된 데이터는 비공개 키로만 복호화할 수 있습니다. SSH 연결 과정 클라이언트가 서버에 처음 연결을 요청할 때마다 발생합니다. 즉, 새로운 SSH 세션을 시작할 때마다 이런 인증 과정이 이루어집니다. 세션 생성: 클라이언트가 서버에 연결을 요청..
OAuth 2.0 Authentication과 Authorization 둘다 리소스에 대한 액세스를 컨트롤한다. Authentication (인증) 유저의 신원을 확인한다. (로그인으로) Authorization (인가) 유저가 권한을 가지고 있는지 확인한다. 로그인 된 유저마다 가지고 있는 권한이 다를 수 있다. 예) 일반 사용자와 관리자는 접근할 수 있는 정보가 다를 수 있다. OAuth 2.0 와 OpenId Connect OAuth 2.0 OAuth 2.0은 유저가 애플리케이션과 credentials을 공유할 필요 없이 애플리케이션이 유저를 대신하여 리소스에 액세스할 수 있도록 표준화된 방법을 제공하는 Open Authorization Protocol 이다. 여기에서 애플리케이션은 OAuth 로그인을 사용하고 있는..
Session vs JWT 가장 많이 사용하는 인증의 방식으로 Session을 사용하는 방식과 JWT를 사용하는 방식이 있습니다. Session 브라우저와 서버가 연결되어, 브라우저의 종료 시점까지를 세션이라고 합니다. 브라우저가 최초로 요청을 보내면, 서버에서는 클라이언트를 식별하기 위한 Session Id를 발급해 Response와 함께 보냅니다. 이후 클라이언트는 Session Id를 포함해 요청을 보내면 서버가 해당 유저를 Session Id로 식별하는 방식입니다. JWT 구성 . 을 기준으로 구분되어 heaer, payload, signature로 구성 되어 있습니다. header: typ와 alg라는 정보가 존재하는데 typ의 값은 JWT이고 alg signature를 해싱하기위한 알고리즘입니다. { "alg": "HS..