학습 목표
- OSI 7계층 모델과 TCP/IP 4계층 모델을 기반으로 한 네트워크 흐름에 대해 이해할 수 있다.
- TCP/IP 패킷이 왜 필요한 지 설명할 수 있다.
- TCP와 UDP의 차이에 대해 설명할 수 있다.
- 데이터 링크 계층과 물리적 계층에 대해서 설명할 수 있다.
- HTTP 기본 동작과 특징에 대해 이해할 수 있다.
- 상태유지(Stateful)과 무상태(Stateless)의 개념에 대해 설명할 수 있다.
- HTTP 메시지 구성에 대해 설명할 수 있다.
- 아키텍처의 구성요소에 대해서 알 수 있다.
- 프록시, 로드밸런서에 대해 설명할 수 있다.
- 캐시의 기본 원리와 CDN에 대해 설명할 수 있다.
- 프록시 서버를 만들고, 프록시 캐시를 컨트롤 할 수 있다.
- 물리계층
- 주로 물리적 연결과 관련된 정보를 정의함
- 주로 전기 신호를 전달하는데 초점을 두고, 들어온 전기 신호를 그대로 잘 전달하는 것이 목적
- 데이터 링크 계층
- 물리 계층에서 들어온 전기 신호를 모아 알아 볼 수 있는 데이터 형태로 처리함
- 주소 정보를 정의하고 출발지와 도착지 주소를 확인한 후, 데이터 처리를 수행함
- 네트워크 계층
- IP주소와 같은 논리적인 주소 정의
- 라우터를 통해 정의한 IP주소를 이해하고, 이를 사용해 최적의 경로를 찾아 패킷을 전송함
- 전송 계층
- 해당 데이터들이 실제로 정상적으로 보내지는지 확인하는 역할
- 네트워크 계층에서 사용되는 패킷은 유실되거나 순서가 바뀌는 경우가 있는 데, 이를 바로 잡아주는 역할도 담당함
- 세션 계층
- 양 끝 단의 프로세스가 연결을 성립하도록 도와주고, 작업을 마친 후에는 연결을 끊는 역할을 함
- 프레젠테이션(표현) 계층
- 일종의 변역기 같은 역할을 수행함
- MIME 인코딩이나 암호화, 압축, 코드 변환과 같은 동작이 이루어짐
- 애플리케이션(응용) 계층
- 애플리케이션 프로세스를 정의하고, 애플리케이션 서비스를 수행함
- 사용되는 프로토콜은 다양한 종류가 있지만, 대표적인 프로토콜로는 HTTP, FTP, SMTP 등이 있음
Application Layer - HTTP
- 특징
- 클라이언트 서버 구조
- Request Response 구조
- 클라이언트는 서버에 요청을 보내고 응답을 대기
- 서버가 요청에 대한 결과를 만들어 응답
- 무상태 프로토콜(Stateless)
- 서버가 클라이언트의 상태를 보존하지 않음
- 장점: 서버 확장성 높음(스케일 아웃) → 응답 서버를 쉽게 바꿀 수 있으므로 무한한 서버 증설이 가능함
- 단점: 클라이언트가 추가 데이터 전송
- Stateful의 경우, 한 서버가 기존의 상태 정보를 유지하므로, 해당 서버 장애 발생시 유지되던 상태 정보가 다 날라가므로 처음부터 다시 서버에 요청해야함
- 로그인이 필요 없는 단순한 서비스 소개 화면 같은 경우엔 무상태로 설계할 수 있지만, 로그인이 필요한 서비스라면 유저의 상태를 유지해야 되기 때문에 브라우저 쿠키, 서버 세션, 토큰 등을 이용해 상태를 유지함
- 비연결성(Connectionless)
- TCP/IP의 경우 기본적으로 연결을 유지함
- 연결을 유지하는 모델에서는 요청을 보내지 않더라도 계속 연결을 유지해야 하고, 이러한 경우 연결을 유지하는 서버의 자원이 계속 소모됨
- 비연결성을 가지는 HTTP는 실제로 요청을 주고받을 때만 연결을 유지하고 응답을 주고 나면 TCP/IP 연결을 끊고, 이를 통해 최소한의 자원으로 서버 유지를 가능하게 함
- 트래픽이 많지 않고, 빠른 응답을 제공할 수 있는 경우, 비연결성의 특징은 효율적으로 작동함
- 한계
- TCP/IP 연결을 새로 맺어야 함 → 3 way handshake 시간 추가
- 웹 브라우저로 사이트를 요청하면 HTML 뿐만 아니라 자바스크립트, css, 추가 이미지 등 수많은 자원이 함께 다운로드됨 → 해당 자원들을 각각 보낼 때마다 연결을 끊고 다시 연결하고를 반복하는 것은 비효율적이기 때문에 지금은 HTTP 지속 연결(Parsistent Connections)로 문제를 해결함(연결이 이루어지고 난 뒤 각각의 자원들을 요청하고 모든 자원에 대한 응답이 돌아온 후 연결을 종료함)
- HTTP 메세지
- 단순함, 확장 가능
- 클라이언트 서버 구조
Network Layer - IP와 IP Packet
- IP는 지정한 IP주소에 패킷이라는 통신 단위로 데이터를 전달함
- 패킷: Pack + Bucket 합성어로 소포에 비유할 수 있음
- IP 패킷: 데이터 통신에 적용한 것으로, 전송 데이터를 무사히 전송하기 위해 출발지 IP,목적지 IP와 같은 정보가 포함되어 있음
- 패킷 단위로 전송을 하면 노드들은 목적지 IP에 도달하기 위해 서로 데이터를 전달하고, 이를 통해 복잡한 인터넷 망 사이에서도 정확한 목적지로 패킷을 전송할 수 있음
- 한계
- 비연결성
- 클라이언트는 서버의 상태를 파악할 방법이 없으므로 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
- 비신뢰성
- 중간에 패킷이 사라질 수 있음
- 패킷의 순서를 보장할 수 없음
- 비연결성
Transport Layer - TCP vs UDP
- 채팅 프로그램에서 메세지를 보낼 때
- HTTP 메시지 생성
- Socket을 통해 전달
- TCP 정보 생성
- IP 패킷 생성
- TCP 세그먼트: IP 패킷의 출발지 IP와 목적지 IP 정보를 보완할 수 있는 출발지 PORT, 전송 제어, 순서, 검증 정보 등을 포함
- TCP 특징
- 연결지향 - TCP 3 way handshake
- 논리적인 접속을 성립하기 위하여 3 way handshake를 사용하는 연결지향형 프로토콜
- 데이터 전달 보증
- 데이터 전송이 성공적으로 이루어진다면 이에 대한 응답을 돌려줌
- 순서 보장
- 신뢰할 수 있는 프로토콜
- 연결지향 - TCP 3 way handshake
- UDP 특징
- IP 프로토콜에 PORT, 체크섬 필드 정보만 추가된 단순한 프로토콜
- 체크섬(checksum): 중복 검사의 한 형태로, 오류 정정을 통해 공간(전자 통신)이나 시간(기억 장치) 속에서 송신된 자료의 무결성을 보호하는 단순한 방법
- 비 연결지향 - TCP 3 way handshake x
- 데이터 전달 보증 x
- 순서 보장 x
- 단순하고 빠름
- 신뢰성보다는 연속성이 중요한 서비스에 주로 사용됨
- IP 프로토콜에 PORT, 체크섬 필드 정보만 추가된 단순한 프로토콜
Session Layer - Socket
- 사전적 의미: 전구 따위를 끼워 넣어 전선과 접속되게 하는 기구
- 네트워크에서 사용되는 소켓의 의미도 마찬가지로 프로그램이 네트워크에서 데이터를 송수신 할 수 있도록 “네트워크 환경에서 클라이언트와 서버가 서로 연결할 수 있게 만들어진 연결부”를 의미함
- 네트워크 상에서 돌아가는 두 개의 프로세스 간 양뱡향 통신에서 하나의 엔드포인트이며, 여기서 엔드포인트는 IP주소와 포트 번호의 조합을 의미함
- 포트 번호에 바인딩되어 전송 계층에서 데이터를 주고 받는 어플리케이션을 식별할 수 있게 함
- 즉, 어플리케이션 계층에 존재하는 프로세스들은 데이터를 주고 받기 위해 소켓을 거쳐 전송 계층의 네트워크로 전달함으로써 데이터를 송수신 할 수 있음
- 이때 데이터를 전달받을 호스트의 주소를 가리키는 IP 주소와 그 데이터를 전달받을 호스트 안에서 원하는 프로세스를 찾는 용도로 사용되는 포트 정보가 필요함
- 소켓에 포함되는 정보
- 프로토콜
- 호스트 IP 주소
- 호스트 Port 번호
- 목적지 IP 주소
- 목적지 Port 번호
- 특징
- 데이터를 주고 받는 프로세스 간의 양방향 통신을 목적으로 하기 때문에, 클라이언트와 서버의 구조를 가짐
- 서버는 특정 포트 번호에 바인딩하여 작동하고, 소켓을 통해 클라이언트의 요청을 리스닝하며 대기함
- 클라이언트는 이미 리스닝하고 있는 서버의 IP 주소 및 포트 번호를 알고 있기 때문에, 이에 해당하는 서버에 연결을 시도하게 됨
- 순조롭게 연결이 진행되고 나면, 서버는 같은 포트에 바인딩 된 새로운 소켓을 형성하고, 기존의 연결된 소켓으로는 연결된 클라이언트의 요청을 처리함
- 따라서 같은 포트에 여러 개의 소켓을 생성할 수 있음
- 위의 과정을 거쳐 소켓을 통해 연결이 완료되면, 데이터를 주고 받은 후 연결이 끊어지는 것이 아니라 양 쪽에서 실시간으로 통신할 수 있으므로, 실시간으로 메세지를 송수신하는 채팅 서비스나 스트리밍 서비스에서 주로 사용됨
Data Link Layer - 데이터 링크 레이어
- 전기 신호를 모아 알아볼 수 있는 데이터 형태로 처리함
- 출발지와 도착지 주소를 확인하고 내게 보낸 것이 맞는지 혹은 내가 처리해야 하는지에 대해 검사한 후 데이터를 처리하는 것이 주된 역할
- 주소를 확인한다는 것은 한 명과 통신하는 것이 아니라 동시에 여러 명과 통신할 수 있다는 것이기 때문에 무작정 데이터를 주고 받는 것이 아니라, 받는 사람이 데이터를 받을 수 있는지 확인하는 작업부터 해야하며, 이런 역할을 플로우 컨트롤(flow control)이라고 함
- 네트워크 인터페이스 카드(NIC, Network Interface Card)
- 랜 카드, 네트워크 카드, 네트워크 인터페이스 컨트롤러, 네트워크 어댑터 등
- 컴퓨터를 네트워크에 연결하기 위한 하드웨어 장치
- 직렬화: 전기적 신호를 데이터 신호 형태로, 혹은 그 역으로 변환해줌
- MAC 주소: 입력되는 전기 신호를 데이터 형태로 만들고 데이터에서 도착지 MAC 주소를 확인한 후 자신에게 들어오는 전기 신호가 맞는지 확인한 후, 자신에게 들어오는 전기 신호가 아니면 버리고, 맞으면 이 데이터를 상위계층에서 처리할 수 있도록 메모리에 적재함
- 네트워크에 접속하는 모든 장비는 MAC(Media Access Control) 주소라는 물리적 주소가 있어야 하며, 변경할 수 없도록 하드웨어에 고정되어 있음
- 스위치(Switch)
- 여러 장비를 연결하고 통신을 중재하며, 케이블을 한 곳으로 모아주는 역할을 하는 장비
- 주어진 MAC 주소를 보고 어디로 연결되는지, 포트는 어디인지 확인하며 이 데이터를 기반으로 통신할 때 포트를 적절히 필터링 하고 정확한 포트로 포워딩하는 역할을 함
- 포워딩(Forwarding): 패킷이 스위치에 들어온 경우, 도착지 MAC 주소를 확인하고 자신이 가진 MAC 테이블과 비교해 맞는 정보가 있으면 매치되는 해당 포트로 패킷을 포워딩함
- 필터링(Filtering): 이 때 다른 포트로는 해당 패킷을 보내지 않으므로 이를 필터링이라고 부름
Physical Layer - 네트워크 액세스 계층
- 물리적 연결과 관련된 정보를 정의함
- 물리적 장비를 통해 전기 신호를 전달하며, 전기 신호를 전달하는 데 초점이 맞춰져 있음
- 전기 신호가 1계층 장비에 들어오게 되면 이 전기 신호를 재생성하여 내보냄
- 이 때 장비가 주소의 개념을 이해할 수 없으므로 전기 신호가 들어온 포트를 제외하고 모든 포트에 같은 전기 신호를 전송함
- 허브(Hub), 리피터(Repeator): 네트워크 통신을 중재
- 케이블(Cable), 커넥터: 케이블 본체를 구성하는 요소
- 트랜시버(Tranceiver): 컴퓨터의 랜카드와 케이블을 연결하는 장비로 다양한 외부신호를 컴퓨터 내부 전기신호로 바꾸어주는 역할
정보처리기사 준비하면서 쎄빠지게 외우고 학부때 내내 했던 내용들이라 .. 기억들이 다 난다
'Code States > TIL' 카테고리의 다른 글
[0406] 네트워크 기초 - HTTP 버전별 특징 (0) | 2023.04.06 |
---|---|
[0406] 네트워크 기초 - 소켓과 포트의 특징 및 차이점 (0) | 2023.04.06 |
[0404] Section 1. 프로젝트 - WAS, Web Server 실습 Day 2 (0) | 2023.04.04 |
[0403] Section 1. 프로젝트 - WAS, Web Server 실습 Day 1 (0) | 2023.04.03 |
[0331] (페어) 데이터베이스 - 로그 파이프라인 (0) | 2023.03.31 |