Go8 [GNPS] 챕터 12 데이터 직렬화 GNPS (Go Network Programming School)의 내용을 정리한 글입니다.Go 언어를 활용한 네트워크 프로그래밍 - 책으로 스터디를 진행합니다.데이터 직렬화 및 역직렬화는 다양한 서비스와 통신하고 데이터를 교환하는 데 사용된다. 애플리케이션 계층에서 선언된 데이터는 바이트로 변환되어 네트워크 전송이나 데이터 저장에 사용될 수 있다. 따라서 바이트로 구성된 데이터를 재객체화하는 메커니즘이 있다면 데이터가 어디에서 왔는지에 관계없이 형식에 맞는 데이터를 보내고 받을 수 있다.다양한 데이터 직렬화 형식 중에서 가장 인기 있는 직렬화 형식인 JSON, 프로토콜 버퍼, Gob 형식을 살펴본다. 또한, gRPC라는 프레임워크를 사용하여 원격 노드에 있는 코드를 마치 로컬에서 실행되는 것처럼 사용하.. 2025. 11. 18. [GNPS] 챕터 11 TLS 통신 보안 GNPS (Go Network Programming School)의 내용을 정리한 글입니다.Go 언어를 활용한 네트워크 프로그래밍 - 책으로 스터디를 진행합니다.2010년 이전에 대부분의 웹사이트는 HTTP를 사용했다. 아무런 암호화 없이 우리가 통신하는 모든 네트워크의 데이터를 누군가가 탈취해서 엿본다면 그냥 그대로 읽을 수 있었다. 하지만 요즘엔 HTTP 통신의 종단 간 암호화를 통한 보안 강화는 필수이다. HTTP를 사용한 웹사이트는 안전하지 않은 사이트라는 경고를 대문짝만 하게 띄워주며, HTTPS가 아닌 사이트를 찾기 어렵다. TLS 프로토콜의 이해TLS 프로토콜은 클라이언트와 서버 간에 안전한 통신을 제공한다. TLS를 사용하여 클라이언트와 서버는 통신을 암호화하여 제3자가 중간에서 통신을 .. 2025. 11. 15. [GNPS] 챕터 9 HTTP 서비스 작성! GNPS (Go Network Programming School)의 내용을 정리한 글입니다.Go 언어를 활용한 네트워크 프로그래밍 - 책으로 스터디를 진행합니다.Go의 net/http 패키지는 추상화가 매우 잘 되어 있어 서버 초기화 및 설정, 리소스 생성, 요청 처리에 집중할 수 있습니다. HTTP 서버는 서로 활발하게 통신하는 여러 요소로 구성되어 있으며, 핸들러(Handler), 미들웨어(Middleware), 그리고 멀티플렉서(Multiplexer)의 상호작용으로 이루어져 있습니다. 웹 서비스는 이런 요소들을 전부 포함하는 서버를 의미합니다. Go HTTP 서버 해부 서버의 멀티플렉서(네트워크 용어로는 라우터)는 클라이언트 요청을 수신합니다. 멀티플렉서는 요청의 목적지를 결정한 후 해당 요청을 처.. 2025. 11. 12. [GNPS] 챕터 6 UDP 통신의 신뢰성 확보 GNPS (Go Network Programming School)의 내용을 정리한 글입니다.Go 언어를 활용한 네트워크 프로그래밍 - 책으로 스터디를 진행합니다.UDP는 신뢰성이 없는 프로토콜이기 때문에 애플리케이션에서 신뢰성과 관련한 처리를 해야 합니다.이전 장에서 UDP의 기본 기능을 살펴봤다면, 이번에는 애플리케이션 계층 프로토콜에서 이를 어떻게 활용하는지 예시를 통해 알아보겠습니다.TFTP는 UDP로 신뢰성 있는 데이터 전송을 가능하게 하는 애플리케이션 프로토콜입니다. 클라이언트가 파일을 다운로드만 할 수 있는 TFTP 서버를 구현하면서 신뢰성 있는 UDP 통신의 기초적인 방법을 알아보겠습니다.TFTP 서버는 클라이언트로부터 읽기 요청을 수락하고, 데이터 패킷을 전송하며, 필요시 에러 패킷을 송신.. 2025. 11. 7. [GNPS] 챕터 5 신뢰성 없는 UDP 통신 GNPS (Go Network Programming School)의 내용을 정리한 글입니다. Go 언어를 활용한 네트워크 프로그래밍 - 책으로 스터디를 진행합니다.UDP의 특징UDP는 통신에 대한 신뢰성이 없습니다. 전송 확인 메커니즘이 없기 때문에 수신자도 수신 확인 패킷을 보내지 않습니다. 패킷 순서도 보장되지 않습니다.단순하기 때문에 빠르며, 이런 특징이 필요한 애플리케이션에서 UDP를 사용하는 것이 유리합니다.안정적인 연결과 연속적인 패킷의 흐름을 가지는 TCP와 다르게 UDP는 투박합니다. 안정적인 연결 확인도 없고, 세션 확인도 없으며, 데이터 수신 확인도 없습니다.net.Conn 인터페이스는 TCP 연결을 사용하는 데는 유용하지만 UDP를 사용할 때는 적합하지 않습니다. 따라서 패킷 지향적인.. 2025. 11. 6. [GNPS] 챕터 4 TCP 데이터 전송하기 GNPS (Go Network Programming School)의 내용을 정리한 글입니다.Go 언어를 활용한 네트워크 프로그래밍 - 책으로 스터디를 진행합니다. 핵심 인터페이스: net.ConnGo 네트워크 프로그래밍의 중심에는 net.Conn 인터페이스가 있습니다. listener.Accept()나 net.Dial()을 통해 반환되는 연결 객체는 모두 이 인터페이스를 구현합니다.그중 Read와 Write 메서드는 가장 유용하게 사용할 수 있습니다. 해당 메서드는 io.Reader, io.Writer 인터페이스를 구현한 메서드로 io 인터페이스를 사용하는 코드를 활용하여 네트워크 프로그래밍을 할 수 있습니다.이로 인해 io 패키지에서 제공하는 다양한 유틸리티(예: io.Copy, bufio.Scanne.. 2025. 11. 5. [GNPS] 챕터 2 리소스의 위치와 트래픽 라우팅 GNPS (Go Network Programming School)의 내용을 정리한 글입니다.Go 언어를 활용한 네트워크 프로그래밍 - 책 으로 스터디를 진행합니다. IP (Internet Protocol)란 무엇인가? IP(Internet Protocol)는 인터넷을 통해 전송되는 데이터의 포맷과 규칙을 정의하는 핵심 통신 규약입니다.네트워크상에서 각 노드(컴퓨터, 서버 등)를 고유하게 식별할 수 있도록 IP 주소(Address)를 사용하며, 이를 통해 노드 간의 원활한 통신을 가능하게 합니다. IPv4 주소의 구조 현재 널리 사용되는 IPv4 주소는 8비트로 구성된 네 개의 그룹, 즉 총 32비트로 이루어진 숫자입니다. 모든 비트가 0 또는 1의 조합으로 이루어져, 약 .. 2025. 10. 23. [GNPS] 챕터 1 네트워크 시스템 개요, 챕터 3 신뢰성 있는 TCP 데이터 스트림 GNPS (Go Network Programming School)의 내용을 정리한 글입니다.Go 언어를 활용한 네트워크 프로그래밍 - 책으로 스터디를 진행합니다.챕터 1: 네트워크 시스템 개요 네트워크와 토폴로지 컴퓨터 네트워크는 두 개 이상의 장치 또는 노드 간 연결을 말하며 각 노드가 데이터를 공유할 수 있도록 합니다.여러 노드를 연결하여 네트워크 상의 노드를 구성하는 것을 토폴로지라고 합니다.가장 단순한 형태는 점대점 (point-to-point) 연결로 두 노드가 하나의 연결을 공유하는 구조입니다.이런 점대점 연결을 연속해서 하는 것을 데이지 체인(daisy chain)이라고 합니다. 노드 A에서 노드 F로 가기 위해선 반드시 B와 C 노드를 지나.. 2025. 10. 3. 이전 1 다음