1.4 OSI 7계층별 이해하기
■ 계층별 주요 프로토콜 및 장비
계층 | 계층명 | 주요 프로토콜 | 장비 |
L7 | 애플리케이션 | HTTP, SMP, SMTP, STUN, TFTP, TELNET | ADC, NGFW, WAF |
L6 | 프레젠테이션 | TLS, AFP, SSH | - |
L5 | 세션 | L2TP, PPTP, NFS, RPC, RTCP, SIP, SSH | - |
L4 | 트랜스포트 | TCP, UDP, SCTP, DCCP, AH, AEP | 로드 밸런서, 방화벽 |
L3 | 네트워크 | ARP, IPv4, IPv6, NAT, IPSec, VRRP, 라우팅 프로토콜 | 라우터, L3 스위치 |
L2 | 데이터 링크 | IEEE 802.2, FDDI | 스위치, 브릿지, 네트워크 카드 |
L1 | 피지컬 계층 | RS-232, RS-449, V.35, S 등의 케이블 | 케이블, 허브, 탭(TAP) |
1.4.1 피지컬 계층 (L1)
- 물리 계층으로 물리적 연결과 관련된 정보를 정의
- 주로 전기 신호를 잘 전달하는 것이 목적이므로 전기 신호가 1계층 장비에 들어오면 이를 재생성하여 내보냄
- 주소의 개념이 없으므로 전기 신호가 들어온 포트를 제외하고 모든 포트에 같은 전기 신호 전송
■ 주요 장비
- 허브(Hub), 리피터(Repeater): 네트워크 통신을 중재하는 네트워크 장비
- 케이블(Cable), 커넥터(Connector): 케이블
- 트랜시버(Tranceiver): 컴퓨터의 랜 카드와 케이블을 연결하는 장치
- 탭(TAP): 네트워크 모니터링과 패킷 분석을 위해 전기 신호를 다른 장비로 복제
1.4.2 데이터 링크 계층 (L2)
- 전기 신호를 모아 사람이 알아볼 수 있는 데이터 형태로 처리
- 주소 정보를 정의하고 정확한 주소로 통신하는 것이 목적
- 1계층: 전기 신호를 잘 보내는 것이 목적이므로 출발지와 목적지를 구분할 수 없음
- 2계층: 출발지와 도착지 주소를 확인하고 여러 검사 후 데이터 처리 수행
- 주소 체계가 생기면서 여러 통신이 한꺼번에 이루어지는 것을 구분하기 위한 기능으로 주로 정의됨. 전기 신호를 모아 데이터 형태로 처리하므로 데이터에 대한 에러를 탐지하거나 고치는 역할을 수행할 수 있음. 현대에는 에러를 탐지하는 역할만 수행.
- 무작정 데이터를 던지는 것이 아니라 받는 사람이 현재 데이터를 받을 수 있는지 확인하는 작업부터 해야함. 이 역할을 플로 컨트롤(Flow Contorl)을 일컫음.
▲ 그림1-6. 비교적 간단한 2계층의 플로 컨트롤
■ 주요 장비: 네트워크 구성 요소 - 네트워크 인터페이스 카드, 스위치
■ 네트워크 인터페이스 카드
▲ 그림 1-7. 네트워크 인터페이스 카드의 동작 방식
- 전기 신호를 데이터 형태로 만든다.
- 고유 MAC 주소가 있음
- 입력되는 전기 신호를 데이터 형태로 만듦
- 목적지 MAC 주소와 출발지 MAC 주소를 확인한다.
- 네트워크 인터페이스 카드의 MAC 주소를 확인한다.
- 데이터에서 도착지 MAC 주소를 확인한 후 자신에게 들어오는 전기 신호가 맞는지 확인함
- 목적지 MAC 주소와 네트워크 인터페이스 카드가 갖고 있는 MAC 주소가 맞으면 데이터를 처리하고 다르면 데이터를 폐기한다.
- 자신에게 들어오는 전기 신호가 아니면 버리고 자신에게 들어오는 전기 신호가 맞으면 이 데이터를 상위 계층에서 처리할 수 있도록 메모리에 적재함
■ 스위치(Swtich)
▲ 그림 1-8. 스위치의 동작 방식
- 단말(Terminal)이 어떤 MAC 주소인지, 연결된 포트는 어느 것인지 주소 습득(Address Learning) 과정에서 알 수 있음. 이 데이터를 기반으로 단말들이 통신할 때 포트를 적절히 필터링하고 정확한 포트로 포워딩해줌.
- 반면, 1계층에서 동작하는 허브는 한 포트에서 전기 신호가 들어오면 전체 포트로 전기 신호를 전달하다 보니 전체 네트워크에서 동시에 오직 하나의 장비에만 데이터를 보낼 수 있음
- 스위치의 적절한 필터링과 포워딩 기능으로 통신이 필요한 포트만 사용하고 네트워크 전체에 불필요한 처리가 감소하면서 이더넷 네트워크 효율성이 크게 향상되었고 이더넷 기반 네트워크가 급증되는 계기가 됨
- 2계층의 가장 중요한 특징: MAC 주소라는 주소 체계가 있다는 것
- 2계층에서 동작하는 네트워크 인터페이스 카드와 스위치 모두 MAC 주소를 이해할 수 있고, 스위치는 MAC 주소를 보고 통신해야 할 포트를 지정해 내보내는 능력이 있음
1.4.3 네트워크 계층 (L3)
- IP 주소와 같은 논리적인 주소를 정의
- 데이터 통신할 때는 2가지 주소가 사용됨
- 2계층의 물리적인 MAC 주소
- 3계층의 논리적인 IP주소
- MAC 주소와 달리 IP 주소는 사용자가 환경에 맞게 변경해 사용할 수 있음
- 3계층을 이해할 수 있는 장비와 단말은 네트워크 주소 정보를 이용해 자신이 속한 네트워크와 원격지 네트워크를 구분할 수 있고 원격지 네트워크를 가려면 어디로 가야하는지 경로를 지정하는 능력이 있음
■ IP 주소 체계
▲ 그림 1-9. IP주소 체계
- IP 주소 체계는 네트워크 주소와 호스트 주소로 구분됨
- IP 주소는 주소를 나누는 구분점이 3개이므로 어디가 네트워크 주소이고 어디가 호스트 주소인지 구분하기 어려움
■ 주요 장비: 라우터
▲ 그림 1-10. 라우터
- IP 주소 체계를 이해하고 최적의 경로를 찾아 패킷을 포워딩함
- 3계층에서 정의한 IP 주소를 이해할 수 있음
- IP 주소를 사용해 최적의 경로를 찾아주고 해당 경로로 패킷을 전송하는 역할을 함
1.4.4 트랜스포트 계층 (L4)
- 데이터들이 정상적으로 잘 보내지도록 확인하는 역할
- 패킷 네트워크는 네트워크를 분할해 패킷에 실어보내다 보니 중간에 패킷이 유실되거나 순서가 바뀌는 경우가 생길 수 있음. 이를 해결하기 위해 바로 잡아주는 역할을 4계층에서 담당함.
- 패킷을 분할할 때 패킷 헤더에 보내는 순서와 받는 순서를 적어 통신하므로 패킷이 유실되면 재전송을 요청할 수 있고 순서가 뒤바뀌더라도 바로잡을 수 있음
■ 애플리케이션 구분자
- 시퀀스 번호(Sequence Number): 패킷에 보내는 순서, 순서 번호
- ACK 번호(Acknowledgement Number): 패킷을 받는 순서, 응답 번호
- 포트 번호(Port Number): 장치 내의 상위 애플리케이션을 구분
■ 주요 장비: 로드 밸런서, 방화벽
- 4계층에서 볼 수 있는 애플리케이션 구분자를 이용해 부하를 분산하거나 보안 정책을 수립해 패킷을 통과하고 차단하는 기능을 수행
1.4.5 세션 계층 (L5)
- 세션을 관리하는 것이 주요 역할
- 양 끝단의 응용 프로세스가 연결을 성립하도록 도와주고, 연결이 안정적으로 유지되도록 관리. 작업 완료 후에는 이 연결을 끊는 역할을 함.
- TCP/IP 세션을 만들고 없애는 책임을 짐
- 에러로 중단된 통신에 대한 에러 복구와 재전송을 수행
1.4.6 프레젠테이션 계층 (L6)
- 일종의 번역기나 변환기 역할을 수행하는 계층
- 표현 방식이 다른 애플리케이션이나 시스템 간의 통신을 돕기 위해 하나의 통일된 구문 형식으로 변환시키는 기능을 수행함
- 사용자 시스템의 응용 계층에서 데이터의 형식상 차이를 다루는 부담을 덜어줌
- MIME 인코딩이나 암호화, 압축, 코드 변환과 같은 동작이 이루어짐
1.4.7 애플리케이션 계층 (L7)
- 네트워크 소프트웨어의 UI 부분이나 사용자의 입출력 부분을 정의
- 애플리케이션 프로세스를 정의하고 애플리케이션 서비스를 수행
- 애플리케이션 프로토콜은 종류가 많은데, 대표적인 프로토콜은 FTP, SMTP, HTTP, TELNET
1.5 인캡슐레이션과 디캡슐레이션
- 상위 계층에서 하위 계층으로 데이터를 보내면 물리 계층에서 전기 신호 형태로 네트워크를 통해 신호를 보냄
- 받는 쪽에서는 다시 하위 계층에서 상위 계층으로 데이터를 보냄
- 이렇게 데이터를 보내는 과정을 인캡슐레이션(Encapsulation), 받는 과정을 디캡슐레이션(Decapsulation)이라고 부름
▲ 그림1-11. 인캡슐레이션과 디캡슐레이션
- 현대 네트워크는 대부분 패킷 기반 네트워크
- 패킷 네트워크는 데이터를 패킷이라는 작은 단위로 쪼개 보내는데, 하나의 통신이 회선 전체를 점유하지 않고 동시에 여러 단말이 통신하도록 해줌
- 데이터를 패킷으로 쪼개고 네트워크를 이용해 목적지로 보내도 받는 쪽에서는 패킷을 다시 큰 데이터 형태로 결합해 사용함
■ 인캡슐레이션(Encapsulation)
- 애플리케이션에서 데이터를 데이터 플로 계층(1~4계층)으로 내려보내면서 패킷에 데이터를 넣을 수 있도록 분할하는 과정
- 네트워크 상황을 고려해 적절한 크기로 데이터를 쪼개고 그림 1-11과 같이 4계층부터 네트워크 전송을 위한 정보를 헤더에 붙여넣음
- 헤더 정보는 4~2계층에서 각각 필요한 정보를 추가하는데 이 정보는 미리 정의된 비트 단위(0 또는 1)로 씀
- 4계층에서 헤더를 추가하고 3계층으로 내려보내면 다시 3계층에서 필요한 헤더 정보를 추가하고 2계층으로 내려보냄
- 2계층에서도 다시 2계층에서 필요한 헤더 정보를 추가한 후 전기 신호로 변환해 수신자에게 전송
- 데이터 한 개를 전송하는 작업은 생각보다 복잡해 데이터 플로 계층에서만 3개의 헤더 정보가 추가됨
- 받는 쪽에서는 디캡슐레이션 과정 수행
■ 디캡슐레이션(Decapsulation)
- 받은 전기 신호를 데이터 형태로 만들어 2계층으로 올려보냄
- 2계층에서는 송신자가 작성한 2계층 헤더에 포함된 정보를 확인함
- 만약 2계층에 적힌 정보 중 목적지가 자신이 아니라면 자신에게 온 패킷이 아니므로 버림. 랜 카드가 이 역할을 담당함. 반대로 2계층에 적힌 정보의 목적지가 맞다면 3계층으로 이 정보를 보냄.
- 데이터를 상위 계층으로 올려보낼 때 2계층의 헤더 정보는 더 이상 필요없으므로 벗겨내고 올려보냄
- 3계층에서는 2계층이 동작했던 것처럼 상대방이 적은 3계층의 헤더 정보를 확인해 자신에게 온 것이 맞는지 확인하고 맞으면 3계층 헤더 정보를 제거하고 4계층으로 보냄
- 이를 받은 4계층도 3계층과 같은 과정을 거쳐 데이터를 애플리케이션에 올려줌
이러한 복잡한 작업은 2가지 정보 흐름으로 설명할 수 있음
- 인캡슐레이션, 디캡슐레이션 과정을 통해 데이터가 전송되는 과정
- 각 계층 헤더를 이용해 송신자 계층과 수신자 계층 간의 논리적 통신 과정
실제로 데이터는 상위 계층에서 데이터 플로 계층으로, 즉 상위계층에서 패킷 형태로 하나씩 인캡슐레이션되면서 내려오고 랜 카드에서 전기 형태로 변환되어 목적지로 전달됨
- 전기 신호를 받은 목적지에서는 데이터 형태로 변환해 상위 계층으로 올려주고 이 패킷들을 조합해 데이터 형태로 만듦. 결국 주고받는 데이터 흐름을 간단히 표현하면 상위 계층에서 하위 계층으로, 다시 하위 계층에서 상위 계층으로 전달되는 형태임.
- 각 계층에서 인캡슐레이션 과정에서 수행했던 것처럼 현재 계층에서 추가하는 헤더 정보는 받는 상대방이 확인해야 하는 정보
- 만약 4계층에서 헤더를 추가했다면 그 정보는 받는 쪽의 4계층에서 확인
- 중간에 적힌 헤더 정보는 받는 계층에서 참고하고 버림
- 정리하면 실제 데이터는 상위계층 > 하위계층, 하위계층 > 상위 계층으로 전달되고 헤더 정보는 각 계층끼리 전달됨
■ 2, 3, 4계층 헤더 비교
▲ 그림 1-12. 2, 3, 4계층 헤더 비교
- 데이터를 인캡슐레이션하는 과정에서 헤더에 넣는 정보들이 꽤 많아 모두 이해하기 힘듦
- 프로토콜마다 특성이 달라 적어 넣는 정보가 다르므로 이 정보를 이해하려면 많은 공부가 필요함
- 하지만 이런 복잡한 정보들에도 규칙이 있으며 헤더에 두 가지 정보는 반드시 포함되어야 함
- 현재 계층에서 정의하는 정보
- 상위 프로토콜 지시자
■ 현재 계층에서 정의하는 정보
- 앞에서 다루었던 OSI 7계층의 각 계층에서의 목적에 맞는 정보들이 포함됨
- 4계층의 목적은 큰 데이터를 잘 분할하고 받는 쪽에서는 잘 조립하는 것
- 잘 분할하고 잘 조립하도록 데이터에 순서를 정하고 받은 패킷의 순서가 맞는지, 빠진 패킷은 없는지 점검하는 역할이 중요하며 이 정보를 헤더에 적어 넣게 됨
- TCP/IP의 4계층 프로토콜인 TCP에서는 시퀀스(Sequence), 애크(ACKnowledgement) 번호 필드로 이 데이터를 표현함
- 3계층 헤더에는 3계층에서 정의하는 논리적인 주소인 출발지, 도착지 IP 주소를 헤더에 적어 넣음
- 2계층은 MAC 주소를 정의하는데 3계층처럼 2계층도 출발지, 도착지 MAC 주소 정보를 헤더에 넣음
■ 상위 프로토콜 지시자
▲ 그림1-13. TCP/IP 프로토콜 스택
- 프로토콜 스택은 상위 계층으로 올라갈수록 정보가 많아짐
- 3계층 프로토콜인 IP는 4계층에서는 다시 TCP와 UDP로 나뉘고 그보다 더 상위 계층에서는 FTP, HTTP, SMTP, POP3 등 더 다양한 프로토콜로 다시 나뉨
- 인캡슐레이션 과정에서는 상위 프로토콜이 많아도 문제가 없지만 디캡슐레이션하는 목적지 쪽에서는 헤더에 아무 정보가 없으면 어떤 상위 프로토콜로 올려보내 주어야 할지 결정할 수 없음
- 예시: 3계층에서 목적지 IP 주소를 확인하고 4계층으로 데이터를 올려보낼 때 헤더에 상위 프로토콜 정보가 없다면 TCP로 보내야 할지, UDP로 보내야 할지 구분할 수 없음. 4계층에서 애플리케이션 계층으로 올려보낼 때도 똑같은 문제 발생.
■ 잘 알려진 상위 프로토콜 지시자 정보
- 4계층
포트 번호 (Port Number) | 서비스 |
TCP 20, 21 | FTP(File Transfer Protocol) |
TCP 22 | SSH(Secure Shell) |
TCP 23 | TELNET(Telnet Terminal) |
TCP 25 | SMTP(Simple Mail Transport Protocol) |
UDP 49 | TACACS |
TCP 53/UDP 53 | DNS(Domain Name Service) |
UDP 67, 68 | BOOTP(Bootstrap Protocol) |
TCP 80/UDP 80 | HTTP(Hyper Text Transfer Protocol) |
UDP 123 | NTP(Network TIME Protocol) |
UDP 161, 162 | SNMP(Simple Network Management Protocol) |
TCP 443 | HTTPS |
TCP 445/UDP 445 | Microsoft-DS |
- 3계층
프로토콜 번호 (Protocol Number) | 프로토콜 |
1 | ICMP(Internet Contorl Message) |
2 | IGMP(Internet Group Management) |
6 | TCP(Transmission Control) |
17 | UDP(User Datagram) |
50 | ESP(Encap Secuity Payload) |
51 | AH(Authentication Header) |
58 | IPv6용 ICMP |
133 | FC(Fibre Channel) |
- 2계층
이더 타입 (Ether Type) | 프로토콜 |
0x0800 | IPv4(Internet Protocol version 4) |
0x0806 | ARP(Address Resolution Protocol) |
0x22F3 | IETF TRILL Protocol |
0x8035 | RARP(Reverse ARP) |
0x8100 | VLAN-tagged frame(802, 1Q) |
Shortest Path Bridging(802, 1aq) | AH(Authentication Header) |
0x86DD | IPv6(Internet Protocol version 6) |
0x88CC | LLDP(Link Layer Discovery Protocol) |
0x8906 | FCoE(Fibre Channel over Ethernet) |
0x8915 | RoCE(RDMA over Converged Ethernet) |
- 각 계층마다 상위 프로토콜 지시자를 가지고 있지만 이름이 달라서 다음과 같이 부름
- 4계층: 포트 번호 (Port Number)
- 3계층: 프로토콜 번호 (Protocol Number)
- 2계층: 이더 타입 (Ether Type)
- 디캡슐레이션할 때 상위 프로토콜 지시자 정보를 이용해 어느 상위 계층 프로토콜로 보내야 할지 구분해야 하므로 동작하는 계층보다 한 계층 위의 정보가 적혀있게 됨
- [!] 착각하기 쉬운 정보
- 포트 번호는 4계층 헤더에 적힌 정보이지만 애플리케이션 계층에서는 프로토콜 종류를 나타내주는 정보임
✍ 회고
실무에서 로드밸런서, WAF 등 관련된 용어를 접할 때가 많았었는데, 어디서 나온 개념인지 헷갈릴 때가 있었습니다. OSI 7계층에서 등장하는 단어라는 것을 알고 나서는 이해하기 좀 더 쉬워졌습니다.
본 포스팅을 정리하면서 느낀 점이 있다면, 학부 때는 컴퓨터 네트워크 과목 공부할 때 어려웠는데 이번에 공부하면서 그때는 왜 어려워했을까? 싶더라고요. 학부 때 더 열심히 했다면 지금 덜 고생하지 않았을까 싶네요. 😅
스터디 외로 랜선모각코를 진행 중인데, OSI 7계층을 편하게 외울 방법을 새로 알게 되어 공유합니다.
이번에도 그림 1-6.~1-13. 모두 직접 아이패드로 그렸습니다. '잘 알려진 상위 프로토콜 지시자 정보'는 참고로만 알고 있으면 될 것 같아 보입니다. 학습하면서 제가 이해하기 편한 대로 내용을 요약했으므로 책에 나온 목차나 순서가 다를 수 있으니 참고 부탁드립니다.
🧸 참고사항
- 출처: 고재성, 이상훈, 『IT 엔지니어를 위한 네트워크 입문』, 길벗(2020)
- 본 내용은 학습을 위해 정리한 내용입니다.
- 해당 글 타래를 보고 싶다면 목차 - 도서 『IT 엔지니어를 위한 네트워크 입문』 요약 글을 참고해 주세요.
'Computer Science > Network' 카테고리의 다른 글
02장 네트워크 연결과 구성 요소 (0) | 2021.11.15 |
---|---|
01장 네트워크 시작하기 - 1 (2) | 2021.09.22 |
목차 - 도서 『IT 엔지니어를 위한 네트워크 입문』 요약 (0) | 2021.09.22 |
댓글