개념/기초지식

패킷교환방식, TCP/IP, OSI 7계층, TCP/IP 4계층 + UDP

칠뎁 2022. 9. 13. 16:07

 

📌 패킷교환방식이란

 

패킷 교환(Packet switching)은 컴퓨터 네트워크와 통신의 방식 중 하나로 현재 가장 많은 사람들이 사용하는 통신 방식이다.
작은 블록의 패킷으로 데이터를 전송하며 데이터를 전송하는 동안만 네트워크 자원을 사용하도록 하는 방법을 말한다.

 

큰 소포 한덩어리 였던 데이터를 패킷이라는 작고 가벼운 단위로 쪼개서 전송할 수 있게 해주는데,

기존의 회선교환 방식에서의 단점이었던 즉시성을 개선할 수 있다. (한 서버와 통신중에도 다른 서버와 통신할 수 있음)

이렇게 나누어진 패킷들은 여러 통신 지점(Node)를 지나  목적지에 도착한다.

또한 각각의 패킷들은  빠르게 전달 할 수 있도록 다른 경로로 전달된다.

 


 

📪 IP 패킷으로 데이터 보내기

 

IP 패킷이란 IP 주소를 활용해서 패킷 통신단위로 데이터를 전달할 때의 그 데이터 패킷 하나하나를 말한다.

 

우리는 이미 커다란 택배를 패킷이라는 작은 택배로 나눴다.

이제 그 택배에 IP주소(숫자)로 출발지와 목적지를 적으면 그 작은 택배 조각은 IP패킷이 되는 것이다.

이렇게 도착지 IP주소들을 적어놓으면 다양한 노드들을 거치더라도 정확한 목적지로 패킷이 배달될 수 있다.

 

 


 

📬 IP 패킷으로 응답 보내기

 

서버에서 클라이언트가 패킷으로 보낸 데이터를 전송 받는다면

잘 받았는지, 중간에 뭔가 잘못되서 택배가 잘못 도착하진 않았는지, 답장을 보내야한다.

 

이 답장또한 IP패킷으로 보낼 수 있다.

 


 

💡 이런 방법이 IP프로토콜

 

 

이렇게 패킷교환방식에 IP 체계를 결합하여 데이터를 주고 받는 방식을  IP 프로토콜이라고 부른다.

 IP 프로토콜에선 IP 패킷이 왔다갔다 하며 데이터가 교환된다.

 

IP 프로토콜은 송신 호스트와 수신 호스트가 패킷 교환 네트워크에서 정보를 주고받는 데 사용하는 정보의 규약이다.

 

 


 

🥲 IP 프로토콜의 한계

 

  • 비연결성 : 패킷을 받을 대상이 없거나, 서비스 불능 상태여도 일단 패킷 전송하고 본다. (택배 받을 사람 이사가도 일단 문앞에 놓고감)
  • 비신뢰성 : 중간에 패킷이 사라질 수 있고, 패킷의 순서를 보장할 수 없다.

 

 

이런 한계는 TCP 프로토콜로 보완할 수 있다.

 


🗄 OSI 7계층과 TCP/IP 4계층

 

OSI 7계층과 TCP/IP 4계층은 모두 네트워크 프로토콜이 통신하는 구조를 분리하여 각 계층간 상호 작동하는 방식을 정해 놓은 것이다.

 

IP프로토콜을 이용하여 네트워크와 통신하는 과정을 구조로 파악하기 위해서

OSI 7계층과 TCP/IP 4계층을 살펴볼 수 있다.

 

  • 두 계층구조 모두 네트워크 프로토콜이 통신하는 구조와 상호작용을 설명하기 위해 쓰인다.
  • OSI 7계층은 ISO(국제표준화기구)에서 만들으며 TCP/IP 4계층의 심화 버전이라고 볼 수 있다.
  • TCP/IP 4계층은 프로토콜 통신 과정에 초점을 맞추어, OSI 7계층보다 단순화된 계층 구조이다.
  • TCP/IP계층이 먼저 개발되었다.
  • 실제 네트워크 표준은 TCP/IP에 가깝다고 한다. => 실용성에 기반 둠, 실제 설명에서 많이 사용

 

OSI 7계층에 각각 해당하는 TCP/IP 4계층은 아래의 그림을 참고하면 되는데, 

이게 정확하게 딱 떨어지는 것은 아니다.

 

 

여기서 네트워크 계층(인터넷 계층)에 IP가 들어있고, 전송 계층에 TCP가 들어가 있는 것을 확인할 수 있다.

일단 이런 계층이 있다는 걸 알아두고 밑에 설명을 보면 더 이해가 된다.

 

참조 사이트에 가보면 그림으로 설명하는데 이것도 도움이 된다.

 

 


 

📌 IP프로토콜의 한계를 보완하는 TCP프로토콜

 

 

일단 TCP의 정의를 찾아보면 

 

TCP (전송 제어 프로토콜)은 두 개의 호스트를 연결하고 데이터 스트림을 교환하게 해주는 중요한 네트워크 프로토콜
이다. TCP는 데이터와 패킷이 보내진 순서대로 전달하는 것을 보장해준다.

 

다시말해 패킷 단위로 전달되기 때문에, 여러개의 패킷이 순서가 무작위 순서로 배달되는 사고가 발생하고,

그를 막기위해서 추가된 것이 TCP이다.

 

 


 

🗂 TCP프로토콜의 구조적 맥락

 

 

TCP 세그먼트를 구조상으로 보면 IP 패킷의  IP Data안에 포함되어 있다.

 

IP 패킷을 생성하기 전 이 TCP세그먼트를 생성해주는 게 우선이다.

이렇게 TCP 세그먼트를 포함한 IP패킷 TCP/IP 패킷으로 부른다.

 

 

위 이미지를 도식화해서 표현하면 아래와 같다.

 

 

대충 이 이미지에서 아래의 사항들을 기억해두고 넘어간다.

 

  • TCP 세그먼트가 IP패킷안에 들어있다
  • TCP 세그먼트는 단순 IP패킷에 들어가는 정보를 보완하기 위해 이런저런 정보가 함께 들어간다.

 


 

🖇 TCP / IP 패킷 보내는 순서

 

 

아래의 이미지는 "안녕" 메시지를 보낼때

OSI계층,혹은 TCP/IP 계층에서 어떤 상호작용이 일어나는지 보여준다.

 

 


 

📌 TCP의 특징

 

TCP의 특징은 아래와 같은 것들이 있다.

 

  • 연결지향 = TCP 3 way handshake (가상 연결)
  • 데이터 전달 보증
  • 순서 보장
  • 신뢰할 수 있는 프로토콜

 

⚡️TCP의 특징01 : 연결지향 = TCP 3 way handshake

TCP는 장치들 사이에 논리적인 접속을 성립하기 위해서 3 way handshake를 사용한다.

 

  1. 접속 요청하는 SYN 패킷 보냄
  2. 서버는 SYN요청을 받고 클라이언트에세 요청을 수락한다는  ACK와 SYN가 설정된 패킷을 발송하고 클라이언트가 ACK로 응답하기를 기다림
  3. 클라이언트가 서버에게 ACK를 보내면 이 이후로 부터 연결이 성립되며 데이터 전송이 가능하다.

 

⚡️TCP의 특징02 : 데이터 전달 보증

이렇게 TCP 3 way handshake를 사용하는 경우에,

 

이때, 만약 서버가 꺼져있다면 클라이언트가 SYN을 보내고 서버에서 응답이 없기 때문에 데이터를 보내지 않는다.

이렇게 IP프로토콜의 한계인 비연결성을 TCP가 보강할 수 있게 된다.

 

⚡️TCP의 특징03 : 순서 보장

만약 패킷이 순서대로 도착하지 않으면 TCP 세그먼트에 있는 정보를 토대로

다시 패킷 전송을 요청할 수 있다.

 

이렇게 IP프로토콜의 한계인 비신뢰성을 TCP가 보강할 수 있게 된다.

 

 


 

📌 TCP와 UDP

 

 

위에서 보았던 OSI 7계층과 TCP/IP 4계층을 다시 보면

TCP와 UDP가 한 층에 나란히 있는 것을 확인할 수 있다.

 

UDP는 IP 프로토콜에 PORT, 체크섬 필드 정보만 추가된 단순한 프로토콜이다.

아래와 같이 비교해볼 수 있다.

 

TCP
(전송 제어 프로토콜, Transmission Control Protocol)
UDP
(사용자 데이터그램 프로토콜, User Datagram Protocol)
  • 연결지향 = TCP 3 way handshake (가상 연결)
  • 데이터 전달 보증(데이터 수신 여부 확인함)
  • 순서 보장
  • 신뢰할 수 있는 프로토콜
  • 속도느림
  • 하얀 도화지에 비유 (기능이 거의 없음, 커스터마이징 가능)
  • 비 연결지향 - TCP 3 way handshake ❌
  • 데이터 전달 보증 ❌ (데이터 수신 여부 확인 안함)
  • 순서 보장 ❌
  • 데이터 전달 및 순서가 보장되지 않지만 단순하고 빠름
  • 신뢰성보다는 연속성이 중요한 서비스(e.g. 실시간 스크리밍)에 자주 사용됨
  • 속도 빠름