네트워크 기초

cch_chan·2022년 3월 8일
0

DevOps

목록 보기
1/19

네트워크 단계별 계층구분

LayerOSI 7계층TCP/IP 계층
Layer 7응용 계층 (Application Layer)애플리케이션 계층
Layer 6표현 계층 (presentation)
Layer 5세션 계층
Layer 4전송 계층전송 계층
Layer 3네트워크 계층인터넷 계층
Layer 2데이터 계층네트워크 인터페이스 계층
Layer 1물리 계층
물리계층(Physical Layer)

전송 단위는 Bit를 사용합니다.
데이터 전달의 역할만을 수행합니다.
네트워크의 하드웨어 전송 기술로 구성됩니다.
사용 장비 : 허브, 리피터
 

데이터링크 계층(Data Link Layer)

전송 단위는 Frame을 사용하며, 주소는 MAC을 사용합니다.
데이터의 오류 문제를 해결하고, 신뢰성 있는 전송을 보장하기 위한 계층입니다.
에러 검출, 재전송, 흐름 제어 등의 기능을 갖습니다.
사용 장비 : 브리지, 스위치
 

네트워크 계층(Network Layer)

전송 단위는 Packet을 사용하며 주소는 IP를 사용합니다.
서로 다른 두 네트워크의 데이터 전송을 담당합니다.
데이터를 목적지까지 안전하고 빠르게 전달합니다.(라우팅 기능)
사용장비 : 라우터
 

전송 계층(Transport Layer)

전송 단위는 Segment를 사용하며 주소는 Port를 사용합니다.
종단 간(end-to-end) 통신을 다루는 최하위 계층입니다.
종단 간의 에러 복구와 흐름 제어를 담당합니다.
전송 계층은 프로세스 사이의 데이터 이동을 책임집니다.
TCP와 UDP 프로토콜이 대표적으로 전송 계층에 해당합니다.
사용 장비 : Gateway
 

세션 계층(Session Layer)

전송 단위는 Message입니다.
응용 프로세스 간의 통신을 제어하는 기능을 합니다.
사용장비 : NetBIOS
 

표현 계층(Presentation Layer)

전송 단위는 Message입니다.
데이터(Message)의 변환 작업을 하는 계층입니다.
송신 측과 수신 측 사이에서 데이터의 형식(jpg, png, gif..)을 정해줍니다.
응용 계층으로부터 받은 데이터의 보완과 전송을 담당합니다.
데이터를 암호화하고 압축하여 세션 계층으로 보냅니다.
 

응용 계층(Application Layer)

전송 단위는 Message입니다.
OSI 7 계층의 최상위 계층으로 사용자가 네트워크에 접속하는 것을 가능하게 합니다.
사용자에게 필요한 인터페이스(ex) 전자우편, 원격 접속 등)를 제공합니다.


출처: https://determination.tistory.com/entry/네트워크Network-OSI-7계층 [내삶발전기록용]

응용 계층 (Application Layer)

HTTP 버전별 특징

1. HTTP/0.9
HTTP의 이전 버전은 번호가 없었고 처음 구분하기 시작한게 HTTP/0.9로 구분
GET 메서드만 지원가능
HTTP 헤더 없었고, HTML 파일만 보내주는 기능을함

2. HTTP/1.0
1.0부터 헤더가 생겼고, 헤더의 도움으로 HTML 파일들 외에 다른 문서들을 전송하는 기능이 생김(Content-Type을 활용)
추가로 상태코드로 요청을 성공했는지, 실패했는지 확인이 가능해짐
메서드 추가

3. HTTP/1.1 -표준 프로토콜
커넥션이 재사용 될 수 있게하여, 사용된 커넥션을 다시 열어 시간을 절약하게 하였습니다.
Host 헤더 덕분에, 동일 IP 주소에 다른 도메인을 호스트하는 기능이 서버 코로케이션을 가능케 합니다.
그 외에도 다양한 기능(추가적인 캐시 제어 메커니즘이 도입, 언어, 인코딩 혹은 타입을 포함한 컨텐츠 협상 도입)등이 추가 되었고
1997년 1월에 처음 공개되어 15년간 확장되었습니다.

*코로케이션이란?
고객님의 서버를 내부에서 관리하지 않고 데이터센터에 위탁하여 초고속인터넷 백본망에서 고객의 서버와 통신장비를 직접 연결하고 관리해 주는 서비스 입니다.

4. HTTP/2 – 더 나은 성능을 위한 프로토콜
웹 페이지가 점차 복잡해지면서 생겨난 오버헤드와 복잡도 문제를 해결 하기위해 HTTP/2가 생겨남 기존 1.1과는 차이점이 존재

HTTP/2의HTTP/1.1 버전과 다른 몇가지 근본적인 차이점

  • 텍스트 프로토콜이라기 보다는 이진 프로토콜
    ->더 이상 읽을 수도 없고 수작업을 만들어낼 수 없습니다.
    하지만 최적화 기술이 구현 가능
  • 병렬 요청이 동일한 커넥션 상에서 다루어질 수 있는 다중화 프로토콜로, 순서를 제거해주고 HTTP/1.x 프로토콜의 제약사항을 막아줍니다.
  • 전송된 데이터의 분명한 중복과 그런 데이터로부터 유발된 불필요한 오버헤드를 제거하면서, 연속된 요청 사이의 매우 유사한 내용으로 존재하는 헤더들을 압축

5. HTTP/3
기존 HTTP/1, HTTP2가 사용하던 TCP가 아닌 UDP 기반 프로토콜인 QUIC를 사용하여 통신하는 프로토콜
UDP를 사용하는 이유로는 여러가지가 있겠지만, 찾아 본 바로는 UDP는 하얀 도화지 같은 프로토콜이라고 할 수 있습니다. 그만큼 커스터마이징이 용이하다는 장점이 있습니다 기존 TCP에서는 tcp를 사용하기 위해선 3way handshake가 tcp에서는 강제되었는데 UDP를 사용 함으로써, 그 과정을 날려버리고 다른 방법으로 신뢰성을 확보하고 UDP의 빠른 전송속도를 이용 할 수 있습니다.

  • 3way handshake 단점
    tcp는 ip주소와 포트로 연결을 식별하기 때문에 클라이언트의 ip가 바뀔때마다 연결이 끊어지고 다시 3way handshake 과정을 거쳐야하고 그 과정에서 레이턴시가 발생
  • TCP/UDP 차이
TCPUDP
연결방식연결형 서비스비연결형 서비스
패킷교환가상 회선 방식데이터그램 방식
전송 순서 보장보장함보장하지 않음
신뢰성높음낮음
전송 속도느림빠름

-> TCP 신뢰성이 높고 느리다 , UDP 신뢰성이 낮고 빠르다로 얼추 구분이 가능하다.

Session Layer - Socket

소켓, 포트 특징

  1. 소켓 이란?
    소켓은 프로세스가 네트워크를 통해서 데이터를 주고받으려면 반드시 열어야 하는 창구 같은 것 (양 방향 통신 목적)
    구조
    클라이언트와 서버 구조를 가짐 서버는 특정 포트 번호에 바인딩하여 작동하고, 클라이언트는 이미 리스닝중인 서버의 IP주소 포트번호를 알고 있기 때문에 해당 서버에 연결을 시도하고 연결이 되면 서버는 같은 포트에 바인딩 된 새로운 소켓을 형성하고, 기존 소켓으로는 클라이언트 요청을 받고 새로 생긴 소켓으로는 서버와 통신하여 양방향 통신가능

    기존의 연결된 소켓은 데이터를 주고 받은후 연결이 끊어지는것 아니기 때문에 채팅서비스, 스트리밍 서비스에 주로 이용됨

    *바인딩이란?
    바인딩(binding)이란 프로그램에 사용된 구성 요소의 실제 값 또는 프로퍼티를 결정짓는 행위를 의미합니다. 예를 들어 함수를 호출하는 부분에서 실제 함수가 위치한 메모리를 연결하는 것도 바로 바인딩입니다.

  2. 포트란 ?
    호스트에서 동작하는 여러 프로세스 중에 실제로 이 데이터를 받아야하는 프로세스까지 데이터를 전송해야함
    이때 프로세스를 식별하기 위해 호스트 내부적으로 프로세스가 할당받는 고유값을 포트라고 함
    송신 프로세스 또한 응답받기 위해 포트번호를 할당 받아야 함
    (이유 : 요청 받은 호스트가 내용을 처리후 다시 송신하려면 포트번호가 필요함)

  3. 소켓, 포트 차이
    포트는 고유 값이지만 소켓은 포트를 이용하여 생성이 가능하며 같은 포트 넘버를 가지는 중복된 소켓을 가질 수 있음
    -> 같은 IP주소, 포트넘버, 프로토콜을 가지고 있는 소켓이라도 서로 다른 소켓 일 수 있음.

Architecture

Proxy

프록시란?(proxy)
사전적 의미는 대리, 대리권을 의미. 이와 마찬가지로 프록시 서버는 원 서버를 대리하여 통신하며 캐시, 로드밸런서, 보안 등 중계 역할을 하는 하는 서버
구조상 어디에 위치 하느냐에 따라 포워드 프록시(forward proxy), 리버스 프록시(reverse proxy)로 나눠짐 일반적으로 프록시 서버는 포워드 프록시를 뜻함

로드밸런서?(Load Balancer)

사용자로부터 서비스 요청이 오면 로드 밸런서가 받아 사용자별로 다수의 서버에 요청을 분산시켜 부하를 분산하고 그 서버에서 장애가 발생하더라도 다른 서버에서 서비스를 제공하는 방식을 사용
사용이유
서비스 가용성을 높이기 위해 두 대 이상의 서버로 구성할때 서버의 ip가 다르면 전체 사용자에 영향을 미치진 않지만, 부분적 서비스 에러가 일어남 이러한 문제점을 해결하기 위해 로드 밸런서를 사용

캐시란? (cache)

컴퓨터 과학에서 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킵니다.
캐시에 데이터를 미리 복사해 놓으면 계산이나 접근 시간 없이 더 빠른 속도로 데이터에 접근할 수 있습니다.
특징
1. cache-control 속성을 통해 캐시저장장소, 유효한 시간, 권한을 지정가능
-> (public,private), max-age=(초단위), no-cache/ no-store/must-revalidate 등 명령어
2. 유효 시간이 지나도 캐시값을 불러 오고 싶을때는 검증 헤더사용
-> Last-Modified:if-modified-since, ETag:if-none-match 사용

profile
꾸준히 새로운 기술을 배워나가는중입니다.

0개의 댓글