네트워크 프로토콜이 통신하는 구조를 추상화된 7개의 계층으로 표현한 모델
각 계층은 독립적이기 때문에
문제가 생겼을 시 파악이 쉽고 고치는 범위를 줄인다.
Physical Layer
0과 1의 나열을 아날로그 신호로 바꾸어 전선으로 흘려보내고
(encoding)
아날로그 신호가 들어오면 0과 1의 나열로 해석하여
(decoding)
물리적으로 연결된 두 대의 컴퓨터가
0과 1의 나열을 주고받을 수 있게 해주는 모듈(module : 프로그래밍 함수)
사용되는 곳
phy칩
하드웨어적으로 구현
Data-Link Layer
여러 대의 컴퓨터와 통신하기 위해
스위치를 연결하기 위해 라우터를 사용 -> 공유기
라우터와 라우터끼리 연결 -> 인터넷 -> 규모가 커질 수록 커다란 전선을 요한다. (해저전선)
같은 네트워크 (스위치로 연결)에 있는 여러 대의 컴퓨터들이 데이터를 주고 받기 위해서 필요한 모듈
(Ex. Framing)
사용되는 곳
랜카드
하드웨어적으로 구현
Network Layer
수많은 네트워크들의 연결로 이루어진 inter-network 속에서 어딘가에 있는 목적지 컴퓨터로 데이터를 전송하기 위해
IP주소를 이용해서 길을 찾고 (Routing)
Routing : 네트워크 안에서 데이터를 보낼 최적의 경로를 선택하는 과정
자신 다음의 라우터에게 데이터를 넘겨주는 것(forwarding)
사용되는 곳
운영체제의 커널에 소프트웨어적으로 구현
Transport Layer
입력받은 데이터를 실행중인 프로스세들에게 넘기려면
포트번호가 필요하다
포트번호 : 하나의 컴퓨터에서 동시에 실행되고 있는 프로세스들이 서로 겹치지 않게 가져야하는 정수 값.
port번호를 사용하여 도착지 컴퓨터의 최종 도착지인
프로세스에 까지 데이터가 도달하게 하는 모듈
사용되는 곳
운영체제의 커널에 소프트웨어적으로 구현
예) 방화벽, 프록시 서버
Session Layer
컴퓨터 간 대화나 세션을 관리
모든 통신 장치 간에 연결을 설정하고 관리 및 종료
Presentation Layer
암호화와 복호화 작업
응용 계층으로부터 전송받거나 전달할 데이터의 인코딩과 디코딩
현재 인터넷 모델은 OSI모델이 아니라 TCP/IP 모델
Session Layer
Presentation Layer
Application Layer 를 하나로 통합
(맨 위 사진 참조)
Application Layer
최종적으로 사용자가 볼 수 있는 유일한 계층, UI 제공
예) 크롬, 이메일
TCP/IP 소켓 프로그래밍
운영체제의 Transport Layer에서 제공하는 API를 활용해서
통신 가능한 프로그램을 만드는 것
프로토콜을 쉽게 이용할 수 있게 도와준다
스프트웨어 UI부분
프로토콜에는 대표적으로 HTTP/HTTPS/FTP/WebSocket 등