목록Common/CS-네트워크 (14)
나만의 작은 도서관
유의사항: 해당 글은 공부한 내용을 정리하는 용도이므로, 수정이 필요할 경우 내용의 수정이 있을 수 있습니다.protoBufprotoBuf는 Protocol Buffer의 약자이며, Google에서 개발한 직렬화 데이터 구조이다. 효율적인 데이터 교환을 위해 설계되었으며, 특히 네트워크 통신과 저장 시스템에서 널리 사용됩니다. 이런 protoBuf는 여러 가지 데이터 구조 중 하나이기 때문에 자주 접해본 XML, JSON과 방식과 유사하다고 볼 수 있습니다. 직렬화 (serialization)와 역직렬화( Deserialization )protoBuf가 직렬화 데이터 구조인만큼 우선 직렬화와 반대되는 개념인 역직렬화가 무엇이지 알아야합니다.직렬화는 객체 또는 데이터 구조를 연속적인 바이트 스트림(byte..
유의사항: 해당 글은 공부한 내용을 정리하는 용도이므로, 수정이 필요할 경우 내용의 수정이 있을 수 있습니다. 개요이번에 바이트 배열을 이용한 TCP 통신을 배우던 중 빅 엔디안 방식과 리틀 엔디안 방식이 있다는 것을 알게되었다. 자주보던 용어들이니 정리해보고자 이번 기회에 글로 기록해볼까 한다.상위바이트 하위바이트빅 엔디안과 리틀 엔디안을 알기 전에 패킷에서 상위 또는 하위 바이트 어느 위치에 있는 바이트를 의미하는 지 알아두면 좋다. 우리가 메모리의 비트패턴에서 최상위 비트가 가장 왼쪽에 있는 비트(leftmost bit)인 것처럼 패킷에서 최상위 바이트도 가장 왼쪽에 있는 바이트를 의미한다. 반대로, 최하위 바이트는 가장 오른쪽에 있는 바이트를 의미한다.빅 엔디안(Big Endian)빅 엔디안은 이..
목차TCP, TCP 통신 과정UDPTCP와 UDP 작동 비교 예제TCP와 UDP 비교 표 신뢰할 수 있는 전송 프로토콜: TCP TCP는 호스트 간 접속과 송수신의 신뢰성이 보장되는 환경에서 통신하기 위한 연결형 통신 프로토콜로, 신뢰성 있는 통신을 위해 데이터 송수신 과정에서 재전송을 통한 오류 제어, 흐름 제어, 혼잡 제어 등의 기능을 수행합니다. (앞으로의 설명에서 통신은 서버-클라이언트 구조를 기반으로 설명합니다. ) 연결형 통신 프로토콜 TCP의 통신 과정은 1) 세션 접속, 2) 데이터 송수신, 3) 세션 해제 순으로 진행됩니다. 1) 세션 접속은 3-way-hanshake 방식을 통해 연결을 시도하는 상태를 의미합니다. 세션 접속이 성공적으로 이루어졌다면 데이터 송수신 과정으로 넘어가게..
TCP handshake는 TCP 연결을 설정하고 종료하기 위한 일련의 과정입니다. 이는 TCP 프로토콜이 신뢰성 있는 통신을 보장하기 위해 사용하는 중요한 절차입니다 TCP 헤더에는 6비트로 구성된 플래그 코드 비트가 있습니다.이 코드 비트는 3-way handshake, 4-way handshake, 비정상 종료 등등 tcp 연결 확립과정과 연결 종료 과정에서 중요한 역할을 하게됩니다.6비트로 구성된 플래그 비트는 각각의 비트가 0일때 비활성화, 1일때 활성화 상태를 의미하게 됩니다. 각각의 플래그 비트는 다음과 같습니다. URG: 긴급 데이터의 우선 처리.ACK: 응답 번호가 유효함을 나타냄.PSH: 버퍼링하지 않고 즉시 데이터를 전달하라는 요청.RST: 연결 초기화 및 재설정.SYN: 연결 설정 ..
대칭 키 암호화(Symmetric Key Encryption)대칭 키 암호화(Symmetric Key Encryption)방식은 하나의 키를 사용하여 데이터를 암호화하고 복호화하는 방식입니다. 즉, 데이터를 암호화하기 위해 특정 키를 사용했다면, 복호화 할 때도 동일한 키를 사용한다는 것입니다. 작동 원리키 공유: 송신자와 수신자는 미리 비밀 키를 안전하게 공유합니다.암호화: 송신자는 비밀 키를 사용해 데이터를 암호화합니다.전송: 암호화된 데이터를 수신자에게 전송합니다.복호화: 수신자는 동일한 비밀 키를 사용해 암호화된 데이터를 복호화합니다.장점빠른 처리 속도: 대칭 키 암호화는 일반적으로 공개 키 암호화보다 빠르며, 대량의 데이터를 처리하는 데 효율적입니다.간단한 구현: 대칭 키 방식은 상대적으로 간단..
로드 밸런싱로드 밸런싱은 네트워크 트래픽을 여러 서버에 분산시키는 기술로, 서버 간의 부하를 균등하게 나누어 시스템의 효율성을 극대화하고 성능을 향상시키기 위해 사용됩니다. 간단히 말해서, 서버가 받는 부하를 의미하는 "로드"를 균형있게 분배해준다고 할 수 있습니다. 이러한 로드 밸런싱은 로드 밸런서(Load Balaner)라고 부르는 모듈(장치)을 통해 수행하게 됩니다. 로드 밸런싱이 필요한 이유런칭한 지 얼마 안 된 서비스가 하나 있다고 가정해보겠습니다. 처음엔 서비스가 있는 줄도 모를테니 유저가 굉장히 적을겁니다. 그래서 이제 1초에 한 명정도 사용한다고 가정하면 서버는 아주 행복할 겁니다. 전혀 부담스럽지 않은 요청이거든요. 그런데 어떤 이유에서인지 엄청난 양의 요청들이 유저들에게서 오기 시작합..