본문 바로가기
네트워크

OSI 7 layer

by 흥뷰자 2022. 3. 31.

국제표준화기구(ISO)가 발표한 네트워크 모델 : 네트워크간의 통신을 원활하게 하기 위한 통신 절차 규격을 설정 (기존 TCP/IP 모델 따르는 기업이나 장비 만드는 업체에서 참조해서 만드는 참조 모델 역할..)

Open Systems Interconnection Reference Model

(TCP/IP : 통신 절차 표현한 다른 모델인데 비표준 모델. 실제 통신에서 시장점유율 더 높음. 사실상 표준.) 

두 대의 컴퓨터가 통신을 하기 위해 거치는 과정, 7계층마다의 일어나는 일이 다르며, 문제가 발생하면 어느 지점에서 문제가 방생했는지 알 수 있으며, 해당 장비/ 소프트웨어 단계만 고치면 된다.

pc방에서 롤을 하다가 연결이 끊김

내 pc만 그런다 --------------------> 1 Layer : 전원이 켜있나, 케이블은 잘 연결돼있나, 단선은 없나 부터 확인
1 계층에서 아무 문제 없다 --------> 2 Layer 확인 : 
pc방 내 모든 컴퓨터가 동일 증상 -> 광랜 제공하는 회사 회선(1계층 Physical Layer)
                                               or 라우터문제(3계층 Network Layer)
pc방에서 내 컴퓨터만 그래 --------> 내 게임 소프트웨어 (7계층 Application Layer)
                                               or
                                                게임 소프트웨어 문제 없다면 --------------------> 스위치문제(2계층 DataLink Layer)를 체크해보는 순서로 문제를 찾아감

출처 : https://shlee0882.tistory.com/110


0, 1 주고받는것.

 

1. Physical Layer 물리계층 0, 1을 주고받게 해주는 모듈(함수같은 input-output개념) - 기술 구현 PHY칩 (하드웨어로 구현), 케이블, 리피터, 허브

전자기파 : 전달되는 전압의 모양.. 

파동의 단위 -> 초당 전압 : 주파수  

파동이 일정하지 않다면 주파수는 일정하지 않아. 

전선마다 보낼 수 있는 주파수가 차이가 발생. 데이터가 변형될 수 있지.  ///// 최대치와 최소치가 헤르츠랑 무슨 상관이지? 항상 이해가 안됐던 부분... (수평선은 무한대)  - 수평선 0 부분에서는 전선에서 전달을 못하니까

균일하게 보내기 위해서 아날로그 신호로 변환(encoding)

보내는 컴퓨터 : 비트단위0101 -> 아날로그 신호   

받는 컴퓨터 : 아날로그 -> 0101 데이터 (decoding) 

 

어떤 데이터를 보내는지, 보낼 때 에러는 없는지 관심 없음.


2. Data-Link Layer 

여러 대의 컴퓨터 간 통신 전선으로만 연결한다면
두대의 컴퓨터라면 1개 전선만 필요하지만
여러대의 컴퓨터라면 전선이 그만큼 개수가 늘어나겠지, 전선 꽂을 구멍도 많이 필요하고.. 비효율적
==별형

전선 하나로 여러대와 통신하는 방법이 없을까 
전기 끌어다쓰는 방식으로 연결하자면?
전기를 쓰는 모든 컴퓨터가 그 아날로그 신호를 전송받을 수 있게 됨
전선뭉치박스 ( 더미허브 )
==바퀴형 
목적지를 지정해서 원하는 컴퓨터에만 전달할 수 있는 박스 = 스위치 

그렇다면
한 스위치에 연결된 네트워크 = 인트라넷
전선으로 연결되지 않은 네트워크와 네트워크는 어떻게 통신할까? 
스위치와 스위치를 연결하여 서로 다른 네트워크에 연결한 장비 = 라우터 (내부적 스위치 역할도 하고 라우터도 하는 L3스위치) 공유기.
전 세계 연결한 전선으로 인터넷이 가능한 것. (해저케이블) = 컴퓨터들끼리 계층구조로 연결

정보의 오류와 흐름을 관리하여 안전하게 정보전달 할 수있도록 하는 역할. 오류를 찾고, 재전송도 함. MAC 주소( 데이터 단위 앞뒤에 붙여 데이터의 시작과 끝을 확인)로 통신하며 맥주소가 포함된 이 단위를 프레임이라고 함.

덩일한 네트워크 내에서의 데이터 전송 담당 

대표 장비 : 브리지, 스위치

오류제어 흐름제어 제공

10개의 프레임이 있을 때 그 중 2개의 프레임이 오류가 난 경우 해당 프레임을 버림( 오류 복구는 안함)


3. Network Layer : 

서로 다른 네트워크간의 전송을 담당 

라우터, IP 속한 계층 

호스트에 IP 부여 

해당 도착지 ip까지 최적의 경로를 찾아주는 기능을 제공(라우팅)


4. Transport Layer 

서로 다른 두 네트워크 간 전송 담당. 세그멘테이션, 흐름제어, 오류제어 등을 제공/ 신뢰성있는 데이터 전송* 담당. (전송: 포트 번호에 해당하는 프로세스에 데이터를 전달) 

- 세그멘테이션 : 상위 계층 데이터를 세그먼트 단위로 나눠 전송 . 

스트리밍 서비스 같은거 세그먼트 단위로 오지 않는다면 전체 다운로드 된 후 실행되기까지 엄청 오래 기다려야함

세그멘테이션을 하지 않으면 작업을 하다가 파일 전체가 날아가니 처음부터 다시 작업해야 함. 손실율이 큼. 

- 흐름제어 : 서로 다른 데이터 처리 속도를 가지는 기기사이 데이터 전송 시 적당량을 보낼 수 있도록, 낮춰달라고 혹은 높여달라고 요청, Stop and Wait/ Sliding Window방식.. 

- 혼잡제어 : 네트워크 데이터 처리 속도 (ex. 라우터)  네트워크가 혼잡할 때

- 오류제어 : 특정 부분이 손실이 나면 해당 데이터만 다시 보내줘~ 오류 복구까지 해줌 / FEC, BEC, ARQ

위에 설명한건 TCP프로토콜 방식. 이거 말고 다른 방식이 UDP 

 

TCP(Transmission Control Protocol
손실여부 확인 데이터 순서 있어서 믿을 수 있지만 느림 /
특징 : Connection을 연결. (3 way- handshake) - 양방향 통신
순차전송/ Flow Control / Congestion Control / Error Detection
앞에 3가지를 TCP에서 해결

TCP 프로토콜의 PDU(프토토콜 데이터 유닛) - 세그먼트
ip프로토콜의 패킷처럼  . 프로토콜 안에서 데이터 처리되고 움직이고 할 때 그 데이터의 단위. 
잘린 세그먼트마다 tcp해더정보를 붙여서 만든 데이터. 헤더정보를 가지고 처리되고 움직이게 되지. 
// 헤더 안에 커넥션을 연결할 때 끊을 때 확인응답할 때 쓰는 플래그 비트정보도 들어있어염  
* 참고자료 : Peter L Dordal. An Introduction to Computer Networks, p360
Connection 연결 1. 요청자 (통로 연결하자) -> SYN 비트 1로 설정해서 패킷 송신 -> 서버 
                      2. 서버 -> SYN(통로 연결하자), ACK(니가 나랑 통로 연결하고 싶구나) 비트 1로 설정해 패킷 송신 -> 요청자
                      3. 요청자 -> ACK 비트 1로 설정해 패킷 송신 -> 서버 
////netstat clsed -> established 로 상태가 바뀜...
데이터 전송 1. 보내는 쪽 -> 패킷 -> 받는 쪽
                2. 받는 쪽 -> ACK 비트 1(잘받았어~~) -> 보낸쪽
                2.2  받은 쪽에서 ack가 안오면 못받은거로 알고 잠시 기다리다가 다시 패킷을 보냄
Connection close 1. 요청자 -> FIN 1로 설정 (그만 끊자) -> 서버    //클라이언트 쪽에서 데이터 다 보낸 후 보낼 데이터 없으면 끊지
                       2. 서버 -> ACK(니 의견 알았어) 근데 아직 넌 줄 데이터가 남았어~ 점사 가다리다 패킷을 다 전송하고나서
                                 -> FIN 1로 설정(나도 이제 끊을게) -> 사용자 ( 사용자 서버 closed )
                       3. 요청자 -> ACK (오께이~) -> 서버 ( 서버 상태 closed ) 


UDP
데이터 보내기만 하고 책임은 안짐. 일반적으로 TCP방식보다는 빠름. 데이터 신뢰성이 중요하지 않은 경우 사용 - 영상 스트리밍 서비스에서 많이 사용.  
특징 : Connectionless (3 way-handshake X) (단방향)
Error Detection

UDP에서는 세그먼트가 아닌 User Datagram이 동작 (UDP 프로토콜의 PDU)  
데이터에 UDP해더 붙인 데이터. 세그먼트와 달리 어플리케이션 레이어에서 내려온 데이터를 쪼개지 않음. 실제 구현할 때는 어플리케이션단에서 쪼개줘야 함. 

어떤 프로토콜을 사용할지 상황에 맞게 쓰면 됨 - 각 헤더를 파악해서 성능개선에 이용할 수 있다.

 


 

5. Session Layer 

세션을 열고 닫고 / 세션을 복구하고 (체크포인트) 10Mb의 데이터를 전송 할 때 체크포인트를 2Mb마다 설정한다면 

7Mb를 전송하던 도중 연결이 끊기면, 6Mb부터 세션을 재개

 

6. Presentation Layer

데이터 ---> "datadatadata.." ---> dt --> $#%@!*&^%

데이터를 변환하고/ 압축하고/ 암호화 . 통신기기간의 다른 방식으로 인코딩이 된경우 변환이 되어야 하니까

7. Application Layer : 사용자에게 보여지는 데이터를 작성하는 부분 (http://naver.com주소를 접속하는 것)

응용 프로세스 직접 사용해서 서비스 수행 

http FTP SMTP 등의 프로토콜이 속한 계층

 

TCP/IP모델에서는 5,6계층이 7계층에 포함된 것으로 분류됨.

 

컴퓨터 A (ip/ mac)- switch - router(ip/ mac) - switch - 컴퓨터 B(ip/ mac) 로 데이터를 전송할 때          

(스위치는 캠테이블이 있어서 보내는 쪽 맥주소와 스위치에 연결된 라우터의 맥주소를 알고 있음)               

각 레이어에서 각 헤더를 붙여서 보내고 (캡슐화)

받은 컴퓨터에서는  각 레이어에서 각 헤더를 제거 (decapsulation)하는 과정을 거쳐 데이터를 받게 된다.

 


7계층 A.L. 4계층 T.L.  3계층 N.L. 2계층 D.L 1계층 P.L.
http로(=어디에)
데이터 전송
TCPorUDP정보
Source Port & Destination Port정보 (출발지도착지) +
순차전송가능하게하는숫자들...
header
출발지와 도착지 IP주소 header 출발지의 Mac 주소와 가장가까운 도착 라우터의 Mac 주소 header
(B의 Mac주소는 모름 - DHCP와 ARP를 통해서 라우터의 IP를 맥주소로 바꿔 라우터에 대한 맥 주소를 만든 후 해더에 넣는 것. )
트레일러도 붙임. (오류제어용 정보)
전기신호로 변환해서 데이터를 전송
장비간 연결 지점에서의 데이터 전송하는 것과 그 때 필요한 것들
  세그먼트  패킷  프레임  
캡슐화 방향   ------> 
<----- 디캡슐화 방향
       
데이터 전송      스위치
decapsulation
- Layer2
목적Mac주소를 확인하고 해당 라우터로 데이터를 전송 
 
    전송받은 라우터
decapsulation*2
- Layer2 & Layer3
도착지 ip주소 확인하고 
라우팅테이블을 통해 라우팅시킨 후 B의 맥주소를 파악해서 
layer2의 맥주소를 업데이트 시킴
--> 출발지는 Mac맥주소에서 라우터의 Mac주소로.
라우터 Mac주소를 목적지 B의 Mac주소로 업데이트하면서 전달
 
      스위치
해더 정보 확인해서 
해당 맥주소의 B로 데이터를 전송


내가 편지를
누구한테
보낸다
확실한 등기로 보낼지
불확실한 일반으로 보낼지 
보내는사람 주소
받는 사람 주소
편지봉투에 적어서
각 지점을 거칠 때 어디로 가는게 가장 빠른지 연결된 곳으로  각 지점에서 편지를 주고받는 절차

 


정리 

네트워크 모델

-> Application Layer        / Transport Layer          / Network Layer / Data Link Layer / Physical Layer

어디로 데이터 전송하겠다 / 확실한 방식으로 보낼지/ 그곳의 주소는/ 세부 전송 경로는/ 각 접점 간 연결을 잘해서 

댓글