티스토리 뷰

[한빛아카데미] 쉽게 배우는 데이터 통신과 컴퓨터 네트워크 책으로 학습한 내용을 정리한 것입니다.

 

* 계층 구조의 개념

1) 모듈화

- 복잡한 시스템을 기능별로 모듈화하면 시스템 구조가 단순해짐

- 각 단위 모듈이 독립적인 기능을 수행하기 때문에 고장이나 업그레이드 등의 상황에 손쉽게 대처 가능

- 장점: 설계의 독립성(재활용성), 디버깅의 용이, 유지보수 성능 개선

 

2) 계층 구조

- 분할된 모듈들은 협력 관계를 유지하면서 유기적으로 동작하며, 대부분의 모듈 구조에서는 특정 모듈이 다른 모듈에 서비스를 제공하는 형식의 계층 구조를 이룸

- 네트워크에서도 독립적인 고유 기능을 수행하는 모듈들이 상하위의 계층 구조로 연결되어 동작함

출처 : https://velog.io/@myday0827/네트워크-모델

 

[모듈화된 계층 구조 프로토콜 장점]

- 복잡하고 큰 시스템을 기능별로 작게 분류해서 간단하고 작은 시스템으로 재구성할 수 있음

  따라서 전체 시스템을 이해하기 쉽고, 시스템을 설계하고 구현하기도 편리함

- 상하 계층에 인접한 모듈 사이의 인터페이스를 포함하여 분할된 모듈이 연동할 수 있는 표준 인터페이스를 제공하며, 모듈 인터페이스는 가능한 단순하게 구현하여 모듈들이 최대한 독립적으로 동작하도록 해야 함
 -> 모듈의 독립성은 전체 시스템의 구조를 단순하게 만들어줌

- 전송 매체 양단에 있는 호스트가 수행하는 프로토콜들은 좌우 대칭 구조로, 대칭 구조에서는 통신 양단에 위치하는 동일 계층 사이의 프로토콜을 단순화할 수 있음

- 각 계층의 기능 오류를 수정하거나 향상시켜야 하는 경우에 전체 시스템을 재작성하지 않고 해당 계층의 모듈만 교체하면 됨

 

* 프로토콜 설계 시 고려사항

1) 주소 표현

- 시스템의 설계 과정에서 맨 먼저 고려해야 하는 중요한 개념

- 여러 호스트가 연결된 환경에서 특정 호스트끼리 통신하기 위해 상대방을 구분하는 방법

 

2) 오류 제어

- 전송 과정에서 데이터 분실, 데이터 변형 등의 오류가 발생했을 때 데이터를 복구하는데 사용

- 전송 오류에는 데이터 분실 오류와 데이터 변형 오류가 존재함

 

[전송 결과 유형]

출처 : https://velog.io/@myday0827/네트워크-모델

 

 

3) 흐름 제어

- 송신 호스트의 전송 속도를 조절하는 기능

- 수신 호스트의 버퍼 처리 속도보다 송신 호스트가 데이터를 전송하는 속도가 빠르면 논리적인 데이터 분실 오류가 발생할 수 있음

 

4) 데이터 전달 방식

- 단방향(Simplex) : 일대일 통신 환경에서 데이터를 한쪽 방향으로만 전송하는 것

- 전이중(Full Duplex) :  양쪽에서 데이터를 동시에 전송하는 것 -> 일반적인 통신 프로토콜의 전이중 방식 지원

- 반이중(Half Duplex) : 데이터가 양방향으로 전송되지만 특정 시점에는 한쪽 방향으로만 전송하는 것

 

 

* 서비스 프리미티브

- 프로토콜은 계층 구조로 이루어져 있으며, 하위 계층이 상위 계층에 서비스를 제공하는 방식으로 동작함

- 하위 계층이 상위 계층에 제공하는 서비스는 프리미티브(Primitive) 형태로 구현됨

- 계층 구조 프로토콜에서 하위 계층이 상위 계층에 제공하는 서비스의 종류에는 연결형과 비연결형이 있음

1) 연결형 서비스(Connection-oriented service)

 - 연결형 서비스를 이용하는 절차는 3가지

 (1) 데이터 전달 경로를 설정하는 연결 설정 단계 필요

 (2) 연결 설정이 되면 데이터 전송 가능

 (3) 데이터 전송이 완료되면 연결을 끊는 연결 해제 단계 필요

 

[연결형 서비스의 프리미티브 종류]

종류 용도
CONNECT 연결 설정
DATA 데이터 전송
DISCONNECT 연결 해제

 

2) 비연결형 서비스(Connectionless service)

 - 전송할 데이터가 있으면 각 데이터를 독립적으로 목적지 호스트로 전송

 - 데이터는 독립적인 경로 선택 과정에 의해 전달되므로 도착하는 순서가 보낸 순서와 일치하지 않을 수 있음

 

 

* 서비스 프리미티브의 기능

기능 설명
Request 클라이언트가 서버에 서비스를 요청함
Indication 서버에 서비스 요청이 도착했음을 통지함
Response 서버가 클라이언트에 서비스 응답을 회신함
Confirm 클라이언트에 응답이 도착했음을 통지함

 

 

* 서비스 프리미티브의 동작 원리

- 클라이언트로부터 Request가 발생하면 서버에 Indication 형태로 전달되어 서버에서 인지하며, 서버에서는 해당 프리미티브를 올바르게 수신하였음을 클라이언트에 통보하기 위하여 Response를 응답으로 보내고, 이는 클라이언트에 Confirm 형태로 도착함

출처 : https://choimungu.tistory.com/42?category=880114

 

1) Request

 - 클라이언트에서 발생하며, 서버가 프리미티브의 기능을 수행하도록 하위 프로토콜에 요청할 때 사용함

 - 연결 설정 요청(CONNECT.Request), 데이터 전송 요청(DATA.Request), 연결. 해제 요청(DISCONNECT.Request)등 존재 

 

2) Indication

 - 클라이언트로부터 Request 요청을 수신한 서버의 하위 프로토콜은 Indication을 사용해서 프리미티브 요청이 발생했음을 알림

 - 연결 설정, 데이터 전송, 연결 해제에 대해 CONNECT.Indication, DATA.Indication, DISCONNECT.Indication 순으로 사용

 

3) Response

 - 클라이언트로부터 프리미티브를 받은 서버에서는 Response를 이용해 클라이언트에 응답함

 - 연결 설정 요청은 CONNECT.Response를 사용해 연결 허용이나 거부로 응답하고, 데이터는 DATA.Response, 연결 해제는 DISCONNECT.Response로 전달함 

 

4) Confirm

 - 서버에서 보낸 응답은 Confirm 형태로 클라이언트에 회신됨

 - 연결 설정은 CONNECT.Confirm, 데이터는 DATA.Confirm, 연결 해제는 DISCONNECT.Response로 전달함

 

 

* OSI 7계층 모델

- 용어 정의

 1) 계층 n 프로토콜(Protocol) : 임의의 호스트에서 실행되는 계층 n 모듈은 상대 호스트의 계층 n 모듈과 논리적으로 통신할 때 사용하는 규칙으로, 프로토콜의 역할은 프로토콜에 정의된 기능을 수행하면서 필요한 정보를 서로 교환하는 것

 2) 동료 프로세스(Peer Process) : 같은 프로토콜을 사용하여 통신하는 동일 계층에 위치한 통신 양단

 

- 한 호스트에서 상하로 이웃하는 계층에 위치한 모듈 사이에는 인터페이스가 정의되어 둘 사이의 접근 방법을 제한하고 상위 계층에서 하위 계층의 인터페이스를 통해 하위 계층의 서비스를 이용할 수 있음

출처 : https://choimungu.tistory.com/42?category=880114

 

- 헤더 정보 

 프로토콜 스택의 맨 위에 위치한 일반 사용자는 전송 데이터가 있을 경우 응용 계층에 보내 전송 요청

 응용 계층에서 데이터에 자신의 프로토콜에서 정의한 헤더 정보를 추가해 표현 계층으로 보냄

 -> 이를 물리 계층에서 데이터가 물리적으로 전송될 때까지 반복함 

 물리 계층에서는 수신 호스트에 데이터를 실제로 전송

 물리 계층에서 데이터를 전송한 수신한 호스트에서는 송신 절차와 반대 방향으로 헤더를 제거하는 과정 반복

 

- 중개 기능

 데이터가 목적지까지 올바르게 전달되도록 경로 배정 기능을 수행함

 라우팅(Routing) : 중개 시스템에서는 경로 배정하는 기능 (네트워크 계층의 프로토콜이 동작)

 라우터(Router) : 중개 노드, 자신에게 도착한 데이터의 헤더 정보를 해석하여 변환하는 작업을 적절한 경로로 전달하기 위해 진행

 

 

* 계층별 기능

1) 물리 계층(Physical Layer)

- 전송 매체의 물리적 인터페이스에 관한 사항 기술

- 전송 매체에서는 개별 정보의 비트 교환 문제를 다룸

- 하드웨어 시스템으로 구현됨

- 물리 계층에서 다루는 전송 매체의 특성에는 데이터의 전송 속도, 송수신 호스트 사이의 클록 동기화 방법, 물리적 연결 형태 등 존재

 

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

- 물리 계층을 통해 전송되는 데이터의 물리적 전송 오류를 해결하여 네트워크 계층에 신뢰성 있는 패킷 전송을 보장해 전송 오류에 대한 부담을 없애줌

- 갈림길에서 전송 경로를 선택할 수 없어 두 호스트가 일대일로 직접 연결된 환경에서만 데이터 전송을 지원

- 프레임(Frame) :  데이터 링크 계층을 이용해 전송되는 데이터

- 프레임 헤더에 표시되는 송수신 호스트 정보에는 LAN 카드에 내장된 송수신 호스트의 MAC 주소가 기록됨

 

3) 네트워크 계층(Network Layer)

- 송신 호스트가 전송한 데이터가 어떤 경로를 통해 수신 호스트에 전달되는지를 결정하는 라우팅 문제 처리

- 전달 경로 선택은 미리 정해지는 정적(Static) 방식과 네트워크 현재 부하 상태에 따라 결정되는 동적(Dynamic) 방식으로 구분

- 패킷(Packet) : 네트워크 계층에서의 전송 데이터

- 인터넷에서는 IP 프로토콜이 네트워크 계층의 기능을 수행하므로 호스트의 IP 주소가 경로 선택에 중요한 기준이 됨

- 네트워크의 트래픽이 과도하게 증가하는 문제를 조절하는 혼잡 제어(Congestion Control) 기능 담당

 

4) 전송 계층(Transport Layer)

- 송신 프로세스와 수신 프로세스를 직접 연결하는 단대단(End-to-End) 통신 기능을 제공

- 컴퓨터 내부에서 논리적으로 구축되는 통신 당사자인 프로세스 사이의 통신 문제를 다룸

 (하위 계층의 경우에는 호스트와 호스트 사이의 데이터 전송 과정에서 발생하는 문제들만 다룸)

- 전송 오류율, 전송 속도 등과 같은 일반 사용자의 서비스 요구 유형에 대한 고려와 흐름 제어 기능도 제공함

 

5) 세션 계층(Session Layer)

- 전송 계층과 거의 유사하지만, 사용자에게 원격 파일 전송이나 원격 로그인 등과 같은 상위적 연결 개념인 세션 기능을 제공함

- 송수신 호스트 사이의 대화 제어를 비롯해 상호 배타적인 동작을 제어하기 위한 토큰 제어, 일시적인 전송 장애를 해결하기 위한 동기(Synchronization) 기능 등을 제공함

 

6) 표현 계층(Presentataion Layer)

- 데이터의 의미와 표현 방법을 처리함

- 통신 양단에서 서로 이해할 수 있는 표준 방식으로 데이터를 코딩하는 문제를 다룸

- 데이터를 암호화하는 기술 및 영상 정보 같은 대용량 데이터의 크기를 줄여주는 압축 기능 담당

 

7) 응용 계층(Application Layer)

- HTTP, FTP, Telnet, 전자 메일 같은 응용 프로토콜을 지원함

 

* TCP/IP 모델

- 구현 환경 : 계층 1-4는 시스템 공간인 운영체제 내부에서 구현하며, 사용자 공간은 계층 5-7에서 구현됨

출처 : https://velog.io/@myday0827/네트워크-모델

 

- 시스템 공간

 TCP와 UDP는 시스템 운영체제인 커널 내부에서 구현되어 일반 사용자가 직접 이용할 수 없음

 일반 사용자가 직접 이용할 수 없는 대신 소켓 인터페이스라는 전송 계층의 프리미티브를 이용해야 함

 소켓은 운영체제에서 시스템 콜 기능으로 구현되므로 사용자 프로그램에서 이를 호출하는 방식으로 사용됨

 

- 사용자 공간

 사용자 프로그램으로 구현됨

 계층 4에서의 기능을 제공하는 소켓 시스템 콜을 호출해 TCP와 UDP 기능을 사용할 수 있음

 프로그램에서 소켓을 사용할 때는 소켓마다 부여되는 고유 주소인 포트 번호를 관리해야 함

 

* 프로토콜

- 사용자 데이터의 전송이 TCP, UDP, IP에 의해 이루어지지만, 이들이 올바르게 동작하기 위해 더 많은 프로토콜이 필요함

- 주소 문제를 해결하기 위한 ARP/RARP와 오류 문제를 해결하기 위한 ICMP는 TCP/IP 모델의 동작에서 매우 중요한 역할을 함

 

[TCP/IP 계층 구조]

출처 : https://choimungu.tistory.com/42?category=880114

 

- 인터넷에서 통신하려면 자신의 로컬 IP 주소와 MAC 주소, 원격 호스트의 IP 주소와 MAC 주소가 필요함

프로토콜 특징
ARP
(Address Resolution Protocol)
- 원격 호스트의 주소 변환 기능을 제공하는데, 사용자가 입력한 IP 주소를 이용해 MAC 주소를 제공하는 프로토콜
- 내부 네트워크에서 사용 -> 외부 공개하지 않음
RARP
(Reverse Addess Resolution Protocol)
- 로컬 호스트의 주소 변환 기능을 제공하는데, LAN카드에 보관된 MAC 주소를 이용해 IP 주소를 제공하는 프로토콜
- 일반 컴퓨터 시스템은 로컬 호스트의 IP 주소가 파일 시스템에 보관되므로 RARP를 사용하지 않지만, 디스크가 장착되지 않은 시스템에서는 RARP를 반드시 사용해야 함
ICMP
(Internet Control Message Protocol)
- 사용자 데이터의 전송 과정에서 오류가 발생하면 오류 메시지가 생성되는데, 이 때 전송하는 기능을 담당하는 프로토콜
- 복구 작업을 할 수 있게 해줌
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함