TCP/IP 4계층 모델

Yeji·2023년 6월 23일
0

네트워크

목록 보기
2/9

Before start

인터넷에서 컴퓨터들이 정보를 주고받을 때 쓰는 프로토콜의 집합을 TCP/IP 4계층 모델로 설명할 수 있다.

TCP/IP 4계층 모델, OSI 7계층 모델 두 방법으로 정의할 수 있다.

여기서는 TCP/IP 계층 구조를 중심으로 정리하겠다.

1. TCP/IP 계층 구조

TCP/IP 계층 구조는 다음과 같이 네 가지로 분류된다.
각 계층은 서로 영향을 받지 않도록 설계되었다.

각 계층에 해당하는 대표적인 프로토콜 정도는 알고있으면 좋다.

2. 애플리케이션 계층

응용 프로그램이 사용되는 계층으로 서비스를 실질적으로 사람들에게 제공한다.

대표적인 프로토콜로는
FTP, HTTP, SSH, SMTP, DNS 등이 있다.

3. 전송 계층

송신자와 수신자를 연결한다.

연결 지향 데이터 스트림 지원, 신뢰성, 흐름 제어를 제공하며,
애플리케이션 계층과 인터넷 계층 사이에서 데이터를 중계한다.

대표적인 프로토콜로는
TCP, UDP 등이 있다.

TCP

전달되는 패킷의 순서를 보장하고 연결 지향 프로토콜을 사용하여 신뢰성이 강하다.
가상회선 패킷 교환 방식을 사용해 이를 구현한다.

[가상회선 패킷 교환 방식]

전달되는 패킷에 가상회선 식별자 정보가 포함된다.
모든 패킷을 전송하면 가상회선이 해제되고 패킷이 전송된 순서를 보장하며 도착한다.

TCP 연결 - 3 way handshake

전송 계층의 프로토콜 중 하나인 TCP에서 신뢰성을 확보할 때 사용하는 방법

TCP 프로토콜을 이용하는 통신은 클라이언트와 서버 간 다음과 같은 방식을 거친 후 통신을 시작한다.

  1. SYN 단계
    클라이언트에서 클라이언트의 ISN을 담아 SYN을 보낸다.
    여기서 ISN은 TCP 연결의 첫 번째 패킷에 할당된 임의의 시퀀스 번호를 말한다.
  2. SYN + ACK 단계
    서버는 클라이언트의 SYN을 수신하고 서버의 ISN와 클라이언트의 ISN + 1을 보낸다.
  3. ACK 단계
    클라이언트는 서버의 ISN + 1 값을 담아 ACK를 서버에 보낸다.

이러면 신뢰성 기반 연결이 끝나고 이제 본격적인 요청과 응답을 시작한다.
UDP는 이러한 과정이 없이 통신을 진행하기 때문에 신뢰성 없는 계층이라 한다.

TCP 연결 해제 - 4 way handshake

TCP가 연결을 해제할 때는 4 way handshake 과정을 진행한다.

(참, 모든 이미지의 출처는 구글이다. 내가 보고 이해되는 것으로 가져옴.)

  1. 클라이언트 FIN : 서버야 이제 연결 끊을래
  2. 서버 ACK : 연결 끊는다고? 알겠어
  3. 서버 FIN : 나도 이제 연결 끊을래 그럼
  4. 클라이언트 TIME_WAIT & ACK : 쪼꼼 기다리고... 이제 진짜 안녕 -

여기서는 두 가지를 짚고 넘어가야 한다.

TIME_WAIT가 왜 필요한가?

1. 지연 패킷이 발생할 경우를 대비해서다. 
	패킷이 아직 다 도달하지 못했는데 연결을 끊어버리면 데이터 무결성 문제가 발생한다.
    
2. 두 장치가 연결이 끊겼는지 확인하기 위해서다.
	서버가 LAST_ACK 상태일 때 연결이 끊기게 되면 다시 연결하려고 할때
    서버는 LAST_ACK로 되어있기 때문에 오류가 발생할 것이다.
[Time Wait]

소켓이 바로 소멸되지 않고 일정 시간 유지되는 상태.
OS마다 조금씩 다를 수 있다.

UDP

순서를 보장하지 않고, 패킷 수신 여부를 확인하지 않는다.
단순히 데이터만 쏴주는 형식으로 데이터그램 패킷 교환 방식을 사용한다.

[데이터그램 패킷 교환 방식]

패킷이 최적의 경로를 선택해 전송된다.
하나의 메세지에서 분할된 패킷은 순서가 다르게 도착할 수 있다.

4. 인터넷 계층

장치로부터 받은 패킷을 IP주소로 지정된 목적지로 전송하기 위해 사용된다.

패킷을 받을 상대의 주소를 지정해 데이터를 전달하며,
제대로 수신이 되었는지 보장하지 않는 비연결지향적인 특징을 가진다.

대표적인 프로토콜로는 IP, ARP, ICMP 등이 있다.

5. 링크 계층

전선, 무선 등으로 실질적인 데이터를 전송한다.
장치 간 신호를 주고받는 규칙을 지정한다.

물리 계층과 데이터 링크 계층으로 나누기도 한다.
물리 계층은 무선, 유선 LAN을통해 0과 1로 이루어진 데이터를 보내며
데이터 링크 계층은 이더넷을 통해 에러 확인, 흐름 제어, 접근 제어 등을 담당한다.

유선LAN과 전이중화통신

전이중화통신

양쪽 장치가 동시에 송수신할 수 있는 방식이다.
송신로와 수신로를 나눠 데이터를 주고받으며 현대의 인터넷은 이 방식을 기반으로 통신한다.

무선LAN과 반이중화통신

무선 LAN

무선 신호 전달 방식을 사용해 2대 이상의 매체를 연결하는 기술이다.

와이파이, 블루투스 등이 있다.

반이중화통신

양쪽 장치는 통신이 가능하지만, 동시에 통신은 불가한 방식이다.
송신로와 수신로가 합쳐져 하나이기 때문에 상대방에서 보낸 데이터를 받기까지 전송이 제한된다.

반이중화통신의 단점인 데이터 충돌을 해결하기 위해서는 상대방이 데이터를 보내고 있는지 확인할 수 있어야한다.
반이중화통신 중 하나인 CSMA/CA에서 사용하는 방식은 다음과 같다.

1. 데이터 송신 전 무선 매체를 살핀다.
2. 캐리어 감지 : 회선이 비었는지 판단한다.
3. IFS(Inter FrameSpace) : 랜덤으로 정해진 시간만큼 기다린다. 무선 매체가 사용중일 시 시간을 점차 늘려가며 기다린다.
4. 이후 회선이 비었다면 데이터를 송신한다.

이더넷 프로토콜

데이터 링크 계층은 이더넷 프로토콜을 통해 전달받은 데이터의 에러를 검출하고 캡슐화한다.

지난번 네트워크를 학습하며 알고 있지만 다시 정리하고 넘어가보자.

Preamble : 이더넷 프로토콜 시작을 알림
SFD : 다음부터 MAC 주소 나온다를 알림
Destination Address : 도착지 MAC 주소
Source Address : 출발지 MAC 주소
Length : IP 프로토콜 정의 (IPv4 or IPv6)
Data : 전달받은 데이터
CRC: 에러 확인 코드

6. 데이터 송수신 과정

캡슐화와 비캡슐화

다음 그림 한 장으로 그 과정을 이해할 수 있다.

글로 풀어서 정의하자면,

[캡슐화]

상위 계층의 헤더와 데이터를 하위 계층의 데이터에 포함시키고 해당 계층의 헤더를 삽입하는 과정

[비캡슐화]

하위 계층에서 상위 계층으로 가며 각 계층의 헤더 부분을 제거하는 과정

7. PDU (Protocal Data Unit)

계층에서 계층으로 데이터가 전달될 때 한 덩어리 단위를 PDU라고 한다.

제어 관련 정보가 포함된 헤더, 데이터가 포함된 페이로드로 구성된다.

각 계층마다 PDU의 명칭이 다른다.

  • 애플리케이션 계층: 메시지
  • 전송 계층 : 세그먼트(TCP), 데이터그램(UDP)
  • 인터넷 계층 : 패킷
  • 링크 계층 : 프레임(데이터 링크 계층), 비트(물리 계층)

비트로 송수신하는 것이 모든 PDU중 가장 빠르고 효율이 높다.
애플리케이션 계층에서는 문자열을 기반으로 송수신을 하는데, 헤더에 authorization 값 등 다른 값을 넣는 확장이 쉽기 때문이다.

profile
채워나가는 과정

0개의 댓글