OSI 7계층에서의 캡슐화/디캡슐화
네트워크 통신 과정을 7단계로 나눈 OSI 7계층에서 어떻게 전송과 수신 시 어떻게 저 단계들을 밟아 갈지에 대해서 www.google.com에 접속하는 과정을 통해 알아보자
OSI 7계층이란?
OSI(Open Systems Interconnection)는 네트워크 통신 과정을 7단계로 나눈 국제 표준 모델
각 계층은 자신의 역할만 수행하고, 다른 계층으로 넘김 이때 캡슐화 디캡슐화로 전달
보내려는 메시지부터 그걸 비트로 목적지까지 보내고 비트로 메시지를 다시 만들어 내는 과정
캡슐화 과정 - 전송 시 계층 흐름
응용 계층
사용자가 웹브라우저에 www.google.com에 접속하면, HTTP 요청 발생
이때 발생하는 요청메시지가 우리가 보낼 거
[데이터]
표현 계층
데이터 인코딩, 압축, 암호화 수행
예) UTF-8 인코딩, TLS 암호화 등
데이터를 통신 가능한 표준 형식으로 변환
[인코딩 + 데이터]
세션 계층
통신 세션의 생성, 유지, 종료를 관리
[세션정보 + 인코딩 + 데이터]
7~5 계층을 묶어서 이제 그냥 데이터라고 하겠음
전송 계층
TCP/UDP 헤더를 추가하는 단계
이를 통해 해당 데이터가 어느 포트에서 왔고 어디로 가는지 순서는 맞게 갔는지 등을 알 수 있음
헤더 구성
- 출발지, 도착지 포트
- 순서 보장을 위한 시퀀스 번호
- 연결, 해제를 위한 플래그(SYN, ACK, FIN 등)
- 오류검출을 위한 체크섬 등등...
세그먼트가 만들어짐
이 포함된 헤더를 추가해 IP의 부족한 부분을 매꾼다.
[TCP 헤더 + 데이터]
네트워크 계층
IP 헤더 추가
헤더 구성
- 출발지 도착지 IP
- TTL(Time To Live)
- 프로토콜(TCP/UDP)
- 체크섬 등등...
패킷이 생성됨
[IP 헤더 + TCP 헤더 + 데이터]
데이터링크 계층
이 단계에서는 실제 이 데이터가 들어갈 물리적 장소인 MAC주소가 포함된 헤더를 포함시킨다.
이를 통해 데이터를 보낼 실제 장소까지 알 수 있었다.
헤더 구성
출발지, 도착지 MAC
이더타입
CRC(FCS)* - 오류검사
[MAC 헤더 + IP 헤더 + TCP 헤더 + 데이터]
이렇게 프레임이 만들어진다.
물리 계층
프레임을 0과 1의 비트로 변환해서 전기/광/전파 신호로 전송
이제 이 01이 라우터를 타고 타고 구글의 라우터까지 도달한다.
이제 구글은 그 01들이 뭔지 알기위해서 디캡슐화를 해야한다.
디캡슐화 - 수신 시 계층 흐름
물리 계층
전기/전파/광 신호를 네트워크 어댑터를 통해 비트스트림 형태로 받는다.
이걸로 프레임을 구성
0101010111 -> 프레임
데이터링크 계층
프레임 속 MAC 주소를 보고 이걸 받은 네트워크 어댑터 즉 NIC 의 주소 일치하는 지 보고 처리(스위치)
MAC 헤더 제거 -> 패킷으로 전달
네트워크 계층
패킷 속 IP 헤더를 보고 목적지 ip 주소가 내 ip와 같은지 판단함
라우터의 게이트웨이가 서브넷에 포함 됐는지 판단하고 맞다면
헤더 제거 후 다음계층으로 -> 세그먼트
전달 계층
세그먼트 속 목적지 port를 가져옴 이를 통해 해당 주소의 어떤 포트로 보내야 하는지도 알 수 있음(OS가 판단)
이제 세션 정보와 데이터만 남게됨
세션 계층
해당 포트의 어떤 세션에 데이터인지 알게 됨
표현 계층
온 데이터를 디코딩, 압축 풀기, 복호화 수행함
응용계층
드디어 HTTP 요청이란 걸 알게됨
마무리
이렇게 네트워크 통신을 위해 필요한 것들을 더하고 더하는 캡슐화 과정과 그렇게 온 걸 하나하나 꺼내가며 필요한 정보를 얻는 디캡슐화에 대해 공부해봤다.
정보처리기사 시험에서 단순히 표로된 걸 외우기만 했는데 이렇게 공부해보며 왜 이렇게 구성됐고 각각에 연관성을 알게 되니 퍼즐이 맞춰지는 기분이다.