TCP/IP 4계층

U_Uracil·2024년 4월 15일
0

CS

목록 보기
7/9

TCP/IP 4계층


  • 인터넷 표준 TCP/IP 프로토콜을 계층화하여 표준화 한 모델
  • OSI 7계층이 데이터 통신에 필요한 계층과 역할을 정확하게 정의하려고 했다면, TCP/IP 4계층은 현재 인터넷에서 사용되는 프로토콜로 좀 더 실무적이고 단순화 된 모델

계층화의 이유 : 각 계층별로 역할을 구분해 계층 간 간섭을 최소화하여 사용 편리성을 높임

  • 호환성 보장(다른 제조사 장비들끼리도 통신 가능)으로 비용 절감
  • 쉬운 문제 해결(계층별로 문제 해결)
  • 다른 계층끼리는 전달 과정을 알 필요 없으므로 데이터의 캡슐화와 은닉 가능

1. 네트워크 엑세스 계층


  • 노드와 노드 간 신뢰성 있는 데이터 전송을 담당하는 계층
  • OSI 7계층의 물리 + 데이터링크 계층
  • 알맞은 하드웨어로 데이터가 전달되도록 MAC주소를 핸들링하고 데이터 패킷을 전기신호로 변환하여 전달할 수 있도록 준비해줌

2. 인터넷 계층


  • IP를 담당하는 계층
  • OSI 7계층의 네트워크 계층
  • IP를 사용하여 데이터의 원천지(origin)와 목적지(destination)에 관한 정보를 첨부
  • IP는 복잡한 네트워크 망을 통해 가장 효율적인 방법으로 빠르게 보냄
  • IP는 패킷 전달 여부를 보장하지 않음(비연결성)

3. 전송 계층


  • TCP/UDP를 담당하는 계층
  • TCP는 데이터의 전달을 보증하고 보낸 순서대로 받게 함(연결 지향)
  • UDP는 데이터의 전달을 보증하지 않고 데이터를 전송만 함(비연결 지향)
  • 포트 번호를 이용

TCP


  • 연결 지향적 프로토콜
  • 가상 회선 패킷 교환 방식 : 발신지와 수신지를 연결하여 패킷을 전송하기 위한 논리적 경로를 배정하는 것

TCP의 특징

1. 흐름 제어(Flow Control)

  • 송신측과 수신측의 데이터 처리 속도 차이를 해결하기 위한 기법

  • 수신측이 패킷을 지나치게 많이 받지 않도록 조절하는 것

  • 수신측의 데이터 손실을 방지

  • 제어 방식

    • Stop and Wait

      1. 매번 전송한 패킷에 대해 확인 응답을 받고 다음 패킷을 전송
    • Sliding Window(Go Back N ARQ)

      1. 수신측에서 윈도우 크기만큼 모든 패킷을 전송
      2. 그 패킷들의 전달이 확인되면 윈도우를 옆으로 옮김

2. 혼잡 제어(Congestion Control)

  • 한 라우터에 데이터가 몰릴 경우 데이터가 처리되지 못해 호스트가 재전송하여 네트워크의 혼잡을 가중시키는 것을 막기 위한 기법

  • 송신측에서 보내는 데이터의 전송속도를 강제로 줄임

  • 제어 방식

    • AIMD(Addititive Increase / Multiplicative Decrease)
      1. 처음에 패킷을 하나씩 보내고 문제가 없으면 점점 window의 크기를 1씩 증가시킴
      2. 패킷 전송에 실패하거나 일정 시간 넘으면 속도 절반으로 줄임
    • Slow Start
      1. 처음에 패킷을 하나씩 보내고 문제가 없으면 window 크기를 2배씩 늘림
      2. 혼잡이 발생하면 window 크기를 1로 떨어뜨림

3. 전이중, 점대점 방식

  • 전이중(Full-Duplex) : 전송이 양방향으로 동시에 가능
  • 점대점(Point-to-Point) : 각 연결이 정확히 2개의 종단점이 있음

TCP 연결 과정(3-way handshake)

  1. 먼저 OPEN한 클라이언트가 SYN을 보내고 SYN-SENT 상태로 대기
  2. 서버는 SYN-RECEIVED 상태로 바꾸고 SYNACK를 보냄
  3. SYN과 ACK를 받은 클라이언트는 ESTABLISHED 상태로 변경하고 서버에 ACK를 보냄
  4. 서버는 ACK를 받고 ESTABLISHED 상태가 됨
상태설명
CLOSED연결 수립 시작 전 기본 상태(연결 없음)
LISTEN포트가 열린 상태로 연결 요청 대기 중
SYN-SENTSYN을 요청한 상태
SYN-RECEIVEDSYN 요청을 받고 상대방의 응답 대기 중
ESTABLISHED연결 수립 완료된 상태, 데이터 교환 가능

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

  1. 먼저 close를 실행한 클라이언트가 FIN 을 보내고 FIN-WAIT-1 상태로 대기
  2. 서버는 CLOSE-WAIT으로 바꾸고 응답 ACK 를 전달한다. 동시에 해당 포트에 연결되어 있는 애플리케이션에게 close를 요청
  3. ACK 를 받은 클라이언트는 상태를 FIN-WAIT-2로 변경
  4. close 요청을 받은 서버 애플리케이션은 종료 프로세스를 진행하고 FIN 을 클라이언트로 보내 LAST_ACK 상태로 바꿈
  5. FIN 을 받은 클라이언트는ACK 를 서버에 다시 전송하고 TIME-WAIT으로 상태를 바꿈
  6. TIME-WAIT에서 일정 시간이 지나면 CLOSED로 변경. ACK를 받은 서버도 포트를 CLOSED로 변경
상태설명
ESTABLISHED연결 수립 완료된 상태, 데이터 교환 가능
FIN-WAIT-1자신이 보낸 FIN에 대한 ACK를 기다리거나 상대방의 FIN을 기다림
FIN-WAIT-2자신이 보낸 FIN에 대한 ACK를 받았고, 상대방의 FIN을 기다림
CLOSE-WAIT상대방의 FIN(종료 요청)을 받은 상태. 상대방 FIN에 대한 ACK를 보내고 어플리케이션에 종료를 알림
LAST-ACKCOLSE-WAIT 상태를 처리 후 자신의 FIN 요청을 보낸 후 FIN에 대한 ACK를 기다림
TIME-WAIT모든 FIN에 대한 ACK를 받고 연결 종료 상태. 새 연결과 겹치지 않도록 일정 시간 기다린 후 CLOSED로 전이
CLOSED연결 수립 전 기본 상태 (연결 없음)

UDP


  • 비연결 지향적 프로토콜
  • 데이터그램 패킷 교환 방식 : 패킷이 최적의 경로로 독립적으로 전송되는 방식

TCP와 UDP의 차이


계층 간 데이터 송수신


  • 송신 과정에서는 캡슐화
  • 수신 과정에서는 비캡슐화 과정을 거쳐 데이터가 송수신됨

References
https://inpa.tistory.com/entry/WEB-🌐-TCP-IP-정리-👫🏽-TCP-IP-4계층
https://wooono.tistory.com/507
https://velog.io/@jehjong/개발자-인터뷰-TCPIP-4계층
https://yozm.wishket.com/magazine/detail/1956/
https://dev-coco.tistory.com/144
https://gyoogle.dev/blog/computer-science/network/흐름제어 & 혼잡제어.html

profile
기억은 유한, 기록은 무한

0개의 댓글

관련 채용 정보