Computer Science/Computer Network

[컴퓨터네트워크] 3주차: TCP/IP 프로토콜 모델

kangkyunghyun 2026. 2. 8. 15:43
728x90
반응형

경희대학교 유인태 교수님의 컴퓨터네트워크 강의를 기반으로 정리한 글입니다.

TCP/IP 계층 구조 및 역할

TCP/IP 란?

  • 인터넷을 사용하는 모든 통신의 기본적인 프로토콜
  • 한 개의 프로토콜이 아닌 여러 가지 프로토콜들의 조합
  • TCP/IP를 기반으로 BAN, PAN, LAN, MAN, WAN 상의 장치들이 데이터를 서로 주고 받음
  • OSI 7계층 참조 모델과 달리 TCP/IP 프로토콜 모델은 4개 계층으로 정의
    • 참조 모델 vs 프로토콜 모델: 기본/기존이 되는 모델(반드시 따라야하는 것은 아님), 실제 모델과 차이가 있음 vs 실제 사용하는 모델
  • TCP: 전송 계층의 전송 제어 프로토콜, IP: 인터넷 계층의 패킷 전달 프로토콜
    • 전송: 어떤 일이 있어도 목적지에 도달(재전송 이용)
    • 전달: 전달하려 노력하지만 도착하지 않을 수도 있음
  • 모든 응용 계층 서비스들이 포트 주소, IP 주소, MAC 주소를 기반으로 통신함

TCP/IP 캡슐화/역캡슐화

  • Data: 원래 사이즈에 관계 없이 잘려진 데이터
  • 데이터 앞은 헤더, 뒤는 트레일러
  • TCP Segment, IP Packet, Ethernet Frame

네트워크 접속 계층(Network Access Layer)

  • OSI 참조 모델의 물리 계층과 데이터링크 계층의 역할 수행
  • MAC 주소를 기반으로 프레임의 송수신 담당
  • 네트워크 접속 계층 대표 네트워크 장치: NIC, 스위치, 허브
  • 오류 검출(Error Detection) 기능(재전송)
  • IP 패킷을 프레임으로 캡슐화

네트워크 접속 계층의 오류 검출 방법

FCS(Frame Check Sequence): Cyclic Redundancy Check

Preamble을 제외한 D 전체를 나눠서 나오는 나머지를 FCS로 붙이는 과정

  • CRC 계산 방법: Modulo-2 Binary Division

  • Preamble: 데이터 프레임의 시작 지점을 명확하게 정의하기 위해 사용하는 필드
  • D: Destination, S: Source
  • dividend: 전송하는 데이터(Destination & Source MAC Address / Type / Data)
  • divisor: CRC 다항식(CRC Polynomial)
    • 예: x^n + … + 1 (n+1 bits 길이, MSB 및 LSB는 항상 1이어야 함)
  • FCS: CRC 계산 결과(n bits 길이의 modulo-2 binary division 나머지 값)

실제 CRC 폴리노미얼은 CRC 32를 사용(33 bits)

계산 전에 데이터 뒤에 divisor size - 1 만큼의 0을 붙여준다

나머지 크기도 divisor size - 1이다

인터넷 계층(Internet Layer)

  • OSI 7 계층 참조 모델의 3계층(네트워크 계층) 역할을 수행
  • 패킷 수신 후 IP 주소를 확인하여 해당 패킷을 목적지로 보내는 라우팅 기능 수행
  • 라우팅 경로는 사용하는 라우팅 프로토콜(Metric)에 따라 달라짐
  • IP 주소 체계: 인터넷 상의 장치를 정의하는 주소, v4(32비트)와 v6(128비트) 있음
  • ICMP(Internet Control Message Protocol): Ping 명령어
    • 인터넷 제어 메시지 프로토콜로써 장치 간의 통신 가능 여부 확인에 사용
    • Echo Request(요청)과 Echo Reply(응답)로 구성

전송 계층(Transport Layer)

  • 종단 장치 간 통신이 완성되는 계층, **TCP(Transmission Control Protocol)**와 **UDP(User Datagram Protocol)**가 대표적, 포트 번호를 사용하여 통신함
  • TCP신뢰성 있는 통신을 제공, UDP는 아님
  • UDP는 TCP보다 데이터 처리 속도가 빠름(실시간 특성을 갖는 데이터에 적합)
  • UDP를 이용하는 응용프로그램에서 어느 정도 신뢰성 있는 통신을 해야할 경우에는 또 다른 별도의 프로토콜을 함께 사용하여 신뢰성 제공 가능
  • Well-Known 포트란 대부분의 시스템 간에 널리 이용되는 애플리케이션을 위해 기본값으로 설정되어 있는 포트 번호를 의미(1~1023 범위)

응용 계층(Application Layer)

  • OSI 7 계층 참조 모델의 세션, 표현, 응용 계층의 역할을 수행
  • 사용자 데이터 처리 계층
  • HTTP, HTTPS, FTP, SMTP, PoP3, DNS

TCP/IP 프로토콜군

TCP의 신뢰성 통신

  • ACK N은 N-1번까지 오류 없이 수신했다는 의미
  • ACK N을 받으면 Segment N부터 모든 Segment를 전송
  • 왼쪽은 Automatic Repeat, 오른쪽은 Selective Repeat
  • 중복되는 값을 제외하고 받을 수 있음 → 더 복잡해서 안씀

TCP 헤더

  • TCP: 연결 지향형(Connection-Oriented) 서비스 제공 및 신뢰성 있는 데이터 전송 보장
  • 상위 5개 행은 필수 헤더 필드 4byte * 5 = 20byte
  • TCP 헤더의 길이는 최소 20 최대 60 byte
  • 소켓: IP Address와 Port Address를 합한 것

  • 출발지 포트 번호(Source Port Address): 출발지 호스트의 포트 번호를 정의한 16비트 필드, 임시 번호 사용
  • 목적지 포트 번호(Destination Port Address): 목적지 호스트의 포트 번호를 정의한 16비트 필드, 주로 Well-Known 포트 번호
  • 순서 번호(Sequence Number): TCP Segment에 대한 순서 번호를 표시, 세그먼트 데이터를 재조립할 때 사용
  • 수신 확인 응답 번호(Acknowledgement Number): 수신 장치에서 발신 장치로 세그먼트의 전송 성공 여부를 알려주기 위해서 사용
  • 헤더 길이(Header Length): TCP 헤더의 길이를 정의, 암묵적으로 4를 곱함, 기본적으로 0101(5)로 표시되어 있음
  • 예약 비트(Reserved): 표준 정의 당시 추후 추가 또는 업데이트 되는 내용을 위해 예약된 필드
  • TCP Flags: 6비트의 Control Flag
    • URG(Urgent): 긴급 데이터가 TCP payload에 포함되어 있음을 알리는 필드, 1이면 우선적 처리
      • payload: 데이터 부분
      • urgent data는 payload의 제일 앞부분부터 시작, 종료 부분을 pointer 값으로 알려줌(긴급 포인터)
    • ACK(Acknowledgement): TCP segment들에 대한 수신 확인을 알리기 위해 사용, 1이면 수신 확인 응답 번호 이전까지의 모든 segment들을 제대로 잘 수신했음을 의미
    • PSH(Push): 푸시 요청으로 긴급한 데이터가 아닌 데이터를 빨리 처리하도록 요청
    • RST(Reset): TCP 세션 리셋을 위한 제어 비트
    • SYN(Synchronization): 통신을 개시하고자 하는 두 호스트 간의 세션 초기화 및 순서 번호 동기화
    • FIN(Final): TCP 세션 종료에 사용하는 제어 비트

  • 3-Way Handshake TCP Establishment: 세션을 시작할 때
  • 4-Way Handshake TCP Termination: 세션을 종료할 때
  • 윈도우 크기(Window Size): 수신 확인 응답 번호의 수신 없이 전송할 수 있는 데이터의 양을 정의
    • Option에 Window Scale Factor가 존재, 실제 윈도우 사이즈: 2^W_size(16) * 2^WSF(8)
  • TCP Checksum: TCP 패킷 오류 검사 필드, 수신 장치는 이 값을 이용하여 데이터 무결성 확인
  • 긴급 포인터(Urgent Pointer): 긴급 데이터가 끝나는 지점을 가리키는 포인터
  • 옵션(Option): 최소 0에서 최대 40 바이트, TCP 통신에 대한 제어 및 관리를 위한 추가 옵션

UDP 헤더

  • UDP는 TCP와 마찬가지로 전송 계층에서 동작, 포트 번호(Well-Known) 기반 통신
  • TCP와 달리 수신한 데이터에 대한 수시확인 응답 X
  • TCP보다 헤더가 간단, TCP와 같은 다양한 데이터 흐름 제어 기능 X
  • 송수신 절차가 매우 간단하여 소량의 데이터 전송이나 실시간 데이터 전송에 효과적
  • UDP는 송수신 장치 간에 비연결형(Connectionless) 서비스를 지원
  • 비연결형 서비스를 하게 되면 데이터그램 간의 전후 관계를 고려하지 않고 전송

  • 출발지 포트 번호(Source Port Number): 출발지 호스트의 포트 번호를 정의한 16비트 필드, 임의 번호 사용
  • 목적지 포트 번호(Destination Port Number): 목적지 호스트의 포트 번호를 정의한 16비트 필드, 주로 Well-Known 포트 번호
  • 길이(Length): 헤더와 데이터를 포함한 UDP 데이터 그램의 전체 길이
  • 체크섬(Checksum): 헤더와 데이터를 포함한 UDP 데이터 그램의 오류 검사

IP 헤더

  • OSI 7 Layer 3계층 기준으로 패킷을 출발지에서 목적지까지 전달하는데 사용
  • IP는 최선형(Best Effort) 서비스 기반으로 패킷을 전달 → 패킷이 목적지에 도착함을 보장하지 못함 → 패킷은 전송 도중 손실되거나 손상될 수 있음
  • 상위 계층의 TCP와 같은 신뢰성 프로토콜을 사용하여 최선형 서비스의 단점을 보완 → TCP/IP
  • IP 패킷들은 출발지 장치가 전송한 순서대로 목적지 장치에 도착하지 않을 수 있음
  • IPv4 주소 고갈 이슈로 IPv6 개발, 오늘날 네트워크에는 함께 사용됨
  • 상위 5개 행은 필수 헤더 필드 4byte * 5 = 20byte
  • IP 헤더의 길이는 최소 20 최대 60 byte

  • 버전(Version): IP 프로토콜의 버전, 대부분 버전4 → 0100 들어감
  • 헤더 길이(Header Length): 옵션을 포함할 경우 최대 60 바이트, 최소 20 바이트, 암묵적으로 4를 곱함
  • DSCP(Differentiated Services Code Points): ToS(Type of Service) 필드로 불렸던 패킷의 우선 순위를 나타내는 필드
    • 여러 우선순위를 나타내는 Queue를 이용해 늦게 들어온 1순위가 가장 먼저
  • ECN(Explicit Congestion Notification): 패킷 전송 경로 상의 혼잡 상황 발생 시 이를 통지하기 위해 사용
  • 전체 길이(Total Length): 헤더와 데이터를 포함한 패킷의 전체 길이, 최대 65536bit = 65B
  • 식별자(Identification): 모든 생성되는 각각의 패킷에 부여되는 고유한 값, 목적지에 도착한 패킷들은 이 식별자 값을 기준으로 원래의 순서대로 재조립
  • 플래그(Flags): IP 패킷의 분할 가능 여부와 마지막 프래그먼트인지 아닌지 알리기 위해 사용
    • R: Reserved = 사용안함, D: Do not Fragment, M: More Fragments
  • 분할 위치(Fragment Offset): 하나의 패킷은 2계층 프로토콜의 최대 전송 단위(MTU)값에 따라 여러 개의 프래그먼트로 분할되어 전송, 각각의 분할된 프래그먼트의 위치를 확인하기 위한 오프셋 값, 13bit = 8192까지 표현 가능 → 16bit 크기를 표현 X → 암묵적으로 8을 곱함
  • TTL(Time-to-Live): 패킷의 looping 현상을 방지하기 위해 사용하는 패킷의 수명을 나타내는 값, 라우터 통과 시마다 1씩 감소, 0이 되면 해당 패킷 폐기, 대부분 16
  • 프로토콜(Protocol): IP 패킷 헤더가 실어 나르고 있는 서비스 대상 프로토콜(ex. ICMP 1, TCP segment 6, UDP segment 17)
  • 헤더 체크섬(Header Checksum): IP 헤더 오류 검사
  • 출발지 IP 주소(Source IP Address): 출발지 장치의 IP 주소
  • 목적지 IP 주소(Destination IP Address): 목적지 장치의 IP 주소
  • 옵션(Option): 패킷의 전송 경로를 포함한 IP 프로토콜의 동작 옵션을 정의

  • MTU(Maximum Transmission Unit): 2계층 통신 프로토콜이 한 번에 실어나를 수 있는 데이터의 양
    • 이더넷 프로토콜의 MTU: 1500B

  • Payload가 5000B 크기인 데이터가 들어오면 Fragmentation함
  • Fragment Offset은 암묵적으로 8을 곱하기로 약속

  • 사용자 메시지를 segmentation 할 때부터 충분히 작게 만들어서 fragmentation 할 필요가 없도록 함
    • 응용 계층: 큰 메시지를 1460 크기의 데이터로 나눔
    • 전송 계층: 1460 + TCP/UDP 헤더 20 = 1480
    • 인터넷 계층: 1480 + IP 프로토콜 헤더 20 = 1500

체크섬(Checksum): 계산하는 문제 시험 출제

  • 16비트씩 계산 → 16진수 4자리씩 묶어서 계산
  • 2개씩 1의 보수 덧셈, 하나 남을 때까지 반복 → 0x1c78
    • 1의 보수: 0xe387(checksum 값)
    • 1의 보수 연산: 더해서 15가 되는 값으로
  • e387은 checksum 자리, 없는 값으로 생각하고 계산
  • 1의 보수 덧셈 값을 checksum 값과 1의 보수 덧셈을 하면 FFFF, 이를 뒤집으면(1의 보수) 0000
728x90
반응형