IT STUDY LOG
[네트워크 기초] 01. OSI 7계층과 TCP/IP 4계층 본문
# 학습 목표
- OSI 7 계층 모델과 TCP/IP 4 계층 모델을 기반으로 한 네트워크 흐름에 대해 이해할 수 있다.
- TCP/IP 패킷이 왜 필요한 지 설명할 수 있다.
- TCP와 UDP의 차이에 대해 설명할 수 있다.
- 데이터 링크 계층과 물리적 계층에 대해서 설명할 수 있다.
- HTTP 기본 동작과 특징에 대해 이해할 수 있다.
- 상태유지(Stateful)와 무상태(Stateless)의 개념에 대해 설명할 수 있다.
- HTTP 메시지 구성에 대해 설명할 수 있다.
# 학습 내용
목차
1. OSI 7계층과 TCP/IP 4 계층
2. Application Layer - HTTP
3. Network Layer - IP와 IP Packet
4. Transport Layer - TCP vs UDP
5. Session Layer - Socket(소켓)
6. Data Link Layer - 데이터 링크 레이어
7. Physical Layer - 네트워크 액세스 계층
1. OSI 7 계층과 TCP/IP 4 계층
OSI 7 계층 : 이론적인 모델
상위 계층 - 데이터를 만드는데 집중
애플리케이션 계층, 7 계층
- 애플리케이션 프로세스를 정의하고, 애플리케이션 서비스를 수행
- 대표적인 프로토콜 : HTTP, FTP, SMTP 등
표현 계층, 6 계층
- 일종의 번역기 같은 역할을 수행
- MIME 인코딩이나 암호화, 압축, 코드 변환과 같은 동작
세션 계층, 5 계층
- 양 끝 단의 프로세스가 연결을 성립하도록 도와주고, 작업을 마친 후에는 연결을 끊는 역할
전송 계층, 4 계층
- 데이터들이 실제로 정상적으로 보내지는지 확인하는 역할
- 네트워크 계층에서 사용되는 패킷은 유실되거나 순서가 바뀌는 경우가 있는데 이를 바로 잡아주는 역할도 담당
- 대표적인 프로토콜 : TCP, UDP
하위 계층 - 데이터를 잘 전달하는데 집중
네트워크 계층, 3 계층
- IP주소와 같은 논리적인 주소를 정의
- 라우터를 통해 정의한 IP주소를 이해하고, 이를 사용해 최적의 경로를 찾아 패킷을 전송
- 대표적인 프로토콜 : ICMP, IP, IGMP
데이터링크 계층, 2 계층
- 물리 계층에서 들어온 전기 신호를 모아 알아볼 수 있는 데이터 형태로 처리
- 주소 정보를 정의하고 출발지와 도착지 주소를 확인한 후, 데이터 처리를 수행
- 대표적인 프로토콜 : FDDI, Ethernet, PPP
물리 계층, 1 계층
- 물리적 연결과 관련된 정보를 정의
- 전기 신호를 전달하는데 초점을 두고, 들어온 전기 신호를 그대로 잘 전달하는 것이 목적
TCP/IP 4 계층 : 실무적인 프로토콜
상위 계층 - 데이터를 만드는데 집중
애플리케이션 계층 : OSI 7 계층의 응용 계층, 표현 계층, 세션 계층
전송 계층 : OSI 7계층의 전송 계층
하위 계층 - 데이터를 잘 전달하는데 집중
인터넷 계층 : OSI 7계층의 네트워크 계층
네트워크 인터페이스 계층 : OSI 7계층의 물리 계층, 데이터링크 계층
2. Application Layer - HTTP
HTTP의 역사
HTTP/0.9
- GET 메서드만 지원, HTTP 헤더 없음
HTTP/1.0
- 메서드, 헤더 추가
HTTP/1.1
- TCP 기반
- 현재 주로 사용하는 버전
HTTP/2
- TCP 기반
- 성능 개선
HTTP/3
- UDP 기반
- 성능 개선
HTTP의 특징
HTTP 메시지
단순함, 확장 가능
클라이언트 서버 구조
- Requset, Response 구조
- 클라이언트는 서버에 요청을 보내고, 응답을 대기
- 서버가 요청에 대한 결과를 만들어 응답
무상태 프로토콜 (Stateless)
- 서버가 클라이언트의 상태를 보존하지 않음
장점 | 단점 |
서버 확장성 높음 (스케일 아웃, 수평 확장) | 클라이언트가 추가 데이터를 전송해야 함 |
- 상태 유지의 경우 중도에 다른 서버로 전환이 어려우나, 무상태일 경우에는 클라이언트가 항상 필요한 데이터를 모두 요청하므로 가능
- 갑자기 클라이언트가 증가해도 서버를 대거 투입할 수 있고 응답 서버를 쉽게 바꿀 수 있어 무한하게 서버 증설이 가능
But..
- 실무적인 한계가 존재
> 모든 것을 무상태로 설계할 수 있는 경우도 있으나 없는 경우도 존재 (ex) 로그인 필요 없는 화면은 가능하나 로그인해야 할 경우 유지
- 상태 유지는 최소한만 사용
비연결성 (Connectionless)
- 연결을 유지하지 않는 모델로 요청을 주고받을 때만 연결을 유지하고 TCP/IP 연결 종료 -> 최소한의 자원으로 서버 유지가 가능
- 일반적으로 초 단위 이하의 빠른 속도로 응답
- 1시간 동안 수천 명이 서비스를 사용해도 실제 서버에서 동시에 처리하는 요청은 수십 개 이하로 매우 작으나, 트래픽이 많고 큰 규모의 서비스를 운영할 경우 비연결성은 한계 존재
> 웹 브라우저로 사이트 요청 시 HTML 뿐 아니라 JS, CSS, 이미지 등 많은 자원을 요청하고 그때마다 TCP/IP 연결 확립, 종료가 필요하므로 부하
> HTTP 지속 연결로 문제 해결
> HTTP/2, HTTP/3에서 더 많은 최적화
3. Network Layer - IP와 IP Packet
IP와 IP Packet
IP 주소 부여
- 각 단말에 IP 주소 부여를 통해 네트워크 환경에서 데이터 통신
IP 패킷 정보
- 출발지 IP, 도착지 IP, 전송 데이터 포함
- 클라이언트/서버는 IP 패킷을 통해 요청, 응답을 전달
IP 프로토콜의 한계
비연결성
- 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
비신뢰성
- 중간에 패킷이 사라질 수 있으나 클라이언트는 파악할 방법이 없음
- 패킷의 도착 순서를 보장할 수 없음
4. Transport Layer - TCP vs UDP
TCP
TCP/IP 4 계층에서 데이터 전달 방법
- 응용 계층, 프로그램에서 사용자 데이터 생성되어 SOCKET을 통해 전송 계층에 전달
> NETWORK SOCKET : 프로그램이 네트워크에서 데이터를 송수신할 수 있도록, 네트워크 환경에 연결할 수 있게 만들어진 연결 부분
- 전송 계층에서 TCP 정보를 생성하고 메시지 데이터를 포함해 TCP 세그먼트를 생성
- 인터넷 계층에서 IP 패킷을 생성하고 네트워크 인터페이스 계층을 통해 이더넷 프레임이 되어 전달
TCP/IP 패킷이 포함하고 있는 정보
- 출발지 PORT
- 목적지 PORT
- 전송 제어
- 순서
- 검증 정보
TCP (Transmission Control Protocol, 전송 제어 프로토콜) 특징
연결 지향 : TCP 3 Way Handshake, 4 Way Handshake
- flag를 통해 연결을 확립하고 연결을 종료
데이터 전달 보증
- 데이터 전송이 성공적으로 이루어지면 이에 대한 응답을 돌려주므로 IP 패킷의 한계인 비연결성을 보완
순서 보장
- 패킷이 순서대로 도착하지 않을 경우 TCP 세그먼트에 있는 정보를 토대로 다시 패킷 전송을 요청하므로 IP 패킷의 한계인 비신뢰성을 보완
∴ TCP는 신뢰할 수 있는 프로토콜
UDP
UDP(User Datagram Protocol, 사용자 데이터그램 프로토콜) 특징
- 비연결지향
- 데이터 전달 보장하지 않음
- 순서 보장하지 않음
- 데이터 전달 및 순서가 보장되지 않지만 단순하고 빠름
- 신뢰성보다는 연속성이 중요한 서비스 (ex) 실시간 스트리밍 등에 자주 사용
- IP 프로토콜에 PORT, 체크섬 필드만 추가된 단순한 프로토콜
- TCP에 비해 커스터마이징이 가능한 장점
5. Session Layer - Socket(소켓)
소켓
- 네트워크 환경에서 클라이언트와 서버가 서로 연결하게 만들어진 연결부
- 네트워크 상에서 돌아가는 두 개의 프로세스 간 양방향 통신의 하나의 엔드포인트(엔드포인트: IP + Port)
- 소켓은 포트 번호에 바인딩되어 전송 계층에서 데이터를 주고받는 애플리케이션을 식별할 수 있게 함
- 애플리케이션 계층에 존재하는 프로세스들은 데이터를 주고받기 위해 소켓을 거쳐 전송 계층의 네트워크로 전달해 데이터를 송수신
- IP와 포트 번호를 통해 누가 어디로 보낼지를 특정
> IP : 데이터를 전달받을 호스트 주소
> PORT : 그 데이터를 전달받은 호스트 안에서 원하는 프로세스를 찾는 용도
소켓이 포함하는 정보
- 프로토콜
- 호스트 IP 주소 (Source IP Address)
- 호스트 Port 번호 (Source Port Nunber)
- 목적지 IP 주소 (Destination IP Address)
- 목적지 Port 번호 (Destination Port Number)
소켓의 특징
- 데이터 통신은 프로세스 간의 양방향 통신이 목적이므로 클라이언트-서버 구조
> 서버 : 특정 포트 번호에 바인딩해 작동, 소켓을 통해 클라이언트 요청을 리스닝하며 대기
> 클라이언트 : 리스닝하고 있는 서버의 IP 주소 및 포트 번호로 연결 시도
- 연결이 진행되면 서버는 같은 포트에 바인딩된 "새로운" 소켓을 형성하고, "기존" 연결 소켓으로는 연결된 클라이언트 요청 처리하므로 같은 포트에 여러 개의 소켓을 생성해 사용 가능
- 연결된 소켓은 데이터를 주고받은 후 연결이 끊어지는 것이 아니라 양 쪽에서 실시간 통신이 가능하므로 실시간으로 메시지 송수신하는 채팅 서비스나 스트리밍 서비스에 주로 사용
6. Data Link Layer - 데이터 링크 레이어
데이터 링크 계층
- 전기 신호를 모아 알아볼 수 있는 데이터 형태로 처리
- 출발지, 목적지 주소를 확인하고 제대로 전달된 것이 맞는지, 처리해야 하는지 검사한 후 데이터 처리
- 플로우 컨트롤(흐름 제어)을 통해 수신하는 호스트가 데이터를 받을 수 있는지 확인
데이터 링크 계층의 장치
네트워크 인터페이스 카드(Network Interface Card, NIC)
- 랜카드, 네트워크 카드, 네트워크 인터페이스 컨트롤러, 네트워크 어댑터
- 컴퓨터를 네트워크에 연결하기 위한 하드웨어 장치(기본적으로 노트북과 데스크톱은 장착되어 있음)
- 주요 역할
(1) 직렬화
> 전기적 신호를 데이터 신호 형태 혹은 그 역으로 상호 변환
(2) MAC(Media Access Control) 주소
> NIC는 고유한 MAC 주소를 가지고 있어 네트워크에 접속하는 장비를 유일하게 식별
> ① 입력되는 전기 신호를 데이터 형태로 만들고 ② 데이터에서 도착지 MAC 주소를 확인한 후 자신에게 들어오는 전기 신호가 맞는지 확인 ③ 만일 자신에게 들어오는 전기 신호가 아닐 경우 폐기, 맞으면 데이터를 상위 계층에서 처리하도록 메모리 적재
스위치
- 여러 장비를 연결하고 통신 중재, 케이블을 한 곳으로 모아주는 역할 수행
- 주어진 MAC 주소를 보고 어디로 연결되는지, 포트는 어디인지 확인
- 데이터를 기반으로 통신할 때 포트를 적절히 필터링하고 정확한 포트로 포워딩
필터링 | 포워딩 |
- 도착지 MAC 주소가 스위치의 MAC 테이블 중 어떤 장치와 일치하는지 판단해 일치하지 않는 장치에는 패킷을 보내지 않는 것 | - 스위치의 MAC 테이블에 비교해 정보가 일치하는 장치의 포트로 패킷 포워딩 |
7. Physical Layer - 네트워크 액세스 계층
물리 계층
- 물리적 연결과 관련된 정보 정의
- 물리적 장비를 통해 전기 신호를 전달하는데 초점
- 주소의 개념을 이해할 수 없는 장치이므로 전기 신호가 들어온 포트를 제외하고 모든 포트에 같은 전기 신호를 전송
물리 계층의 주요 장치
허브와 리피터
- 네트워크 통신을 중재
케이블과 커넥터
- 케이블 본체를 구성하는 요소
트랜시버
- 컴퓨터의 랜카드와 케이블을 연결하는 장비로 다양한 외부 신호를 컴퓨터 내부 전기 신호로 바꾸어주는 역할
'devops bootcamp 4 > 클라우드 서비스 운영' 카테고리의 다른 글
[Docker] 02. Docker CLI (0) | 2023.04.12 |
---|---|
[Docker] 01. 왜 Docker인가? (0) | 2023.04.11 |
[Docker] 00. Before You Learn (0) | 2023.04.11 |
[YAML] 01. YAML과 JSON (0) | 2023.04.11 |
[네트워크 기초] 02. 아키텍처를 구성하는 요소들 (0) | 2023.04.07 |