[CS] - Network(1)
OSI 7계층과 TCP/IP 4계층
OSI 7계층
- OSI(Open Systems Interconnection) 모델은 네트워크 프로토콜 디자인과 통신을 계층으로 나눈 모델이다.
- ISO에서 개발하였으며, 컴퓨터 네트워크에서 데이터 송수신 과정을 7계층으로 나누어 설명한다.
- 각 계층은 수행 기능에 따라 구분되며, 한 계층은 그 계층의 위와 아래 게층과만 연결된다.
- 암기법 : 소시지 피자를 버리지 말아 주세요(Please-Do-Not-Throw-Sausage-Pizza-Away)
- 패킷 : 인터넷에서 데이터를 보내기 위한 경로 배정을 효율적으로 하기 위한 데이터의 나뉘어진 단위 조각
1. 물리 계층 (Physical Layer)
- 전송되는 데이터를 통신 케이블로 비트 단위로 전송하는 계층
- 데이터 전송 단위: Bit
- 사용되는 장비: 허브, 리피터, 케이블
2. 데이터 링크 계층 (Data Link Layer)
- 물리 계층에서 전송된 데이터의 오류와 흐름을 관리해 안전한 통신을 담당
- 프레임에 논리적인 주소(MAC 주소)를 부여하고 에러검출. 재전송. 흐름 제어를 수행
- 데이터 전송 단위: Frame
- 사용되는 장비: 스위치, 브릿지, 이더넷
3. 네트워크 계층 (Network Layer)
- 여러 개의 노드를 거칠 때마다 경로를 찾아주는 역할
- 전송 계층(Transport Layer)에서 받은 데이터에 대해 최적의 길을 찾아 전달한다.
- 라우터를 통해 경로를 선택하고, IP주소를 정해 경로에 따라 패킷을 전달한다.
- 데이터 전송 단위: Packet
- 사용되는 장비: 라우터
4. 전송 계층 (Transport Layer)
- 송수신되는 두 시스템 간의 연결을 제어하고, 신뢰성 있는 데이터 전송을 담당한다.
- 포트 번호와 전송방식을 결정한다.
- 데이터 전송 단위: Segment
- 사용되는 프로토콜: TCP, UDP
- 장비: 게이트웨이
5. 세션 계층 (Session Layer)
- 지점간의 프로세스 및 통신하는 호스트 간의 연결 유지
- TCP/IP 세션 체결, 포트번호를 기반으로 통신 세션 구성
- 메시지 단위, API, 소켓
6. 표현 계층 (Presentation Layer)
- 응용 계층에서 받은 데이터를 사용자의 목적에 맞게 변환하는 역할
- 전송하는 데이터의 표현방식을 결정(ex. 데이터변환, 압축, 암호화 등)
- 파일 인코딩, 명령어 포장.압축.암호화
7. 응용 계층 (Application Layer)
- OSI 7계층 중 가장 상위 계층
- 사용자와 직접적으로 상호작용하는 계층으로 최종 목적지
- 사용자가 특정 어플리케이션과 통신하기 위한 프로토콜을 제공하며, 네트워크의 응용 프로그램과 네트워크 간의 통신을 담당
- 사용 프로토콜 : HTTP, FTP, SMTP, POP3, IMAP, Telnet
- 사용자가 직접적으로 상호작용하는 어플리케이션과 프로토콜이 사용되므로, 사용자에게 가장 직접적으로 노출되는 계층
TCP IP 4계층
TCP/IP는 OCI 7계층을 실제로 사용하는 인터넷 표준이다.
- TCP
- 상위 계층
- 메시지나 파일들을 좀 더 작은 패킷으로 나누어 인터넷을 통해 전송
- 수신된 패킷을 원래 메시지로 재조립하는 일을 담당
- IP
- 각 패킷의 주소 부분을 처리하며 패킷이 목적지에 정확하게 도달할 수 있게 한다.
1. 네트워크 접근 계층 (Network Access Layer)
- OSI 모델의 물리 계층과 데이터 링크 계층에 해당
- 하드웨어와 물리적인 연결, 전송 기술(이더넷, 와이파이 등)을 다루는 계층
- 패킷을 프레임으로 변환하고, 논리적인 주소(MAC 주소)를 사용하여 전송
2. 인터넷 계층 (Internet Layer)
- OSI 모델의 네트워크 계층에 해당
- 데이터의 전송 경로를 설정하고, IP 주소를 통해 패킷을 전송하는 계층
- 라우터와 같은 네트워크 장비를 통해 패킷을 전달하며, 패킷을 받은 장비는 다시 패킷을 전달하기 위해 최적의 경로를 탐색하여 전달
3. 전송 계층 (Transport Layer)
- OSI 모델의 전송 계층에 해당
- 양 끝단(End-to-End) 간의 신뢰성 있는 데이터 전송을 담당하는 계층
- TCP와 UDP 프로토콜이 사용되며, TCP는 연결 지향적이고 신뢰성 있는 데이터 전송을 보장하며, UDP는 비연결 지향적이고 빠른 전송을 지원
4. 응용 계층 (Application Layer)
- OSI 모델의 세션 계층, 표현 계층, 응용 계층에 해당
- TCP/IP 모델에서는 이러한 계층들을 하나로 통합하여 응용 계층이라고 함
- 사용자가 직접적으로 상호작용하는 어플리케이션과 통신하기 위한 프로토콜을 제공하며, 네트워크의 응용 프로그램과 네트워크 간의 통신을 담당
- 다양한 프로토콜이 사용됨 (예: HTTP, FTP, SMTP 등)
두 모델의 차이점
TCP/IP 모델 | OSI 모델 | |
---|---|---|
계층 수 | 4개 | 7개 |
명칭 | 응용(Application), 전송(Transport), 인터넷(Internet), 네트워크 액세스(Network Access) | 응용(Application), 표현(Presentation), 세션(Session), 전송(Transport), 네트워크(Network), 데이터 링크(Data Link), 물리(Physical) |
특징 | 인터넷과 같은 실제 네트워크 환경에 적합하며, 경량 프로토콜을 사용하여 대역폭 사용량을 줄일 수 있음. | 매우 구체적인 구조와 기능을 가지며, 서로 독립적인 계층으로 설계되어 있어 상호 운용성을 보장함. |
TCP/UDP
TCP | UDP | |
---|---|---|
연결 | 연결 기반 프로토콜 | 비연결 기반 프로토콜 |
신뢰성 | 신뢰성 높음 (데이터 무손실, 순서 보장) | 신뢰성 낮음 (데이터 손실, 순서 보장 X) |
흐름 제어 | 수신자의 버퍼 상태에 따라 데이터 전송 속도 조절 | 흐름 제어 기능이 없음 |
혼잡 제어 | 네트워크 혼잡 상황에 따라 데이터 전송 속도 조절 | 혼잡 제어 기능이 없음 |
속도 | UDP보다 느림 (연결 설정, 순서 확인 등 추가 작업 필요) | TCP보다 빠름 (단순한 구조, 추가 작업이 없기 때문) |
사용 예시 | 파일 전송, 이메일, 웹 사이트 브라우징 등 | DNS 조회, 동영상 스트리밍, 온라인 게임, IP 스캐닝 등 |
TCP의 데이터 전송 흐름
UDP의 데이터 전송 흐름
3way-handshake, 4way-handshake
3 Way Handshake
- TCP 프로토콜에서 연결을 맺기 위해 사용되는 과정으로, 클라이언트와 서버 간에 신뢰성 있는 연결을 맺기 위한 절차
- 클라이언트가 서버에게 SYN(Synchronize Sequence Number) 패킷을 보낸다. 이때, 클라이언트는 랜덤한 시퀀스 번호를 생성한다.
- 서버는 클라이언트에게 SYN ACK(Synchronize Acknowledgement) 패킷을 보내고, 이전에 받은 클라이언트의 시퀀스 번호에 1을 더한 값을 자신의 초기 시퀀스 번호로 설정한다.
- 클라이언트는 ACK(Acknowledgement) 패킷을 보내고, 서버로부터 받은 시퀀스 번호에 1을 더한 값을 자신의 초기 시퀀스 번호로 설정한다. 이제 클라이언트와 서버는 신뢰성 있는 연결을 맺게 되었다.
4 Way Handshake
TCP 프로토콜에서 연결을 종료하기 위해 사용되는 과정으로, 클라이언트와 서버 간에 신뢰성 있는 연결을 끊기 위한 절차이다.
- 클라이언트가 서버에게 FIN(Finish) 패킷을 보낸다. 이때, 클라이언트는 더 이상 전송할 데이터가 없음을 알리기 위해 FIN 패킷을 전송한다.
- 서버는 FIN 패킷을 받은 후, 클라이언트로부터 모든 데이터를 받았음을 알리기 위해 ACK 패킷을 전송한다. 이후 서버는 CLOSE_WAIT 상태가 된다.
- 서버는 더 이상 전송할 데이터가 없음을 알리기 위해 클라이언트로 FIN 패킷을 전송한다.
- 클라이언트는 FIN 패킷을 받은 후, 서버로부터 모든 데이터를 받았음을 알리기 위해 ACK 패킷을 전송한다.
흐름제어, 혼잡제어, 오류제어
흐름제어 (Flow Control)
- 흐름제어는 송신자와 수신자 사이의 데이터 전송 속도차를 해결하기 위해 데이터 전송량을 제어하는 방법이다.
-
송신측에서 수신측으로 데이터를 계속해서 보내다 보면 수신측의 버퍼가 가득 차서 패킷이 유실될 수 있기 때문에 필요하다.
- sliding window
- 수신측에서 윈도우 크기를 정하고 윈도우 크기만큼 확인 응답없이 패킷을 전송하는 방식
- 송신 버퍼 범위는 수신측의 여유 버퍼 공간을 반영해 동적으로 변경됨
- stop and wait
- 패킷을 정상적으로 수신했다는 응답을 받은 후에만 패킷을 보내는 방식
혼잡제어 (Congestion Control)
- 네트워크의 데이터 전송량이 넘치게 되면 패킷 유실이나 느린 전송 속도 등의 문제가 발생한다.
-
네트워크의 데이터 전송 속도를 조절하여 네트워크 혼잡을 방지하고 데이터 전송 효율을 향상시키는 기능이다.
- AIMD(Additive Increase / Multiplicative Decrease)
- Slow Start
오류제어 (Error Control)
- 전송 중에 발생하는 에러를 검출하고, 재전송 요청 등의 방법으로 에러를 해결하는 기능이다.
- 송신 데이터 유실
- 수신 측 ACK가 유실
- 대표적으로 패리티 비트, CRC (순환 중복 검사) 등의 방법을 사용한다.
IPv4 VS IPv6
- 인터넷 프로토콜(IP)의 버전을 나타낸다.
- 주소 체계와 패킷 형식 등에서 차이가 있다.
IPv4 (Internet Protocol version 4)
- 32비트로 이루어져 있어 총 4,294,967,296개의 주소를 가질 수 있다.
- 대부분의 인터넷에서 사용되고 있는 주소 체계
- 점으로 구분된 10진수 4개의 숫자로 주소를 표현한다.
- 주소 예시: 192.0.2.1
IPv6 (Internet Protocol version 6)
- 128비트로 이루어져 있어 총 3.4×10^38개의 주소를 가질 수 있다.
- 주소의 형태는 16비트씩 8개의 그룹으로 이루어져 있으며, 각 그룹은 콜론(:)으로 구분
- 주소 예시: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
- IPv4보다 주소 개수가 많아 더 많은 장비를 인터넷에 연결할 수 있고, 보안성(IPSec 사용)과 신뢰성 등에서도 더욱 개선되어 있다.
IPv6가 보안성과 신뢰성 등에서 더욱 개선되어 있으며, 주소 부족 문제를 해결할 수 있어 더 많은 장비를 인터넷에 연결할 수 있으나 IPv6가 보급되기 전까지는 IPv4를 계속 사용해야 하며, 두 프로토콜 간에 호환성 문제가 있다.
Leave a comment