[Computer Science][Network] TCP / IP 프로토콜

양영준·2025년 4월 5일

Computer Science

목록 보기
2/5
post-thumbnail

📌 TCP / IP 프로토콜

프로토콜 중 가장 많이 쓰이는 프로토콜 두가지를 한번에 통칭하는 단어로, 현재 가장 많이 사용하고 있는 인터넷 프로토콜 스위트 (Internet Protocol Suite) 이다.

💿 프로토콜?

시스템과 애플리케이션 프로그램에서 정보를 겨환할 수 있도록 하는 메세지 형식 및 프로시저에 대한 규칙 세트를 의미한다.
수신 호스트가 메세지를 이해하기 위해서 통신과 관련된 각 시스템이 이러한 규칙을 준수해야 한다.

💿 인터넷 프로토콜 스위트? (Internet Protocol Suite)

프로토콜의 모음을 의미한다.
인터넷 프로토콜 스위트 중 TCP와 IP가 가장 많이 쓰이기 때문에 TCP / IP 프로토콜 스위트 라고도 불린다.

💿 TCP와 IP

TCP / IP는 패킷 통신 방식의 인터넷 프로토콜인 IP 프로토콜과 전송 조절 프로토콜인 TCP 프로토콜로 이루어져 있다.
TCP 프로토콜은 IP 통신을 기반으로 작동한다.

💾 IP 프로토콜

패킷들을 가장 효율적인 방법으로 최종 목적지로 전송하기 위해 필요한 프로토콜이다.
IP의 정보는 패킷 단위로 나뉘어져 전송되는데, 이 과정에서 데이터가 제대로 전달되었는지, 데이터의 순서가 올바른지 보장하지 않는다는 특징을 가지고 있다.
따라서 IP는 비신뢰성 (unreliabilty)비연결성 (connectionlessness) 이라는 특징을 가지고 있다.

현재 인터넷에서 사용하는 표준 프로토콜은IPv4 를 사용하고 있지만, 고갈 문제를 겪고 있는 관계로 IPv6 가 나오게 되었다.

💡 IPv4 와 IPv6의 차이점

IPv4IPv6
주소 길이32비트128비트
표기법10진수, .으로 구분16진수, :으로 구분
주소 설정수동, DHCP자동 (SLAAC), DHCPv6
보안 기능선택적 (IPSec 별도 설정)기본적으로 IPSec 내장
헤더 구조복잡, 다양한 옵션 포함간단, 고정 길이로 설계
브로드캐스트지원함지원하지 않음 (멀티 캐스트 및 애니캐스트 사용)
호환성IPv6와 직접 호환 불가IPv4와 직접 호환 불가 (전환 기술 필요)
패킷 크기 처리최대 65,535 바이트확장 헤더를 통해 유연하게 처리 가능

💾 TCP 프로토콜

신뢰성 있고 무결성을 보장하는 연결을 통해 데이터를 안전하게 전달해주는 전송 프로토콜로, IP 프로토콜이 가지고 있는 비신뢰성과 비연결성 문제를 보완하기 위한 목적을 가진 프로토콜이다.

💾 TCP / IP 계층 구조

TCP / IP는 총 4개의 계층으로 이루어져 있고, 각 계층이 하는 역할이 명확히 구분되어 있다.

1. 네트워크 액세스 계층 (Network Access Layer)

  • 네트워크 인터페이스 계층 (Network Interface Layer) 으로도 불린다.
  • 네트워크에 연결된 물리적인 기기 간 전송을 담당하는 계층이다.
  • 같은 네트워크 내에서 데이터가 전송된다.
  • 노드 간의 신뢰성 있는 데이터 전송을 담당한다.
  • 물리 주소인 MAC 주소가 사용된다.

2. 인터넷 계층 (Internet Layer)

  • 수신측까지 데이터를 전달하기 위해 사용되는 계층으로, 어떤 네트워크 장비에 정보를 전달할 것인지 결정하는 계층이다.
  • 논리 주소인 IP 주소가 사용된다.
  • 송신측, 수신측 모두 IP 주소를 가지고 있기 때문에 해당 주소를 통해 정확하게 전달할 대상을 찾을 수 있다.
  • 데이터 전송을 위해서는 전송 경로가 필요하기 때문에 전송 경로를 알아오기 위한 라우팅 (routing) 작업이 필요하다.
라우팅?

네트워크끼리 연결하고 데이터를 전송하는 기기인 라우터 (router)를 사용하여 목적지까지 데이터를 보내기 위한 일련의 작업이다.
라우터가 내부의 라우팅 테이블을 통해 경로 정보를 등록하여 데이터 전송을 위한 최적을 경로를 찾는다.
이러한 출발지와 목적지 간의 데이터 전송 과정을 End-to-End 통신 이라고 부른다.

3. 전송 계층 (Transport Layer)

  • 최종적인 통신 목적지를 정하고, 오류 없이 데이터를 전송하는 역할을 담당하는 계층이다.
  • TCP or UDP 프로토콜이 사용된다.
  • 통신 노드 간의 데이터 전송 및 흐름에 있어 신뢰성을 보장한다. (End-to-End 통신의 신뢰성을 확보한다.)
  • 해당 프로세스를 지정하는 일종의 주소인 포트 번호 (port number)를 사용한다.

4. 응용 계층 (Application Layer)

  • 실제 응용 프로그램이 사용되는 프로토콜 계층이다.
  • 실질적인 서비스를 사람들에게 제공하는 계층이다.
  • 주로 응용 프로그램들끼리의 데이터를 교환하기 위한 계층이다.

💿 계층간 데이터 송수신 과정

응용 계층에서 전송 계층으로 사용자가 보내는 요청 값들이 캡슐화 과정을 거쳐 전달되고, 다시 네트워크 액세스 계층을 통해 서버와 통신을 한다.
통신하는 서버는 해당 서버의 네트워크 액세스 계층으로부터 응용 계층까지 역캡슐화 과정을 거쳐 데이터가 전송된다.

💾 캡슐화

상위 계층의 헤더와 데이터를 하위 계층의 데이터 부분에 포함시키고, 해당 계층의 헤더를 삽입하는 과정을 말한다.

계층 변화삽입 헤더
응용 계층 -> 전송 계층TCP 헤더
전송 계층 -> 인터넷 계층IP 헤더
인터넷 계층 -> 네트워크 계층프레임 헤더 + 프레임 트레일러

💾 역캡슐화

하위 계층에서 상위 계층으로 올라가며, 각 계층의 헤더 부분을 제거하는 과정을 말한다. 캡슐화를 통해 붙은 각각의 헤더를 통해 각 계층에서 수행해야할 동작을 수행하고, 최종적으로 사용자에게 통신받은 메세지를 전달하게 된다.

💿TCP 연결 성립 과정 (3-Way Handshake)

TCP는 장치들 사이에 논리적인 접속을 성립하기 위하여 3-Way Handshake 를 사용한다.
TCP 3-Way Handshake는 TCP / IP 프로토콜을 이용해서 통신을 하는 응용 프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 의미한다.

💾 3-Way Handshake의 역할

  1. 양쪽 모두 데이터를 전송할 준비가 되었다는 것을 보장하고, 실제로 데이터 전달이 시작하기 전에 양쪽이 준비되었다는 것을 알 수 있도록 한다.
  2. 양쪽 모두 상대편에 대한 초기 순차 일련번호를 얻을 수 있도록 한다.

💾 3-Way Handshake의 과정

  1. 클라이언트는 서버에 접속을 요청하는 SYN을 보내고 SYN / ACK 응답을 기다리는 SYN_SENT 상태가 된다.

  2. 서버는 클라이언트의 SYN을 받고 클라이언트에게 요청을 수락한다는 ACKSYN 패킷을 발송하고 SYN_RECEIVED 상태가 된다.

  3. 클라이언트는 서버가 전송한 패킷을 받고 서버에게 ACK 를 보낸다.

이후부터는 클라이언트와 서버 간의 연결이 이루어지고 데이터가 오가게된다.
해당 연결 과정 이후 클라이언트와 서버는 모두 ESTABLISHED 상태가 된다.

💿TCP 연결 해제 과정 (4-Way Handshake)

TCP 4-Way Handshake는 세션을 종료하기 위해 수행되는 절차를 의미한다.

💾 4-Way Handshake의 과정

  1. 서버와 클라이언트가 연결된 상태에서 클라이언트가 close()를 호출하여 접속을 끊으려고 한다. 이 때, 클라이언트는 서버에게 연결을 종료하겠다는 FIN을 보낸다. 클라이언트가 보내는 FIN에는 ACK도 포함되어 있다.

  2. 서버는 클라이언트의 FIN을 받고, 클라이언트에게 ACK를 전송하고 자신의 통신이 끝날 때까지 기다리는 CLOSE_WAIT 상태가 된다. 아직 남은 데이터가 있다면, 마저 전송을 마친 후 close()를 호출한다.

  3. 서버의 통신이 종료되었으면, 클라이언트에게 FIN을 전송하고 LAST_ACK 상태가 된다.

  4. 클라이언트는 서버의 flag를 받고 서버에게 ACK 패킷을 전송한다. 아직 서버로부터 받지 못한 데이터가 있을 수 있기 때문에 TIME_WAIT 상태로 들어가 기다린다.

서버는 ACK를 받은 이후 소켓을 닫고, 클라이언트는 TIME_WAIT 끝난후 종료하여 연결을 해제한다.


이미지 출처

TCP / IP 계층 구조 이미지
캡슐화 / 역캡슐화 도식화 이미지
3-Way Handshake / 4-Way Handshake 과정 이미지

profile
학습 내용 정리 순차적 갱신 / 정리 중

0개의 댓글