공부하고 기록하는, 경제학과 출신 개발자의 노트

학습일지/네트워크

[Edwith] 통신의 기초 2강. 통신 프로토콜

inspirit941 2020. 1. 17. 15:33
반응형

https://www.edwith.org/tel-ewha-course/joinLectures/13274

 

통신의 기초 강좌소개 : edwith

- 도인실

www.edwith.org

2. 통신프로토콜

  1. 프로토콜이란?

통신회선을 이용해 컴퓨터 - 컴퓨터, 컴퓨터 - 단말기끼리 데이터를 주고받는 경우 “상호약속”

무엇을, 어떻게, 언제 통신할 것인지 약속하여 통신오류를 피하기 위한 규약.

  • 프로토콜의 3요소

    • 구문(syntax): 데이터블록의 format(형식).
    • 의미(Semantics): 상호작용, 오류제어 등을 위한 제어정보.
    • 동기(Timing): 속도 / 순서를 상호간에 맞추는 것.
  • 실제 프로토콜의 기능…
    많은 기능을 수행하며, 통신에서 매우 중요하다고.

    • 동기 제어 (synchronization)
    • 패킷의 분리 / 재결합
    • 흐름 제어(Flow Control) - 보내는 측이 데이터를 많이 보냈는데 받는 측이 수용할 능력이 부족한 경우… Overflow 발생, 재전송해야 하는 문제. 따라서 Flow Control이 네트워크 성능에 영향을 미친다. 받는 측에서 수용 가능한 속도로 보낼 수 있게 조절해주는 걸 말함.
    • 순서 제어(도착한 패킷의 순서)
    • 주소 지정(IP address)
    • 오류 제어, 경로 제어(routing)
    • Encapsulation
  1. 통신프로토콜 계층구조

계층구조… 각 계단마다 수행하는 기능이 다르다.

  • HW, SW별로 계층적 구성
  • 로직을 세부 모듈로 나누며, 별도 계층으로 구현
  • 각 계층은 전체 기능의 부분을 수행
  • 하위 계층은 상위 계층에 서비스 제공
  • 상위 계층은 하위 계층을 기반으로 수행
  • 한 계층의 변화가 다른 계층의 변화에 영향을 미치지 않음

프로토콜의 기본 동작.

보내는 측 = 상위 계층 -> 하위 계층으로 쭉 내려간 다음 전송 시작.
받는 측 = 하위 계층에서 받고, 하위 -> 상위 순으로 올라간다.

 

OSI 7계층 = 국제 표준 모델

 

각 계층마다 header가 붙고, 각 계층마다 더해진 header는 상대 컴퓨터의 동일 계층에서 뜯어볼 수 있다.

헤더: 해당 계층에서는 어떻게 이 데이터를 처리해야 하는지 안내를 제공한다고 보면 됨.

 

  1. TCP/IP 모델

OSI 7계층 모델… 복잡한 7개 계층의 계단구조. 따라서 좀 더 단순화된 5계층 모델이 TCP/IP이고, 이걸 더 많이 사용. 인터넷도 이 방식을 사용한다.

정확히는, Presentation / Session 기능이 그리 많은 일을 수행하는 편이 아님.

그래서 OSI의 7+6+5계층 일부를 합쳐 Application Layer로 통합. 5계층 나머지 일부와 4계층을 합쳐서 transportation Layer이 됨.

 

TCP/IP = 현재 인터넷 대표 프로토콜이며, 서로 다른 기종의 컴퓨터에서 데이터 송수신이 가능하도록 해준다.
메시지를 여러 패킷으로 분할해 전송하는 방식이며, 인터넷의 표준이 되는 많은 프로토콜로 구성되어 있다.

 

각 계층마다 여러 프로토콜이 동작하는 식.

User Data -> + 수송 계층에서의 header인 TCP header -> + IP 계층에서 IP header -> Network level packet에서 header 붙는다. 마지막 물리계층까지 내려간 뒤 전송되는 식.

 

  1. TCP vs UDP

TCP 5계층 중 4번째(transportation Layer)에서 쓰이는 프로토콜 중 하나 == TCP 프로토콜.
Transmission ctrl protocol의 약자.


연결지향형 서비스 (보내는 측 / 받는 측이 통신을 하기 전에 미리 ‘정보를 보내도 좋은지’물어보는 식.

 

보내는 측에서 “나 보내도 돼?” -> 받는 측에서 “ㅇㅇ 보내도 됨” -> 받는 측에서 “ㅇㅇ 잘 받음”. 총 세 번에 걸친 connection이 이루어진다. 사전에 ‘보내도 되냐고 허락을 받는 걸 연결지향형 서비스라고 칭하는 듯)

 

이러는 이유? Application 간 ‘신뢰성 있는 연결’을 제공하기 위해서. 잘 받았는지 일일이 확인하겠다는 걸로 이해해도 된다.

 

마찬가지로, 데이터 끊는 것도 몇 단계에 걸쳐 이루어진다.

신뢰성이 핵심이며, 따라서 패킷의 전송 여부도 매번 체크, 중복제거 등을 보장한다. 데이터 오류가 있는지도 체크하는 프로토콜.

 

또 다른 형태의 프로토콜 .. UDP (User Datagram Protocol). TCP와 대응되는 개념이라고 생각해도 됨.

 

TCP에 비해 UDP는 신뢰성을 보장하지 않음. 비연결형 (받을 수 있으면 받고, 못 받으면 어쩔 수 없다)
일일이 체크하는 TCP에 비해 과정이 단순함 = 빠름. 최소한의 매커니즘을 보장하는 형태. 대신 전송여부 / 중복제거 등을 보장하지 않음.
데이터에 오류가 있는지 체크할 수는 있다. (UDP 헤더에서 제공하긴 함)

 

인터넷 전화같은 경우… 뭐 꼭 데이터가 정확히 전달되지 않아도 된다. 일단 보내고, 만약 특정 말이 끊겼으면 다시 말해달라고 하면 되는 문제임. 이런 형태의 서비스 (Voice on IP - VOIP)에서는 UDP 형태를 선호함.
또는 스트리밍 서비스. 화소가 비거나 살짝 일그러져도 일단 재생되는 게 더 좋은 경우
(다시말해, 실시간성이 중요한 서비스라면 UDP)

 

반응형