IT STUDY LOG

[네트워크 기초] 01. OSI 7계층과 TCP/IP 4계층 본문

devops bootcamp 4/클라우드 서비스 운영

[네트워크 기초] 01. OSI 7계층과 TCP/IP 4계층

roheerumi 2023. 4. 6. 13:33

# 학습 목표

  • 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 - 네트워크 액세스 계층

물리 계층

- 물리적 연결과 관련된 정보 정의

- 물리적 장비를 통해 전기 신호를 전달하는데 초점

- 주소의 개념을 이해할 수 없는 장치이므로 전기 신호가 들어온 포트를 제외하고 모든 포트에 같은 전기 신호를 전송

 

물리 계층의 주요 장치

허브와 리피터

- 네트워크 통신을 중재

케이블과 커넥터

- 케이블 본체를 구성하는 요소

트랜시버

- 컴퓨터의 랜카드와 케이블을 연결하는 장비로 다양한 외부 신호를 컴퓨터 내부 전기 신호로 바꾸어주는 역할

 

 

 

Comments