[벡엔드 필수 개념] Spring을 배우기 전에 꼭 알아야 할 소켓부터 버퍼까지, HTTP 통신 구조
Spring을 배우기 전에 꼭 알아야 할 기본기인 소켓, 버퍼, HTTP 통신 구조를 완벽 정복 하였습니다.
Aug 01, 2025
![[벡엔드 필수 개념]
Spring을 배우기 전에 꼭 알아야 할 소켓부터 버퍼까지, HTTP 통신 구조](https://image.inblog.dev?url=https%3A%2F%2Finblog.ai%2Fapi%2Fog-custom%3Ftitle%3D%255B%25EB%25B2%25A1%25EC%2597%2594%25EB%2593%259C%2B%25ED%2595%2584%25EC%2588%2598%2B%25EA%25B0%259C%25EB%2585%2590%255D%2B%250ASpring%25EC%259D%2584%2B%25EB%25B0%25B0%25EC%259A%25B0%25EA%25B8%25B0%2B%25EC%25A0%2584%25EC%2597%2590%2B%25EA%25BC%25AD%2B%25EC%2595%258C%25EC%2595%2584%25EC%2595%25BC%2B%25ED%2595%25A0%2B%25EC%2586%258C%25EC%25BC%2593%25EB%25B6%2580%25ED%2584%25B0%2B%25EB%25B2%2584%25ED%258D%25BC%25EA%25B9%258C%25EC%25A7%2580%252C%2BHTTP%2B%25ED%2586%25B5%25EC%258B%25A0%2B%25EA%25B5%25AC%25EC%25A1%25B0%26tag%3DTemplate%2B1%26description%3D%26template%3D3%26backgroundImage%3Dhttps%253A%252F%252Fsource.inblog.dev%252Fog_image%252Fdefault.png%26bgStartColor%3D%252323ec86%26bgEndColor%3D%252323ec86%26textColor%3D%2523000000%26tagColor%3D%2523000000%26descriptionColor%3D%2523000000%26logoUrl%3D%26blogTitle%3DGyeongwon%2527s%2Bblog&w=2048&q=75)
1. Application 개발자가 다루는 데이터 흐름
- 애플리케이션 개발자가 개발하는 애플리케이션은 대부분 ByteStream(바이트 스트림)을 통해 데이터를 주고받는다.
- 1bye = 8bit, 영어 한 문자를 전송할 수 있는 최소 단위이다.
- 이 스트림을 통해 데이터를 주고받기 위해 입출력(IO) 개념이 등장한다.
→ InputStream, OutputStream 등


2. 네트워크 전송 구조와 패킷
- 네트워크에서 데이터를 주고받을 땐 패킷(Packet)이라는 단위로 전송된다.
- 이 패킷은 크게 두 부분으로 구성된다.
- Header: 출발지/목적지 주소(IP), 포트 번호, 순서, 프로토콜 등
- Body: 실제 데이터(우리가 보내는 메시지, 파일, 요청 정보 등)
- 라우터(Router): 목적지까지 최적의 경로를 찾아주는 장비
→ 선을 효율적으로 줄이기 위해 사용됨.

3. 포트(Port)와 프로토콜(Protocol)
- 포트: 하나의 IP 주소에서 여러 개의 네트워크 서비스를 구분하는 번호 (예: HTTP는 80, HTTPS는 443, 톰캣은 8080 등)
- 프로토콜: 데이터 통신을 위한 약속 또는 규칙
→ 대표적으로 TCP, UDP가 있음
4. TCP vs UDP
구분 | TCP (Transmission Control Protocol) | UDP (User Datagram Protocol) |
연결 여부 | 연결 기반 (3-way handshake) | 비연결 |
신뢰성 | 높음 (순서 보장, 재전송) | 낮음 |
속도 | 느림 | 빠름 |
사용 예 | 웹 통신, 이메일 | 영상 스트리밍, 게임 |
- TCP는 신뢰성 확보가 필수인 통신에 사용됨
예: 브라우저에서 서버에 HTTP 요청 → 응답 받을 때
5. 버퍼(Buffer)와 입출력 구조
- 버퍼란?
데이터를 주고받기 전에 잠시 보관하는 중간 저장소
- 종류:
- Write Buffer (Output Stream): 보낼 데이터를 임시 저장
- Read Buffer (Input Stream): 받은 데이터를 임시 저장
이 구조를 통해 성능을 높이고, 불필요한 입출력을 줄임

6. 통신 방식: 단방향 / 반이중 / 전이중
통신 방식 | 설명 |
단방향 | 한 쪽 방향으로만 전송 (예: 방송, 키보드 입력) |
반이중(Half Duplex) | 양쪽이 번갈아가며 통신 가능 (예: 무전기) |
전이중(Full Duplex), 양방향 | 양쪽이 동시에 송수신 가능 (예: 전화, TCP 기반 통신) |
HTTP 통신은 엄밀히 보면 반이중 구조에 가까움
- 요청 → 응답 흐름이 있고
- 응답이 끝나야 다음 요청 가능
7. 소켓 통신(Socket Communication) 이란?
- 소켓(Socket): 네트워크에서 양쪽 시스템이 데이터를 주고받기 위한 출입구
- 클라이언트 ↔ 서버 간에 통신을 연결하기 위해 사용
- 내부적으로는 TCP/UDP 프로토콜 위에서 작동함
- 프로그래밍에서는
Socket
,ServerSocket
등의 객체로 구현
8. URL 요청과 버퍼 흐름 → 객체로 변환되는 과정
- 사용자가 브라우저에서
http://localhost:8080/hello
를 요청하면?
- 문자열 형태의 URL이 네트워크를 타고 서버로 전송
- 이 문자열은 버퍼를 통해 서버에 들어옴
- 톰캣이 이 버퍼를 읽어 Request 객체로 만들어줌
- Spring은 이 Request 객체를 기반으로 컨트롤러 등을 작동시킴
즉, 우리가 흔히 쓰는 @GetMapping("/hello")와 같은 매핑은이 과정을 통해 매칭되고 동작하는 것!
Share article