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입니다. (..