Network 11

네트워크 예외 - 종료

TCP 에는 2가지 종류의 종료가 있다.정상 종료강제 종료 정상 종료TCP 에서 A, B 가 서로 통신한다고 가정해보자.TCP 연결을 종료하려면 서로 FIN 메시지를 보내야한다.A (FIN) -> B : A 가 B 로 FIN 메시지를 보낸다.A socket.close() 를 호출하면 TCP 에서 종료의 의미인 FIN 패킷을 상대방에게 전달한다.FIN 패킷을 받으면 상대방도 socket.close() 를 호출해서 FIN 패킷을 상대방에게 전달한다. 클라이언트와 서버가 3-way-handshake 로 연결되어 있다.서버가 연결 종료를 위해 socket.close() 를 호출한다.서버는 클라이언트에 FIN 패킷을 전달한다.클라이언트는 FIN 패킷을 받는다.클라이언트의 OS 에서 자동으로 FIN 에 대한 ..

Network 2025.05.12

버퍼(Buffer)와 I/O 최적화

웹/애플리케이션 개발뿐 아니라 저수준 시스템 프로그래밍에서도 성능은 늘 중요한 주제입니다.그중에서도 I/O(Input/Output) 작업과 버퍼(Buffer)의 역할은 성능 병목을 해소하는 핵심 키워드입니다. 1. I/O란?I/O는 컴퓨터의 내부 장치(CPU·메모리)와 외부 장치(디스크·네트워크) 사이에서 데이터를 주고받는 모든 작업을 말합니다.디스크 I/O: 파일 읽기/쓰기, 데이터베이스 액세스네트워크 I/O: HTTP 요청/응답, API 호출사용자 I/O: 키보드/마우스 입력, 터미널 출력디바이스마다 속도가 다르고, 외부 장치는 내부 메모리보다 훨씬 느리기 때문에 I/O는 큰 병목을 일으킬 수 있습니다.2. 버퍼(Buffer)란?**버퍼(Buffer)**는 **임시 저장소(Queue 형태)**로, ..

Network 2025.04.21

HTTP 메서드란? 멱등성

http 메서드의 기본 개념을 알아보고 주요메서드인 GET, POST, PUT, DELETE, PATCH 등의 역할과 차이에 대해 알아보자.실무에서 적절한 HTTP 메서드를 선택해보자. 또한 멱등이라는 개념을 잘 이해하는 것이 중요하다.API 설계 뿐 아니라 IO(특히 네트워크) 가 포함된 실행흐름을 설계할 때 꼭꼭 신경써야한다.  HTTP 메서드란?HTTP 메서드를 클라이언트가 서버에 요청을 보낼 때 수행할 동작을 지정하는 방식image , 영상, 음성, html, text 등 우리가 생각할 수 있는 모든 데이터를 바이너리로 전송가능하다.http 은 요청과 응답 메시지 구조가 약간 다르다.HTTP 요청과 응답 메시지는 시작라인, 헤더, message body 부분으로 이루어져 있다. 요청메시지요청메시지..

Network 2025.04.01

HTTP/ HTTPS , SSL 가속기

예전에 은행권 프로젝트를 진행하며 SSL 가속기를 접하게 되었는데, 당시에는 단순히 보안 장비라고만 생각했다. 이번 기회에 SSL 가속기의 역할과 필요성을 정리해보았다. HTTP와 HTTPS의 차이 HTTP는 평문 데이터를 전송하는 프로토콜이기 때문에, HTTP 로 중요한 정보를 주고받으면 제 3자에 의해 조회될 수 있다.이러한 문제를 해결하기 위해 HTTP 에 암호화가 추가된 프로토콜이 HTTPS 입니다.HTTPS 는 SSL 의 껍질을 덮어쓴 HTTP 라고 할 수 있습니다.SSL(Secure Socket Layer) 인터넷을 통해 전달되는 정보를 보호하기 위해 개발한 통신 규약클라이언트와 서버가 서로 데이터를 암호화해 통신할 수 있도록 돕는 보안계층TCP 4계층의 암호화 프로토콜HTTP 는 원래..

Network 2025.03.19

L4 , L7 로드밸런서

L4 , L7 로드 밸런서의 정의와 특징에 대해 알아보자!  L4 로드 밸런서 정의 L4 로드 밸런서는 전송 계층 (Transprot Layer, Layer 4)에서 작동하는 로드밸런서로, 주로 TCP 및 UDP 프로토콜 기반으로 클라이언트와 서버 간의 트래픽을 분산시킵니다. L4 로드 밸런서는 클라이언트의 IP 주소와 포트,  서버의 IP 주소와 포트를 기반으로 로드밸런싱을 수행합니다. L7 로드 밸런서 정의L7 은 로드밸런서는 애플리케이션 계층 (Application Layer, Layer 7)에서 작동하는 로드 밸런서로, 주로 HTTP  및 HTTPS 프로토콜 기반으로 클라이언트와 서버 간의 트래픽을 분산시킵니다. L7 로드밸런서는 요청 내용 (URL, 헤더, 쿠키) 등을 기반으로 로드 밸런싱을 수..

Network 2025.02.12

TCP/IP 네트워크 이해하기 (4) - TCP

4계층 프로토콜 전송 계층 (Transport layer) 은 송신자의 프로세스와 수신자의 프로세스를 연결하는 통신 서비스를 제공한다.전송 계층은 연결 지향 데이터 스트림 지원, 신뢰성, 흐름제어 , 그리고 다중화와 같은 편리한 서비스를 제공한다, 전송 프로토콜 중 가장 잘 알려진 것은 연결 지향 전송 방식을 사용하는 전송 제어 프로토콜(TCP) 이다.보다 단순한 전송에 사용되는 사용자 데이터그램 프로토콜(UDP) 도 있다. 포트 번호특정 프로세스와 특정 프로세스가 통신을 하기 위해 사용한다. 하나의 포트는 하나의 프로세스만 사용가능하다.하나의 프로세스가 여러개의 포트를 사용하는 것은 가능하다.포트 번호는 일반적으로 정해져 있지만 무조건 지켜야하는 것은 아니다. TCP 프로토콜 TCP 가 하는 일  전송..

Network 2025.01.27

TCP/IP 네트워크 이해하기 (4) - IPv4, ICMP

IPv4 프로토콜과 패킷의 전송 과정 이해하기 IPv4 프로토콜이란? IPv4는 네트워크 계층에서 사용되는 프로토콜로, 다른 네트워크의 특정 대상에게 데이터를 전송하는 역할을 한다.전송의 신뢰성은 보장하지 않으며, 신뢰성 보장은 전송 계층(TCP 등)에서 담당한다. IP 헤더는 IP 패킷의 앞부분에 위치하며 IP 주소를 비롯한 각종 제어 정보를 담고 있다. IPv4 헤더는 고정 부분 20 바이트와 가변 부분 0~40바이트로 구성되어 있다. 옵션을 지정하지 않았을 때는 최소 크기는 20바이트이다. 버전 : 버전(Version)은 IP의 버전을 나타내는 영역이다. IPv4이므로 4이다.헤더 길이 : 헤더 길이(Header Length)는 4바이트를 기본 단위로 헤더의 길이를 규정하는 영역이다. IPv4에서는..

Network 2025.01.27

TCP/IP 네트워크 이해하기 (2) - 2계층에서 하는 일

2계층(데이터링크 계층)의 역할 물리 계층을 이용해 네트워크 장비 간에 데이터를 전송한다.데이터 링크 계층에서는 일반적으로 이더넷(Ethernet) 프로토콜이 사용된다.  2계층은 하나의 네트워크 대역 즉 같은 네트워크 상에 존재하는 여러 장비들 중에서 어떤 장비가 어떤 장비에게 보내는 데이터를 전달한다.  추가적으로 오류제어 , 흐름제어(누가 누구한테 데이터를 보내는지) 수행한다. 2계층은 하나의 네트워크 LAN 에서만 통신할 떄 사용한다.  다른 네트워크와 통신할 때는 항상 3계층이 도와주어야 한다.3계층의 주소와 3계층의 프로토콜을 이용하여야만 다른 네트워크와 통신이 가능하다. 원하는 목적지에만 데이터를 전달한다.물리계층에서 사용된 허브는 특정한 컴퓨터 한대에만 데이터를 보내려해도 나머지 모든 컴퓨..

Network 2025.01.24

TCP/IP 네트워크 이해하기 (1)

네트워크 통신에서 프로토콜의 중요성 우리가 사용하고 만드는 대부분의 인터넷 서비스는 TCP/IP를 이용해 통신한다.휴대폰 어플에서 인터넷이 안된다고 가정해보자. 아마 이용할 수 있는 어플이 상당히 제한적일 것이다. 어떻게 네트워크를 통해 데이터가 오가는지를 이해하면, 튜닝을 통한 성능 개선이나, 트러블 슈팅등에많은 도움이 된다고 한다. 이번 글에서는 네트워크에서 데이터가 어떻게 오가는지에 대해 살펴보자. 프로토콜 복수의 컴퓨터 사이나 중앙 컴퓨터와 단말기 사이에서 데이터 통신을 원활하게 하기 위한 필요한 통신 규약.신호 송신이 순서, 데이터의 표현법, 오류 검출법 등을 정함. 편지를 보내는 비유 편지를 보낼때 우편번호, 보내는 주소, 우표 등을 꼭 적어야 한다. 우표를 붙이지 않거나 잘못된 주소..

Network 2025.01.24

HTTP 특징 (Stateless, connectionless)

HTTP 특징http 는 클라이언트 서버 구조로 되어있다. (Request Response 구조)클라이언트가 http 메시지로 서버에 요청을 보내고 서버의 응답이 올때까지 기다린다.서버는 요청에 대한 결과를 만들어서 클라이언트에게 응답한다. 클라이언트 서버 구조는 클라이언트는 UI , 사용성에 집중할 수 있고 서버는 비즈니스 로직에 집중할 수 있는 이점이 있다.양쪽이 독립적으로 진화할수 있다는것이 가장 큰 이점이다.  Stateless vs Stateful 정리 stateless 특성은 응답에 필요한 정보를 모두 실어보내기때문에 중간에 서버가 바뀌어도 올바른 응답을 할 수 있다. 따라서 스케일 아웃이 가능하다. 애플리케이션 설계시 최대한 무상태성으로 설계를 하고 필요한 경우에만 stateful 방식을 취..

Network 2025.01.13