OSI 7계층, 포트, 프로세스, 프로토콜, 세션

뭐라구요·2023년 4월 15일
0

#OSI 7계층
OSI 7계층이란?

  • 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것.

OSI 7계층을 나눈 이유
네트워크 프로토콜을 서로 다른 기능으로 분할하여 각 계층에서 수행되는 작업을 개별적으로 이해할 수 있고, 문제점을 찾거나 개발, 유지 보수에 있어서 편하다. 또한 각 계층이 서로 독립적이게 다른 역할을 하고 있기 때문에 변경 사항이 하나의 계층에만 영향을 미친다. 그래서 하나를 수정해도 다른 것엔 영향이 가지 않기에 개발과 업그레이드에 있어 쉬워진다. 교육에 있어서도 기능 별로 분리를 했기에 통신 시스템의 작동방식을 이해하기 보다 쉬워진다.

OSI 7계층과 예시 프로토콜

1계층, 물리계층(Physical Layer)
주로 전기적, 기계적, 기능적인 특성을 이용해서 통신 케이블로 데이터를 전송하는 물리적인 장비이다.
기능 : 데이터 전기적인 신호 0과 1을 변환해서 주고받는다
단위 : 비트(Bit)
장비 : 통신 케이블, 리퍼터, 허브

2계층, 데이터 링크계층(DataLink Layer)
물리계층을 통해 송수시되는 정보의 오류와 흐름을 관리하여 안전한 통신의 흐름을 관리한다.
기능 : 프레임의 물리적 주소(맥 주소, Mac address)를 부여하고 에러검출, 재전송, 흐름제어를 수행
단위 : 프레임(Frame)
장비 : 브리지, 스위치, 이더넷 등(여기서 맥 주소를 가지고 물리계층에서 받은 정보 전달)

3계층, 네트워크 계층(Network Layer)
데이터를 목적지까지 안전하고 빠르게 전달한다.
기능 : 라우터(Router)를 통해 경로를 선택하고 주소를 정하고(IP) 경로(Route)에 따라 패킷을 전달 => IP 헤더 붙음
단위 : 패킷(Packet)
장비 : 라우터(Router)

4계층, 전송 계층(Transport Layer)
port 번호, 전송 방식(TCP/UDP) 결정 => TCP 헤더 붙음.
기능 : 두 지점간의 신뢰성 있는 데이터를 주고 받게 해주며 신호를 분산하고 다시 합치는 과정을 통해 에러와 경로를 제어

5계층, 세션 계층(Session Layer)
기능 : 주 지점간의 프로세스 및 통신하는 호스트 간의 연결 유지
TCP/IP 세션 체결, 포트번호를 기반으로 통신 세션 구성. API, Socket.

6계층, 표현 계층(Presentation Layer)
전송하는 데이터의 표현방식을 결정
기능 : 파일인코딩, 명령어를 포장, 압축, 암호화
JPEF, MPEG, GIF, ASCII 등

7계층, 응용 계층(Application Layer)
기능 : 최종 목적지로, 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행
HTTP, FTP, SMTP, POP3, IMAP, Telent 등과 같은 프로토콜이 있다.

포트 번호(Port Number)

포트 번호란?
인터넷 프로토콜(IP)을 사용하여 컴퓨터 네트워크에서 통신을 할 때, 포트 번호는 특정 프로세스 또는 애플리케이션이 네트워크로부터 데이터를 수신하거나 보낼 수 있는 위치를 나타내는 숫자이다. 포트 번호는 통신을 하는 두 컴퓨터 간의 어떤 프로세스나 애플리케이션이 통신을 시작하고, 데이터를 주고 받을 때 필요하다.

맥 주소(Mac address)와 IP 주소(IP address)
IP 주소(IP address) : IP 주소는 네트워크 통신에 있어서 각각의 통신 기기(컴퓨터, 노트북, 스마트폰 등)에 할당된 식별번호를 나타낸다. 쉽게 말하면 편지를 주고 받기 위한 집주소.

이 IP 주소는 통신기기마다 고유하게 할당되어 있는 것이 아니라, 대부분 통신사에 일정 금액을 지불하고 받아오는 것이기 때문에 경우에 따라 바뀔 수 있다.

맥 주소(Mac address) : MAC 주소는 IP 주소와 마찬가지로 네트워크 통신에서 통신기기의 식별번호를 나타내는 것이다. IP 주소와의 차이점은, IP 주소는 임시적으로 다른 주체에 의해 할당되는 것이지만, MAC 주소는 통신기기의 하드웨어 자체에 부여된 고유한 식별번호를 나타낸다. 제품의 시리얼 넘버라고 생각 할 수 있음. 세상에 단 하나 밖에 없는 유니크한 값을 가지며, 변경될 수 없다.

왜 두 개나 사용 하는 건지?
실질적인 통신을 바꿀 수 없는 하드웨어 주소인 맥 주소를 통해서 하지만, 논리적인 IP 주소는 라우팅(최적의 경로 찾기)을 위한 주소이기 때문에 둘다 사용한다.

IP 주소 : 라우팅을 하기 위해 사용
맥 주소 : 이더넷을 이용하기 위해 사용

프로세스(Process)

프로세스란?
프로세스는 컴퓨터에서 실행되는 프로그램을 말한다. 즉, 운영체제에 의해 실행되는 하나의 프로그램 또는 실행 중인 프로그램의 인스턴스를 의미.

프로세스 ID(Process ID, PID)
프로세스 id는 운영체제에서 각 프로세스를 식별하기 위해 할당되는 고유한 숫자이다. 프로세스 id를 통해 프로세스를 식별, 제어, 다중 프로세스 관리, 프로세스 간 통신 등을 할 수 있다.

포트(Port)

포트란?
앞서 말한 PID가 프로세스를 구분하고 식별하기 위한 값이라면, 포트는 네트워크에서 데이터를 주고 받기 위한 논리적인 경로를 나타내는 값이다. 포트는 각각의 프로세스가 네트워크에서 데이터를 주고 받을 수 있는 지점으로, IP주소와 함께 사용된다.
즉, PID와 포트는 서로 다른 역할을 하지만 각각의 값은 운영체제나 네트워크에서 프로세스를 식별하고 관리하는데 쓰인다.

잘 알려진 포트 번호들
TCPMUX : 1
ECHO : 7
FTP - data : 20
FTP - control : 21
SSH : 22
TELNET : 23
SMTP : 25
DNS : 53
TETP : 69
HTTP : 80
NTP : 123
HTTPS : 443

프로토콜(Protocol)

종류별 프로토콜들의 역할(일부)
HTTP(Hyper Transfer Protocol) : 웹 브라우저와 웹 서버 사이에서 사용되는 프로토콜. html, css, JavaScript와 같은 웹 페이지의 리소스들을 전송하고, 클라이언트가 서버에게 요청하는 요청 메시지와 서버가 응답하는 응답 메시지를 정의한다.

SSH(Secure Shell) : 네트워크를 통해 다른 컴퓨터에 로그인하거나 원격으로 명령을 실행하기 위해 사용되는 프로토콜. 데이터를 암호화하여 보호하고, 보안적으로 안전한 접속을 제공한다.

Telnet : TCP/IP 프로토콜을 사용하여 로컬 컴퓨터와 원격 호스트 간의 인터렉티브한 통신을 기능하게 하는 프로토콜. 암호화가 적용되지 않기 때문에 보안에 취약하며, 현재는 보안성이 높은 SSH 프로토콜로 대체되고 있다.

FTP(File Tranfer Protocol) : 인터넷을 통해 파일을 전송하기 위해 사용되는 프로토콜. 서버와 클라이언트 간 파일을 업로드하거나 다운로드하고, 파일 시스템을 조작할 수 있는 명령어를 제공한다.

DNS(Domain Name System) : 인터넷에서 도메인 이름을 IP 주소로 변환해주는 시스템. 사용자가 도메인 이름을 입력하면, DNS 서버에 해당 도메인 이름에 대응하는 IP 주소를 찾아 변환한다. 이를 통해 사용자는 도메인 이름을 통해 웹 사이트에 접속 가능

프로토콜을 나눈 이유
서로 다른 목적과 기능을 가진 장치들 간에 효율적인 통신을 가능하게 하기 위하여 프로토콜을 나눔.

HTTP 프로토콜의 특징
HTTP의 특징은 다음과 같다.
1. 웹 전송(대부분의 파일 형식 전송 가능)
2. 클라이언트 - 서버 구조
3. 무상태 프로토콜(Stateless)
4. 비연결성(Connectionless)

클라이언트 - 서버 구조
클라이언트의 요청이 있을때 서버가 응답합는 단방향 통신이다.서버는 클라이언트으ㅔ 요청을 하지 않으며 클라이언트의 요청에 대한 응답만을 할 뿐이다.

Stateless
HTTP는 통신에서 서버는 클라이언트의 상태를 저장하지 않는다. 클라이언트의 상태를 저장하지 않는다는 말은 클라이언트가 이전에 했던 요청이 무엇인지에 따라 반응이 달라지지 않는다는 것이다. 그럼 왜 상태를 저장하지 않는 걸까? 대규모 트래픽이 발생하는 서비스에는(네이버 같은 것들..) 서버가 여러대 있는데, 서버가 많아지면 많아질 수록 서로 간에 정보를 공유하기 위한 비용이 비싸진다. 그래서 상태를 저장하지 않음으로써 정보공유가 최소화되어 정보를 공유하기 위한 비용을 줄일 수 있다.

  • Stateful
    stateful은 서버가 클라이언트(어플리케이션)의 상태를 저장하는 것을 의미한다. http에서 Stateful을 사용하면 정보를 공유하기 위한 비용이 비싸지므로 사용하지 않는다.

Connectionless
http통신은 연결(Connection)을 유지하지 않는 것을 기본 동작으로 가진다. 기본 동작으로는 Connection을 유지하지 않지만 별도의 옵션을 두면 일정기간동안 유지하게 할 수도 있긴한다. 이러한 비연결성을 이용하는 것 역시 연결을 유지하면 지속적으로 리소스를 사용하기 때문이다. 하지만 연결을 유지하는 것이 나은 경우도 존재한다.

http udp tcp 차이
http는 tcp, udp처럼 transport layer(7계층 중 전송)가 아니라 application layer(7계층 중 응용)다. http는 연결지향적인 tcp기반으로 동작하며, udp는 빠른 전송 속도를 보장하기 위한 비연결성 프로토콜이다. tcp는 데이터의 무결성과 신뢰성을 보장하기 위한 연결 지향성 프로토콜이다.

우리가 사이트를 접속할 때
우리가 사이트를 접속할 때는 단순히 하나의 계층을 쓰는 것이 아니라, 계층 별로 여러개를 쓴다. 예를 들어 http -> tcp -> ip -> ethernet

0개의 댓글