**서버-네트워크 흐름과 송수신 과정
1. 웹 백엔드 서버-네트워크 기본 흐름과 송수신 설명
: 1단계 - 사용자가 요청을 보낸다. ( 클라이언트(사용자) -> 서버 )
- 사용자가 브라우저에서 사이트 주소를 입력하거나 버튼을 누르는 순간부터 시작!!
예를 들면
- 사용자가 https://www.myproject.com/login 입력 또는 로그인 버튼을 클릭(+아무 버튼도 가능)
: 브라우저가 서버로 요청(Request)을 보낸다.
- 이 요청은 HTTP/HTTPS 프로토콜을 사용해서 요청을 보낸다.
- 요청에는 다음 정보들이 담겨서 요청 된다.
: 구성 요소 설명(정보들)
- 요청 URL : 예) /login, /user/1
- 요청 메서드 : GET, POST, PUT, DELETE (CRUD 관련)
- 요청 헤더 : 브라우저 정보, 쿠키, 인증 토큰 등
- 요청 바디 : (POST 동일 경우)아이디/비번 같은 실제 데이터
: 2단계 - 주소-->IP로 바꾼다.(이러한 방법을 DNS 과정!)
- 사용자는 도메인( http://www.myproject.com )주소를 입력했지만, 실제 통신은 IP 주소로 해야한다.
: DNS 서버 역할
- http://www.myproject.com -> 123.123.123.123(서버 IP주소로 변환 후 통신)
- 이 과정을 DNS Lookup 이라고 한다.
: 실무 예시
- 회사 인프라에서 DNS가 설정되지 않으면 접속 오류가 발생한다.
- 도메인 연결시 IP 설정이 정확해야 한다.
**TCP - 3-way handshake
: TCP 프로토콜에서 통신을 시작하기 전에 신뢰성있는 연결을 안전하게 맺기위한 과정이다.
절차 흐름
- 클라이언트 → 서버 : "연결 요청할게요~" (SYN)
- 서버 → 클라이언트 : "오케이, 나도 연결할게요!" (SYN + ACK)
- 클라이언트 → 서버 : "좋아요, 이제 시작합시다!" (ACK)
: 3단계 - 서버와 연결한다. (TCP 3-way 핸드셰이크)
- 클라이언트와 서버가 통신하려면 먼저 신뢰할 수 있는 연결(TCP/IP) 을 맺어야 한다.
: TCP 연결 과정 (3-way handshake)
- 클라이언트 -> 서버 : SYN 패킷 전송
- 서버 -> 클라이언트 : SYN+ ACK 응답
- 클라이언트 -> 서버 : ACK 보내고 연결 성립!
**참고 : HTTPS는 이 후에 SSL/TLS 암호화 협상이 추가된다.
: 4단계 - 실제 요청 데이터 전송
- 이제 연결이 되었으니, 본격적으로 요청 데이터를 서버에 전송한다!
: HTTP 요청 전송
- 서버는 이 요청을 받고 백엔드(Spring Boot 등)가 처리 시작한다.
- 예 : 사용자가 /login에 ID|PW를 POST로 보냈다면, Spring Controller에서 @PostMapping("/login")에서 처리한다.
: 5단계 - 서버에서 처리(Spring Boot 기준으로 설명)
- 클라이언트의 요청이 들어오면, 백엔드 서버는 순서대로 처리한다.
: 처리 흐름(Spring Boot 예시)
- 컨트롤러(@RestController) -> 서비스 계층(@Service) -> DB조회/저장(JPA, MyBatis 등 @Repository)
: 처리 예시
- 로그인 요청이라면 ID | PW를 DB에서 조회한다.
- 비밀번호가 맞는지 확인한다.
- 토큰 발급 or 세션을 저장
: 6단계 - 서버가 응답을 보낸다.(Response)
- 처리가 끝났으면 클리언트에게 결과를 응답으로 전송한다.
: 응답 구조(HTTP Response)
- 구성 요소 설명
: 상태코드 : 200 OK, 400 Bad Request, 500 Error 등
: 응답 헤더 : Content-Type - application/json 등
: 응답 바디 : 실제 데이터(ex) { "message" : "Login success!" }
: 실무 예시
- 프론트가 AJAX로 요청 -> 백엔드는 JSON으로 응답 처리
: 7단계 - 클라이언트가 결과를 화면에 출력
- 응답을 받은 브라우저가 결과를 해석해서 화면에 보여준다.
: 예시
- HTML 페이지면 랜더링
- JSON이면 JavaScript가 처리해서 화면에 출력!
: 8단계 - 연결 종료 또는 재사용
- 요청/응답이 끝나면 TCP 연결을 끊거나 유지(keep-alive)
- 반복 요청시 연결을 재사용해 성능 향상
2. 전체 흐름
: [사용자 브라우저] -> [DNS로 IP변환] -> [TCP 3-way 핸드셰이크] -> [백엔드 서버(Spring)] -> [DB조회 or 비즈니스 처리] -> [HTTP 응답(JSON등)] -> [브라우저 화면 출력]
'네트워크' 카테고리의 다른 글
| ※ 네트워크(+주홍철)_복습(2) (0) | 2025.08.30 |
|---|---|
| ※ 네트워크(+주홍철)_복습(1) (0) | 2025.08.30 |
| 07-네트워크 기초&기본 개념 공부 (0) | 2025.04.17 |
| 06-네트워크 기초&기본 개념 공부 (0) | 2025.04.12 |
| 05-네트워크 기초&기본 개념 공부. (0) | 2025.03.09 |