CS

네트워크 프로토콜

빛날희- 2022. 8. 30. 10:50
👥

인프런의 파이썬 프로그래밍 강의, 유튜브 강의를 참고하여 정리하였습니다.


네트워크 통신이란?

컴퓨터와 컴퓨터가 연결된 것을 네트워크라고 합니다. 그리고 컴퓨터 간 통신을 네트워크 통신이라고 합니다.

다음 과정을 통해 네트워크 통신이 이뤄집니다.

네트워크 통신과정

https://www.inflearn.com/course/파이썬-프로그래밍/unit/17894
  1. 클라이언트가 서버에 요청을 하면 listner가 듣고 socket으로 넘겨준다.
  1. 서버는 클라이언트로부터 받은 요청에 대해 작업(데이터 베이스 작업 등..)을 한다.
  1. 작업 결과물을 다시 클라이언트로 보내준다.

여기서 패킷은 클라이언트와 서버 간 주고받고 하는 데이터 단위를 말한다.

이어서, 통신이 이뤄지기 위해선 몇가지 조건이 필요합니다.

네트워크 통신의 조건

  1. 컴퓨터 간 네트워크가 연결되어 있어야 합니다. → 당연히 매체가 연결되어 있어야 통신이 가능하겠죠?
  1. 각 컴퓨터의 주소, 즉 IP가 필요합니다.
  1. 통신 장치, 즉 소켓 socket이 필요합니다.

네트워크 통신 방식에는 다음 두가지가 존재합니다.

통신 방식

  1. TCP방식: 송신과 수신을 확인하는 방식 → 잘 전달됐는지 확인해야하기 때문에 통신속도가 UDP보다는 느림
  1. UDP방식: 송수신을 확인하지 않는 방식 → 상대방이 내 말을 듣든 말든 그냥 내 말만 하는 통신 방식이라고 생각하면 될 것 같네요

프로토콜이란?

다른 컴퓨터이더라도 서로 데이터를 통신하기 위해선 일종의 약속이 필요하겠죠?

프로토콜은 데이터 통신을 원활하게 하기 위해 필요한 통신 규약입니다.

특정 제품끼리만 통신이 가능한 프로토콜을 독점 프로토콜(IPX/SPX, AppleTalk)이라고 하고, 범용적으로 통신할 수 있는 프로토콜을 비독점 프로토콜(TCP/IP)이라고 합니다.

프로토콜의 3요소

프로토콜은 다음과 같은 요소로 구성됩니다.

  • Syntax: 규약을 위한 문법이다. 예를 들어 전화번호는 다음과 같은 문법을 따른다. 031- 000-0000
  • Semantics: 규약의 문법 대한 의미이다. 예를 들어, 전화번호에서 앞부분(031, 02…)은 지역번호를 의미한다.
  • Timing: 두 기기 간 통신 순서와 속도를 제어하는 규정이다.

프로토콜의 기능

프로토콜은 다음과 같은 기능들을 제공합니다.

  • 단편화와 재조립

    너무 많은 데이터가 있을 경우, 패킷 단위로 잘라서 보내는 것을 단편화라고 한다.

    데이터를 받는 기기에서 단편화된 데이터인 패킷을 다시 조립하는 것을 재조립이라고 한다.

  • 캡슐화

    데이터를 캡슐처럼 감싸는(제어정보 header를 부착하는) 기능이다. 데이터가 어떤 종류이냐에 따라서 캡슐화의 방식이 달라진다.

    캡슐화를 하는 첫 번째 이유는 데이터가 손상되지 않게 하기 위해, 즉 데이터의 안정성을 보장하기 위함이다.

    두 번째 이유는 데이터를 보안하기 위함이다. → 데이터가 그대로 드러나있는 것 보다는 포장되어 있는 것이 더 안전하겠죠?

  • 연결 제어

    연결형과 비연결형 통신을 제어하는(통신로를 개설, 유지, 종결하는) 기능이다.

    연결형은 정보를 주고받는 기기 간 연결이 되어있어야 통신이 가능한 타입이다. 예로 ‘전화’를 들 수 있는데, 전화는 상대방이 전화를 받아야 내가 정보를 전달할 수 있는 구조이므로, ‘전화’는 연결형 통신이다.

    반대로 비연결형은 기기 간 연결이 되어있지 않아도 통신이 가능한 타입이다. 예로 ‘편지’를 들 수 있는데, 편지는 전화와 달리 정보를 보내고픈 상대방과 연결이 되어있지 않아도 일방적으로 정보를 보낼 수 있다. 따라서 ‘편지’는 비연결형 통신이라고 볼 수 있다.

  • 흐름 제어

    데이터 양이나 통신속도 및 흐름이 수신 측의 처리 능력을 초과하지 않도록 제어하는 기능이다.

    통신 역시 데이터를 주고받는 기기 간 속도가 맞아야한다. 한 쪽이 통신 속도가 빠르고, 다른 쪽이 통신 속도가 느리면 데이터의 흐름이 정상적이지 않을 것이다.

    따라서 한 쪽이 느리면 다른 쪽도 느리게 통신하도록 맞추거나, 혹은 빠른 쪽이 데이터를 한번 보내고 느린 쪽이 처리를 끝낼 때까지 기다리거나 하는 등의 방식을 통해 흐름을 제어할 수 있다.

  • 오류 제어

    데이터 전송 중 발생하는 오류를 검출하고 정정하는 기능이다.

    데이터가 손실되었을 경우 다시 보내달라고 요청하거나, 수신자가 직접 수정하는 방식 등을 통해 오류를 제어할 수 있다.

  • 동기화

    두 통신 객체의 상태(시작, 종료 등)를 일치시키는 기능으로, 동기식과 비동기식이 존재한다.

    동기식 동기화는 시간대를 맞추는 동기화로, 지정된 시간에 맞춰 객체 간 상태를 동기화를 하는 방식이다.

    비동기식 동기화는 데이터가 들어오는 순서대로, 즉 데이터 중심으로 동기화하는 방식이다.

  • 주소지정

    발생지, 목적지와 같은 주소를 명기해 데이터를 정확히 전달하는 기능이다.

    캡슐화할 때 붙이는 제어정보에 주소를 붙인다. 즉 택배에 송장을 붙이는 것 처럼, 데이터에 IP주소 혹은 mac주소를 붙여서 주소를 명기한다.

  • 다중화

    하나의 통신로를 여러개로 나누거나, 혹은 여러개의 통신로를 하나의 통신로로 변환시켜 다수의 노드가 동시에 통신로를 사용할 수 있도록 하는 기능이다.

    도로를 생각해보자. 하나의 도로를 하나의 자동차가 온전히 소유하여 다니는 경우는 없다. 일반적으로는 여러 대의 자동차가 하나의 도로를 공유하게 된다. 이처럼 네트워크 통신에서도 한 채널(도로)을 여러 노드(자동차)가 공유하는데, 이를 가능토록 해주는 것이 다중화 기능이다.

프로토콜의 종류

계층프로토콜설명
ApplicationHTTPWWW 상에서 주고 받는 프로토콜로, 주로 웹 상에서 html 문서 및 페이지를 주고 받는데 쓰인다. 80포트를 사용한다.
HTTPSHTTP의 보안 강화버전이다. SSL이나 TLS프로토콜을 통해 세션을 암호화 및 강화하며 443포트를 이용한다.
FTPTCP/IP프로토콜을 이용해 서버와 클라이언트 간 파일 전송을 담당하는 프로토콜이다.
Telnet인터넷 또는 로컬에서 연결을 위해 쓰이지만, 보안 문제로 현재는 SSH로 대체되고 있다.
SMTP인터넷 환경에서 이메일을 보내기 위해 사용되며 25번 포트를 이용한다. SMTP를 이용해 메시지를 받고 TCP를 이용해 전송하는 방식을 사용한다.
TransportTCP통신, 인트라넷과 같이 인터넷 환경이 가능한 컴퓨터 환경에서 실행되는 애플리케이션 정보를 세션 연결 하에 에러 없이 전송한다. 전송 도중 세션 연결이 끊어지면 전송하는 데이터 정보를 받아볼 수 없다. 주로 안정성이 요구되는 애플리케이션에서 사용된다.
UDP데이터 교환을 위해 사용되며 별도 세션 연결 없이 전송된다. 따라서 오류 제어가 지원되지 않아 안정성이 요구되지 않는 애플리케이션(실시간 전송 등)에서 주로 사용된다.
PresentationASCII, MPEG, JPEG, MIDI
SessionNetBIOS, SAP, SDP, NWLink
NetworkIP, IPX
Data LinkEthernet, Token Ring, FDDI, Apple Talk


Uploaded by N2T

'CS' 카테고리의 다른 글

파이썬 - 객체지향 프로그래밍  (0) 2022.08.25
파이썬 - 자료구조와 동작원리  (0) 2022.08.18