네트워크는 컴퓨터 및 디바이스들 사이에서 데이터 전송을 위해 사용하는 연결망이다. 장치들 간의 연결은 단순하게 이루어지지 않고 데이터를 효율적으로 전달하기 위해 여러개의 중간 처리단계를 가지고 있다. 역할 관점에서 데이터를 요청하는 주체를 클라이언트, 데이터를 제공하는 주체를 서버라고하는데 클라이언트에서 서버까지 요청이 전달되는 과정을 살펴본다.
간단하게 생각할 수 있는 네트워크의 모습
HTTP Request : “브라우저에서 무언가의 요구(리퀘스트)를 웹서버에 보낸다.”
HTTP Response : “웹 서버는 요구에 따라 움직이고 결과(응답)를 브라우저에 돌려보낸다.”
브라우저에서 전송한 요청은 다음의 물리적 흐름을 통해 서버에 도달한다.
- 웹브라우저 - URL, Request Message
- 프로토콜 스택, LAN 어댑터* - Request Message를 패킷으로 전환하여 LAN으로 데이터를 운반
- 허브, 스위치, 라우터 - 라우터(or 스위칭허브)가 LAN 어댑터에서 송신한 패킷을 인터넷(WAN/광역 네트워크)에 전달
- 액세스 회선, 프로바이더 - 통신회선(액세스 회선)을 통해 통신사용 라우터(POP, Point Of Presences)에 패킷 전달
- 방화벽, 캐시 서버 - 웹 서버 측 근거리 통신망(LAN)에서 처리 (방화벽/캐시/부하분산)
- 웹서버 - 패킷을 Request Message로 복원하고 어플리케이션에 전달하고 클라이언트에게 응답메시지를 전송
* 요청메시지를 패킷으로 전환하고 역으로 읽는 작업은 OS에 내장된 프로토콜 스택(네트워크 제어용 소프트웨어)을 통해 이루어진다.
우리는 일반적으로 위처럼 구체적인 단계보다는 논리적으로 표준화한 OSI 모델을 주로 학습한다. OSI 모델은 다음의 이미지처럼 7개의 계층으로 나뉘어진다.
7. Application Layer - 애플리케이션 계층
- 사용자와 직접 상호작용 - 웹브라우저, 이메일 클라이언트 등의 소프트웨어 어플리케이션
- 프로토콜 조작과 데이터 제공 (HTTP, SMTP, … etc)
6. Presentation Layer - 프레젠테이션 계층
- 데이터를 변환(암호화, 복호화)하고 압축하여 제공하는 역할
- 다른 장치에서 받은 데이터를 처리하여 애플리케이션 계층(7)이 이를 사용할 수 있게 하거나, 애플리케이션 계층(7)에서 받은 데이터를 압축하여 세션 계층(5)으로 전송하는 역할
- ex) MIME 타입 구분 - text, jpg, or gif 구분
- 압축을 통해 통신 속도와 효율향상 기여
5. Session Layer - 세션 계층
- 두 기기 사이의 통신의 시작과 종료를 담당
- 세션 - 통신이 시작될 때부터 종료될 때까지의 시간
- 양 끝단의 응용 프로세스가 통신을 관리하기 위한 방법을 제공
4. Transport Layer - 전송 계층
- 두 기기 간의 양 끝단(End to End) 간 통신을 지원 (TCP/UDP)
- 흐름 제어, 오류 검출 및 복구, 데이터 분할과 재조립
- ex) 데이터를 패킷으로 분할하거나, 전송된 패킷을 데이터로 재조립
3. Network Layer - 네트워크 계층
- 다른 네트워크와 통신하기 위한 경로 설정, 논리 주소 지정 (라우팅)
- 데이터를 가장 안전하고 빠르게 전달하는 기능을 담당
- IP 프로토콜을 사용해서 패킷을 전달
- 데이터 흐름 제어 및 오류 제어
2. DataLink Layer - 데이터 연결 계층
- 물리적 네트워크를 통한 원활한 데이터 전달 (동일한 네트워크)
- MAC 주소를 이용한 통신
- 데이터 흐름 제어 및 오류 제어
1. Physical Layer - 물리 계층
- 데이터 전송과 관련된 물리적 장비 (케이블, 리피터, 허브)
- 비트스트림 사용 (1, 0)
지금까지 작성한 글을 토대로 다음의 질문에 답해본다.
Q: 브라우저 주소 표시줄에 요청 URL을 입력하면 OSI 모델 관점에서 이를 어떻게 처리하는가?
응용 계층(L7): URL 입력 → HTTP 요청 메시지 생성
표현 계층(L6): 데이터 형식 변환/암호화
세션 계층(L5): 세션 설정
전송 계층(L4): TCP 세그먼트로 분할
네트워크 계층(L3): IP 패킷화
데이터링크 계층(L2): 프레임 생성 (랜카드)
물리 계층(L1): 프레임을 비트(전기신호)로 변환하여 전송 (랜카드)
결국 브라우저에서 시작된 데이터는 각 계층을 거치면서 캡슐화되고, 최종적으로 랜카드를 통해 비트 단위의 전기신호로 변환되어 네트워크로 전송된다.
References
- 성공과 실패를 결정하는 1%의 네트워크 원리 - Tsutomu Tone (이도희 역)
- HTTP messages - MDN
- https://developer.mozilla.org/en-US/docs/Web/HTTP/Messages
- cloud flare
- https://www.cloudflare.com/ko-kr/learning/ddos/glossary/open-systems-interconnection-model-osi/
- OSI 7 계층이란?
- https://shlee0882.tistory.com/110