티스토리 뷰

❓ TCP/IP vs OSI 모델

 

  • OSI 모델: 표준 프로토콜을 사용하여 다양한 통신 시스템이 통신할 수 있도록 국제표준화기구에서 만든 개념 모델이다. OSI는 상이한 컴퓨터 시스템이 서로 통신할 수 있는 표준을 제공한다.
  • TCP/IP 모델: 인터넷에서 컴퓨터들이 서로 정보를 주고 받는데 쓰이는 프로토콜의 집합. 인터넷 프로토콜 스위트 (Internet Protocol Suite)라고도 부른다. 
TCP/IP와 OSI의 차이점은 실무와 이론의 차이이다. OSI 7계층은 참조 모델(reference model)로 사실상 이론적인 개념. 현재의 TCP/IP 계층이 더 실무적인 구조에 가깝다. TCP/IP는 실용적인 프로토콜 모음이고 OSI는 프로토콜 독립적인 개념 모델이다. 즉, OSI는 여러 통신 방식에 대한 포괄적인 프레임워크를 제공하는 반면, TCP/IP는 일상적인 통신 문제를 해결하기 위해 표준화된 프로토콜을 사용한다.
TCP/IP 모델과 OSI 모델 모두 계층을 사용하여 연산을 분류하는데, 예를 들어 네트워크 계층과 전송 계층이 두 모델에서 동일한 역할을 한다. 그러나 TCP/IP 모델이 단지 4개의 계층으로 구성된 반면 OSI 모델은 7개의 계층으로 구성된다.
TCP/IP와 OSI는 유사점보다는 차이점이 적다. 둘 다 계층화된 시스템을 사용하여 데이터 패킷이 네트워크를 통과하는 방식을 정의하는 논리적 모델이다.

 

 

❗️TCP와 IP

TCP/IP == TCP(Transmission Control Protocol 전송제어 프로토콜) + IP(Internet Protocol 인터넷 프로토콜)

  • IP: 메세지가 목표로 하는 컴퓨터에 잘 도착하도록 해주는 역할. 
  • TCP: IP의 상위 프로토콜. 데이터의 전달을 보증하고 데이터를 보낸 순서대로 받게 해준다.
클라이언트와 서버는 각각 IP 주소를 가지고 지정한 IP 주소에 패킷(출발지 IP, 목적지 IP와 전송 데이터 등으로 구성된 통신 단위) 단위로 데이터를 전송한다. 전송된 데이터는 인터넷 망 내의 노드를 거쳐 목적지에 도달한다.   
IP 프로토콜의 한계 ➡︎ TCP가 해결
1) 클라이언트에서는 대상 서버가 패킷을 받을 수 있는 상태인지 확인할 수 없다
2) 받을 대상이 없거나 서비스가 불가능해도(연결이 되지 않은 상태) 패킷을 전송한다(비연결성)
3) 인터넷 망 내 노드에 문제가 생기는 경우 패킷이 안전하게 도달하지 못하거나 전송 순서가 바뀔 수 있다(비신뢰성)
4) 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이라면 IP만으로는 이를 구분할 수 없다

 

TCP 통신 방식은 안전하고 정확한 데이터 전송을 목표로 한다.

1. 연결 성립을 위해 3 Way Handshake를 사용한다.

2. 연결 해제를 위해 4 Way Handshake를 사용한다.

 

 

▶︎ TCP 연결: 3 Way Handshake

1. 클라이언트가 서버에게 연결을 위해 SYN 패킷을 전송한다.

→ sequence의 값으로 x를 설정하여 보낸다.

2. 서버가 SYN 패킷을 받고, 클라이언트에게 확인 신호인 ACK(x + 1)와 SYN 패킷을 보낸다.

→ sequence의 값으로 y를 설정하여 보낸다.

3. 클라이언트는 서버의 응답 ACK(x + 1)과 SYN(y)를 받은 뒤에, 확인 신호로 ACK(y + 1)을 보낸다.

ACK: Acknowledgment(승인), SYN: Synchronize(동시에 발생하다) Sequence Number

즉, 서로의 통신을 위한 관문(port)를 확인하고 연결하기 위하여 3번의 요청/응답 후에 연결이 완료된다.

 

▶︎ TCP 연결 해제: 4 Way Handshake

1. 클라이언트가 연결 해제를 위해 FIN 패킷을 전송한다.

2. 서버는 FIN 패킷을 받은 뒤에 모든 데이터를 보내기 위해 CLOSE_WAIT 상태를 유지하며 ACK 패킷을 보낸다.

3. 서버는 데이터를 모두 보낸 뒤에 FIN 패킷을 보내 연결이 해제되었음을 알린다.

4. 클라이언트는 FIN 패킷을 받고, TIME_WAIT 상태를 유지하다가 데이터를 다 받으면, ACK를 서버에 전송한다.

→ TIME_WAIT 시간이 끝나면 클라이언트는 소켓을 닫는다.

3way handshake가 연결확립을 위해 진행했다면, 4way handshake는 세션을 종료하기 위해 수행되는 절차

 

 

❗️TCP/IP 흐름제어

 데이터를 받는 수신 측이 송신 측보다 데이터 처리 속도가 빠르면 문제가 없지만, 느릴 경우 문제가 발생한다.

 송신 측이 데이터를 너무 빠르게 보내면, 수신 측의 용량을 초과한 패킷이 소실될 수 있다.

 TCP/IP 흐름 제어는 위 문제를 완화한다.

→ 흐름 제어를 통해 TCP 버퍼(TCP 세그먼트 보관 메모리)의 크기 차이를 완화한다.

 

▶︎ TCP/IP 흐름제어 방법 ① Stop and Wait

1. 수신 측은 송신 측이 전송한 패킷에 대하여 매번 확인 응답(ACK)을 보낸다.

2. 송신 측은 ACK를 확인하면, 그 다음 패킷을 전송한다.

→ 패킷을 하나씩 보내기 때문에, 속도 측면에서 비효율적으로 동작한다.

▶︎ TCP/IP 흐름제어 방법 ② Sliding Window

수신 측에서 설정한 윈도우 크기만큼 송신 측이 패킷을 전달한다.

초기 윈도우 크기는 호스트 간의 3 Way Handshaking 과정에서 수신 측이 결정한다.

→ 수신 측이 확인 응답(ACK)을 보낼 때 TCP 헤더에 담아서 전송한다.

Sliding Window Image

Sliding Window는 전송측이 전송한 프레임에 대한 ACK 프레임의 확인을 받지 않고도 여러 패킷을 보내는 것을 가능하게 하기 때문에 Stop and Wait 방식보다 훨씬 효율적

 

 

 

❗️TCP/IP 혼잡제어

  • 라우터가 처리할 수 있는 데이터의 양을 초과하면, 데이터가 손실될 수 있다.
  • 송신 측에서는 라우터가 처리하지 못한 데이터에 대해 재전송하므로, 네트워크가 혼잡해질 수 있다.
  • 따라서, 네트워크의 오버플로우(overflow)를 예방하기 위해, 패킷 수를 조절한다.

 

▶︎ TCP/IP 혼잡제어 방법 ① AIMD

합 증가/곱 감소(Additive Increase/Multiplicative Decrease) 방식이다.

1. 처음에 패킷을 하나씩 보내며, 문제가 없다면(손실을 감지하기 전까지) 윈도우의 크기를 1씩 증가시키며 전송한다.

2. 전송에 실패했을 때(손실을 감지했다면), 윈도우 크기를 절반으로 감소시킨다.

→ 윈도우의 크기가 선형적으로 증가하여 네트워크의 대역폭을 모두 활용하기에 오랜 시간이 소요될 수 있다.

AIMD Graph

 

▶︎ TCP/IP 혼잡제어 방법 ② Slow Start

윈도우의 크기를 {1, 2, 4, 8, ...} 형식으로 지수적으로 증가시키는 방식이다.

보낸 패킷 데이터에 대하여 확인 응답(ACK)이 정상적으로 도착했을 때, 윈도우 크기 증가

 혼잡 상태가 감지되었을 때, 윈도우 크기를 1로 감소

• 이때, 임계값 ssthresh (마지막 손실 발생시의 cwnd의 절반)와 같아지면 혼잡회피 모드로 들어간다. (자세히 알아보기)

 

 

▶︎ TCP/IP 혼잡제어 방법 ③ Fast Recovery

다양한 방식을 적절히 조합한 다양한 혼잡 제어 정책들이 존재한다.

예) Slow Start 방식으로 동작하다가, 혼잡 상태가 한 번 감지된 이후에는 AIMD 방식으로 동작하도록 할 수 있다.

 

 

 

 

 

 

 

참고

 https://www.guru99.com/difference-tcp-ip-vs-osi-model.html

tistory [네트워크] TCP/IP 이해하기

tistory TCP와 3-Way, 4-Way Handshake란?

[Network] TCP 혼잡 제어 알아보기

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함