(학교 수업 내용을 정리한 글입니다.)
Network Software
- 디자인 복잡도를 줄이기 위해 분할정복 접근을 활용해 layer를 쌓은 구조이다. → Hierachy 구조
- 하위 layer는 상위 layer에 서비스를 제공하여 새로운 가상 머신을 만들어낸다.
- 하위 layer 의 기술적인 디테일을 상위 layer에 숨긴다. → 추상화
용어 정리
- Service : Layer가 하는 일을 정의. 무엇을(what) 해야하는지에 대해 내용이다.
- Interface : 서비스를 제공하는 장소. 수직적으로 서비스에 어떻게(how) 접근하는지 알려준다.
- Protocol : agreement, rules, grammer 같은 맥락이다. layer들 사이에서 통신이 어떻게 진행되는지에 대한 약속이다. 수평적으로 서비스를 어떻게 구현하는지 정의.
- Network Architecture : layer와 protocol의 모음
- 정리하면, 데이터의 이동은 수직적으로, Virtual Communication(통신)은 수평적으로 이루어진다. 데이터와 통신은 별개이다.
Protocol
- Syntax(문법) + Semantis(의미) + Actions(행동)
- 프로토콜은 데이터를 보낼 때 제어정보를 맨 앞에 실어서 보낸다. field는 헤더의 제어정보에 있는 정보들을 말한다.
- Syntax : 어떤 필드를 포함하는지, 그것의 크기와 형식은 어떠한지
- Semantis : 각 필드의 값이 무엇을 의미하는지
- Actions : 만약 not-ok 메세지를 받으면 재전송을 하는 등의 행동
- 보내는 메세지가 너무 크면 이를 쪼개기도 한다. 이를 Segmentation이라고 하고, 쪼개면서 메세지에 대한 새로운 헤더들이 생성되기도 한다. 아래 그림의 맨 뒤 T는 trailer를 의미한다. 이는 Error Detection을 위한 code를 만들 때 주로 사용하며, 앞에 붙이면 Memory Read가 필요하다.
Service
- 하위 계층에서 얻을 수 있는 것에 대한 개념 설명이다.
- Primitive(System Call)의 모음으로 구현 된 인터페이스에게 제공받은 것이다.
- 여기서 말하는 Primitive는 각 서비스에 어떤 작업수행을 요청 또는 Peer에 의해 수행된 작업 결과 요청이다.
Service와 Protocol 사이 관계
- Service : layer 사이에서 상위 layer에게 제공하는 Primitive의 집합
- Protocol : 한 layer 상에서 또는 Peer간에 교환되는 Packet의 형식과 의미를 규정하는 규칙들의 집합
Service의 분류 (1) Connection-Oriented Service , Connectionless Service
- Connection-Oriented Service
- 전화망을 모델링 한 것이다.
- Packet이 보낸 순서대로 도착한다.
- tube나 Circuit처럼 동작한다. 그래서 Data가 정해진 통로를 통해서 막힘이 없이 전달된다.
- Connection 확립(통화 연결음) → Data Transfer(서로 대화) → Release(전화 끊기)
- Connectionless Service
- 우편 시스템을 모델링 한 것이다.
- Packet이 보낸 순서대로 도착하지 않을 수도 있다.
- 통로 설정 없이 바로 보내진다.
- Packet이 full destination address를 들고다닌다.
Service의 분류 (2) Reliability , Message sequence -vs- byte stream
- Reliability
- Reliable (acknowledged) : Data가 잘 도착했다고 피드백을 보내는 것.
- Unreliable : 위에처럼 Acknowledge를 받아야 하는 Reliable 서비스는 Cast가 높다. 그래서 작은 Bit loss 정도는 문제로 삼지 않고 빠른 전달이 더 중요할 때 필요함. 즉, 조금 손실 되더라도 빠르게 전달하는게 중요할 때 사용.
- Message sequence -vs- Byte stream
- Message sequence : 메세지의 boundary를 보장함. 즉, 메세지가 쪼개지거나 합쳐지지 않음.
- Byte stream : 메세지가 합쳐지거나 쪼개질 수 있고, 그 단위가 byte 이다.
Network Architecture
- OSI 모델 7계층
- 이론적이다.
- 주로 다른 모델과 비교할 때 기준으로써 사용된다.
- 각 layer가 무엇을 해야하는지에 대해서만 기술하고, Service와 Protocol에 대해서는 관심이 없다.
- TCP / IP 모델 4계층
- 구체적이고, 실제 사용된다.
- 모델로써의 가치는 떨어진다.
OSI 7 Layer
- Layer수가 많아질수록 function call이 많아지고, 속도가 저하된다. 하지만 모듈성은 높아진다. 즉, 모듈성과 속도는 trade-off 관계이다.
1 Physial Layer ( Hardware와 가깝다. )
- Bit단위의 추상화가 이루어진다.
- 기계적이고 전기적인 일을 한다.
- 광섬유, 연선 등의 Physical 엔티티를 Logical 엔티티로 만든다.
- Data(logical) → Signal(physical) 데이터를 물리적인 신호로 변환한다.
- 전달 매체에 맞는 신호로 변환하기 위해서 기계적, 전기적, 타이밍 등의 문제를 다룸.
2 Data Link Layer ( 이웃-이웃 사이의 문제 )
- Physical Layer에서 제공하는 Unreliable bit pipe abstraction으로 Network Layer로 향하는 Reliable bit pipe를 만듦.
- Reliability를 제공하기 다음과 같은 일을 한다. (Point to Point인 경우에 해당한다.)
- Bit Framing : 처음과 끝을 표시하여 일련의 bit들을 transmission 단위로 Packing한다. 이렇게 하면 좋은 이유가, 오류가 난다면 해당 frame만 재전송 하면 됨.
- Error Detection(오류검출)과 Error Correction(교정) 알고리즘 수행
- Segmentation(쪼개기), Sequencing(순서설정), Acknowlegment(잘 받았는지 알려줌)를 제공한다
- Flow control : Receiver에 비해 Sender가 너무 빨리 보내지 않게 조절. Receiver가 준비 됐을 때만 보내도록 함.
- Broadcast network 에서는 Channel access control을 수행하는데, 누가 주어진 시간에 공유 채널을 사용할 것인지를 결정해준다.
3 Network Layer ( Source - Destination 사이의 관계 )
- Data Link Layer로부터 받은 Reliable bit pipe 서비스를 연결해서 Source와 Destination 사이에 논리적인 링크가 있는 것 처럼 추상화 한다. 즉, 2계층에서 시작과 끝에 Link to Link로 Bit pipe를 설정해서 [ 시작 - 링크1 - 링크2 - ... - 끝 ] 이러한 구조로 되어 있다면, End to End에서는 [ 시작 - 링크 - 끝 ] 이렇게 하나의 링크만 있는 것 같은 추상화 작업을 해준다.
- End to End Bit Pipe Abstraction을 제공하기 위해 다음과 같은 작업을 한다.
- Routing : 길찾기
- Congestion Control : 라우터에 너무 많은 데이터가 몰리면 버퍼 오버플로우가 발생하므로, 데이터 주입을 줄여준다.
- Quality of Service (QoS) : 데이터에 우선순위를 부여한다. → 스케쥴링 작업
- Internetworking : 여러 네트워크에 연결해준다.
4 Transport Layer
- 3계층에서 만든 Unreliable End to End Bit Pipe에다가 Error Control, Flow Control, multiplex(인풋이 여러개, 아웃풋이 1개, 즉 공유를 위함)를 얹어서 결과적으로 Reliable하고 효율적인 End to End 링크가 생성된다.
- Flow control 대상 : End to End
- App의 요구에 맞춰서 여러 Type의 서비스를 제공한다. ex) TCP : Reluable / UDP : Unreliable, but Fast Transmission
5 Session Layer
- 4계층에서 제공하는 서비스 + 고급 서비스
- Library 형태로 제공하고, 사용자가 원할 때만 사용한다.
- Full-duplex service를 사용한다.
6 Presentation Layer
- 전송되는 정보의 Syntax나 Semantics와 관련
7 Application Layer ( 사용자와 가깝다 )
- 네트워크 appliation 지원 (http, file transfer, electronic, mail ... ETC)
TCP / IP
- TCP / IP모델은 4계층으로, 7계층인 OSI보다 간단하다.
- 구현은 잘 되어있지만 모델로는 적절하지 않다.
OSI , TCP / IP 모델의 단점
- OSI 모델
- 이론은 좋지만 실제 사용하지 않는다.
- 문제점
- 안좋은 타이밍 : OSI가 표준화 되었을 때 이미 TCP가 구현되기 시작해서 OSI는 투자받지 못했다.
- 너무 복잡하고 기능이 중복된다.
- 너무 크고 느리다.
- TCP / IP 모델
- Service, interface, protocol 간의 구분이 모호하다.
- 1물리 계층과 2데이터링크 계층의 구분이 없다.
'CS 개념 > 네트워크' 카테고리의 다른 글
HTTP 웹 기본 지식 (1) - IP, TCP, UDP (0) | 2024.05.07 |
---|---|
데이터 통신 정리 (3) - Internet, Mobile, Cellular, WIFI (1) | 2023.10.09 |
데이터 통신 정리 (1) - 인터넷 소프트웨어 구조, 네트워크 분류 (0) | 2023.09.27 |
OSI 7 LAYER (0) | 2022.10.23 |
TCP / UDP (0) | 2022.10.21 |