2.2 TCP/IP 4계층 모델

김수연·2024년 4월 11일

2.2.1 계층구조

  • OSI 계층은 애플리케이션 계층을 3 개로 쪼개고 링크 계층을 데이터 링크 계층, 물리 계층으로 나눠서 표현
  • 인터넷 계층을 네트워크 계층으로 부름
  • 이 계층들은 특정 계층이 변경되었을 때 다른 계층이 영향을 받지 않도록 설계됨

애플리케이션(application) 계층 (응용 계층)

: 웹 서비스, 이메일 등 서비스를 실질적으로 사람들에게 제공하는 층

  • FTP, HTTP, SSH, SMTP, DNS 등 응용 프로그램이 사용되는 프로토콜 계층

전송(transport) 계층

: 송신자와 수신자를 연결하는 통신 서비스를 제공하며 연결 지향 데이터 스트림 지원, 신뢰성, 흐름 제어를 제공할 수 있으며 애플리케이션과 인터넷 계층 사이의 데이터가 전달될 때 중계 역할을 함

  • TCP

    • 패킷 사이의 순서를 보장
    • 연결지향 프로토콜을 사용해서 연결 → 신뢰성을 구축해서 수신 여부를 확인
    • ‘가상회선 패킷 교환 방식’을 사용 (패킷들이 전송된 순서대로 도착)
    • 3-way handshake
  1. SYN 단계

    클라이언트는 서버에 TCP 연결의 첫번째 패킷에 할당된 임의의 시퀀스 번호(ISN)를 보냄 (SYN)

  2. SYN + ACK 단계

    서버는 클라이언트의 SYN을 수신(ACK)

    서버의 ISN을 보내며 승인번호로 클라이언트의 ISN + 1을 보냄 (SYN)

  3. ACK 단계

    클라이언트는 서버의 ISN + 1한 값인 승인번호를 담아 ACK를 서버에 보냄

→ SYN : 연결 요청 플래그 / ACK : 응답 플래그

  • TCP 연결 해제 과정

    • 4-way handshake

      ![](https://velog.velcdn.com/images/kelsey6225/post/bb88a34e-2dc4-445c-a085-82ce0416dc49/image.png)	
  1. 클라이언트가 연결 닫으려고 할 때 FIN 세그먼트 보내고 클라이언트는 FIN_WAIT_1 상태

  2. 서버의 클라이언트로 ACK 승인 세그먼트 보내고 CLOSE_WAIT 상태

    클라이언트가 세그먼트 받으면 FIN_WAIT_2 상태

  3. 서버는 ACK 보내고 일정 시간 이후에 클라이언트에 FIN 세그먼트 보냄

  4. 클라이언트TIME_WAIT 상태가 되고 다시 서버로 ACK 보내서 서버는 CLOSED 상태.

    이후 클라이언트는 어느 정도의 시간을 대기한 후 연결이 닫히고 클라이언트와 서버의 모든 자원의 연결 해제 됨

⇒ 그냥 연결 닫지 않고 일정 시간 뒤에 닫는 이유? (TIME_WAIT)

  1. 지연 패킷이 발생할 경우를 대비하기 위함 → 데이터 무결성 문제

  2. 두 장치가 연결이 닫혔는지 확인하기 위해서

    → 만약 LAST_ACK 상태에서 닫히게 되면 다시 새로운 연결을 하려고 할 때 장치는 줄곧 LAST_ACK로 되어 있기 때문에 접속 오류 생김

  • UDP
    • 순서를 보장하지 않음
    • 수신 여부를 확인하지 않음
    • 단순히 데이터만 주는 ‘데이터그램 패킷 교환 방식’을 사용

인터넷(internet) 계층

: 장치로부터 받은 네트워크 패킷을 IP주소로 지정된 목적지로 전송하기 위해 사용되는 계층

  • 패킷을 수신해야 할 상대의 주소를 지정하여 데이터를 전달
  • 비연결형적 특징
  • IP, ARP, ICMP…

링크 계층 (네트워크 접근 계층)

: 실질적으로 데이터를 전달하며 장치 간에 신호를 주고받는 규칙을 정하는 계층

  • 전선, 광섬유, 무선

  • 물리 계층 + 데이터 링크 계층

    • 물리 계층 : 무선 LAN과 유선 LAN을 통해 0, 1로 이루어진 데이터를 보내는 계층

      • 유선 LAN

        • 이더넷으로 이루어짐
        • 전이중화 통신 사용 : 양쪽 장치가 동시에 송수신할 수 있는 방식
        • CSMA/CD (반이중화 통신)
          • 이전에는 유선 LAN에 사용
          • 데이터를 ‘보낸 이후’ 충돌이 발생하면 일정 시간 이후 재전송하는 방식 → 수신로와 송신로를 각각 둔 것이 아닌 한 경로를 기반으로 데이터 보내기 때문에 충돌에 대비해야 했음
        • 유선 LAN 이루는 케이블 : TP 케이블 (트위스트 페어 케이블, 광섬유 케이블)
      • 무선 LAN

        • 수신과 송신에 같은 채널을 사용 때문에
        • 반이중화 통신 사용 : 양쪽 장치는 서로 통신할 수 있지만, 동시에 통신할 수는 없으며 한 번에 한 방향만 통신할 수 있는 방식 → 일반적으로 장치가 신호를 수신하기 시작하면 응답하기 전에 전송이 완료될 때까지 대기 → 둘 이상의 장치가 동시에 전송하면 충돌 → 메시지 손실/왜곡 → 충돌 방지 시스템 필요
        • CSMA/CA (반이중화 통신)
          • 데이터를 보내기 전에 캐리어 감지 등으로 사전에 가능한 한 충돌을 방지하는 방식
          1. 데이터를 송신하기 전에 무선 매체를 살핌

          2. 캐리어 감지 : 회선이 비어 있는지를 판단함

          3. IFS (Inter FrameSpace) : 랜덤 값을 기반으로 정해진 시간만큼 대기

                                               만약 무선 매체가 사용 중이면 점차 그 간격을 늘려가며 대기
          4. 이후에 데이터 송신

        • 무선 LAN을 이루는 주파수
          • 무선 신호 전달 방식을 이용하여 2대 이상의 장치를 연결
          • 2.4GHz : 장애물에 강하지만, 전파 간섭이 흔히 일어남
          • 5GHz : 사용할 수 있는 채널 수도 많고 동시에 사용 가능 → 상대적으로 깨끗한 전파 환경
          • 와이파이, BSS, ESS
    • 데이터 링크 계층 : ‘이더넷 프레임’을 통해 에러 확인, 흐름 제어, 접근 제어를 담당하는 계층

계층 간 데이터 송수신 과정

  1. 애플리케이션 계층 → 전송 계층으로 필자가 보내는 요청(request) 값들이 캡슐화 과정을 거쳐 전달
  2. 링크 계층을 통해 해당 서버와 통신
  3. 해당 서버의 링크 계층 → 애플리케이션까지 비캡슐화 과정을 거쳐 데이터 전송
  • 캡슐화 과정

세그먼트/데이터그램화 → 패킷화 → 프레임화

  • 비캡슐화 과정

2.2.2 PDU

: 네트워크의 어떠한 계층에서 계층으로 데이터가 전달될 때 한 덩어리의 단위

  • 헤더 : 제어 관련 정보들이 포함되어 있음
  • 페이로드 : 데이터
  • 계층마다 부르는 명칭이 다름
    • 애플리케이션 계층 : 메세지 (Data)
    • 전송 계층 : 세그먼트(TCP), 데이터그램(UDP)
    • 인터넷 계층 : 패킷
    • 링크 계층 : 프레임(데이터 링크 계층), 비트(물리 계층)
    • 물리 계층 : 컴퓨터 하드웨어는 그것을 Bit로 연산하고 다룸
  • PDU 중 아래 계층인 비트로 송수신하는 것이 모든 PDU 중 가장 빠르고 효율성이 높음 ⇒ 그러나 애플리케이션 계층에서는 문자열 기반으로 송수신을 하는 이유?
    • 헤더에 authorization 값 등 다른 값들을 넣는 확장이 쉽기 때문

0개의 댓글