0. OSI 7계층이 등장하게 된 배경
- 컴퓨터 네트워크가 발전하면서 각 회사마다 자신들만의 독자적인 네트워크 프로토콜을 개발했다. 이로 인해서 서로 다른 시스템 간 통신이 불가능한 문제가 발생했다.
- 이런 문제 해결을 위해 국제표준화기구(ISO)에서 1984년에 개방형 시스템 간 상호 연결(Open Systems Interconnection, OSI) 모델을 제안했다.
- 계층을 나눈 이유
- 복잡성 관리 : 각 계층은 자신의 역할에만 집중할 수 있다.
- 유지보수 : 한 계층의 기술 업데이트가 다른 계층에 영향을 주지 않는다.
- 계층마다 데이터에 설명, 포장(보안) 혹은 변환이 되어 전달된다.
- 사용자가 데이터를 보내면 총 14계층을 거친다. 즉 하나의 계측은 일방적이지 않고 양방향이다.
1. 제 7계층 : 응용 계층(Application Layer)
- 사용자가 네트워크와 직접 상호작용 할 수 있게 해주는 인터페이스를 제공한다.
- 사용자의 의도를 네트워크가 이해할 수 있는 데이터로 변환, 혹은 네트워크로 받은 데이터를 사용자가 이해할 수 있는 형태로 변환
- 주요 프로토콜
- HTTP/HTTPS(웹 통신)
- 웹 브라우저와 웹 서버 간의 통신을 담당
- 요청과 응답 구조로 동작하고, [GET, POST, PUT, DELETE] 등 메소드를 이용한다.
- FTP(파일 전송)
- 클라이언트와 서버 간의 파일 전송을 위한 프로토콜
- 제어 연결(21번 포트)과 데이터 연결(20번 포트)를 분리하여 사용
- SMTP/POP3/IMAP(이메일)
- SMTP는 메일 발송을 담당
- POP3는 메일 수신을 담당
- IMAP은 더 발전된 형태의 메일 수신 프로토콜로 서버와 동기화를 유지
- DNS(도메인 이름 시스템)
- 도메인 이름을 IP 주수로 변환하는 역할
- 계층적 구조로 이루어진 분산 데이터베이스 시스템이다.
- DHCP(동적 호스트 설정)
- 네트워크 장치에 자동으로 IP 주소를 할당
- DORA(Discover, Offer, Request, Acknowledge) 프로세스를 통해 동작
- HTTP/HTTPS(웹 통신)
- 대표적인 응용 계층의 예시
- 웹 사이트 접속 시 www.google.com을 google에 접속하겠다는 의도로 받아들인다. 동시에 네트워크로 부터 HTML 코드를 받고, 이 HTML 코드를 해석해서 웹페이지로 변환해서 보여준다.
- 이메일 전송 시 사용자가 작성한 내용을 SMTP 프로토콜이 이해할 수 있는 형식으로 변환
2. 제 6계층 : 표현 계층(Presentation Layer)
- 서로 다른 시스템 간 데이터를 주고 받을 때 양쪽 모두가 이해할 수 있는 공통의 형식으로 변환
- 데이터 변환과 처리를 담당
- 주요 프로토콜
- SSL/TSL(보안) : 데이터 암호화와 보안 통신을 담당하며, 인증서를 통한 신원 확인과 데이터 암호화를 제공
- JPEG, MPEG(데이터 압축) : 이미지와 영상의 압축을 담당해서 데이터 크기를 줄여 효율적인 전송을 가능하게 한다.
- 표현 계층의 주요 기능
- 문자 인코딩 변환
- 한글을 UTF-8 인코딩 해준다.
- 데이터의 압축과 해제
- 원본 이미지를 압축하여 네트워크 사용량을 줄이고, 수신 시 압축을 해제한다.
- 암호화 및 복호화
- 금융 데이터와 같이 중요한 데이터를 송수신 때 암호화와 복호화를 진행한다.
- 데이터 포맷 변환
- JSON 데이터를 XML 형식으로 변환
- 문자 인코딩 변환
- 실제 표현 계층 응용 사례
- 웹 브라우저에서 의 예시
- 다양한 이미지, 비디오 포맷을 화면에 표시 가능한 형태로 변환
- 웹 폰트 : 다양한 폰트 파일을 브라우저에서 표시 가능한 형태로 변환
- 국제 메신저 서비스
- 다양한 언어의 문자셋 지원
- 이모지 처리
- 파일 첨부 기능
- 웹 브라우저에서 의 예시
3. 제 5계층 : 세션 계층(Session Layer)
- 응용 프로세스가 통신을 관리하기 위한 방법을 제공
- 통신 세션을 수립하고 유지하는 역할을 담당한다. 신뢰성 있는 통신을 보장하고 효율적인 데이터 전송을 가능하게 해준다.
- 주요 프로토콜
- NetBIOS(네트워크 기본 입출력)
- 컴퓨터 간 세션 연결을 담당
- 네트워크 상에서 컴퓨터의 이름을 관리
- SSH(Secure Shell)
- 보안 세션 연결 담당
- 원격 로그인과 명령 실행을 위한 안전한 세션 제공
- PPTP(Point-to-Point Tunneling Protocol)
- 가상 사설망(VPN) 세션을 담당
- 두 지점 간의 보안 연결을 유지
- NetBIOS(네트워크 기본 입출력)
- 세션 계층의 주요 기능
- 세션 수립과 유지
- A와 B 사이의 통신에서 고유한 세션과 ID를 생성해서 관리한다.
- 동기화
- 연결이 끊겨도 다시 연결하면 이전 기록에 이어서 전송을 시작
- 100MB 파일 전송중 65MB 전송에서 끊긴 경우 이어서 시작
- 대화 제어
- 양방향 통신에서 누가 데이터를 전송할 차례인지 관리하여, 데이터가 충돌 없이 순차적으로 전송될 수 있도록 보장
- 세션 복구
- 네트워크 오류로 연결이 끊어졌을 때, 이전 상태를 복구하고 통신을 재개한다.
- 세션 수립과 유지
- 실제 세션 계층의 응용 사례
- 온라인 뱅킹
- 로그인 세션 관리
- 보안을 위한 세션 타임아웃
- 동시 접속 제안
- 온라인 게임
- 게임 세션 유지
- 플레이어 간 실시간 상호작용 관리
- 게임 상태 동기화
- 스트리밍 서비스
- 재생 위치 기억
- 화질 자동 조정
- 일시정지/재개 기능
- 온라인 뱅킹
4. 제 4계층 : 전송 계층(Transport Layer)
- 데이터를 안전하고 효율적으로 전달
- 보내고자 하는 데이터의 용량과 속도, 목적지를 처리
- 주요 프로토콜
- TCP(Transmission Control Protocol)
- 안전하고 신뢰성 있는 전송을 보장
- 주요 특징
- 연결 지향성 : 3-way handshake를 통해 통신을 시작한다. 통신 시작을 요청 > 상대방의 준비완료 연락 수신 > 통신 시작 알림
- 신뢰성 보장 : 데이터 조각을 보낼 때 마다 수신 확인을 하고, 누락된 것에 발견되면 재전송 요청을 한다.
- 순서 보장 : 데이터 조각 마다 번호를 부여해서 수신 측에서 올바른 순서로 재조립
- UTP(User Datagram Protocol)
- 빠른 전송을 택하지만, 신뢰성은 TCP 보다 낮다.
- 주요 특징
- 비연결성 : 사전 연결 설정 없이 바로 전송
- 빠른 전송 속도 : 확인 응답 없고, 순서 보장도 없음
- 실시간성 중시 : 영상 스트리밍, 온라인 게임에 적합
- TCP(Transmission Control Protocol)
- 전송 계층의 중요한 기능
- 포트 번호 관리 : 포트번호는 하나의 컴퓨터(IP 주소)에서 여러 프로그램이 동시에 통신할 수 있도록 구분해준다. 전송 계층에서 포트번호를 관리해서 들어오는 데이터를 어떤 포트로 전달할지 관리
- 흐름 제어 : 스신 측에서 처리할 수 있는 데이터 양을 확인하고, 그 속도에 맞춰 전송
- 혼잡 제어 : 패킷 손실이 발생하면 전송 속도 감소, 정상적으로 전송되면 점진적으로 증가
- 실제 전송 계층의 응용 사례
- 웹 브라우징(TCP)
- 사용자가 특정 사이트에 접속 요청
- TCP
- 웹 서버와 연결 수립
- 페이지 데이터를 작은 조각으로 분할
- 순서대로 전송하며 각 조각들이 도착했는지 확인
- 누락된 데이터 재전송
- 모든 데이터가 전달하면 브라우저에 전달
- 실시간 게임
- 사용자가 캐릭터 이동 명령
- UDP
- 즉시 서버로 위치 정보 전송
- 일부 데이터가 손실되어도 계속 진행
- 새로운 위치로 정보 업데이트
- 웹 브라우징(TCP)
5. 제 3계층 : 네트워크 계층(Network Layer)
- 데이터 패킷이 출발지에서 목적지까지 최적의 경로로 전달되도록 관리
- 네트워크에서 데이터가 효율적으로 전달될 수 있는 핵심 역할을 수행
- 주요 프로토콜
- IP(인터넷 프로토콜)
- 패킷의 라우팅과 전달을 담당
- 출발지에서 목적지까지 경로 설정을 담당
- ICMP(인터넷 젱어 메시지)
- 네트워크 상태와 오류 보고를 담당
- 네트워크 문제 진단에 사용
- IP(인터넷 프로토콜)
- 네트워크 계층의 주요 기능
- 라우팅
- 데이터 패킷의 최적 경로를 설정
- 가능한 경로들 중 현재 경로의 트래픽 상황, 각 경로의 거리, 네트워크 상태를 고려하여 최적의 경로를 선택
- 논리적 주소 지정(IP Addressing)
- IP 주소는 논리적으로 네트워크 관리자가 할당하는 주소
- 다른 네트워크와 통신할 때 사용되는 주소
- 패킷 포워딩
- 데이터를 작은 패킷으로 나누어 전송
- 큰 데이터가 있다면 여러 패킷으로 나누고, 각 패킷의 헤더에 순서 번호를 넣어 전송
- 라우팅
6. 제 2계층 : 데이터 링크 계층(Data Link Layer)
- 2개의 인접한 네트워크 노드 간의 데이터 전송을 담당
- 신뢰성 있는 데이터 통신의 기반을 제공
- 근거리 통신망에서 중요한 역할을 수행
- 주요 프로토콜
- 이더넷(Ethernet)
- 근거리 통신망에서의 데이터 전송을 담당
- MAC 주소를 이용한 통신 관리
- ARP(주소 결정 프로토콜)
- IP 주소를 MAC 주소로 변환하는 역할
- 실제 물리 주소를 찾아 통신을 가능하게 함
- 이더넷(Ethernet)
- 데이터 링크 계층의 주요 기능
- 프레임화 : 네트워크 계층에서 받은 데이터를 프레임이라는 단위로 분할하고 관리
- MAC 주소 관리 : 물리적 주소(MAC)를 사용하여 장치를 식별한다.
- MAC 주소는 하드웨어 주소로 네트워크 카드마다 고유하게 부여된 물리적 주소
- 같은 네트워크 안에서 통신할 때 사용
- 오류 제어 : 데이터 전송 중 발생할 수 있는 오류를 검출하고 수정
- 흐름 제어 : 송신자와 수신자 간의 데이터 전송 속도를 조절
- 실제 동작 예시
- 근거리 통신망(LAN)에서의 데이터 전송 과정
- 컴퓨터 A가 컴퓨터 B로 데이터 전송 시도
- A의 데이터 링크 계층
- 데이터를 프레임으로 변환
- B의 MAC 주소 추가
- 오류 검출 코드 생성
- 프레임 전송
- 스위치의 역할
- MAC 주소 테이블 참조
- 목적지 포트로 프레임 전달
- 컴퓨터 B의 데이터 링크 계층
- 프레임 수신
- MAC 주소 확인
- 오류 검사
- 데이터 추출 및 상위 계층으로 전달
- A의 데이터 링크 계층
- 컴퓨터 A가 컴퓨터 B로 데이터 전송 시도
- 근거리 통신망(LAN)에서의 데이터 전송 과정
IP 주소와 MAC 주소는 각각 언제 사용될까?
IP주소는 전체 경로를 위한 것이고, MAC 주소는 각 구간의 직접적 통신을 위한 주소이다.
1. 출발지에서 목적지 IP를 확인
- 다른 네트워크 라면 라우터로 우선 보내야한다.
- ARP를 통해 라우터의 MAC주소를 찾는다.
- 전송할 프레임을 생성한다. (목적지 MAC = 라우터 MAC, 목적지 IP = 최종 목적지 IP)
- 라우터는 출발지와 같은 네트워크에 있으므로 MAC 주소를 알면 통신이 가능
2. 라우터에서의 처리
- 라우터가 프레임을 받으면 MAC 헤더를 제거
- IP 주소를 확인하고 다음 라우터를 결정
- 새로운 MAC 헤더를 추가한다.
7. 제 1계층 : 물리 계층(Physical Layer)
- 데이터를 전기 신호로 변환하여 전송하는 역할을 담당
- 물리 계층의 주요 특징
- 전송 매체의 특성 : 다양한 전송 매체를 사용할 수 있다.
- 유선 매체 : 트위스트 페어 케이블, 광섬유 케이블
- 무선 매체 : 전파(Wifi), 적외선, 마이크로파
- 신호 인코딩 : 디지털 데이터를 아날로그 신호로 변환
- manchster 인코딩
- NRZ(Non-Return to Zero)
- 물리 계층의 장비들
- 네트워크 인터페이스 카드(NIC)
- 디지털 데이터를 전기 신호로 변환
- 전기 신호를 디지털 데이터로 변환
- 매체와의 물리적 연결을 제공
- 리피터와 허브
- 리피터 : 약해진 신호를 증폭시키고, 신호의 왜곡을 보정
- 허브 : 여러 포트에 동일 신호를 전달하고 단순한 신호 복제 및 전달
- 네트워크 인터페이스 카드(NIC)
- 전송 매체의 특성 : 다양한 전송 매체를 사용할 수 있다.
- 주요 규격 : 물리 계층은 프로토콜 보다는 전기적, 기계적 규격을 정의한다.
- 이더넷 물리 규격
- 전기 신호의 전송 규칙을 정의
- 케이블 종류, 핀 배열, 전압 레벨 등의 규정
- 무선 통신 규격
- 전파를 이용한 데이터 전송을 정의
- 주파수, 변조 방식등을 규정
- 이더넷 물리 규격
8. 데이터를 전송하는 과정
- 네트워크의 캡슐화는 각 계층에서 필요한 정보를 하나씩 추가하며 진행
- 수신측에서는 역 캡슐화 과정을 통해 각 계층에 해당하는 헤더를 제거한다.
- 응용 계층에서 사용자가 데이터를 생성
- "Hello" 라는 메시지를 생성
- 응용 계층 프로토콜의 형식에 맞춰 데이터를 구성
- 표현 계층에서 데이터를 인코딩하고 필요하면 암호화 진행
- 텍스트를 UTF-8과 같은 표준 인코딩 방식으로 변환
- 필요한 경우 데이터 압축
- 보안이 필요한 경우 암호화
- 표현 계층 헤더 추가(데이터 형식, 인코딩 방식, 압축 방식, 사용된 암호화 알고리즘)
- 세션 계층에서 세션 정보를 추가
- 통신 세션을 식별하기 위한 고유 세션 ID 생성
- 세션 계층 헤더 추가(세션 ID, 세션 활동 관리 정보, 세션 복구를 위한 정보 등)
- 전송 계층에서 TCP/UDP 정보를 추가
- 데이터를 전송하기 위한 적당한 크기의 세그먼트로 분할
- TCP/UDP 헤더 추가(TCP 헤더 : 출발지 포트, 목적지 포트, 시퀀스 번호, 체크섬 등)
- 네트워크 계층에서 IP 주소 정보를 추가
- TCP/UDP 세그먼트를 패킷으로 변환
- IP 헤더가 추가 된다. (버전, 출발지 IP, 목적지 IP, TTL 등)
- 데이터 링크 계층에서 MAC 주소 정보를 추가
- IP 패킷을 프레임으로 변환
- 물리적 주소 지정을 위한 정보 추가
- MAC 헤더가 추가(목적지 MAC, 출발지 MAC, 데이터 길이, 체크섬)
- 물리 계층에서 전기 신호로 변환하여 전송
- 프레임 비트열로 변환
- 전송 매체에 적합한 신호로 변환
9. 다른 네트워크인 A에서 B로 데이터 전송하기
1. A에서 라우터로 전달하기
- A에서 B로 데이터를 보낼 때, 수신위치가 같은 네트워크에 있는지 다른 네트워크에 있는지 확인한다.
- 다른 네트워크라면 라우터로 전달
- 라우터의 MAC 주소를 알아야하기 때문에 ARP로 라우터의 MAC 주소를 알아낸다.
- 데이터 프레임을 생성한다. 목적지의 MAC 주소는 라우터의 MAC 주소로 IP 헤더에는 A의 IP, 목적지에는 B의 IP를 설정
라우터는 서로 다른 네트워크를 연결해주는 장비이며,
스위치는 같은 네트워크 내 여러 장비들을 효율적으로 연결해준다.
스위치는 결국 컴퓨터 A와 라우터 간의 통신을 관리해준다.
2. 라우터에서의 처리
- 라우터에서는 수신한 프레임을 분석
- MAC 헤더를 제거
- IP 헤더를 확인
- 라우팅 테이블을 확인
- 목적지 IP가 속한 네트워크로 가기 위한 최적 경로를 설정
- 다음 라우터를 선택
- 새로운 프레임을 생성
- 새로운 MAC 헤더를 추가(다음 라우터의 MAC 주소)
- IP 헤더는 그대로 유지
3. B의 네트워크로 이동 : 여러 라우터를 거쳐 B의 네트워크로 이동
- 마지막 라우터에 도달
- B의 MAC 주소를 알아내기 위해 ARP 요청을 전송
- 해당 네트워크의 스위치가 모든 포트로 전달
- B가 ARP 응답
- B의 MAC 주소 전달
- 최종 프레임 생성
- 목적지 MAC 주소를 B의 MAC 주소로 설정
- IP 헤더는 그대로 유지
- 스위치를 통해 B로 전달
- 스위치가 MAC 주소 테이블을 참조하여 B가 연결된 포트로 프레임 전달
4. B에서 데이터 수신
- MAC 주소를 확인
- 자신의 MAC 주소와 일치하는지 확인
- IP 헤더를 확인
- 목적지 IP가 자신의 IP와 일치하는지 확인
- 데이터를 전달
- MAC 헤더와 IP 헤더를 제거
- 실제 데이터를 상위 계층으로 전달
10. 참고
1)OSI 7계층 이해할 때 까지 공부하기 : https://velog.io/@yiseungyun/OSI-7%EA%B3%84%EC%B8%B5-%EC%9D%B4%ED%95%B4%ED%95%A0-%EB%95%8C%EA%B9%8C%EC%A7%80-%EA%B3%B5%EB%B6%80%ED%95%98%EA%B8%B0