[네트워크] TCP/IP Model & OSI Layer Model 7 계층 구조
본문 바로가기
CS

[네트워크] TCP/IP Model & OSI Layer Model 7 계층 구조

by 쏠수있어ㅤ 2022. 1. 12.
반응형

OSI, [Open System Interconnection 7 Layer]

OSI 7계층 구조

-> 모든 네트워크 통신에서 생기는 여러가지 충돌 문제를 완하하기 위해 국제표준기구(ISO)에서 표준화된 네트워크 구조를 제시한 기본 모델로써 통신망을 통한 상호 접속에 필요한 제반 통신절차를 정의하고 비슷한 기능을 제공하는 모듈을 동일계층으로 묶어 총 7계층으로 분할 

 

구분  설명 

네트워크 지원계층 
(한 장치에서 다른 장치로 데이터를 이동할 때 필요한 물리적인 면 처리) 
* 물리적인 면 = 전기적인 규격, 물리적인 연결, 물리주소, 전송시간과 신뢰도
1. Physical Layer (물리층)
전송 단위 : bits
상위 계층에서 내료온 비트들을 전송 매체를 통하여 어떤 전기적 신호로 전송할 것인가를 담당 

물리적 매체를 통해 비트 흐름을 전송하기 위해 필요한 기능들을 조정하고 인터페이스의 기계적, 전기적 규격, 전송매체를 다룸 

물리적인 장치와 인터페이스가 전송을 위해 필요한 기능과 처리절차를 규정함. 

구현되어 있는 곳 : 
PHY칩 
1계층 모듈은 하드웨어적으로 구현되어 있다. 
2. DataLink Layer (데이터링크층)
전송 단위 : Frame
신호수준의 데이터 비트들이 물리계층을 통과하면 데이트블록을 형성하는데, 이 데이터 블록에 대한 전송을 담당 

가공되지 않은 내용의 전송을 담당하는 물리층을 신뢰성있는 링크로 변환시켜주고 노드-대-노드 전달 
(node to node delivery) 

구현되어 있는 곳 : 
랜카드
2계층 모듈도 1계층 모듈처럼 하드웨어적으로 구현되어 있다. 
3. Network Layer (네트워크층)
전송 단위 : Packet
송신측과 수신측 사이에 보이지 않는 논리적인 링크를 구성, 패킷 전송의 최적의 경로를 찾아주는 라우팅 기능 제공 

패킷을 발신지로부터 여러 네트워크(링크)를 통해 목적지까지 전달함  

구현되어 있는 곳 : 
운영체제의 커널에 소프트웨어적으로 구현되어 있다. 
전송층
(종단-대-종단까지의 믿을만한
데이터 전송 보장)
4. Transport Layer (전송층)
TCP or UDP
사용자와 사용자, 컴퓨터와 컴퓨터 간에 연결을 확립, 유지하여 통신 흐름을 제공 

전체 메세지의
프로세스-대-프로세스 전달

구현되어 있는 곳 : 
운영체제의 커널에 소프트웨어적으로 구현되어 있다. 
사용자 지원계층
(서로 상관없는 소프트웨어 시스템 사이의 상호연동을 가능하게 함)
5. Session Layer (세션층)
세션을 확립하여 순차적인 대화의 흐름이 원활하게 이루어지도록 동기화 기능 제공, 데이터 전송 방향 결정

네트워크의 대화 조정자로 통신하는 시스템들 사이의 상호작용을 설정, 유지하고 동기화 함
6. Presentation Layer (표현층) 데이터를 표현하는 방식을 다루는 계층
데이터 안전성을 높이기 위해 데이터 압축, 데이터 암호화 기능 제공, 상이한 데이터 표현을 서로 가능케 하는 표준인터페이스 제공

두 시스템 사이에서 교환되는 정보의 구문과 의미에 관련되어 변환, 압축 및 암호화를 담당함 
7. Application Layer (응용층)  사용자의 응용 프로그램이 네트워크 환경에 접근하는 창구역할을 하는 최상위 계층 

사용자(사람 or 소프트웨어)가 네트워크에 접근할 수 있도록 함 
사용자 인터페이스를 제공하고, 전자우편, 원격 파일접근과 전송, 공유 데이터베이스 관리 및 여러 종류의 분산정보 서비스를 제공 

 

 

 

 

1계층 - Physical Layer, 물리 계층 

 

Q. 두 대의 컴퓨터가 통신하려면? 

- 모든 파일과 프로그램은 0과 1의 나열이다. => 0과 1만 주고받을 수 있으면 된다. 

=> 실제에선 100% 잘 동작이 어렵다. 이유 ↓↓↓

 

시간 당 전압을나타내는그래프 - 전자기파를 표현하는 함수 

위 전자기파의 주파수는 4Hz (헤르츠)

Hz - 1초당 진동 횟수 ex) 1Hz - 1초에 1번 진동

 

 

위 그래프에서 최소값이 1Hz, 최댓값이 10Hz 라고 가정,

"전선 (& 모든 매질) " 은 모든 주파수를 다 통과시키지 못한다! 

 

 

5-8Hz 만 통과시킬 수 있는 전선이 있다면 1-4, 6-10Hz 구간은 손상되어 (=5-8Hz인 부분만 통과하여) 엉뚱한 데이터가 도착한다. 

 

위의 그래프처럼 수직선과 수평선이 있는 전자기파는 항상 0~ 무한대Hz 의 주파수의 범위를 가진다. 

=> 따라서 해당 전기신호를 통과시킬 수 있는 전선은 없다.

 

=> 그렇다면 어떻게 전송해야할까? => 아날로그 신호로 바꿔서 보내면 된다. 

0101 0101이라는 데이터를 보내고 싶으면 0101 0101를 아날로그 신호로 바꿔서(인코딩) 보내고 받은 컴퓨터는 요 아날로그 신호를 해석하여(디코딩) 0101 0101를 얻는다.

 

 

 

즉, Physical Layer란 ? 

1) 0과 1의 나열을 아날로그 신호로 바꾸어 전선으로 흘려 보내고 (encoding)

2) 아날로그 신호가 들어오면 0과 1의 나열로 해석하여 (decoding)

3) 물리적으로 연결된 두 대의 컴퓨터가 0과 1의 나열을 주고받을 수 있게 해주는 모듈(module) 

 

 

 

 

 

2계층 - 데이터 링크층이 무엇인지 보기 전 알아야할 내용 

컴퓨터가 서로 통신하려면 "전선"으로 연결이 되어 있어야함 

=> 모든 컴퓨터를 직접적으로 전선으로 연결하면 비용적으로 비효율적 => 하나의 전선으로 만들기 ↓↓

 

예림이가 0010 1100 이라는 데이터를 혜림이에게 보내고 싶을 때 

1. 전자기파를 구리선으로 흘려보낸다. 

2. 혜림의 컴퓨터 말고도 다른 모든 컴퓨터에도 파동(아날로그 신호)이 퍼진다. 

3. 혜림이가 데이터를 받기는 했다. (전송은 성공..) 

 

 

=> 이제 저 가운데 구리선을 구겨서 빈 상자 안에 넣는다고 가정 

상자 = 더미 허브 

=> 예림이가 데이터를 혜림에게 전송 시, 여전히 나머지 컴퓨터들도 해당 데이터를 볼 수 있다. 

=> 이를 방지하기 위해 상자가 데이터에 목적지를 확인 후 목적 컴퓨터에게만 데이터를 보내는 기능 

==> 스위치 (라우터)

 

네트워크 2개인 상태 / 인트라넷 

위의 상황에서 예림이가 혜림에게 데이터를 보내고 싶을 때,

각각의 스위치들을 연결해서 서로 다른 네트워크에 속한 컴퓨터끼리 통신이 가능하게 해주는 장비 = 라우터 

 

더 많은 네트워크를 연결할 때, 라우터를 이용해서 라우터 & 라우터를 연결하기 

나라 / 대륙을 잇는 큰 거대한 전선 = 해저 광케이블 

 

 

 

 

 

 

2계층 - DataLink Layer, 데이터링크층 

 

여러 대의 컴퓨터들이 예림이에게 동시에 정보를 보낼 때 

끊어 읽는 위치에 따라 데이터가 잘못될 수도.....! 

보내는 쪽이 데이터의 앞 / 뒤에 특정한 비트열을 붙인다. (1111 / 0000은 예시일뿐!!) 

한번에 들어온 여러 데이타를 구분하는 방법 

 

 

즉, Data-link Layer 란? 

- 같은 네트워크(스위치 하나에 연결되어 있는) 에 있는 여러 대의 컴퓨터들이 데이터를 주고받기 위해서 필요한 모듈 

- Framing은 Data-link Layer에 속하는 작업들 중 하나. 

* framing - 1111 & 0000로 감싸기 

 

 

Data-link Layer 는 두 가지로 나눠진다. 

1. LLC (Logical Llink Control) 논리적 링크 제어 - 장치 간에 전송할 경로 설정 

2. MAC (Media Access Control) 미디어 접근 제어 - NIC(네트워크 인터페이스 카드)에 할당된 하드웨어 주소를 사용하여 특정 컴퓨터나 장치를 식별하여 데이터 전송의 소스와 대상을 표시 

 

CSMA/CD (Carrier Sense Multiple Access with Collision Detection) 알고리즘을 사용하여 데이터 링크 계층에서 데이터 패킷을 전송 

* CSMA/CD - 데이터 충돌을 줄이고 성공적인 데이터 전송을 증가시키기 위해 Ethernet의 표준으로 사용됨 

1. 알고리즘은 네트워크에 트레픽이 있는지 찾는다 

2. 아무것도 없으면 Data의 첫 번째 비트를 보내 충돌 여부를 체크한다. 

3. 첫 번재 비트가 성공하면 충돌을 테스트하는 동안 다른 비트를 보낸다. 

4. 충돌이 발생하면 알고리즘은 대기시간을 계산한 다음 전체 전송이 완료될 때까지 프로세스를 다시 시작한다. 

 

 

 

 

 

 

 

3계층 - Network Layer, 네트워크층

 

 

A 컴퓨터에서 B 컴퓨터로 data를 보낼 때, A컴퓨터는 packet이라는 곳에 목적지 컴퓨터의 ip 주소와 정보를 담아 연결된 "가"라우터로 보낸다. 

"가"라우터는 패킷을 열어 목적지 IP 주소를 확인한다. => "가"라우터에 연결된 컴퓨터 중 목적지 IP 주소가 없다면 "가"라우터는 데이터를 다시 포장해서 본인과 연결되어 있는 "마"라우터에게 전달한다. 

"마"라우터는 연결된 "가,나,바" 라우터들 중 어느 곳으로 보낼 지 고민함..

여기서 해당 ip의 history가 있다면 어디로 보낼지 알고 / 없다면 모든곳에 전달하게됨 -> history 생김

"마"라우터가 이미 "바"에게 전달해야하는 것을 아는 상태라고 가정

 

=> "마"라우터는 다시 데이터를 packet으로 포장, "바"라우터에게 전달 

=> "바"라우터는 "마"라우터와 동일한 방식으로 "라"라우터에 전달

=> "라"라우터는 본인과 연결된 B 주소로 데이터 전달

 

 

Network Layer란 ? 

- 수많은 네트워크의 연결로 이루어지는 inter-network속에서 어딘가에 있는 목적지 컴퓨터로 데이터를 전송하기 위해, IP주소를 이용해 길을 찾고 (routing) 자신 다음의 라우터에게 데이터를 넘겨주는 것 (forwarding) 

 

ex. 내 노트북을 핸드폰 핫스팟으로 인터넷 연결하고 내 핸드폰은 내 집의 와이파이를 쓰게하고 노트북(현재 연결된 내 핸드폰 데이터 U+네트워크 망)에서 내 핸드폰 (집에 설치된 KT wifi공유기) ip 를 ping 해보면

TTL 64에서 -51 = 13번의 라우팅을 거치게 된다. (TTL은 보통 64이라고 하는데 128인 경우도 봤다) 

내 핸드폰 데이터 U+네트워크에서 -------> 집에 설치된 KT wifi 공유기 까지 거친 라우터가 13개 

 

 

 

현재까지 계층1-물리계층, 계층2-데이터링크층, 계층3-네트워크층까지의 흐름 

 

 

 

 

 

 

 

 

 

4계층 - Transport Layer, 전송계층

 

이제 인터넷 상의 모든 컴퓨터가 상호 통신이 가능해짐! 

데이터 받는 수신 컴퓨터는 전 세계의 컴퓨터로부터 데이터를 받을 수 있다. 

 

수신 컴퓨터에 카카오톡, 배달의 민족이 실행되고 있다고 가정, 받은 오른쪽 세개의 데이터들을 무슨 프로세스들(카톡 , 배민) 에게 줘야하는지 수신 컴퓨터는 어떻게 알 수 있을까??

-> 데이터를 받고자하는 프로세스들은 Port number (포트 번호==서비스 구분 번호) 라는 것을 가져야 함

  * port number 포트 번호 : 하나의 컴퓨터에서 동시에 실행되고 있는 프로세스들이 서로 겹치지 않게 가져가야하는 정수 값 

-> 송신자는 데이터를 보낼 때 데이터를 받을 수신 컴퓨터에 있는 프로세스의 포트 번호를 붙여서 보낸다. (미리 알고 있음!)  ex) www.naver.com   www.naver.com:80  이 생략된 것 

 

 

즉, Transport Layer 역할은 

- 데이터를 생성하는 상위계층과 데이터를 전달해주는 하위계층을 연결해주는 역할

- 데이터의 성격에 따라 통신방식을 달리하여 효율적으로 통신될 수 있도록 의사결정

 

* 데이터 통신 방식 결정 - TCP vs UDP 

TCP - 3 way handshake - 3번에 걸쳐서 인사(통신확인) 함 - SYN -> ACK / SYN -> ACK 

 

 

계층1 ~ 4 흐름 

 

 

 

 

 

 

7계층 - application Layer, 응용계층 

 

5계층 session Layer, 6계층 Presentation Layer 를 뛰어 넘은 이유 !? 

-> 현대의 인터넷는 OSI 모델보다 TCP/IP 모델(이것도 네트워크 시스템 모델 중 하나) 을 따르고 있다. OSI 모델이 TCP/IP 모델과의 시장 점유 싸움에서 졌기 때문. 

 

기존 TCP/IP 모델 vs OSI 모델

 

업데이트된 TCP/IP 모델 

=> 지금 7계층 설명은 updated TCP/IP 모델에 맞춰서 설명! 

 

 

TCP/IP socket programming 

- 운영체제의 Transport Layer에서 제공하는 API를 활용해서 통신 가능한 프로그램을 만드는 것을 TCP/IP Socket Programming이라고 한다. Socket Programming만으로도 클라이언트, 서버 프로그램을 따로따로 만들어서 동작 시킬 수 있다. 뿐만 아니라 TCP/IP socket programming을 통해 누구나 자신만의 Application Layer 인코더 / 디코더를 만들 수 있다. => 누구든 자신만의 Application Layer Protocol을 만들어서 사용할 수 있다. 

 

 

대표적인 Application Layer Protocol인 HTTP로 인코딩 & 디코딩 살펴보기 

HTTP 이해하기 위해서는 먼저 Client & Server 패러다임을 알아야 함 

 

 

 

HTTP encoder에서 status code 말고 또 많은게 붙음 ! 예시로 status code만 적용 

우리 컴퓨터에는 데이터 수신 / 전송하기 때문에 인코더 디코더가 모두 있다.  

 

 

소프트웨어 아키텍처 중에는 우리에게 익숙한 MVC 패턴이 있고 또 Layered Architecture 라는 것도 있다. 위에 설명한 네트워크 시스템은 Layered 아키텍처를 따르는 대표적인 예이다. 

네트워크 시스템 == 하나의 커다란 소프트웨어
OSI 7 Layer 모델 == 거대한 네트워크 소프트웨어의 구조를 설명

 

Application Layer 의 역할은? 

클라이언트의 요청을 전달하기 위해 서버가 이해할 수 있는 데이터로 변환하고 전송계층(계층4)으로 전달하는 역할 

 

 

 

 


 

 

 

 

공부할 것 

 

각 데스크탑, 노트북, 폰 등 네트워크를 할 수 있는 모든 디바이스에는 네트워크 카드 or 네트워크 인터페이스 카드 (NIC) 가 있음 

이더넷 

ALOHA 

 

CSMA/CD (유선 네트워크) 

- Polling 

- 충돌 감지 가능 

 

CSMA/CA (무선 네트워크) by RTS / CTS 

- 경쟁방식

- 충돌 有

 

 

 


 

 

 

TCP & UDT & Physical Layer 질문 10개 

 

1. 영상, 스트리밍은 TCP or UDT ? 

- UDT 

2. TCP 에서 에러 복구할까?

- 복구를 하기 위해서는 복구할 수 있게하는 정보가 필요 -> 로드가 너무 큼 -> 차라리 다시 보내는게 낫다~ 

ex) 10kb를 확실해 보내고 싶어 - 복구하기위한 정보 같이 보낸다면 10KB 보다 더 큼... 배보다 배꼽이 더 큼.

ex) 그럼에도 불구하고 에러 복구를 하는 경우 언제인가 ? -> end to end가 물리적으로 매우 멀은 경우, 깨질 확율이 높은 경우... ex)  우주... 해저(전파말하는거임 광케이블말고) .. 

 

3. TCP에서 flow control 를 하는 알고리즘 이름은 ? 

slow start / fast recovery 

 

4. TCP 연결하는 방법의 이름은?

3 way handshaking

 

5. TCP 보낸 순서 맞추기 위한 숫자의 이름 ? 

Sequence Number 

 

6. Sequence 대로 Packets을 보낼 때 맨 마지막 것을 받았다는 것을 알려주기위해 무슨 응답을 하는가...

ACK 

 

7. UDP 에서 여러명에게 보내는 방식 이름?

unicast 한명한테 보내는 거 

broadcast 나 빼고 다 in 해당 네트워크 

multicast 특정 그룹에게 보내기 (나와 관련된... 나를 subscribe...한...) 

 

8. Physical layer 에서 아날로그 신호를 해석하는 방법? 

Modulator

Demodulator

(Modem)

 

9. 여러개의 주파수(아날로그신호)를 동시에 받았을 때 각각의 주파수로 나눠주는 것 ? 

fourier transform 

 

 

10. 비트를 (bits) 아날로그로 바꾸는 방법들.... ?

ASK(Amplitude shift keying)  - 진폭 , 전파의 파워로 구분 (1로할지 0으로 할지..) 

PSK(Phase shift keying)  - 위상 편이 변조 (진동의 위상 - 방향같은거) 

FSK(Frequency shift keying)  - 주파수에 따라 

 

https://linecard.tistory.com/38

 

변조방식 - 디지털 to 아날로그 (ASK, FSK, PSK)

Shift Keying의 개요 디지털 신호를 전송하기 위해 아날로그 변조 원리를 그대로 이용한다. 1과 0의 이분법식 단순 신호를 효율적으로 변조하는 것이 주목적으로 아날로그식 파형 변환을 그대로 이

linecard.tistory.com

 

 

 

 


 

 

 

References: 

 

https://terms.naver.com/entry.naver?docId=2071856&cid=42345&categoryId=42345 

 

OSI 7계층

모든 네트워크 통신에서 생기는 여러가지 충돌 문제를 완화하기 위하여, 국제표준기구(ISO)에서 표준화된 네트워크 구조를 제시한 기본 모델로써 통신망을 통한 상호접속에 필요한 제반 통신절

terms.naver.com

https://www.youtube.com/watch?v=1pfTxp25MA8 

https://www.youtube.com/watch?v=HLziLmaYsO0 

 

반응형

댓글