네트워크 (2) - 계층 모델과 네트워크 기기

2ㅣ2ㅣ·2024년 10월 18일

CS

목록 보기
9/13

2. TCP/IP 4계층 모델

TCP/IP 4계층와 OSI 7계층의 비교

  • 인터넷 프로토콜 스위트(internet protocol suite)는 인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 쓰이는 프로토콜의 집합
  • 이를 TCP/IP 4계층 모델로 설명하거나 OSI 7계층 모델로 설명하기도 한다.
  • TCP/IP(Transmission Control Protocol/Internet Protocol) 4계층 모델네트워크에서 사용되는 통신 프로토콜의 집합
  • 계층들은 프로토콜의 네트워킹 범위에 따라 네 개의 추상화 계층으로 구성

2-1. 계층 구성

  • OSI 계층 모델TCP/IP 계층 모델과 달리 애플리케이션 계층을 3개로 나누고, 링크 계층을 데이터 링크와 물리 계층으로 나눠 설명한다.
  • 또한, 인터넷 계층을 네트워크 계층으로 부르는 차이가 있다.
  • 이 계층들은 유연하게 설계되어 있어서, 한 계층이 변경되더라도 다른 계층에 영향을 주지 않도록 되어 있다.
    • 예를 들어, TCP를 UDP로 바꾼다고 해서 웹 브라우저를 다시 설치할 필요가 없다.

2-2. 각 계층을 대표하는 스택들

2-3. 애플리케이션 계층

  • FTP, HTTP, SSH, SMTP, DNS 등 응용 프로그램이 사용되는 프로토콜 계층
  • 웹 서비스, 이메일서비스를 실질적으로 사람들에게 제공하는 층

FTP (File Transfer Protocol)

장치와 장치 간의 파일을 전송하는 데 사용되는 표준 통신 프로토콜

  • 파일을 쉽게 주고받을 수 있는 방법이다. 예를 들어, 큰 문서를 컴퓨터에서 서버로 올리거나 서버에서 내려받을 때 FTP를 사용한다.

SSH (Secure Shell)

보안되지 않은 네트워크에서 네트워크 서비스를 안전하게 운영하기 위한 암호화 네트워크 프로토콜

  • SSH는 안전하게 컴퓨터에 접속할 수 있게 도와준다. 특히 서버에 원격으로 접속할 때 많이 사용된다. 암호화로 데이터를 보호하기 때문에 해킹 위험을 줄인다.

HTTP (Hypertext Transfer Protocol)

World Wide Web을 위한 데이터 통신의 기초이자 웹 사이트를 이용하는 데 쓰는 프로토콜

  • 웹사이트에 접속할 때, 인터넷에서 데이터를 주고받는 규칙이다. 웹 브라우저로 naver.com을 들어갈 때 HTTP 덕분에 화면이 뜨는 것

SMTP (Simple Mail Transfer Protocol)

전자 메일 전송을 위한 인터넷 표준 통신 프로토콜

  • 이메일을 보낼 때 사용하는 규칙이다. 이메일이 제대로 보내지고, 상대방에게 도착할 수 있게 해준다.

DNS (Domain Name System)

도메인 이름과 IP 주소를 매핑해주는 서버

  • 예를 들어 www.naver.com에 DNS 쿼리가 오면 [Root DNS] → [.com DNS] → [.naver DNS] → [.www DNS] 과정을 거쳐 완벽한 주소를 찾아 IP 주소를 매핑
  • 이를 통해 IP 주소가 바뀌어도 사용자들에게 똑같은 도메인 주소로 서비스할 수 있다.

2-4. 전송 계층 (★ * 1,000,000)

  • 전송 계층(Transport Layer)송신자와 수신자 간 통신 서비스를 제공하는 계층
  • 데이터를 신뢰성 있게 주고받을 수 있게 해주는 역할을 한다.
  • 주요 예로 TCPUDP가 있다.

TCP (Transmission Control Protocol)

  • 데이터가 순서대로 도착하고, 수신 여부를 확인하는 방식
  • 신뢰성을 보장하기 위해 데이터가 잘 도착했는지 확인하고, 순서대로 도착하도록 만들어 준다.
    • 예를 들어, 파일 전송이나 웹 브라우징처럼 데이터가 틀리지 않아야 하는 경우에 사용된다.
  • 가상회선 패킷 교환 방식은 TCP에서 사용되며, 모든 패킷이 순서대로 도착하고, 전송 후 회선을 해제하는 방식이다.

UDP (User Datagram Protocol)

  • 순서를 보장하지 않고, 빠르게 데이터를 보내지만 확인하지는 않는 방식
  • 데이터가 최대한 빠르게 전송되기만 하면 되는 경우에 주로 사용한다.
    • 예를 들어 실시간 스트리밍이나 온라인 게임 같은 곳에서 많이 쓰인다. 빠르게 전송하는 게 중요하지만, 약간의 데이터 손실은 허용한다.
  • 순서를 보장하지 않고 수신 여부를 확인하지 않으며 단순히 데이터만 주는 데이터그램 패킷 교환 방식을 사용

한마디로

  • TCP: 데이터를 순서대로 받고, 잘 도착했는지 확인하는 방식. 안전한 택배처럼 꼭 도착하고 순서도 맞아야 한다.
  • UDP: 빨리 보내기만 하면 되는 방식이다. 종이비행기처럼 바로 던지지만, 어디로 갈지 모르고 중간에 없어질 수도 있다.

가상회선 패킷 교환 방식이란? (TCP)

가상회선 패킷 교환 방식

  • 가상회선 패킷 교환 방식은 데이터를 순서대로 전송하고, 전송이 끝나면 그 경로를 해제하는 방식이다.
  • 각 패킷에는 가상회선 식별자가 붙어있어서 같은 경로로 이동하고, 패킷들이 순서대로 도착한다.

이 방식은 마치 열차가 여러 칸을 끌고 가는 것과 같다.

송신 호스트(왼쪽)가 3개의 칸(패킷)같은 경로로 보내고 있다.
각 칸에는 번호가 붙어있다. (1,2,3)
이 칸들이 순서대로 목적지(수신 호스트, 오른쪽)에 도착한다.
그림을 보면 12, 3 순서로 패킷이 이동하는데, 최종적으로 정해진 길(경로) 을 통해서 모두가 순서대로 도착한다.

데이터그램 패킷 교환 방식이란? (UDP)

데이터그램 패킷 교환 방식

  • 데이터그램 패킷 교환 방식패킷이 독립적으로 이동하면서 최적의 경로를 선택하는 방식
  • 각 패킷이 서로 다른 경로로 이동할 수 있으며, 도착하는 순서가 다를 수 있다.
  • 패킷은 목적지에 도착한 후 다시 순서가 맞춰지기도 한다.
  • 이 방식은 연결을 유지할 필요가 없고, 각 패킷이 독립적으로 전송돼. 따라서 빠르게 보내기에 유리하지만, 순서는 보장되지 않는다.

그림을 보면 3, 2, 1로 번호가 매겨진 패킷들이 각기 다른 경로로 이동하고, 도착할 때는 순서가 달라지는 것을 보여주고 있다.

TCP 연결 성립 과정 (3-way-handshake)

클라이언트와 서버가 통신할 때 다음과 같은 세 단계의 과정을 거친다

TCP 3-way-handshake클라이언트와 서버가 통신을 시작하기 전에 신뢰성을 확인하는 과정

➊ SYN 단계: 클라이언트는 서버에 클라이언트의 ISN을 담아 SYN을 보냅니다. ISN은 새로운 TCP 연결의 첫 번째 패킷에 할당된 임의의 시퀀스 번호를 말하며(예시로 12010을 들었습니다) 이는 장치마다 다를 수 있습니다.

➋ SYN + ACK 단계: 서버는 클라이언트의 SYN을 수신하고 서버의 ISN을 보내며 승인번호로 클라이언트의 ISN + 1을 보냅니다.

➌ ACK 단계: 클라이언트는 서버의 ISN + 1한 값인 승인번호를 담아 ACK를 서버에 보냅니다.

이렇게 3-웨이 핸드셰이크 과정 이후 신뢰성이 구축되고 데이터 전송을 시작합니다. 참고로 TCP는 이 과정이 있기 때문에 신뢰성이 있는 계층이라고 하며 UDP는 이 과정이 없기 때문에 신뢰성이 없는 계층이라고 합니다.

요약

  • SYN 단계: 클라이언트가 서버에게 연결 요청을 보냄 (ISN: 시퀀스 번호 포함).
  • SYN + ACK 단계: 서버가 클라이언트의 요청을 받고, 응답하며 자신의 시퀀스 번호를 보냄
  • ACK 단계: 클라이언트가 서버의 응답을 확인하고, 승인

SYN
SYNchronization의 약자, 연결 요청 플래그
ACK
ACKnowledgement의 약자, 응답 플래그
ISN
Initial Sequence Numbers의 약어, 초기 네트워크 연결을 할 때 할당된 32비트 고유 시퀀스 번호이다.

  • 이 3-way-handshake 과정 이후 신뢰성이 구축되고 데이터 전송을 시작
  • TCP이 과정이 있기 때문에 신뢰성이 있는 계층이라고 함
  • UDP이 과정이 없기 때문에 신뢰성이 없는 계층이라고 함

TCP 연결 해제 과정 (4-way-handshake)

TCP 연결이 닫히는 과정은 4단계로 이루어져 있다.

  1. 클라이언트가 FIN 패킷을 보내 연결을 닫으려 한다.
  2. 서버는 ACK 패킷으로 응답하고, 클라이언트는 FIN_WAIT 상태에 들어간다.
  3. 서버가 다시 FIN 패킷을 보내며 연결을 닫으려 한다.
  4. 클라이언트는 TIME_WAIT 상태에서 ACK를 보내고, 서버와 클라이언트는 일정 시간 후 완전히 닫힌다.

왜 굳이 TIME_WAIT가 필요할까? 그냥 연결을 닫으면 되지 왜 굳이 일정 시간 뒤에 닫을까?

  1. 지연된 패킷 처리 : 패킷이 뒤늦게 도달하고 이를 처리하지 못한다면 데이터 무결성 문제가 발생
  2. 연결이 닫혔는지 확인 : 만약 LAST_ACK 상태에서 닫히게 되면 다시 새로운 연결을 하려고 할 때 장치는 줄곧 LAST_ACK로 되어 있기 때문에 접속 오류가 나타나게 될 것

TIME_WAIT

  • 바로 연결을 닫지 않고 잠시 대기하는 상태
  • OS마다 다르게 설정돼 있으며, 예를 들어 CentOS나 우분투는 60초, 윈도우는 4분 동안 유지
  • 네트워크 상에서 패킷이 늦게 도착할 경우를 대비하기 위한 것
    • 지연된 데이터를 처리하고, 정상적인 연결 종료를 확인하는 대기 시간이다.
  • 서버나 클라이언트가 서로 "확실히 연결을 종료했다"는 확인을 마치기 전에 늦게 도착한 패킷이 문제가 되지 않도록 시간을 주는 것
    데이터 무결성 (Data Integrity)
  • 데이터 무결성: 데이터가 정확하고 일관성 있게 유지되는 것을 의미
  • TIME_WAIT 상태는 이 데이터 무결성을 보장하는 역할도 함

2-5. 인터넷 계층

  • 인터넷 계층은 데이터를 IP 주소로 지정된 목적지로 보내는 역할을 함
  • IP, ARP, ICMP 같은 프로토콜이 여기에 속함
  • 상대방이 데이터를 받았는지 확인하지 않는 비연결형 방식을 사용
  • IP (Internet Protocol): 데이터를 목적지 IP 주소로 전송하는 가장 기본적인 프로토콜로, 여기서 경로를 찾아 데이터를 보내는 역할을 함
  • ARP (Address Resolution Protocol): IP 주소를 MAC 주소로 변환해서 같은 네트워크 상에서 장치들이 서로 소통할 수 있게 도와줌
  • ICMP (Internet Control Message Protocol): 네트워크에서 문제가 발생했을 때 알림을 주는 프로토콜이야. 예를 들어, ping 명령어가 ICMP를 사용함

인터넷 계층은 데이터를 보내는 것까지만 책임지고, 받았는지 확인하는 건 다른 계층이 처리함

profile
https://sususoo.tistory.com/

0개의 댓글