cs

TCP/IP 4계층: 응용 계층, 전송 계층, 네트워크 계층

ssoonn 2024. 7. 1. 00:04

애플리케이션 계층

HTTP, SMTP, SSH, FTP가 대표적이며 웹 서비스, 이메일 등 서비스를 실질적으로 사람들에게 제공.

응용프로그램에서 데이터가 생성됨

HTTP(HyperText Transfer Protocol)

서버와 브라우저 간 데이터를 주고받기 위해 설계된 프로토콜.

현재는 서버와 서버간 통신할 때에도 많이 이용됨.

  • 특징
    • HTTP는 헤더를 통한 확장이 쉽다.
    • Stateless
      • 동일한 연결에서 연속적으로 수행되는 두 요청 사이에 연속적인 상태값은 없다.

HTTP/1.0

기본적으로 한 연결당 하나의 요청을 처리하도록 설계. 이는 RTT 증가를 불러오게 되어 있다.

(RTT : 패킷이 목적지에 도달 후 다시 출발지로 돌아오기까지 걸리는 시간)

  • 해결방법
    • 이미지 스플리팅
      이미지가 합쳐있는 하나의 이미지를 다운 받고, background-image의 position을 이용하여 이미지를 표기하는 방법.
    • 코드 압축
      개행문자, 빈칸을 없애서 코드의 크기를 최소화하는 방법.
    • 이미지 Base64 인코딩
      이미지 파일을 64진법 문자열로 인코딩하는 방법. 이는 서버와의 연결을 열고 이미지에 대해 서버에 HTTP 요청을 할 필요가 없다는 장점이 있지만, 용량이 37%정도 더 커지는 단점도 존재함.

 

HTTP/1.1

HTTP/1.0 방식에서 발전한 방식이며, 매번 TCP 연결을 하는것이 아닌, TCP 초기화 이후 keep-alive옵션을 통해 여러개의 파일을 송수신할수 있도록 바뀜.

  • 최초 TCP 3-way 핸드쉐이크가 발생하면 그 이후로 발생하지 않지만, 문서 안에 포함된 다수의 리소스(이미지, css, script 등)을 처리하려면 요청할 리소스 개수에 비례해 대기시간이 길어지는 단점
  • HOL Blocking

    네트워크에서 같은 큐에 있는 패킷이 첫번째 패킷에 의해 지연될 때 발생하는 성능 저하 현상을 말한다.
  • 무거운 헤더 구조
    쿠키 등 많은 메타데이터가 포함되어 있고 압축되지 않아 무거움

HTTP/2

SPDY 프로토콜에서 파생된 HTTP/1.x보다 지연시간을 줄이고 응답시간을 더 빠르게 할수 있으며 멀티플렉싱, 헤더 압축, 서버 푸시, 요청의 우선순의 처리를 지원하는 프로토콜

  • 특징
    • 멀티플렉싱
      여러개의 스트림을 사용하여 송수신하는 것으로, 특정 스트림의 패킷이 손실되었다고 하더라도 해당 스트림에만 영향을 미치고 나머지 스트림은 정상적으로 동작. 병렬적인 스트림을 통해 데이터를 서빙하며, 이를 통해 병렬로 여러 요청/응답을 송수신하며 HOL Blocking 문제도 해결 가능하다.
    • 헤더압축
      헤더가 허프만 코딩 압축 알고리즘을 사용하는 HPACK 방식의 압축 형식을 가짐

 

HTTPS

HTTPS는 어플리케이션 계층과 전송 계층 사이에 신뢰 계층인 SSL/TLS 계층을 넣은 신뢰할 수 있는 HTTP 요청을 말하며, 이를 통해 통신을 암호화한다.

SSL/TLS: 전송 계층에서 보안을 제공하는 프로토콜이며, 클라이언트/서버가 통신할 때 제 3자가 메시지를 도청하거나 변조하지 못하도록 막아준다.

 

SSH

보안되지 않은 네트워크에서 네트워크 서비스를 안전하게 운영하기 위한 암호화 네트워크 프로토콜이다.

  • 서버에 접속할 때 비밀번호보다 높은 수준의 보안요건을 필요시 사용
  • 동작방식
    • 공개키(public key)와 비공개키(secret key)로 이루어지며, 공개키는 리모트 머신(SSH Server)에, 비공개키는 로컬 머신(SSH Client)에 위치한다.
    • SSH 접속을 시도하면 SSH Client가 로컬 머신의 비공개키와 쌍을 이루는 SSH Server의 공개키와 일치하는지를 확인하는 과정을 거친다.
    • 서로 관계를 맺고 있는 Key라는 것이 증명되면 두 컴퓨터 사이에 암호화된 채널이 형성, key를 통해 메시지를 암호화/복호화 하며 데이터를 주고받는다.
  • 주요기능
    • 보안 접속을 위한 rsh, rcp, rlogin, rexec, telnet, ftp 등을 지원
    • IP Spoofing을 방지
    • X11 패킷 포워딩 및 일반적인 TCP/IP 패킷 포워딩 제공

 

전송계층

 

애플리케이션 계층에서 받은 메시지를 기반으로 세그먼트/데이터그램으로 쪼개고 데이터가 오류없이 순서대로 전달되도록 도움을 주는 계층.

 

연결성: 세션의 성립 여부

  • 비연결성(Connectionless) : 세션을 성립하지 않는다. 단순 전송만 담당. 대표적으로 UDP
  • 연결지향성(Connection Oriented) : 세션을 이용한 신뢰성 있는 통신 기능을 추가적으로 제공. 대표적으로 TCP.

신뢰성: 데이터의 소실, 중복, 지연, 순서역전 없이 데이터를 전달하는 것을 완전히 보장. 신뢰성 있는 통신을 위한 기능으로 오류제어, 흐름제어, 혼잡제어가 있다.

  • 오류제어 : 세그먼트 유실 시, 다시 전송하는 것
  • 흐름제어 : 수신자의 처리 능력을 고려해 데이터 송신량을 조절하는 것
  • 혼잡제어 : 네트워크가 혼잡할 때 보내는 데이터의 양을 조정하는 것

TCP

양 종단의 호스트 내 프로세스 상호간에 신뢰적인 연결지향성 서비스를 제공하는 프로토콜.

  • 연결지향적: 3-way handshake/ 4-way handshake
  • 전이중 전송방식 / 양방향성
    • 종단 간 프로세스가 서로 동시에 세그먼트를 전달할 수 있다.
    • 양방향 각각에 대해 송수신 버퍼 및 데이터흐름용 순서번호를 유지한다.
      • 순서번호
        데이터에서의 첫번쨰 바이트 스트림 번호. 시간이 지나면 중복 될 가능성이 있기 때문에 0이 아닌 난수로 지정한다.
      • 확인응답번호
        다음으로 수신할 바이트 스트림 번호 (이전 요청 세그먼트의 순서번호 + 데이터 길이)
  • 멀티캐스트 불가능 : 1대1 전송방식이다(유니캐스트)
  • 신뢰적 데이터 전송
    • 흐름제어
    • 오류제어

UDP

신뢰성이 낮으며, 완전성을 보장하지 않으나 가상회선을 굳이 확립할 필요가 없고, 유연하며 실시간적 응용의 테이터 전송에 적합한 프로토콜.

  • 비연결성이고, 신뢰성이 없으며, 순서화되지 않은 Datagram 서비스 제공
    • 확인응답 X
    • 순서제어 X
      • TCP 헤더와 달리 순서번호 필드 없음
    • 흐름제어 X
    • 오류제어 거의 없음
      • 헤더를 체크하는 검사합(Checksum)을 제외한 특별한 오류검출 및 제어 없음(이 또한 생략 가능)
    • 논리적인 가상회선 연결 필요 없음(No Handshaking)
  • 실시간 응용 및 멀티캐스팅 가능
    • 빠른 요청과 응답이 필요한 실시간 응용에 적합
    • 멀티캐스팅 가능
    • 전송속도 제한 없음
  • 헤더가 단순하므로, 헤더 처리에 많은 시간과 노력 필요 없음

 

네트워크 계층

한 노드에서 다른 노드로 전송 계층에서 받은 세그먼트/데이터그램을 패킷화하여 전송하는 계층

IP(Internet Protocol)

TCP/IP 기반의 인터넷 망을 통하여 데이터그램의 전달을 담당하는 프로토콜

  • IP 패킷의 라우팅 대상이 됨
  • IP 주소 지정
  • 특징
    • 신뢰성, 흐름제어 기능x
    • 비연결성 데이터그램 방식
    • 패킷의 완전한 전달을 보장하지 않음 (신뢰성 X)
  • IP 주소 체계
    • IPv4
    • IPv6 -> IPv4의 주소 고갈 문제, 멀티미디어서비스 대응 미약 등.
  • IPv4의 고갈 문제
    • 32비트 주소체계의 한계로 IPv4 주소가 점점 고갈되는중.
    • 해결방법
      • DHCP
        • 네트워크상에서 동적으로 IP 주소 및 기타 구성정보 등을 부여/관리하는 프로토콜
      • NAT
        • 1개의 실제 공인 IP 주소에, 다량의 가상 사설 IP 주소를 할당 및 매핑하는, 1:1 또는 1:多 주소 변환(Address Translation) 방식

ARP / RARP

  • ARP: IP 주소를 이용해 상대방의 MAC 주소를 알아오는 프로토콜이다.
    • ARP 요청 : 특정 IP주소에 대한 MAC주소를 브로드캐스트로 전송
    • ARP 응답 : 요청한 MAC주소 정보를 유니캐스트로 전송
    • ARP 테이블에 각 노드의 ARP 정보를 저장
  • RARP: MAC 주소에 해당하는 IP주소를 알아노는 프로토콜이다.
  • GARP: 송신 IP와 수신 IP가 같은 ARP요청으로, 자신의 존재를 알리는 목적으로 사용한다. 주로 IP충돌감지, ARP 테이블 갱신 용도로 사용한다.

ICMP

노드와 노드 사이에서 통신이 잘 되나 확인할 때 쓰는 프로토콜. 데이터를 교환하는데 사용하지는 않는다. IP와 달리 TCP/UDP와 같은 전송계층 프로토콜과는 연관되지 않고 독립적인 비연결형 프로토콜이다.

 

ref.

https://yozm.wishket.com/magazine/detail/1956/

 

주니어 개발자를 위한 엄청 쉬운 TCP/IP 4계층 이야기 | 요즘IT

이번 글에서는 이전 글 “택배 배송 과정으로 알아보는 엄청 쉬운 컴퓨터 네트워크”를 컴퓨터에서 일어나는 일로 가져와 설명해보도록 하겠습니다. 이전 글에서 저는 데이터가 4단계에 걸쳐

yozm.wishket.com

https://velog.io/@yuyun0124/TCPIP-4%EA%B3%84%EC%B8%B5-5.-%EC%9D%B8%ED%84%B0%EB%84%B7-%EA%B3%84%EC%B8%B5network%EA%B3%BC-ICMP

 

TCP/IP 4계층 #5. 인터넷 계층(network)과 ICMP

네트워크 스터디 2주차

velog.io