TCP/IP 4 Layer

네트워크의 기본으로 인터넷을 포함하여 일반적으로 사용하고 있는 네트워크는 TCP/IP라는 프로토콜에서 움직인다. 이 프로토콜 중 자주 사용하는 HTTP도 그 중 하나이다.

TCP/IP 4 계층

OSI 참조 모델을 기반으로 실무적으로 이용될 수 있도록 단순화한 모델이다.

  • OSI 7계층: 국제 표준화 기구(ISO)에서 개발한 네트워크 프로토콜 스택 모델로, 네트워크 통신을 기능별로 7개의 계층으로 나눈 것

  • TCP/IP 4계층: 실제 구현을 위해 만들어진 모델이고, OSI 7계층을 이론적인 설계를 위해 만들어진 모델

OSI 7계층의 계층들을 TCP/IP 4계층에 맞게 재배치하면 아래와 같다.(OSI 7계층과 1:1 대응되지는 않음)

프로토콜 계층
예시
설명
OSI 7 계층 대응
전송 데이터 단위

Application

HTTP / FTP

유저에게 제공되는 애플리케이션에서 사용하는 통신의 움직임을 결정

Session(5) / Presentation(6) / Application(7)

Stream

Transport

TCP/UDP

애플리케이션 계층에 네트워크로 접속되어 있는 2대의 컴퓨터 사이의 데이터 흐름을 제공

Transport(4)

Segment

Internet

IP

네트워크 상에서 패킷의 이동을 다룸(패킷: 전송하는 데이터 최소 단위)

Network(3)

Packet

Network Access

LAN 드라이버, LAN 장비

네트워크에 접속하는 하드웨어적인 면

Physical(1) / DataLink(2)

Frame

  • Stream: 데이터의 시작은 있으나 끝은 정확하게 정의할 수 없고, 애플리케이션에서 정의하게 됨

  • 나머지 데이터: 시작과 끝이 정의되어 있으며, 각 계층에서 정의된 데이터 단위를 통해 전달

Segmentation

Stream은 Socket이라는 인터페이스에 쓰게 되는데, 만약 Socket의 크기가 Segment 크기 제한(MSS)이나 Packet의 크기 제한(MTU)보다 크다면, Stream을 여러 개의 Segment으로 분할하여 전송하게 된다.(= Segmentation)

통신의 흐름 예시

TCP/IP 통신은 계층별로 데이터를 처리하며, 데이터는 계층을 통과할 때마다 헤더 정보가 추가하면서 전달하게 된다.

  1. 애플리케이션 계층의 Socket Library를 통해 OS에 메시지 전달

  2. OS의 TCP 계층에서 메시지(데이터)에 TCP 정보 생성

  3. OS의 IP 계층에서 TCP 정보에 IP 정보 생성

  4. LAN 카드를 통해 나갈 때 Ethernet Frame을 통해 전송

전송된 데이터 형태

TCP/IP 통신 과정에서 전송되는 데이터는 최종적으로 여러 계층의 헤더 정보를 포함한 형태로 전달된다.

- *IP 패킷 헤더
----- 버전 / 헤더 길이 / 서비스 유형 / 총 데이터그램 길이(바이트)
----- 패킷 ID / 플래그 / 플래그 오프셋
----- 유지 시간(TTL) / 상위 계층 프로토콜 / 헤더 체크섬
----- 발신지 IP 주소
----- 목적지 IP 주소
--------- *TCP 세그먼트 헤더
------------- 발신지 포트 / 목적지 포트
------------- TCP 순서 번호
------------- 편승(piggback) 확인 응답
------------- 헤더 길이 / 예약어 / URG / ACK / PSH / RST / SYN / FIN / 윈도우 크기
------------- TCP 체크섬
------------- 긴급 포인터
----------------- *TCP 데이터 조각
-------------------- HTTP 메시지

소켓 인터페이스를 사용한 HTTP 네트워크 흐름

클라이언트
서버

새로운 소켓 생성

80포트로 소켓을 묶음

소켓 커넥션 허가

커넥션을 기다림

IP 주소와 포트를 얻음

새로운 소켓 생성

서버의 IP 포트로 연결

애플리케이션 커넥션 통지

요청을 읽기 시작

연결 성공

HTTP 요청을 보냄

HTTP 응답 대기

HTTP 요청 메시지 처리

HTTP 응답 메시지 전송

HTTP 응답 처리

커넥션 닫음

커넥션 닫음

참고자료

Last updated

Was this helpful?