미완성 글입니다(이후 수정 예정)
OSI 7 layer란?
- OSI 7계층이란 네트워크 통신이 일어나는 과정을 7단계로 나눈 네트워크 표준 모델이다.
- 총 7개의 계층이 존재하게 되는데 각 계층을 지날 때마다 Header가 붙게 되고, 수신하는 쪽은 역순으로 각 계층에서 붙은 Header가 떨어지게 된다.
- 실제 인터넷에서 사용되는 TCP / IP 는 OSI 참조 모델을 기반으로 상업적이고 실무적으로 이용될 수 있도록 단순화한 것이다.
네트워크 통신 과정 분리 이유
- 각 계층을 분리함으로써 개발 및 유지보수가 용이해진다. 문제 발생시, 문제가 발생한 계층에서 해결이 가능해지기 때문이다.
이는 문제를 진단하고 해결하는데 시간을 단축시키고, 전체 시스템의 안정성과 신뢰성을 높일 수 있다.
- 계층적인 구조를 가짐으로써 각 계층이 추상화되고 인터페이스를 정의할 수 있다. 계층 간 인터페이스를 통해 각 계층은 자신의 책임 범위 내에서만 통신하게 되어, 다른 계층에 영향을 미치지 않으면서 새로운 기술이나 장비를 도입하기 쉬워진다.
- 요약하면, 네트워크의 안정성, 신뢰성, 유지보수성을 위해서이다.
작동 원리
- 데이터 전송 시, 7계층에서 1계층으로 각각의 층마다 인식할 수 있는 헤더를 붙인다.(캡슐화)
- 수신 시 1계층에서 7계층으로 헤더를 떼어내는데 이 과정을 디캡슐화라 한다.
Application Layer(응용 계층) - 7 layer
- 사용자와 가장 밀접한 계층으로, 사용자가 네트워크를 통해 데이터를 보내고 받을 수 있는 플랫폼을 포함하고 있다.
ex) 브라우저(크롬, 故인터넷 익스플로어러 등), 이메일(지메일, 네이버 메일 등)
Presentation Layer(표현 계층) - 6 layer
- 응용 계층에서의 데이터를 어떻게 표현할 지 정하는 역할을 하는 계층
- 표현 계층은 세가지 기능을 가지고 있다.
· 수신한 데이터를 해석하기 위한 응용 계층 데이터 부호화, 변화(Character Encoding)
· 데이터를 송신할 때, 수신자가 압축을 풀 수 있는 방식으로 된 데이터 압축(Data Compression)
· 데이터의 암호화 / 복호화(Data Encryption / Decryption)
Session Layer(세션 계층) - 5 layer
- 최종 사용자의 응용 프로그램 프로세스 간의 세션을 열고 닫고 관리하기 위한 메커니즘을 제공한다.
즉, 세션 연결의 설정과 해제, 세션 메시지 전송 등의 기능을 한다.
통신 장치 간 상호작용 및 동기화를 제공한다고 봐도 된다.
- 연결 세션에서 데이터 교환과 에러 발생 시의 복구를 관리한다.
session?
세션이란, 클라이언트로부터 오는 일련의 요청을 하나의 상태로 보고 그 상태를 일정하게 유지하는 기술이다.
- 이 계층에서의 주요 기능으로는 두 가지가 있다,
1. Dialog control : 두 개의 시스템이 dialog에 들어와 누가 데이터를 보낼 차례인지 확인할 수 있게 하는 것
세션 키나 토큰을 통해서 dialogue를 관리할 수 있다.(세션과 토큰에 대해서 정리한 글 : )
토큰의 경우는 stateless하다는 장점이 있다.
2. Synchronization : 데이터가 특정 포인트까지 잘 전달됐는지 저장하는 것(체크포인트 추가)
· error correction : 만약 데이터를 보내는 중 에러가 났다면, synchronization된 데이터 다음부터 다시 보내달라고 요청하는 식으로 작동한다.
Transport Layer(전송 계층) - 4 layer
- 종단 간 신뢰성 있고 정확한 데이터 전송을 담당한다.
- 송신자와 수신자 간의 신뢰성 있고 효율적인 데이터 전송을 위해 오류 검출 및 복구, 흐름 제어와 중복 검사 등을 수행한다.
- 데이터 전송을 위해 Port 번호를 사용한다.
- 대표적인 프로토콜로 TCP, UDP가 있다.
- 이 계층에서 사용하는 데이터 단위는 세그먼트(Segment)이다.
TCP(Transmission Control Protocol) - connection oriented transmission
- 이 프로토콜에서 수신자는 송신자에게 패킷(packet)을 받으면 acknowledgment를 보낸다.
- 이 프로토콜은 reliable한 전송 방법이라고 불린다.
- acknowledgement를 포함한 추가적인 패킷 전송이 필요하므로 더 느린 전송 방식이다. 대신 데이터의 손실이 없다(잘못된 데이터도 받지 않는다.)
- 만약 전송된 데이터에 문제가 있다면 수신자는 송신자에게 이전에 보낸 acknowledgment를 다시 보내 이번에 보낸 데이터에 문제가 있음을 알린다.
- 만약 수신자가 패킷을 재조립하는데 필요한 모든 데이터를 수신하면 올바른 순서대로 재조립하여 session layer로 올리게 된다.
- TCP에서는 수신자가 상대방에게 얼마나 큰 데이터를 한 번에 받을 수 있는지 advertise하는데 이를 receive window size라 한다.
(무조건 이 window size 단위로 데이터가 전송되는 것이 아닌, 혼잡 제어 알고리즘에 따른 window 크기와 비교해서 둘 중 작은 사이즈로 데이터를 전송한다.)
- window size는 ack에 따라 증가시키며 전송 속도가 점점 증가하는데, 이때 ack가 누락되거나 순서가 뒤집혀 오는 등의 congestion이 발생하게 되면 congestion window를 줄여 이전에 보낸 데이터를 재전송한다.
congestion window를 줄인다는 것은 전송 속도를 줄인다는 것과 같은 의미로 볼 수 있다.
UDP(User Datagram Protocol) - connectionless transmission
- 이 프로토콜에서는 수신자가 acknowledge 같은 패킷을 보내지 않는다.
- 송신자는 패킷이 무사히 도착할 것이라고 가정하고 계속해서 패킷을 보내게 된다. 이를 best-effort라 한다.
- 이 프로토콜을 이용하면 더욱 빠른 통신이 가능해진다.
- 대신 패킷이 무사히 도착하지 않을 수 있어 덜 reliable한 방식이다.
- Port를 제공하고 checksum 계산하는 것 외에 특별한 기능이 없다.
L3 layer(network layer)인 IP의 기능을 L4(transport layer)에서 그대로 가져다 쓰게 하기 위해서 만들어진 프로토콜이기 때문이다.
- IP의 속성을 갖기 때문에 IP 헤더 포함 64KB 이내에서는 보낸 그대로 수신 측에서 받게 된다.
전송 계층의 5가지 주요 기능
1. Connection management (연결 관리)
- 전송 계층은 두 기기 사이의 연결을 설정하고 유지시킨다.
- 대표적인 예시로는 TCP의 3-way handshaking이 있다.
2. Connection multiplexing (연결 다중화)
- 통신 계층은 다수의 응용프로그램이 동시에 데이터를 보내고 받는 것을 허용하는 연결을 다중화한다.
3. Segmentation
- 세그멘테이션은 정보를 더 작은 조각들로 나누는 과정을 말한다.
- TCP는 응용 프로그램으로부터 데이터를 받고 작은 조각들로 나누는데, 나눠진 뒤에야 TCP 데이터 필드에 정보들이 올라갈 수 있다.
- 전송 계층에서 다루는 데이터 단위는 Segment로, 응용 프로그램에서 특정 데이터를 보냈을 때 IP에서 MSS(Maximum Segment Size)를 알려줘서 그 크기에 맞게 나눈다.
- Segment 그 자체로는 의미가 없고 합쳐져야 의미가 생기게 된다.
4. Reliable and unreliable data delivery (신뢰성 있는 / 없는 데이터 전송)
-
5. Flow control and congestion control (흐름 제어, 혼잡 제어)
-
Socket
- 소켓이란, 응용 프로그램이 TCP / IP 네트워크와 연결될 수 있도록 하는 소프트웨어 개념이다.
- host에서 돌아가는 응용 프로그램은 다른 호스트의 응용 프로그램 간에 소켓이나 gateway를 만든다.
그러면 메세지나 데이터가 이 소켓이나 gateway를 통해 전달된다.
(소켓에 대해서는 이후 더 자세히 글을 정리하겠다.)
Network Layer(네트워크 계층) - 3 layer
- IP를 사용하여 도착지를 찾고 라우팅을 통해 도착지까지 최적의 경로를 탐색하는 계층이다.(hob by hop 통신)
- 이 계층에서 가장 많이 사용되는 프로토콜은 IP(Internet Protocol)이다.(대부분 IP사용)
- IP 주소를 이용하여 패킷(packet)을 라우팅한다.
발신자와 수신자의 IP 주소는 네트워크 계층에 의해 헤더에 배치된다.
- 데이터 단위는 packet, 주요 사용 장비로는 라우터, L3 스위치가 있다.
라우팅(Routing)
- 라우팅은 여러 개의 네트워크가 연결되어 있을 때, 데이터 패킷을 목적지까지 가장 효율적으로 전달하기 위해 최적의 경로를 결정하는 과정을 의미한다.
대규모 네트워크에서 특히 중요한 역할을 한다.
IP(Internet Protocol)
- IP는 패킷을 보내는 송신자와 받는 수신자를 식별하기 위한 주소인 IP 주소를 사용하며, 라우팅 프로토콜을 이용하여 패킷을 목적지까지 전달한다.
- IP는 비연결형(connectionless) 프로토콜로, 패킷을 전송하기 전에 미리 연결을 설정하지 않고 전송한다.
이런 특성때문에 IP는 신뢰성과 안정성 측면에서 한계가 있고, 이를 보완하기 위해 상위 계층(Transport Layer)에서 TCP와 같이 신뢰성 있는 프로토콜을 함께 사용한다.
Datalink Layer(데이터 링크 계층) - 2 layer
- 물리적인 연결을 통해 인접한 두 장치 간의 신뢰성 있는 정보 전송을 담당한다(Point-To-Point 전송)
- Network 계층의 패킷 데이터를 물리적 매체에 실어 보내기 위한 계층이다.
주요 프로토콜로는 Ethernet 등이 있다.
- 물리 계층에서 발생한 오류를 검출하고 수정하는 기능을 수행한다.
물리적인 장비를 식별하는데 사용되는 주송 지정 체계와 데이터가 변조되지 않았음을 확증하기 위한 오류 확인하는 기능을 수행한다. 이러한 오류 감지 및 수정, 제어를 위해 프레임을 생성한다.
- MAC 주소를 통해서 통신하고, 데이터 단위는 프레임(frame)이다.
장비로는 브릿지, 스위치 등이 있다.
프레임과 프레이밍
- 프레임과 프레이밍은 물리적인 매체의 한계를 극복하기 위해 필요하다.
물리적인 매체에서는 데이터를 전송할 때 데이터의 시작과 끝을 알리기 어렵기 때문에 프레임의 시작과 끝에 특수 비트 패턴을 첨부하여 수행할 수 있다.
- 프레임은 Data link 계층에서 사용하는 단위로, 물리적인 매체를 통해 전송되는 데이터의 논리적인 그룹을 의미한다. 프레임은 일반적으로 시작 프레임 마커, 목적지 주소, 출발지 주소, 프로토콜 식별자, 데이터, 오류 검출 및 제어를 위한 프레임 마커 등의 필드로 구성된다.
- 프레이밍은 데이터링크 계층에서 수행되며, 프레임에 대한 시작과 끝을 알리는 프레임 마커를 추가하여 프레임을 구분하는 작업을 의미한다.
프레임 마커는 시작 프레임 마커와 종료 프레임 마커로 구성되며, 이를 통해 수신자는 프레임의 시작과 끝을 식별할 수 있다.
Physical Layer(물리 계층) - 1 layer
- 최하위 계층으로, 주로 전기적, 기계적, 기능적인 특성을 이용해 데이터를 전송한다.(전기 신호, 광 신호, 전파 등)
- 실제 전자기파와 다르게 컴퓨터는 전기의 흐름 여부(흐르면 1, 안흐르면 0)로 데이터를 정의하기 때문에 컴퓨터의 전기적인 신호를 곡선 형태의 아날로그 신호로 변경하는 과정이 필요하다.
이 과정을 인코딩(컴퓨터 신호 → 전자기적 신호), 디코딩(전자기적 신호 → 컴퓨터 신호)이라 한다.
- 데이터의 전달 및 신호를 해석하는 역할을 할 뿐이라 알고리즘, 오류 제어 등의 기능이 없다.
- 장비로는 케이블, 리피터, 허브 등이 있다.
'TIL & WIL' 카테고리의 다른 글
[TIL] 크래프톤 정글 7주차 - 프록시(Proxy) (0) | 2024.05.07 |
---|---|
[TIL] 크래프톤 정글 7주차 - CS:app 11장(네트워크 프로그래밍) (0) | 2024.05.06 |
[TIL] 크래프톤 정글 7주차 - Socket이란? (1) | 2024.05.06 |
[WIL] 크래프톤 정글 6주차 - Malloc Lab (0) | 2024.05.03 |
[CS] 크래프톤 정글 6주차 - 이더넷(Ethernet) (0) | 2024.05.03 |