
SNI(Server Name Indication)는 TLS(Transport Layer Security) 프로토콜의 확장 기능으로, 클라이언트가 서버에 연결할 때 어떤 호스트에 접속하려는지를 미리 서버에 알려주는 역할을 합니다. 1. 문제: 여러 도메인을 하나의 IP 주소에서 호스팅할 때하나의 서버 (12.34.56.78 서버라고 가정하겠습니다)에서 여러 도메인(예: example.com, example.org)을 동일한 IP 주소 (12.34.56.78) 로 호스팅할 수 있습니다. 이 경우, HTTP에서는 Host 헤더를 이용해 클라이언트가 어느 도메인에 접속하려고 하는지 서버에 알릴 수 있기 때문에 문제가 없었습니다. 그러나 HTTPS에서는 클라이언트와 서버가 SSL/TLS 연결을 설정할 때, 암..

UDP (User Datagram Protocol)Layer 4 protocol 입니다.stateless protocol 입니다. (TCP는 stateful protocol) UDP의 구조IPv4의 경우 UDP의 Header는 8 bytes 입니다.포트는 16bit ( 0 ~ 65535)UDP datagram header + data 구조를 가집니다.UDP datagram은 아래와 같이 아주 심플하게 생겼습니다.IP가 안보이는 이유는 Layer가 다르기 때문에 헤더에서는 Port만 취급합니다.Source Port와 Destination Port (각 4bytes), Length와 Checksum (각 4bytes) = 총 8bytes로 UDP Header 가 이루어 져 있고 나머지는 Data로 이루어 져..

TLS 1.2비대칭키 암호화(RSA 등)와의 결합비대칭키 암호화를 사용하여 대칭키를 안전하게 전송하는 방식도 자주 사용됩니다. 이 방법에서는 수신자가 공개 키를 먼저 제공하고, 송신자는 이 공개 키로 대칭키를 암호화하여 수신자에게 전송합니다. 수신자는 자신의 개인 키로 이 암호화된 대칭키를 복호화하여 비밀 키를 획득하게 됩니다. TLS 1.3디피-헬만 키 교환(Diffie-Hellman Key Exchange)디피-헬만 알고리즘은 안전하게 네트워크를 통해 대칭키를 교환할 수 있는 대표적인 방법입니다. 이 알고리즘은 수학적인 원리를 이용해, 송신자와 수신자가 공개적인 통신 채널을 통해서도 비밀 키를 안전하게 교환할 수 있도록 합니다.각자가 개인키와 공개키를 생성하고, 이들을 교환해 최종적으로 동일한 비밀 ..

Layer 4 Load balancingLayer 4 Load balancer는 TCP 연결을 양쪽에 하나씩만 유지합니다.그래서 모든 Segment들을 해당 연결로만 전달을 합니다. 1. Load balancer와 Backend 서버들간에 TCP Pool을 미리 연결해둡니다. 2. Client로부터 요청이 들어와서 TCP Connection을 합니다. 3. 연결된 양쪽의 TCP Connection을 통해서 데이터를 그대로 전달해줍니다. 예시그래서 아래와 같이 동일 Client(Connection)의 요청에서는 동일한 TCP connection들을 사용하구요. 새로운 Client가 들어오면 또 다른 Connection을 사용하여 다른 백엔드 서버와 연결될 수 있습니다. Layer 4의 장단점장점단점단순한 ..

TCP Flow Control How much the receiver can handle?TCP에서 Flow Control은 Sender가 데이터를 보낼때 처리량 이상으로 데이터를 전송하는 경우 데이터가 drop되므로 이를 방지하기 위한 방법입니다.즉, 수신자의 처리 능력에 맞춰 송신 속도를 제어하는 방법 이라고 요약 가능합니다.그래서 이를 해결하고자 Window size 같은 항목을 헤더에 두는것입니다.그래서 Sender에게 한번에 처리 가능한 양을 미리 알려주고 이 사이즈만큼 지속적으로 전송하도록 유도하는거죠. 아래의 예시에서는 window size가 3이고, 처음의 window size를 알기위한 패킷을 제외하면그 이후로는 Sender가 패킷을 3개씩 모아서 보내고있습니다. Sliding Windo..

TCP SegmentTCP segment의 헤더는 20bytes 입니다. (사이즈가 더 커질수도 있지만)줄마다 4bytes라 위의 Options를 제외한 5줄입니다. 1. 기본적으로 Source port, Destination port가 있습니다.2. 그리고 UDP와는 다르게 Connection과 순서 Control을 위한 변수인 Sequence number, Acknowledgement number가 존재합니다.3. 또한, Flow control을 위한 Window Size가 있습니다.4. 그리고 CWR,ECE,URG, ACK 등의 flag값이 1bit씩 존재합니다.CWR (Congestion window reduced)host에게 자신이 ECE flag가 set된 TCP segment를 받았다는 것을..

TCP의 특징TCP는 아래와 같은 특징을 가지고 있습니다.1. TCP: Transmission Control Protocol의 약자입니다.2. Layer 4 protocol3. Controls the transmission4. Connection5. Require handshake6. 20bytes headers Segment (can go to 60)7. Stateful TCP의 Use case1. Reliable Communication (e.g. chat 기능)2. Remote shell3. Database connections4. Web communications5. Any bidirectional communications. TCP ConnectionConnection은 Layer 5입니다. (..

최근에 아래와 같은 작업을 하다가 데스크탑에 설치한 우분투가 이상해지는 경험을 두번이나 했습니다. 특정 목적이 있어서 변경한 게 Side effect를 발생 시켜서 문제를 일으킨 것인데요. 두 가지 이슈에 대해서 공유드리려고 합니다. 이슈 1. Ubuntu의 터미널이 켜지지 않는 이슈가 있었습니다.변경 배경 및 현상최근 로컬 LLM을 데스크탑에서 구동하고 싶어서 관련 오픈소스를 찾았습니다. 해당 오픈소스의 Python3의 버전이 3.11버전 부터 지원하여 파이썬 버전을 바꾸었습니다. 그런 이후 우분투 reboot을 했더니 기본 터미널을 실행해도 켜지지 않았습니다. 원인기존에 OS 설치시에 깔린 python3 버전이 아닌 상위 버전을 설치하여 default로 설정해버리면 terminal이 켜지지 않는 문제..

주요 오픈 소스 라이센스 정리라이선스Copyleft소스코드 공개 의무상업적 사용 가능주요 특징GPL v2/v3Strong Copyleft예제한적으로 가능수정 및 배포 시 반드시 동일 라이선스로 배포해야 함. 상용 제품에서는 사용 제약이 있을 수 있음.LGPLWeak Copyleft수정된 라이브러리만 공개예라이브러리를 동적 링크로 사용 시, 상용 제품에서도 소스 공개 의무 없음.MIT없음아니오예매우 자유롭고 간단한 라이선스. 소스 코드 사용에 제한이 거의 없음.Apache 2.0없음아니오예특허권 보호 조항 포함. 수정 및 배포 시 라이선스와 특허 조항 유지 필요.BSD 2-Clause/3-Clause없음아니오예MIT와 유사하며, 3-Clause는 개발자 이름으로 제품 홍보 금지 조항 포함.MPL (Mozi..

이전 시간의 포스트에 이어서 S3를 다루는 두번째 시간입니다.이전 포스트는 Object Storage Architecture에 대해서 먼저 확인하는 시간을 가졌었습니다.<figure id="og_1711192931092" contenteditable="false" data-ke-type="opengraph" data-ke-align="alignCente..