OSI 7 Layer1. Physical Layer — 전기 신호 전송 역할작동원리Physical Layer 기술 구현부여러 대의 컴퓨터가 통신하려면?2. Datalink Layer — 전기 신호를 모아 우리가 알아볼 수 있는 데이터 형태로 처리함작동 원리Data-link Layer 기술 구현부3. Network Layer작동원리기능Routing?forwarding?routing table vs forwarding table구현부4. Transport Layer작동원리 설명기능구현부동작하는 장비OSI 모델 vs TCP/IP 모델5. Application LayerTCP/IP 소켓 프로그래밍대표적인 Application Layer 프로토콜 HTTP6. Presentation Layer마치며
OSI 7 Layer
OSI 계층은 크게 다시 두가지 계층으로 나눌 수 있음
- 1~4계층 : 데이터 플로 계층 / 하위 계층
- 5 ~7계층 : 애플리케이션 계층 / 상위 계층
- 계층별로 표준화된 프로토콜 템플릿을 통해 네트워크 프로토콜을 전부 개발하는 대신 계층별로 프로토콜을 개발해 네트워크 구성 요소들을 묘듈화 할 수 있음
- OSI 7계층에서 주소를 갖는 계층은 2계층과 3계층임.
1. Physical Layer — 전기 신호 전송 역할
- 0과 1의 나열을 아날로그 신호로 바꾸어 전선으로 흘려 보내고(encoding)
- 아날로그 신호가 들어오면 0과 1의 나열로 해석하여(decoding)
- 물리적으로 연결된 두 대의 컴퓨터가 0과 1의 나열을 주고 받을 수 있게 해주는 모듈(module) → Physical Layer
작동원리
- 모든 파일과 프로그램은 0과 1의 나열이다.
- 결국 0과 1만 주고 받을 수 있으면 됨
- 0과 1을 주고 받을 수 있으면 모든 데이터를 주고 받을 수 있으므로 아래와 같이 연결되어 있으면 모든 데이터를 주고 받을 수 있을까? 그냥은 안됨.

- 이유는 전자기파는 주파수가 매우 변동 하게 되는데 전선은 모든 주파수를 통과시키지는 못함
- 그래서 이런 전기 신호를 통과시킬 수 있는 전선은 없음. 우리는 0과 1만 보내면 되는데
- 그래서 이러한 신호를 보내기 위해 아날로그화 함. 0과 1의 이산 데이터를 아날로그화 해서 보내고, 받은 컴퓨터에서는 이 아날로그 신호를 해석해서 0101로 바꾸게 됨



Physical Layer 기술 구현부
- PHY 칩
- 1개층 모듈은 하드웨어 적으로 구현되어 있음
- 1계층에서 동작하는 허브는 한 포트에서 전기 신호가 들어오면 전체 포트로 전기 신호를 전달하기만 함(하나의 장비만 동시에 데이터를 보낼 수 있음)

여러 대의 컴퓨터가 통신하려면?
- 통신하고 싶을 때마다 전선이 필요하면, 컴퓨터가 많아지면 많아질수록 비용 면에서 비효율적임
- 전선 하나를 가지고 여러 대의 컴퓨터와 통신할 방법!!
- 전기가 통하는 구리선을 하나의 박스로 우겨 넣는다고 해보면 아래와 같이 됨
- 이 상태에서 이 상자가 메시지의 목적지를 확인해서 원하는 목적지에만 전달해 줄 수 있도록 한 것이 스위치



- 이와 같은 상황에서 스위치와 스위치를 연결해서 서로 다른 네트워크에 속한 컴퓨터끼리 통신이 가능하게 해주는 장비를 라우터라고 함

- 여기에서 이 초록색 장비가 공유기


2. Datalink Layer — 전기 신호를 모아 우리가 알아볼 수 있는 데이터 형태로 처리함
- 1계층에 속하는 기술 만으로는 여러 대의 컴퓨터가 통신하도록 만들 수 없었음

- 끊어 읽기의 성공을 위해서 송신자는 데이터의 앞 뒤에 특정한 비트열을 붙임
- 2계층에서는 출발지와 도착지 주소를 확인하고 내게 보낸 것이 맞는지, 또는 내가 처리해야 하는지에 대해 검사한 후 데이터 처리를 수행함
- 즉, Data-link layer는 같은 네트워크에 있는 여러 대의 컴퓨터들이 데이터를 주고받기 위해서 필요한 모듈임(1계층과 달리 주소 체계가 생김으로 여러 통신을 구분할 수 있음)
- 주소 체계(MAC 주소) → 한 명과 통신하는 것이 아닌 동시에 여러 명과 통신할 수 있다는 것
- 해당 레이어에서는 위 레이어에서의 정보들이 Frame으로 encapsulation됨
작동 원리

Data-link Layer 기술 구현부
- 랜카드(네트워크 인터페이스 카드, 이더넷 카드) 와 스위치
- 스위치는 mac 주소를 보고 통신해야 할 포트를 지정해 내보내는 능력이 있음
- 스위치는 단말이 어떤 mac 주소를 가지고 있는지 연결된 포트는 어느 것인지 주소 습득 과정에서 알 수 있고 이를 기반으로 단말들이 통신할 때 적절히 포트를 필터링하고 포워딩 해줌
- 전기 신호를 데이터 형태로 만듦
- 목적지 MAC 주소와 출발지 MAC 주소를 확인
- 네트워크 인터페이스 카드의 MAC 주소를 확인함(네트워크 인터페이스 카드에는 고유 mac 주소가 있음)
- 목적지 MAC 주소와 네트워크 인터페이스 카드가 갖고 있는 MAC 주소가 맞으면 데이터를 처리하고 다르면 데이터를 폐기함
네트워크 인터페이스 카드 동작방식
- 1계층과 마찬가지로 하드웨어적으로 구현되어 있음

3. Network Layer
3계층에서는 ip 주소와 같은 논리적인 주소가 정의되는데, 데이터 통신을 할 때는 2계층의 mac 주소와 3계층의 ip 주소를 이용함
3계층을 이해할 수 있는 장비나 단말(라우터)은 네트워크 주소 정보를 이용해 자신이 속한 네트워크나 원격지 네트워크를 구분할 수 있고 원격지 네트워크로 가려면 어디로 가야하는지 경로를 지정할 수 있음
작동원리

- 상대방의 IP 주소를 알고 있어야 메시지를 보낼 수 있음
- data 앞에 목적지 IP 주소를 붙인 것을 패킷 이라고 부름(3계층에서는 상위 계층의 정보들이 IP 패킷으로 Encapsulation됨)
- A가
가
에게 전달함
- 패킷을 받은
가
는 패킷을 열어서 목적지 IP 주소를 확인함 - 확인 시, 55.10.54.75가 현재 LAN 안에 없으니,
마
에게 전달하게 됨
가
는 데이터를 다시 포장한 다음, 자신과 연결되어 있는 유일한 라우터인마
에게 전달함
마
가 어떻게 데이터를바
에게로 전달해야 한다는 것을 아는 방법은 라우팅에 대해 더 공부해보기
마
는 데이터를 다시 포장해서바
에게 전달함, 그 후라
에게 전달
라
에서 B를 찾아서 패킷 전달함
기능
- 수많은 네트워크(LAN)들의 연결로 이루어지는 inter-network(WAN) 속에서
- 어딘가에 있는 목적지 컴퓨터로 데이터를 전송하기 위해
- IP 주소를 이용해서 길을 찾고(routing)
- 자신 다음의 라우터에게 데이터를 넘겨 주는 것(forwarding)
Routing?
- 패킷에 포함된 주소 등의 상세 정보를 이용하여 목적지까지 데이터 또는 메세지를 체계적으로 다른 네트워크에 전달하는 경로 선택(Path Determination) 그리고 스위칭하는 과정을 의미함
- 해당 과정을 능동적으로 수행하는 장치를 라우터라고 함
- 라우터는 가장 좋은 경로를 찾기 위해 라우팅 알고리즘, 즉 라우팅 프로토콜(Routing Protocol)을 사용하여 계산된 경로를 만들어 내고, 이를 라우팅 테이블에 저장함
forwarding?
- 라우터의 입력 포트에서 출력포트로 패킷을 이동시키는 것
- 라우팅 알고리즘을 통해 Forwarding Table이 만들어지고 Routing Table을 만드는 과정이 데이터가 이동하는 최종 경로가 됨
routing table vs forwarding table
- 라우팅 테이블 : L3 테이블. X.X.X.X/Y IP 목적지로 가기 위해서는 z.z.z.z router로 가라는 정보를 담고 있음
- 포와딩 테이블 : L2 테이블 which states for communicating with z.z.z.z router, send packets to Mac Address aa:bb:cc:dd:ee:ff
구현부
- 운영체제의 커널에 소프트웨어 적으로 구현되어 있음
4. Transport Layer
- 이제 인터넷 상의 모든 컴퓨터가 서로와 통신 가능함!
- 하위 계층인 1, 2, 3계층은 신호와 데이터를 올바른 위치로 보내고 실제 신호를 잘 만들어 보내는데 집중하고, 4계층은 실제로 해당 데이터들이 정상적으로 잘 보내지도록 확인하는 역할을 함
- 패킷 네트워크는 데이터를 분할해 패킷에 실어보내다 보니 중간에 패킷이 유실되거나 순서가 바뀌는 경우가 생김. 이 문제를 해결하기 위해 패킷이 유실되거나 순서가 바뀌었을 때 바로잡아 주는 역할을 4계층에서 담당함 ← 패킷을 분할할 때 패킷 헤더에 보내는 순서와 받는 순서를 적어(시퀀스 번호, ACK 번호) 통신하므로
- 이뿐 아니라 장치 내의 많은 애플리케이션을 구분할 수 있도록 포트번호를 사용함
작동원리 설명

- 세 개의 데이터를 어떤 프로세스에게 줘야 할 지 컴퓨터가 어떻게 알 수 있을까
- 데이터를 받고자 하는 프로세스들은 포트 번호 라는 것을 가져야 함
- 포트 번호는 하나의 컴퓨터에서 동시에 실행되고 있는 프로세스들이 서로 겹치지 않게 가져야 하는 정수 값임
- 송신자는 데이터를 보낼 때 데이터를 받을 수신자 컴퓨터에 있는 프로세스의 포트 번호를 붙여서 보냄!


기능
- Port 번호를 사용하여 도착지 컴퓨터의 최종 도착지인 프로세스에 까지 데이터가 도달하게 하는 모듈
구현부
- 운영체제의 커널에 소프트웨어 적으로 구현되어 있음
동작하는 장비
포트번호와 시퀀스, ack 번호 정보를 이용해 부하를 분산하거나 보안 정책을 수립해 패킷을 통과, 차단하는 기능을 수행함
- 로드 밸런서
- 방화벽
OSI 모델 vs TCP/IP 모델
- 사실 현대의 인터넷은 OSI 모델이 아니라 TCP/IP 모델을 따르고 있음
- 현대의 인터넷이 TCP/IP 모델을 따르는 이유는 OSI 모델이 TCP/IP 모델과의 시장 점유 싸움에서 졌기 때문


- 원래의 TCP/IP모델이 업데이트 되어서 변형이 됨
- 오늘날 TCP/IP Updated가 더 많이 사용된다고 함
5. Application Layer
양 끝단의 응용 프로세스가 연결을 성립하도록 도와주고 연결이 안정적으로 유지되도록 관리하고 작업 완료 후에는 이 연결을 끊는 역할을 함
세션 관리가 주요 역할임. TCP/IP 세션을 만들고 없애는 책임을 가짐
TCP/IP 소켓 프로그래밍
- 운영체제의 Transport Layer에서 제공하는 API를 활용해서 통신 가능한 프로그램을 만드는 것을 TCP/IP 소켓 프로그래밍, 또는 네트워크 프로그래밍 이라고 함
- 소켓 프로그래밍 만으로도 클라이언트, 서버 프로그램을 따로따로 만들어서 동작 시킬 수 있음
- 뿐만 아니라, TCP/IP 소켓 프로그래밍을 통해서 누구나 자신만의 Application Layer 인코더와 디코더를 만들 수 있음
- 누구든 자신만의 Application Layer 프로토콜을 만들어서 사용할 수 있다는 뜻임
- Application Layer도 다른 Layer들과 마찬가지로 인코더, 디코더가 있음
대표적인 Application Layer 프로토콜 HTTP

6. Presentation Layer
표현 방식이 다른 애플리케이션이나 시스템 간의 통신을 돕기 위해 하나의 통일된 구문 형식으로 변환시키는 기능을 수행함
일종의 번역기나 변환기 역할을 수행하는 계층. 아래와 같은 동작이 일어남
- MIME 인코딩
- 암호화
- 압축
- 코드 변환
마치며
- MVC 패턴은 소프트웨어 아키텍처 중 하나
- MVC와 마찬가지로 소프트웨어 아키텍처 중에 Layered Architecture라는게 있는데
- Layered 아키텍처를 따르는 대표적인 예가 네트워크 시스템임
- 네트워크 시스템은 하나의 커다란 소프트웨어라고 할 수 있음
- OSI 7 Layer 모델은 거대한 네트워크 소프트웨어의 구조를 설명하는 것임